rss-bridge/bridges/DiscogsBridge.php

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

115 lines
4.4 KiB
PHP
Raw Normal View History

2018-04-20 17:57:09 +03:00
<?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 = [
'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'
]
2018-04-20 17:57:09 +03:00
],
'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'
]
2018-04-20 17:57:09 +03:00
],
'User Wantlist' => [
'username_wantlist' => [
'name' => 'Username',
'type' => 'text',
'required' => true,
'exampleValue' => 'TheBlindMaster',
]
2018-04-20 17:57:09 +03:00
],
'User Folder' => [
'username_folder' => [
'name' => 'Username',
'type' => 'text',
],
'folderid' => [
'name' => 'Folder ID',
'type' => 'number',
]
]
2018-04-20 17:57:09 +03:00
];
2018-04-20 17:57:09 +03:00
public function collectData()
{
if (!empty($this->getInput('artistid')) || !empty($this->getInput('labelid'))) {
if (!empty($this->getInput('artistid'))) {
$data = getContents('https://api.discogs.com/artists/'
2018-04-20 17:57:09 +03:00
. $this->getInput('artistid')
. '/releases?sort=year&sort_order=desc');
2018-04-20 17:57:09 +03:00
} elseif (!empty($this->getInput('labelid'))) {
$data = getContents('https://api.discogs.com/labels/'
2018-04-20 17:57:09 +03:00
. $this->getInput('labelid')
. '/releases?sort=year&sort_order=desc');
2018-04-20 17:57:09 +03:00
}
2018-04-20 17:57:09 +03:00
$jsonData = json_decode($data, true);
foreach ($jsonData['releases'] as $release) {
2018-04-20 17:57:09 +03:00
$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'];
2018-04-20 17:57:09 +03:00
$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/'
2018-04-20 17:57:09 +03:00
. $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/'
2018-04-20 17:57:09 +03:00
. $this->getInput('username_folder')
. '/collection/folders/'
. $this->getInput('folderid')
. '/releases?sort=added&sort_order=desc');
$jsonData = json_decode($data, true)['releases'];
2018-04-20 17:57:09 +03:00
}
foreach ($jsonData as $element) {
$infos = $element['basic_information'];
2018-04-20 17:57:09 +03:00
$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'];
2018-04-20 17:57:09 +03:00
$this->items[] = $item;
}
}
2018-04-20 17:57:09 +03:00
}
2018-04-20 17:57:09 +03:00
public function getURI()
{
return self::URI;
}
2018-04-20 17:57:09 +03:00
public function getName()
{
return static::NAME;
}
}