aboutsummaryrefslogtreecommitdiff
path: root/bridges/AppleMusicBridge.php
blob: 4c3e0e2f294ba72fe50de00353b88e7f2dbf47ba (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php

class AppleMusicBridge extends BridgeAbstract
{
    const NAME = 'Apple Music';
    const URI = 'https://www.apple.com';
    const DESCRIPTION = 'Fetches the latest releases from an artist';
    const MAINTAINER = 'bockiii';
    const PARAMETERS = [[
        'artist' => [
            'name' => 'Artist ID',
            'exampleValue' => '909253',
            'required' => true,
        ],
        'limit' => [
            'name' => 'Latest X Releases (max 50)',
            'defaultValue' => '10',
            'required' => true,
        ],
    ]];
    const CACHE_TIMEOUT = 21600; // 6 hours

    public function collectData()
    {
        # Limit the amount of releases to 50
        if ($this->getInput('limit') > 50) {
            $limit = 50;
        } else {
            $limit = $this->getInput('limit');
        }

        $url = 'https://itunes.apple.com/lookup?id='
            . $this->getInput('artist')
            . '&entity=album&limit='
            . $limit .
            '&sort=recent';
        $html = getSimpleHTMLDOM($url);

        $json = json_decode($html);

        foreach ($json->results as $obj) {
            if ($obj->wrapperType === 'collection') {
                $this->items[] = [
                    'title' => $obj->artistName . ' - ' . $obj->collectionName,
                    'uri' => $obj->collectionViewUrl,
                    'timestamp' => $obj->releaseDate,
                    'enclosures' => $obj->artworkUrl100,
                    'content' => '<a href=' . $obj->collectionViewUrl
                    . '><img src="' . $obj->artworkUrl100 . '" /></a><br><br>'
                    . $obj->artistName . ' - ' . $obj->collectionName
                    . '<br>'
                    . $obj->copyright,
                ];
            }
        }
    }
}