local: Make search filters more robust (fixes #635)
This commit is contained in:
parent
b38d3dba79
commit
06856851f7
@ -101,25 +101,26 @@ def search(tracks, query=None, uris=None):
|
||||
else:
|
||||
q = value.strip().lower()
|
||||
|
||||
uri_filter = lambda t: q in t.uri.lower()
|
||||
track_name_filter = lambda t: q in t.name.lower()
|
||||
album_filter = lambda t: q in getattr(
|
||||
t, 'album', Album()).name.lower()
|
||||
artist_filter = lambda t: filter(
|
||||
lambda a: q in a.name.lower(), t.artists)
|
||||
uri_filter = lambda t: bool(t.uri and q in t.uri.lower())
|
||||
track_name_filter = lambda t: bool(t.name and q in t.name.lower())
|
||||
album_filter = lambda t: bool(
|
||||
t.album and t.album.name and q in t.album.name.lower())
|
||||
artist_filter = lambda t: bool(filter(
|
||||
lambda a: bool(a.name and q in a.name.lower()), t.artists))
|
||||
albumartist_filter = lambda t: any([
|
||||
q in a.name.lower()
|
||||
a.name and q in a.name.lower()
|
||||
for a in getattr(t.album, 'artists', [])])
|
||||
composer_filter = lambda t: any([
|
||||
q in a.name.lower()
|
||||
a.name and q in a.name.lower()
|
||||
for a in getattr(t, 'composers', [])])
|
||||
performer_filter = lambda t: any([
|
||||
q in a.name.lower()
|
||||
a.name and q in a.name.lower()
|
||||
for a in getattr(t, 'performers', [])])
|
||||
track_no_filter = lambda t: q == t.track_no
|
||||
genre_filter = lambda t: t.genre and q in t.genre.lower()
|
||||
date_filter = lambda t: t.date and t.date.startswith(q)
|
||||
comment_filter = lambda t: t.comment and q in t.comment.lower()
|
||||
genre_filter = lambda t: bool(t.genre and q in t.genre.lower())
|
||||
date_filter = lambda t: bool(t.date and t.date.startswith(q))
|
||||
comment_filter = lambda t: bool(
|
||||
t.comment and q in t.comment.lower())
|
||||
any_filter = lambda t: (
|
||||
uri_filter(t) or
|
||||
track_name_filter(t) or
|
||||
|
||||
Binary file not shown.
@ -24,6 +24,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
|
||||
Artist(name='artist4'),
|
||||
Artist(name='artist5'),
|
||||
Artist(name='artist6'),
|
||||
Artist(),
|
||||
]
|
||||
|
||||
albums = [
|
||||
@ -31,6 +32,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
|
||||
Album(name='album2', artists=[artists[1]]),
|
||||
Album(name='album3', artists=[artists[2]]),
|
||||
Album(name='album4'),
|
||||
Album(artists=[artists[-1]]),
|
||||
]
|
||||
|
||||
tracks = [
|
||||
@ -57,6 +59,7 @@ class LocalLibraryProviderTest(unittest.TestCase):
|
||||
Track(
|
||||
uri='local:track:path6', name='track6', genre='genre2',
|
||||
album=albums[3], length=4000, performers=[artists[5]]),
|
||||
Track(uri='local:track:nameless', album=albums[-1]),
|
||||
]
|
||||
|
||||
config = {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user