This commit is contained in:
Alok Saboo 2025-11-23 09:52:26 -05:00
parent 0511c4f202
commit f00bf83f05
2 changed files with 19 additions and 7 deletions

View file

@ -208,14 +208,24 @@ class SmartPlaylistPlugin(BeetsPlugin):
def matches(self, model, query, album_query):
# Handle single query object for Album
if album_query and not isinstance(album_query, (list, tuple)) and isinstance(model, Album):
if (
album_query
and not isinstance(album_query, (list, tuple))
and isinstance(model, Album)
):
return album_query.match(model)
# Handle tuple/list of queries for Album
elif isinstance(album_query, (list, tuple)) and isinstance(model, Album):
elif isinstance(album_query, (list, tuple)) and isinstance(
model, Album
):
return any(q.match(model) for q, _ in album_query)
# Handle single query object for Item
if query and not isinstance(query, (list, tuple)) and isinstance(model, Item):
if (
query
and not isinstance(query, (list, tuple))
and isinstance(model, Item)
):
return query.match(model)
# Handle tuple/list of queries for Item
elif isinstance(query, (list, tuple)) and isinstance(model, Item):

View file

@ -54,10 +54,12 @@ class SmartPlaylistTest(BeetsTestCase):
baz_baz = parse_query_string("BAZ baz", Item)
baz_baz2 = parse_query_string("BAZ baz", Album)
# Multiple queries are now stored as a tuple of (query, sort) tuples
bar_queries = tuple([
parse_query_string("BAR bar1", Album),
parse_query_string("BAR bar2", Album),
])
bar_queries = tuple(
[
parse_query_string("BAR bar1", Album),
parse_query_string("BAR bar2", Album),
]
)
assert spl._unmatched_playlists == {
("foo", foo_foo, (None, None)),
("baz", baz_baz, baz_baz2),