aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorneodarz <neodarz@neodarz.net>2020-04-11 20:24:16 +0200
committerneodarz <neodarz@neodarz.net>2020-04-11 20:24:16 +0200
commit74dd9d0fb2534eb290fe6c8e7638480d54e91087 (patch)
tree4bfce3af8f5cb164e97c62c2f61bef96cea1426b
parent7591de1343524944f2fe1282c159e663016a1e52 (diff)
downloadpyfunkwhale-74dd9d0fb2534eb290fe6c8e7638480d54e91087.tar.xz
pyfunkwhale-74dd9d0fb2534eb290fe6c8e7638480d54e91087.zip
Add albums endpoints
-rw-r--r--README.md8
-rw-r--r--pyfunkwhale/funkwhale.py42
2 files changed, 46 insertions, 4 deletions
diff --git a/README.md b/README.md
index 77b14e1..2b1cb57 100644
--- a/README.md
+++ b/README.md
@@ -73,10 +73,10 @@ List of features implemented or planned:
- [x] List artists
- [x] Retrieve a single artist
- [x] List available user libraries containing work from this artist
-- [ ] Albums
- - [ ] List albums
- - [ ] Retrieve a single album
- - [ ] List available user libraries containing work from this album
+- [x] Albums
+ - [x] List albums
+ - [x] Retrieve a single album
+ - [x] List available user libraries containing work from this album
- [ ] Tracks
- [ ] List tracks
- [ ] Retrieve a single tracks
diff --git a/pyfunkwhale/funkwhale.py b/pyfunkwhale/funkwhale.py
index fc1b4d6..0c92e72 100644
--- a/pyfunkwhale/funkwhale.py
+++ b/pyfunkwhale/funkwhale.py
@@ -67,3 +67,45 @@ class Funkwhale(object):
return self.client.call(
f'/artists/{_id}/libraries/', 'get', params).json()
+
+ def albums(self, q: str = None, artist: int = None, ordering: str = None,
+ playable: bool = None, page: int = None,
+ page_size: int = None) -> dict:
+ """
+ List albums
+ """
+
+ arguments = locals()
+
+ ordering_field = ['creation_date', 'release_date', 'title']
+ if ordering is not None and ordering not in ordering_field:
+ raise ValueError("The ordering field {} is not in the ordering"
+ "fields accepted".format(ordering))
+
+ params = self._build_params(arguments)
+
+ return self.client.call('/albums/', 'get', params).json()
+
+ def album(self, _id: int, refresh: bool = False):
+ """
+ Retrieve a single album
+ """
+
+ arguments = locals()
+
+ params = self._build_params(arguments)
+
+ return self.client.call(f'/albums/{_id}', 'get', params).json()
+
+ def album_libraries(self, _id: int, page: int = None,
+ page_size: int = None):
+ """
+ List available user libraries containing work from this album
+ """
+
+ arguments = locals()
+
+ params = self._build_params(arguments)
+
+ return self.client.call(
+ f'/albums/{_id}/libraries/', 'get', params).json()