Skip to content

Commit 4d3a172

Browse files
authored
Merge pull request #1 from ampache/master
0.2.0
2 parents 9e99566 + 4b26311 commit 4d3a172

6 files changed

Lines changed: 286 additions & 19 deletions

File tree

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# AmpacheDiscogs
22

3+
## 0.2.0
4+
5+
Missing functions and examples have been added.
6+
7+
This is probably the most that the library will need to do but if there's more that you need open an issue.
8+
9+
### Added
10+
11+
* New Functions
12+
* [get_artist_releases](https://www.discogs.com/developers/#page:database,header:database-artist-releases-get)
13+
* [get_master_versions](https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get)
14+
* [get_label](https://www.discogs.com/developers/#page:database,header:database-label-get)
15+
* [get_label_releases](https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get)
16+
* [get_profile](https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get)
17+
* [get_collection_folders](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get)
18+
* [get_collection_folder](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get)
19+
* [get_collection_items_by_folder](https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get)
20+
* [get_user_lists](https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists)
21+
* [get_list](https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list)
22+
* [get_wantlist](https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist)
23+
324
## 0.1.0
425

526
Export of data functions from the [Ampache Discogs plugin](https://github.com/ampache/ampache/blob/develop/src/Plugin/AmpacheDiscogs.php).

examples/collections.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
use AmpacheDiscogs\Discogs;
4+
5+
require dirname(__DIR__) . '/vendor/autoload.php';
6+
7+
// your own username and password are required to use the Discogs API
8+
$username = null;
9+
$password = null;
10+
$discogs = new Discogs($username, $password);
11+
$username = 'discogsUsername';
12+
13+
try {
14+
$results = $discogs->get_collection_folders($username);
15+
16+
print_r($results);
17+
$folder_id = (int)$results['folders'][0]['id'];
18+
19+
$results = $discogs->get_collection_folder($username, $folder_id);
20+
21+
print_r($results);
22+
23+
$results = $discogs->get_collection_items_by_folder($username, $folder_id);
24+
25+
print_r($results);
26+
} catch (Exception $exception) {
27+
print_r($exception->getMessage());
28+
}

examples/labels.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
use AmpacheDiscogs\Discogs;
4+
5+
require dirname(__DIR__) . '/vendor/autoload.php';
6+
7+
// your own username and password are required to use the Discogs API
8+
$username = null;
9+
$password = null;
10+
$discogs = new Discogs($username, $password);
11+
$label_id = 1212668;
12+
13+
try {
14+
$results = $discogs->get_label($label_id);
15+
16+
print_r($results);
17+
18+
$results = $discogs->get_label_releases($label_id);
19+
20+
print_r($results);
21+
} catch (Exception $exception) {
22+
print_r($exception->getMessage());
23+
}

examples/releases.php

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<?php
2+
3+
use AmpacheDiscogs\Discogs;
4+
5+
require dirname(__DIR__) . '/vendor/autoload.php';
6+
7+
// your own username and password are required to use the Discogs API
8+
$username = null;
9+
$password = null;
10+
$discogs = new Discogs($username, $password);
11+
12+
$artist = 'Code 64';
13+
$album = 'The Shape';
14+
$artistId = 129150;
15+
$masterId = 2871442;
16+
$releaseId = 25201483;
17+
18+
try {
19+
$results = $discogs->search_release($artist, $album);
20+
21+
print_r($results);
22+
23+
$results = $discogs->search_master($artist, $album);
24+
25+
print_r($results);
26+
27+
$results = $discogs->get_artist_releases($artistId);
28+
29+
print_r($results);
30+
31+
$results = $discogs->get_release($releaseId);
32+
33+
print_r($results);
34+
35+
$results = $discogs->get_master($masterId);
36+
37+
print_r($results);
38+
39+
$results = $discogs->get_master_versions($masterId);
40+
41+
print_r($results);
42+
} catch (Exception $exception) {
43+
print_r($exception->getMessage());
44+
}

examples/users.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
use AmpacheDiscogs\Discogs;
4+
5+
require dirname(__DIR__) . '/vendor/autoload.php';
6+
7+
// your own username and password are required to use the Discogs API
8+
$username = null;
9+
$password = null;
10+
$discogs = new Discogs($username, $password);
11+
$username = 'discogsUsername';
12+
$list_id = 1596537;
13+
14+
try {
15+
$results = $discogs->get_profile($username);
16+
17+
print_r($results);
18+
19+
$results = $discogs->get_user_lists($username);
20+
21+
print_r($results);
22+
23+
$results = $discogs->get_wantlist($username);
24+
25+
print_r($results);
26+
27+
$results = $discogs->get_list($list_id);
28+
29+
print_r($results);
30+
} catch (Exception $exception) {
31+
print_r($exception->getMessage());
32+
}

src/AmpacheDiscogs/Discogs.php

Lines changed: 138 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,33 +28,17 @@
2828
use Exception;
2929
use WpOrg\Requests\Requests;
3030

31-
/**
32-
* todo self::get_artist_releases() https://www.discogs.com/developers/#page:database,header:database-artist-releases-get
33-
* todo self::get_master_versions() https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get
34-
* todo self::get_label() https://www.discogs.com/developers/#page:database,header:database-label-get
35-
* todo self::get_label_releases() https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get
36-
* todo self::get_identity() https://www.discogs.com/developers/#page:user-identity,header:user-identity-identity-get
37-
* todo self::get_profile() https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get
38-
* todo self::add_inventory() https://www.discogs.com/developers/#page:inventory-upload,header:inventory-upload-add-inventory-post
39-
* todo self::delete_inventory() https://www.discogs.com/developers/#page:inventory-upload,header:inventory-upload-delete-inventory-post
40-
* todo self::get_collection_folders() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get
41-
* todo self::get_collection_folder() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get
42-
* todo self::get_collection_items_by_folder() https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get
43-
* todo self::get_user_lists() https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists
44-
* todo self::get_lists() https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list
45-
* todo self::get_wantlist() https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist
46-
*/
4731
class Discogs
4832
{
49-
public const VERSION = '0.1.0';
33+
public const VERSION = '0.2.0';
5034

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

5337
private readonly string $api_key;
5438

5539
private readonly string $secret;
5640

57-
private string $userAgent;
41+
private readonly string $userAgent;
5842

5943
/**
6044
* Constructor
@@ -107,6 +91,7 @@ public function search(array $parameters): array
10791
if (!isset($parameters['per_page'])) {
10892
$parameters['per_page'] = 10;
10993
}
94+
11095
$query = http_build_query($parameters);
11196

11297
return $this->_query_discogs('database/search', $query);
@@ -197,6 +182,140 @@ public function get_master(int $object_id): array
197182
*/
198183
public function get_artist(int $object_id): array
199184
{
200-
return $this->_query_discogs('artists/' . $object_id);
185+
$query = sprintf("artists/%d", $object_id);
186+
187+
return $this->_query_discogs($query);
188+
}
189+
190+
/**
191+
* https://www.discogs.com/developers/#page:database,header:database-artist-releases-get
192+
* @return array<string, mixed>
193+
* @throws Exception
194+
*/
195+
public function get_artist_releases(int $artist_id): array
196+
{
197+
$query = sprintf("artists/%d/releases", $artist_id);
198+
199+
return $this->_query_discogs($query);
200+
}
201+
202+
/**
203+
* https://www.discogs.com/developers/#page:database,header:database-master-release-versions-get
204+
* @return array<string, mixed>
205+
* @throws Exception
206+
*/
207+
public function get_master_versions(int $master_id): array
208+
{
209+
$query = sprintf("masters/%d/versions", $master_id);
210+
211+
return $this->_query_discogs($query);
212+
}
213+
214+
/**
215+
* https://www.discogs.com/developers/#page:database,header:database-label-get
216+
* @return array<string, mixed>
217+
* @throws Exception
218+
*/
219+
public function get_label(int $label_id): array
220+
{
221+
$query = sprintf("labels/%d", $label_id);
222+
223+
return $this->_query_discogs($query);
224+
}
225+
226+
/**
227+
* https://www.discogs.com/developers/#page:database,header:database-all-label-releases-get
228+
* @return array<string, mixed>
229+
* @throws Exception
230+
*/
231+
public function get_label_releases(int $label_id): array
232+
{
233+
$query = sprintf("labels/%d/releases", $label_id);
234+
235+
return $this->_query_discogs($query);
236+
}
237+
238+
/**
239+
* https://www.discogs.com/developers/#page:user-identity,header:user-identity-profile-get
240+
* @return array<string, mixed>
241+
* @throws Exception
242+
*/
243+
public function get_profile(string $username): array
244+
{
245+
$query = sprintf("users/%s", $username);
246+
247+
return $this->_query_discogs($query);
248+
}
249+
250+
/**
251+
* https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-get
252+
* @return array<string, mixed>
253+
* @throws Exception
254+
*/
255+
public function get_collection_folders(string $username): array
256+
{
257+
$query = sprintf("users/%s/collection/folders", $username);
258+
259+
return $this->_query_discogs($query);
260+
}
261+
262+
/**
263+
* https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-folder-get
264+
* @return array<string, mixed>
265+
* @throws Exception
266+
*/
267+
public function get_collection_folder(string $username, int $folder_id): array
268+
{
269+
$query = sprintf("users/%s/collection/folders/%s", $username, $folder_id);
270+
271+
return $this->_query_discogs($query);
272+
}
273+
274+
/**
275+
* https://www.discogs.com/developers/#page:user-collection,header:user-collection-collection-items-by-folder-get
276+
* @return array<string, mixed>
277+
* @throws Exception
278+
*/
279+
public function get_collection_items_by_folder(string $username, int $folder_id): array
280+
{
281+
$query = sprintf("users/%s/collection/folders/%s/releases", $username, $folder_id);
282+
283+
return $this->_query_discogs($query);
284+
}
285+
286+
/**
287+
* https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-user-lists
288+
* @return array<string, mixed>
289+
* @throws Exception
290+
*/
291+
public function get_user_lists(string $username): array
292+
{
293+
$query = sprintf("users/%s/lists", $username);
294+
295+
return $this->_query_discogs($query);
296+
}
297+
298+
/**
299+
* https://www.discogs.com/developers/index.html#page:user-lists,header:user-lists-list
300+
* @return array<string, mixed>
301+
* @throws Exception
302+
*/
303+
public function get_list(int $list_id): array
304+
{
305+
$query = sprintf("lists/%d", $list_id);
306+
307+
return $this->_query_discogs($query);
308+
}
309+
310+
/**
311+
* https://www.discogs.com/developers/#page:user-wantlist,header:user-wantlist-wantlist
312+
* @return array<string, mixed>
313+
* @throws Exception
314+
*/
315+
public function get_wantlist(string $username): array
316+
{
317+
$query = sprintf("users/%s/wants", $username);
318+
319+
return $this->_query_discogs($query);
201320
}
202321
}

0 commit comments

Comments
 (0)