Merge pull request #1138 from djl/smartplaylistsort

smartplaylist: Respect sort terms in queries.
This commit is contained in:
Adrian Sampson 2014-12-12 15:41:06 -08:00
commit 54f5bc7c26

View file

@ -18,7 +18,6 @@ from __future__ import print_function
from beets.plugins import BeetsPlugin
from beets import config, ui, library
from beets import dbcore
from beets.util import normpath, syspath
import os
@ -36,23 +35,21 @@ def _items_for_query(lib, playlist, album=False):
if key not in playlist:
return []
# Parse quer(ies). If it's a list, join the queries with OR.
# Parse quer(ies). If it's a list, perform the queries and manually
# concatenate the results
query_strings = playlist[key]
if not isinstance(query_strings, (list, tuple)):
query_strings = [query_strings]
model = library.Album if album else library.Item
query = dbcore.OrQuery(
[library.parse_query_string(q, model)[0] for q in query_strings]
)
# Execute query, depending on type.
if album:
result = []
for album in lib.albums(query):
result.extend(album.items())
return result
else:
return lib.items(query)
results = []
for q in query_strings:
querystr, sort = library.parse_query_string(q, model)
if album:
new = lib.albums(querystr, sort)
else:
new = lib.items(querystr, sort)
results.extend(new)
return results
def update_playlists(lib):