From b8ddd58e3edc61310df85538218a36e45d7f9650 Mon Sep 17 00:00:00 2001 From: lachlan Date: Tue, 1 Apr 2025 14:27:48 +1000 Subject: [PATCH 1/5] add missing functions --- src/AmpacheDiscogs/Discogs.php | 155 +++++++++++++++++++++++++++++---- 1 file changed, 137 insertions(+), 18 deletions(-) diff --git a/src/AmpacheDiscogs/Discogs.php b/src/AmpacheDiscogs/Discogs.php index ed13a73..628a3bf 100644 --- a/src/AmpacheDiscogs/Discogs.php +++ b/src/AmpacheDiscogs/Discogs.php @@ -28,22 +28,6 @@ use Exception; use WpOrg\Requests\Requests; -/** - * todo self::get_artist_releases() https://www.discogs.com/developers/#page:database,header:database-artist-releases-get - * todo self::get_master_versions() https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get - * todo self::get_label() https://www.discogs.com/developers/#page:database,header:database-label-get - * todo self::get_label_releases() https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get - * todo self::get_identity() https://www.discogs.com/developers/#page:user-identity,header:user-identity-identity-get - * todo self::get_profile() https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get - * todo self::add_inventory() https://www.discogs.com/developers/#page:inventory-upload,header:inventory-upload-add-inventory-post - * todo self::delete_inventory() https://www.discogs.com/developers/#page:inventory-upload,header:inventory-upload-delete-inventory-post - * todo self::get_collection_folders() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get - * todo self::get_collection_folder() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get - * todo self::get_collection_items_by_folder() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get - * todo self::get_user_lists() https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists - * todo self::get_lists() https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list - * todo self::get_wantlist() https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist - */ class Discogs { public const VERSION = '0.1.0'; @@ -54,7 +38,7 @@ class Discogs private readonly string $secret; - private string $userAgent; + private readonly string $userAgent; /** * Constructor @@ -107,6 +91,7 @@ public function search(array $parameters): array if (!isset($parameters['per_page'])) { $parameters['per_page'] = 10; } + $query = http_build_query($parameters); return $this->_query_discogs('database/search', $query); @@ -197,6 +182,140 @@ public function get_master(int $object_id): array */ public function get_artist(int $object_id): array { - return $this->_query_discogs('artists/' . $object_id); + $query = sprintf("artists/%d", $object_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-artist-releases-get + * @return array + * @throws Exception + */ + public function get_artist_releases(int $artist_id): array + { + $query = sprintf("artists/%d/releases", $artist_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get + * @return array + * @throws Exception + */ + public function get_master_versions(int $master_id): array + { + $query = sprintf("masters/%d/versions", $master_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-label-get + * @return array + * @throws Exception + */ + public function get_label(int $label_id): array + { + $query = sprintf("labels/%d", $label_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get + * @return array + * @throws Exception + */ + public function get_label_releases(int $label_id): array + { + $query = sprintf("labels/%d/releases", $label_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get + * @return array + * @throws Exception + */ + public function get_profile(string $username): array + { + $query = sprintf("users/%s", $username); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get + * @return array + * @throws Exception + */ + public function get_collection_folders(string $username): array + { + $query = sprintf("users/%s/collection/folders", $username); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get + * @return array + * @throws Exception + */ + public function get_collection_folder(string $username, int $folder_id): array + { + $query = sprintf("users/%s/collection/folders/%s", $username, $folder_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get + * @return array + * @throws Exception + */ + public function get_collection_items_by_folder(string $username, int $folder_id): array + { + $query = sprintf("users/%s/collection/folders/%s/releases", $username, $folder_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists + * @return array + * @throws Exception + */ + public function get_user_lists(string $username): array + { + $query = sprintf("users/%s/lists", $username); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list + * @return array + * @throws Exception + */ + public function get_list(int $list_id): array + { + $query = sprintf("lists/%d", $list_id); + + return $this->_query_discogs($query); + } + + /** + * https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist + * @return array + * @throws Exception + */ + public function get_wantlist(string $username): array + { + $query = sprintf("users/%s/wants", $username); + + return $this->_query_discogs($query); } } From 73adbe634dac30cbe353571bd2b0d9166b2dedd1 Mon Sep 17 00:00:00 2001 From: lachlan Date: Tue, 1 Apr 2025 14:27:54 +1000 Subject: [PATCH 2/5] add examples --- examples/collections.php | 28 ++++++++++++++++++++++++++++ examples/labels.php | 23 +++++++++++++++++++++++ examples/users.php | 27 +++++++++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 examples/collections.php create mode 100644 examples/labels.php create mode 100644 examples/users.php diff --git a/examples/collections.php b/examples/collections.php new file mode 100644 index 0000000..b560594 --- /dev/null +++ b/examples/collections.php @@ -0,0 +1,28 @@ +get_collection_folders($username); + + print_r($results); + $folder_id = (int)$results['folders'][0]['id']; + + $results = $discogs->get_collection_folder($username, $folder_id); + + print_r($results); + + $results = $discogs->get_collection_items_by_folder($username, $folder_id); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/examples/labels.php b/examples/labels.php new file mode 100644 index 0000000..32e1164 --- /dev/null +++ b/examples/labels.php @@ -0,0 +1,23 @@ +get_label($label_id); + + print_r($results); + + $results = $discogs->get_label_releases($label_id); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/examples/users.php b/examples/users.php new file mode 100644 index 0000000..58afe33 --- /dev/null +++ b/examples/users.php @@ -0,0 +1,27 @@ +get_profile($username); + + print_r($results); + + $results = $discogs->get_user_lists($username); + + print_r($results); + + $results = $discogs->get_wantlist($username); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} From 6eb2c165bcaf038652cc3d2f21af7c40894d2676 Mon Sep 17 00:00:00 2001 From: lachlan Date: Tue, 1 Apr 2025 15:03:08 +1000 Subject: [PATCH 3/5] examples for all functions --- examples/labels.php | 6 +++--- examples/releases.php | 44 +++++++++++++++++++++++++++++++++++++++++++ examples/users.php | 5 +++++ 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 examples/releases.php diff --git a/examples/labels.php b/examples/labels.php index 32e1164..5fb488a 100644 --- a/examples/labels.php +++ b/examples/labels.php @@ -5,10 +5,10 @@ require dirname(__DIR__) . '/vendor/autoload.php'; // your own username and password are required to use the Discogs API -$label_id = null; +$username = null; $password = null; -$discogs = new Discogs($label_id, $password); -$label_id = '1212668'; +$discogs = new Discogs($username, $password); +$label_id = 1212668; try { $results = $discogs->get_label($label_id); diff --git a/examples/releases.php b/examples/releases.php new file mode 100644 index 0000000..4960641 --- /dev/null +++ b/examples/releases.php @@ -0,0 +1,44 @@ +search_release($artist, $album); + + print_r($results); + + $results = $discogs->search_master($artist, $album); + + print_r($results); + + $results = $discogs->get_artist_releases($artistId); + + print_r($results); + + $results = $discogs->get_release($releaseId); + + print_r($results); + + $results = $discogs->get_master($masterId); + + print_r($results); + + $results = $discogs->get_master_versions($masterId); + + print_r($results); +} catch (Exception $exception) { + print_r($exception->getMessage()); +} diff --git a/examples/users.php b/examples/users.php index 58afe33..61ea5a4 100644 --- a/examples/users.php +++ b/examples/users.php @@ -9,6 +9,7 @@ $password = null; $discogs = new Discogs($username, $password); $username = 'discogsUsername'; +$list_id = 1596537; try { $results = $discogs->get_profile($username); @@ -22,6 +23,10 @@ $results = $discogs->get_wantlist($username); print_r($results); + + $results = $discogs->get_list($list_id); + + print_r($results); } catch (Exception $exception) { print_r($exception->getMessage()); } From 7e31b5df47485ebd6a7724508e40c3a871bd98a4 Mon Sep 17 00:00:00 2001 From: lachlan Date: Tue, 1 Apr 2025 16:56:33 +1000 Subject: [PATCH 4/5] Update Discogs.php --- src/AmpacheDiscogs/Discogs.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AmpacheDiscogs/Discogs.php b/src/AmpacheDiscogs/Discogs.php index 628a3bf..f9faefa 100644 --- a/src/AmpacheDiscogs/Discogs.php +++ b/src/AmpacheDiscogs/Discogs.php @@ -30,7 +30,7 @@ class Discogs { - public const VERSION = '0.1.0'; + public const VERSION = '0.2.0'; private const DISCOGS_URL = 'https://api.discogs.com/'; From 4b263113d854e37a686b8cb5f1a19c2ed65cc314 Mon Sep 17 00:00:00 2001 From: lachlan Date: Tue, 1 Apr 2025 17:34:15 +1000 Subject: [PATCH 5/5] Update CHANGELOG.md --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f909119..93a80e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # AmpacheDiscogs +## 0.2.0 + +Missing functions and examples have been added. + +This is probably the most that the library will need to do but if there's more that you need open an issue. + +### Added + +* New Functions + * [get_artist_releases](https://www.discogs.com/developers/#page:database,header:database-artist-releases-get) + * [get_master_versions](https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get) + * [get_label](https://www.discogs.com/developers/#page:database,header:database-label-get) + * [get_label_releases](https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get) + * [get_profile](https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get) + * [get_collection_folders](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get) + * [get_collection_folder](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get) + * [get_collection_items_by_folder](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get) + * [get_user_lists](https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists) + * [get_list](https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list) + * [get_wantlist](https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist) + ## 0.1.0 Export of data functions from the [Ampache Discogs plugin](https://github.com/ampache/ampache/blob/develop/src/Plugin/AmpacheDiscogs.php).