From 88c978bdca70d6e20f27ff515a6b673bef4a3c4c Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 18 Feb 2015 21:13:25 +0100 Subject: [PATCH 1/2] backend: Add a default get_images impl. --- mopidy/backend.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/mopidy/backend.py b/mopidy/backend.py index 3dc3a28c..70591b3e 100644 --- a/mopidy/backend.py +++ b/mopidy/backend.py @@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals import copy -from mopidy import listener +from mopidy import listener, models class Backend(object): @@ -97,8 +97,19 @@ class LibraryProvider(object): See :meth:`mopidy.core.LibraryController.get_images`. *MAY be implemented by subclass.* + + Default implementation will simply call lookup and try and use the + album art for any tracks returned. Most extensions should replace this + with something smarter or simply return an empty dictionary. """ - return {} + result = {} + for uri in uris: + for track in self.lookup(uri): + if track.album and track.album.images: + for image_uri in track.album.images: + image = models.Image(uri=image_uri) + result.setdefault(uri, []).append(image) + return result # TODO: replace with search(query, exact=True, ...) def find_exact(self, query=None, uris=None): From 2ff2a3719e3d9b356e397f6611b07a21a2fea52e Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 18 Feb 2015 21:55:39 +0100 Subject: [PATCH 2/2] backend: Add test for get_images fallback --- tests/backend/test_backend.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 tests/backend/test_backend.py diff --git a/tests/backend/test_backend.py b/tests/backend/test_backend.py new file mode 100644 index 00000000..7c939132 --- /dev/null +++ b/tests/backend/test_backend.py @@ -0,0 +1,19 @@ +from __future__ import absolute_import, unicode_literals + +import unittest + +from mopidy import models + +from tests import dummy_backend + + +class LibraryTest(unittest.TestCase): + def test_default_get_images_impl_falls_back_to_album_image(self): + album = models.Album(images=['imageuri']) + track = models.Track(uri='trackuri', album=album) + + library = dummy_backend.DummyLibraryProvider(backend=None) + library.dummy_library.append(track) + + expected = {'trackuri': [models.Image(uri='imageuri')]} + self.assertEqual(library.get_images(['trackuri']), expected)