diff --git a/beets/ui/commands.py b/beets/ui/commands.py index 0022fac74..28893cd1f 100644 --- a/beets/ui/commands.py +++ b/beets/ui/commands.py @@ -79,6 +79,14 @@ def _do_query(lib, query, album, also_items=True): return items, albums +def _print_sqlite(query): + """Gets the result of the query, transforms the sqlite3.Row in dictionary + entries and print the values of it, with identation of 2 spaces. + """ + for row in query: + print_(' ' * 2 + dict(zip(row.keys(), row))['key']) + + # fields: Shows a list of available fields for queries and format strings. def fields_func(lib, opts, args): @@ -92,6 +100,15 @@ def fields_func(lib, opts, args): print_("Album fields:") _print_rows(library.Album.all_keys()) + with lib.transaction() as tx: + # The SQL uses the DISTINCT to get unique values from the query + unique_fields = 'SELECT DISTINCT key FROM (%s)' + + print_("Item flexible attributes:") + _print_sqlite(tx.query(unique_fields % library.Item._flex_table)) + + print_("Album flexible attributes:") + _print_sqlite(tx.query(unique_fields % library.Album._flex_table)) fields_cmd = ui.Subcommand( 'fields',