mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
29 lines
899 B
Python
29 lines
899 B
Python
"""Utility functions for beets UI commands."""
|
|
|
|
from beets import ui
|
|
|
|
|
|
def do_query(lib, query, album, also_items=True):
|
|
"""For commands that operate on matched items, performs a query
|
|
and returns a list of matching items and a list of matching
|
|
albums. (The latter is only nonempty when album is True.) Raises
|
|
a UserError if no items match. also_items controls whether, when
|
|
fetching albums, the associated items should be fetched also.
|
|
"""
|
|
if album:
|
|
albums = list(lib.albums(query))
|
|
items = []
|
|
if also_items:
|
|
for al in albums:
|
|
items += al.items()
|
|
|
|
else:
|
|
albums = []
|
|
items = list(lib.items(query))
|
|
|
|
if album and not albums:
|
|
raise ui.UserError("No matching albums found.")
|
|
elif not album and not items:
|
|
raise ui.UserError("No matching items found.")
|
|
|
|
return items, albums
|