diff options
Diffstat (limited to 'bridges/DiscogsBridge.php')
-rw-r--r-- | bridges/DiscogsBridge.php | 228 |
1 files changed, 111 insertions, 117 deletions
diff --git a/bridges/DiscogsBridge.php b/bridges/DiscogsBridge.php index df94a030..ba011924 100644 --- a/bridges/DiscogsBridge.php +++ b/bridges/DiscogsBridge.php @@ -1,120 +1,114 @@ <?php -class DiscogsBridge extends BridgeAbstract { - - const MAINTAINER = 'teromene'; - const NAME = 'DiscogsBridge'; - const URI = 'https://www.discogs.com/'; - const DESCRIPTION = 'Returns releases from discogs'; - const PARAMETERS = array( - 'Artist Releases' => array( - 'artistid' => array( - 'name' => 'Artist ID', - 'type' => 'number', - 'required' => true, - 'exampleValue' => '28104', - 'title' => 'Only the ID from an artist page. EG /artist/28104-Aesop-Rock is 28104' - ) - ), - 'Label Releases' => array( - 'labelid' => array( - 'name' => 'Label ID', - 'type' => 'number', - 'required' => true, - 'exampleValue' => '8201', - 'title' => 'Only the ID from a label page. EG /label/8201-Rhymesayers-Entertainment is 8201' - ) - ), - 'User Wantlist' => array( - 'username_wantlist' => array( - 'name' => 'Username', - 'type' => 'text', - 'required' => true, - 'exampleValue' => 'TheBlindMaster', - ) - ), - 'User Folder' => array( - 'username_folder' => array( - 'name' => 'Username', - 'type' => 'text', - ), - 'folderid' => array( - 'name' => 'Folder ID', - 'type' => 'number', - ) - ) - ); - - public function collectData() { - - if(!empty($this->getInput('artistid')) || !empty($this->getInput('labelid'))) { - - if(!empty($this->getInput('artistid'))) { - $data = getContents('https://api.discogs.com/artists/' - . $this->getInput('artistid') - . '/releases?sort=year&sort_order=desc'); - } elseif(!empty($this->getInput('labelid'))) { - $data = getContents('https://api.discogs.com/labels/' - . $this->getInput('labelid') - . '/releases?sort=year&sort_order=desc'); - } - - $jsonData = json_decode($data, true); - foreach($jsonData['releases'] as $release) { - - $item = array(); - $item['author'] = $release['artist']; - $item['title'] = $release['title']; - $item['id'] = $release['id']; - $resId = array_key_exists('main_release', $release) ? $release['main_release'] : $release['id']; - $item['uri'] = self::URI . $this->getInput('artistid') . '/release/' . $resId; - - if(isset($release['year'])) { - $item['timestamp'] = DateTime::createFromFormat('Y', $release['year'])->getTimestamp(); - } - - $item['content'] = $item['author'] . ' - ' . $item['title']; - $this->items[] = $item; - } - - } elseif(!empty($this->getInput('username_wantlist')) || !empty($this->getInput('username_folder'))) { - - if(!empty($this->getInput('username_wantlist'))) { - $data = getContents('https://api.discogs.com/users/' - . $this->getInput('username_wantlist') - . '/wants?sort=added&sort_order=desc'); - $jsonData = json_decode($data, true)['wants']; - - } elseif(!empty($this->getInput('username_folder'))) { - $data = getContents('https://api.discogs.com/users/' - . $this->getInput('username_folder') - . '/collection/folders/' - . $this->getInput('folderid') - . '/releases?sort=added&sort_order=desc'); - $jsonData = json_decode($data, true)['releases']; - } - foreach($jsonData as $element) { - - $infos = $element['basic_information']; - $item = array(); - $item['title'] = $infos['title']; - $item['author'] = $infos['artists'][0]['name']; - $item['id'] = $infos['artists'][0]['id']; - $item['uri'] = self::URI . $infos['artists'][0]['id'] . '/release/' . $infos['id']; - $item['timestamp'] = strtotime($element['date_added']); - $item['content'] = $item['author'] . ' - ' . $item['title']; - $this->items[] = $item; - - } - } - - } - - public function getURI() { - return self::URI; - } - - public function getName() { - return static::NAME; - } +class DiscogsBridge extends BridgeAbstract +{ + const MAINTAINER = 'teromene'; + const NAME = 'DiscogsBridge'; + const URI = 'https://www.discogs.com/'; + const DESCRIPTION = 'Returns releases from discogs'; + const PARAMETERS = [ + 'Artist Releases' => [ + 'artistid' => [ + 'name' => 'Artist ID', + 'type' => 'number', + 'required' => true, + 'exampleValue' => '28104', + 'title' => 'Only the ID from an artist page. EG /artist/28104-Aesop-Rock is 28104' + ] + ], + 'Label Releases' => [ + 'labelid' => [ + 'name' => 'Label ID', + 'type' => 'number', + 'required' => true, + 'exampleValue' => '8201', + 'title' => 'Only the ID from a label page. EG /label/8201-Rhymesayers-Entertainment is 8201' + ] + ], + 'User Wantlist' => [ + 'username_wantlist' => [ + 'name' => 'Username', + 'type' => 'text', + 'required' => true, + 'exampleValue' => 'TheBlindMaster', + ] + ], + 'User Folder' => [ + 'username_folder' => [ + 'name' => 'Username', + 'type' => 'text', + ], + 'folderid' => [ + 'name' => 'Folder ID', + 'type' => 'number', + ] + ] + ]; + + public function collectData() + { + if (!empty($this->getInput('artistid')) || !empty($this->getInput('labelid'))) { + if (!empty($this->getInput('artistid'))) { + $data = getContents('https://api.discogs.com/artists/' + . $this->getInput('artistid') + . '/releases?sort=year&sort_order=desc'); + } elseif (!empty($this->getInput('labelid'))) { + $data = getContents('https://api.discogs.com/labels/' + . $this->getInput('labelid') + . '/releases?sort=year&sort_order=desc'); + } + + $jsonData = json_decode($data, true); + foreach ($jsonData['releases'] as $release) { + $item = []; + $item['author'] = $release['artist']; + $item['title'] = $release['title']; + $item['id'] = $release['id']; + $resId = array_key_exists('main_release', $release) ? $release['main_release'] : $release['id']; + $item['uri'] = self::URI . $this->getInput('artistid') . '/release/' . $resId; + + if (isset($release['year'])) { + $item['timestamp'] = DateTime::createFromFormat('Y', $release['year'])->getTimestamp(); + } + + $item['content'] = $item['author'] . ' - ' . $item['title']; + $this->items[] = $item; + } + } elseif (!empty($this->getInput('username_wantlist')) || !empty($this->getInput('username_folder'))) { + if (!empty($this->getInput('username_wantlist'))) { + $data = getContents('https://api.discogs.com/users/' + . $this->getInput('username_wantlist') + . '/wants?sort=added&sort_order=desc'); + $jsonData = json_decode($data, true)['wants']; + } elseif (!empty($this->getInput('username_folder'))) { + $data = getContents('https://api.discogs.com/users/' + . $this->getInput('username_folder') + . '/collection/folders/' + . $this->getInput('folderid') + . '/releases?sort=added&sort_order=desc'); + $jsonData = json_decode($data, true)['releases']; + } + foreach ($jsonData as $element) { + $infos = $element['basic_information']; + $item = []; + $item['title'] = $infos['title']; + $item['author'] = $infos['artists'][0]['name']; + $item['id'] = $infos['artists'][0]['id']; + $item['uri'] = self::URI . $infos['artists'][0]['id'] . '/release/' . $infos['id']; + $item['timestamp'] = strtotime($element['date_added']); + $item['content'] = $item['author'] . ' - ' . $item['title']; + $this->items[] = $item; + } + } + } + + public function getURI() + { + return self::URI; + } + + public function getName() + { + return static::NAME; + } } |