Remove debug, make track_no more robust
This commit is contained in:
parent
efc9fc75b5
commit
e7746dac1b
@ -21,6 +21,12 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
self._tag_cache_file = self.backend.config['local']['tag_cache_file']
|
||||
self.refresh()
|
||||
|
||||
def _convert_to_int(self, string):
|
||||
try:
|
||||
return int(string)
|
||||
except ValueError:
|
||||
return object()
|
||||
|
||||
def refresh(self, uri=None):
|
||||
logger.debug(
|
||||
'Loading local tracks from %s using %s',
|
||||
@ -60,7 +66,10 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
values = [values]
|
||||
# FIXME this is bound to be slow for large libraries
|
||||
for value in values:
|
||||
q = value.strip()
|
||||
if field == 'track_no':
|
||||
q = self._convert_to_int(value)
|
||||
else:
|
||||
q = value.strip()
|
||||
|
||||
uri_filter = lambda t: q == t.uri
|
||||
track_filter = lambda t: q == t.name
|
||||
@ -70,7 +79,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
albumartist_filter = lambda t: any([
|
||||
q == a.name
|
||||
for a in getattr(t.album, 'artists', [])])
|
||||
track_no_filter = lambda t: int(q) == t.track_no
|
||||
track_no_filter = lambda t: q == t.track_no
|
||||
date_filter = lambda t: q == t.date
|
||||
any_filter = lambda t: (
|
||||
uri_filter(t) or
|
||||
@ -88,14 +97,8 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
result_tracks = filter(album_filter, result_tracks)
|
||||
elif field == 'artist':
|
||||
result_tracks = filter(artist_filter, result_tracks)
|
||||
#import logging
|
||||
#logger = logging.getLogger('mopidy.backends.local')
|
||||
#logger.debug("==find_exact=artist - q: {} - tracks: {}".format(q, result_tracks))
|
||||
elif field == 'albumartist':
|
||||
result_tracks = filter(albumartist_filter, result_tracks)
|
||||
#import logging
|
||||
#logger = logging.getLogger('mopidy.backends.local')
|
||||
#logger.debug("==find_exact=albumartist - q: {} - tracks: {}".format(q, result_tracks))
|
||||
elif field == 'track_no':
|
||||
result_tracks = filter(track_no_filter, result_tracks)
|
||||
elif field == 'date':
|
||||
@ -120,7 +123,10 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
values = [values]
|
||||
# FIXME this is bound to be slow for large libraries
|
||||
for value in values:
|
||||
q = value.strip().lower()
|
||||
if field == 'track_no':
|
||||
q = self._convert_to_int(value)
|
||||
else:
|
||||
q = value.strip().lower()
|
||||
|
||||
uri_filter = lambda t: q in t.uri.lower()
|
||||
track_filter = lambda t: q in t.name.lower()
|
||||
@ -131,7 +137,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
|
||||
albumartist_filter = lambda t: any([
|
||||
q in a.name.lower()
|
||||
for a in getattr(t.album, 'artists', [])])
|
||||
track_no_filter = lambda t: int(q) == t.track_no
|
||||
track_no_filter = lambda t: q == t.track_no
|
||||
date_filter = lambda t: t.date and t.date.startswith(q)
|
||||
any_filter = lambda t: (
|
||||
uri_filter(t) or
|
||||
|
||||
@ -117,6 +117,9 @@ class LocalLibraryProviderTest(unittest.TestCase):
|
||||
result = self.library.find_exact(track_no=['9'])
|
||||
self.assertEqual(list(result[0].tracks), [])
|
||||
|
||||
result = self.library.find_exact(track_no=['no_match'])
|
||||
self.assertEqual(list(result[0].tracks), [])
|
||||
|
||||
result = self.library.find_exact(uri=['fake uri'])
|
||||
self.assertEqual(list(result[0].tracks), [])
|
||||
|
||||
@ -250,6 +253,9 @@ class LocalLibraryProviderTest(unittest.TestCase):
|
||||
result = self.library.search(track_no=['9'])
|
||||
self.assertEqual(list(result[0].tracks), [])
|
||||
|
||||
result = self.library.search(track_no=['no_match'])
|
||||
self.assertEqual(list(result[0].tracks), [])
|
||||
|
||||
result = self.library.search(date=['unknown date'])
|
||||
self.assertEqual(list(result[0].tracks), [])
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user