Using bitrate_mode in beet list

I can do beet ls -f '${bitrate} and get the output I expect, a list of all the bitrates in the library. But when I do beet ls -f '${bitrate_mode}, I just get a long list of literal ${bitrate_mode} as output. Why? Is this expected? Is it a bug? I’m using beets 1.6.0. Thanks for any help or ideas!!

What version of beets are you on? bitrate_mode is only available on the development branch at the moment, a release containing it hasn’t been pushed out yet.

See the FAQ on running the latest source version for instructions on how to try this version out (be sure to keep a backup of your library!).

1 Like

I see! I found the field using the info plugin. I didn’t realize it wasn’t necessarily possible to query on all those fields. I see now that the field is not listed in the output of beet fields. So, the basic rule is that you can only query based on the officially supported fields, even if the file itself contains other tags? Is there a way to fall back on a full scan of the library for a particular tag?

Thanks for the reply, this already gave me a better understanding of the beets approach!

I agree it’s not obvious that you can’t query using all fields output by beet info.

For some context, the reason behind this is that the info command without -l or -a uses raw file tags (provided by mediafile) instead of pulling them from the beets database, but queries can only be performed on fields present in the database (which bitrate_mode will be in the next release).

If you use beet info -l or beet info -a it will display data from the database instead of from the audio files themselves - you should be able to query using all of these fields.

2 Likes

Makes sense. It seems like it might be nice to have a flag or a separate command that actually does support doing a full library scan. Of course it could take a long time, but the only alternative is to scrape the tags yourself and do a grep/awk thing, which is certainly going to take just as long!