From a3731c8187c46ba851083e80d0d7bad59e793d49 Mon Sep 17 00:00:00 2001 From: Stein Magnus Jodal Date: Thu, 2 Jan 2014 22:06:32 +0100 Subject: [PATCH] backend: Add library.browse() --- mopidy/backends/base.py | 19 +++++++++++++++++++ mopidy/backends/dummy.py | 6 ++++++ mopidy/backends/local/json/library.py | 2 ++ tests/backends/local/library_test.py | 4 ++++ 4 files changed, 31 insertions(+) diff --git a/mopidy/backends/base.py b/mopidy/backends/base.py index 6b980f06..3dc644ee 100644 --- a/mopidy/backends/base.py +++ b/mopidy/backends/base.py @@ -50,9 +50,28 @@ class BaseLibraryProvider(object): pykka_traversable = True + name = None + """ + Name of the library. + + Used as the library directory name in Mopidy's virtual file system. + + *MUST be set by any class that implements :meth:`browse`.* + """ + def __init__(self, backend): self.backend = backend + def browse(self, path): + """ + See :meth:`mopidy.core.LibraryController.browse`. + + If you implement this method, make sure to also set :attr:`name`. + + *MAY be implemented by subclass.* + """ + return [] + # TODO: replace with search(query, exact=True, ...) def find_exact(self, query=None, uris=None): """ diff --git a/mopidy/backends/dummy.py b/mopidy/backends/dummy.py index 65477ea2..f16c457a 100644 --- a/mopidy/backends/dummy.py +++ b/mopidy/backends/dummy.py @@ -38,12 +38,18 @@ class DummyBackend(pykka.ThreadingActor, base.Backend): class DummyLibraryProvider(base.BaseLibraryProvider): + name = 'dummy' + def __init__(self, *args, **kwargs): super(DummyLibraryProvider, self).__init__(*args, **kwargs) self.dummy_library = [] + self.dummy_browse_result = [] self.dummy_find_exact_result = SearchResult() self.dummy_search_result = SearchResult() + def browse(self, path): + return self.dummy_browse_result + def find_exact(self, **query): return self.dummy_find_exact_result diff --git a/mopidy/backends/local/json/library.py b/mopidy/backends/local/json/library.py index 99640543..c3dacec4 100644 --- a/mopidy/backends/local/json/library.py +++ b/mopidy/backends/local/json/library.py @@ -42,6 +42,8 @@ def write_library(json_file, data): class LocalJsonLibraryProvider(base.BaseLibraryProvider): + name = 'local' + def __init__(self, *args, **kwargs): super(LocalJsonLibraryProvider, self).__init__(*args, **kwargs) self._uri_mapping = {} diff --git a/tests/backends/local/library_test.py b/tests/backends/local/library_test.py index e4c00570..92d615ba 100644 --- a/tests/backends/local/library_test.py +++ b/tests/backends/local/library_test.py @@ -110,6 +110,10 @@ class LocalLibraryProviderTest(unittest.TestCase): result = backend.library.lookup(self.tracks[0].uri) self.assertEqual(result, []) + @unittest.SkipTest + def test_browse(self): + pass # TODO + def test_lookup(self): tracks = self.library.lookup(self.tracks[0].uri) self.assertEqual(tracks, self.tracks[0:1])