Fix track_no

This commit is contained in:
Lasse Bigum 2013-10-31 21:45:02 +01:00 committed by Stein Magnus Jodal
parent 04d9fa667b
commit efc9fc75b5
2 changed files with 17 additions and 19 deletions

View File

@ -60,10 +60,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
values = [values]
# FIXME this is bound to be slow for large libraries
for value in values:
if field == 'track_no':
q = value
else:
q = value.strip()
q = value.strip()
uri_filter = lambda t: q == t.uri
track_filter = lambda t: q == t.name
@ -73,7 +70,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: q == t.track_no
track_no_filter = lambda t: int(q) == t.track_no
date_filter = lambda t: q == t.date
any_filter = lambda t: (
uri_filter(t) or
@ -81,7 +78,6 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
album_filter(t) or
artist_filter(t) or
albumartist_filter(t) or
track_no_filter(t) or
date_filter(t))
if field == 'uri':
@ -92,8 +88,14 @@ 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':
@ -118,10 +120,7 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
values = [values]
# FIXME this is bound to be slow for large libraries
for value in values:
if field == 'track_no':
q = value
else:
q = value.strip().lower()
q = value.strip().lower()
uri_filter = lambda t: q in t.uri.lower()
track_filter = lambda t: q in t.name.lower()
@ -132,7 +131,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: q == t.track_no
track_no_filter = lambda t: int(q) == t.track_no
date_filter = lambda t: t.date and t.date.startswith(q)
any_filter = lambda t: (
uri_filter(t) or
@ -140,7 +139,6 @@ class LocalLibraryProvider(base.BaseLibraryProvider):
album_filter(t) or
artist_filter(t) or
albumartist_filter(t) or
track_no_filter(t) or
date_filter(t))
if field == 'uri':

View File

@ -114,7 +114,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
result = self.library.find_exact(date=['1990'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.find_exact(track_no=[9])
result = self.library.find_exact(track_no=['9'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.find_exact(uri=['fake uri'])
@ -167,10 +167,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
self.assertEqual(list(result[0].tracks), [self.tracks[2]])
def test_find_exact_track_no(self):
result = self.library.find_exact(track_no=[1])
result = self.library.find_exact(track_no=['1'])
self.assertEqual(list(result[0].tracks), self.tracks[:1])
result = self.library.find_exact(track_no=[2])
result = self.library.find_exact(track_no=['2'])
self.assertEqual(list(result[0].tracks), self.tracks[1:2])
def test_find_exact_date(self):
@ -228,7 +228,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
test = lambda: self.library.find_exact(album=[''])
self.assertRaises(LookupError, test)
test = lambda: self.library.find_exact(track_no=[])
test = lambda: self.library.find_exact(track_no=[''])
self.assertRaises(LookupError, test)
test = lambda: self.library.find_exact(date=[''])
@ -247,7 +247,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
result = self.library.search(album=['unknown artist'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.search(track_no=[9])
result = self.library.search(track_no=['9'])
self.assertEqual(list(result[0].tracks), [])
result = self.library.search(date=['unknown date'])
@ -314,10 +314,10 @@ class LocalLibraryProviderTest(unittest.TestCase):
self.assertEqual(list(result[0].tracks), self.tracks[1:2])
def test_search_track_no(self):
result = self.library.search(track_no=[1])
result = self.library.search(track_no=['1'])
self.assertEqual(list(result[0].tracks), self.tracks[:1])
result = self.library.search(track_no=[2])
result = self.library.search(track_no=['2'])
self.assertEqual(list(result[0].tracks), self.tracks[1:2])
def test_search_any(self):