Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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).
Expand Down
28 changes: 28 additions & 0 deletions examples/collections.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

use AmpacheDiscogs\Discogs;

require dirname(__DIR__) . '/vendor/autoload.php';

// your own username and password are required to use the Discogs API
$username = null;
$password = null;
$discogs = new Discogs($username, $password);
$username = 'discogsUsername';

try {
$results = $discogs->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());
}
23 changes: 23 additions & 0 deletions examples/labels.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php

use AmpacheDiscogs\Discogs;

require dirname(__DIR__) . '/vendor/autoload.php';

// your own username and password are required to use the Discogs API
$username = null;
$password = null;
$discogs = new Discogs($username, $password);
$label_id = 1212668;

try {
$results = $discogs->get_label($label_id);

print_r($results);

$results = $discogs->get_label_releases($label_id);

print_r($results);
} catch (Exception $exception) {
print_r($exception->getMessage());
}
44 changes: 44 additions & 0 deletions examples/releases.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

use AmpacheDiscogs\Discogs;

require dirname(__DIR__) . '/vendor/autoload.php';

// your own username and password are required to use the Discogs API
$username = null;
$password = null;
$discogs = new Discogs($username, $password);

$artist = 'Code 64';
$album = 'The Shape';
$artistId = 129150;
$masterId = 2871442;
$releaseId = 25201483;

try {
$results = $discogs->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());
}
32 changes: 32 additions & 0 deletions examples/users.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use AmpacheDiscogs\Discogs;

require dirname(__DIR__) . '/vendor/autoload.php';

// your own username and password are required to use the Discogs API
$username = null;
$password = null;
$discogs = new Discogs($username, $password);
$username = 'discogsUsername';
$list_id = 1596537;

try {
$results = $discogs->get_profile($username);

print_r($results);

$results = $discogs->get_user_lists($username);

print_r($results);

$results = $discogs->get_wantlist($username);

print_r($results);

$results = $discogs->get_list($list_id);

print_r($results);
} catch (Exception $exception) {
print_r($exception->getMessage());
}
157 changes: 138 additions & 19 deletions src/AmpacheDiscogs/Discogs.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,33 +28,17 @@
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';
public const VERSION = '0.2.0';

private const DISCOGS_URL = 'https://api.discogs.com/';

private readonly string $api_key;

private readonly string $secret;

private string $userAgent;
private readonly string $userAgent;

/**
* Constructor
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @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<string, mixed>
* @throws Exception
*/
public function get_wantlist(string $username): array
{
$query = sprintf("users/%s/wants", $username);

return $this->_query_discogs($query);
}
}