diff --git a/bridges/DiscogsBridge.php b/bridges/DiscogsBridge.php new file mode 100644 index 00000000..1fa58405 --- /dev/null +++ b/bridges/DiscogsBridge.php @@ -0,0 +1,112 @@ + 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; + } +}