local: Update library interface

- Add track iterator for use in scanner
- Update lookup to only return a single track
This commit is contained in:
Thomas Adamcik 2013-12-24 00:54:02 +01:00
parent d93d3e6fcd
commit ff57439995
3 changed files with 19 additions and 5 deletions

View File

@ -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

View File

@ -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()

View File

@ -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: