From 70c5319acb3fae54c682e0481f832af4ab3b8573 Mon Sep 17 00:00:00 2001 From: David Sn Date: Fri, 25 Sep 2020 05:26:05 +0200 Subject: [PATCH] Add support for cover art Signed-off-by: David Sn --- mopidy_funkwhale/library.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/mopidy_funkwhale/library.py b/mopidy_funkwhale/library.py index bf8dabd..bf4f160 100644 --- a/mopidy_funkwhale/library.py +++ b/mopidy_funkwhale/library.py @@ -255,6 +255,34 @@ class FunkwhaleLibraryProvider(backend.LibraryProvider): ] return libraries, True + def get_images(self, uris): + logger.debug("Handling get images: %s", uris) + result = {} + + # TODO Add cache + for uri in uris: + track_id = uri.split(":")[-1] + payload = self.backend.client.get_track(track_id) + + if not payload["album"]["cover"]: + continue + + result[uri] = [] + + for type, cover_url in payload["album"]["cover"]["urls"].items(): + if not cover_url: + continue + + if type == "large_square_crop": + image = models.Image(uri=cover_url, width=600, height=600) + elif type == "medium_square_crop": + image = models.Image(uri=cover_url, width=200, height=200) + else: + image = models.Image(uri=cover_url) + + result[uri].append(image) + + return result def search(self, query=None, uris=None, exact=False): # TODO Support exact search @@ -333,8 +361,6 @@ def convert_to_artist(payload, uri_prefix="funkwhale:artists"): @cast_to_ref def convert_to_album(payload, uri_prefix="funkwhale:albums"): artist = convert_to_artist(payload["artist"]) - image = payload["cover"]["urls"]["original"] if payload["cover"] else None - return models.Album( uri=uri_prefix + ":%s" % payload["id"], name=payload["title"], @@ -349,6 +375,7 @@ def convert_to_album(payload, uri_prefix="funkwhale:albums"): def convert_to_track(payload, uri_prefix="funkwhale:tracks"): artist = convert_to_artist(payload["artist"]) album = convert_to_album(payload["album"]) + try: upload = payload["uploads"][0] except (KeyError, IndexError):