diff --git a/mopidy/backends/local/__init__.py b/mopidy/backends/local/__init__.py index d42f08ce..0f9b7502 100644 --- a/mopidy/backends/local/__init__.py +++ b/mopidy/backends/local/__init__.py @@ -63,6 +63,14 @@ class Library(object): """ return 0 + def tracks(self): + """ + Iterator over all tracks. + + :rtype: :class:`mopidy.models.Track` iterator + """ + raise NotImplementedError + def add(self, track): """ Add the given track to library. @@ -99,7 +107,7 @@ class Library(object): :param uri: track URI :type uri: string - :rtype: list of :class:`mopidy.models.Track` + :rtype: :class:`mopidy.models.Track` """ raise NotImplementedError diff --git a/mopidy/backends/local/json.py b/mopidy/backends/local/json.py index 327f706c..20b922e6 100644 --- a/mopidy/backends/local/json.py +++ b/mopidy/backends/local/json.py @@ -56,6 +56,9 @@ class JsonLibrary(local.Library): self._tracks = dict((t.uri, t) for t in library.get('tracks', [])) return len(self._tracks) + def tracks(self): + return self._tracks.itervalues() + def add(self, track): self._tracks[track.uri] = track @@ -67,10 +70,9 @@ class JsonLibrary(local.Library): def lookup(self, uri): try: - return [self._tracks[uri]] + return self._tracks[uri] except KeyError: - logger.debug('Failed to lookup %r', uri) - return [] + return None def search(self, query=None, uris=None, exact=False): tracks = self._tracks.values() diff --git a/mopidy/backends/local/library.py b/mopidy/backends/local/library.py index aeb7736b..eadea027 100644 --- a/mopidy/backends/local/library.py +++ b/mopidy/backends/local/library.py @@ -24,7 +24,11 @@ class LocalLibraryProvider(base.BaseLibraryProvider): def lookup(self, uri): if not self._library: return [] - return self._library.lookup(uri) + track = self._library.lookup(uri) + if not uri: + logger.debug('Failed to lookup %r', uri) + return [] + return [track] def find_exact(self, query=None, uris=None): if not self._library: