113 lines
3.3 KiB
PHP
113 lines
3.3 KiB
PHP
|
<?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',
|
||
|
)
|
||
|
),
|
||
|
'Label Releases' => array(
|
||
|
'labelid' => array(
|
||
|
'name' => 'Label ID',
|
||
|
'type' => 'number',
|
||
|
)
|
||
|
),
|
||
|
'User Wantlist' => array(
|
||
|
'username_wantlist' => array(
|
||
|
'name' => 'Username',
|
||
|
'type' => 'text',
|
||
|
)
|
||
|
),
|
||
|
'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")
|
||
|
or returnServerError("Unable to query discogs !");
|
||
|
} elseif(!empty($this->getInput('labelid'))) {
|
||
|
$data = getContents("https://api.discogs.com/labels/"
|
||
|
. $this->getInput('labelid')
|
||
|
. "/releases?sort=year&sort_order=desc")
|
||
|
or returnServerError("Unable to query discogs !");
|
||
|
}
|
||
|
|
||
|
$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;
|
||
|
$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")
|
||
|
or returnServerError("Unable to query discogs !");
|
||
|
$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")
|
||
|
or returnServerError("Unable to query discogs !");
|
||
|
$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;
|
||
|
}
|
||
|
}
|