beets 1.3.3
Version 1.3.3 brings a bunch changes to how item and album fields work internally. Along with laying the groundwork for some great things in the future, this brings a number of improvements to how you interact with beets. Here's what's new with fields in particular:
- Plugin-provided fields can now be used in queries. For example, if you use the
inlineplugin to define a field calledera, you can now filter your library based on that field by typing something likebeet list era:goldenage. - Album-level flexible attributes and plugin-provided attributes can now be used in path formats (and other item-level templates).
- Date-based queries are now possible. Try getting every track you added in February 2014 with
beet ls added:2014-02or in the whole decade withadded:2010... Thanks to Stig Inge Lea Bjørnsen. - The modify-cmd command is now better at parsing and formatting fields. You can assign to boolean fields like
comp, for example, using either the words "true" or "false" or the numerals 1 and 0. Any boolean-esque value is normalized to a real boolean. The update-cmd and write-cmd commands also got smarter at formatting and colorizing changes.
For developers, the short version of the story is that Item and Album objects provide uniform access across fixed, flexible, and computed attributes. You can write item.foo to access the foo field without worrying about where the data comes from.
Unrelated new stuff:
- The importer has a new interactive option (G for "Group albums"), command-line flag (
--group-albums), and config option (group_albums) that lets you split apart albums that are mixed together in a single directory. Thanks to geigerzaehler. - A new
--configcommand-line option lets you specify an additional configuration file. This option combines config settings with your default config file. (As part of this change, theBEETSDIRenvironment variable no longer combines---it replaces your default config file.) Thanks again to geigerzaehler. ihate: The plugin's configuration interface was overhauled. Its configuration is now much simpler---it uses beets queries instead of an ad-hoc per-field configuration. This is backwards-incompatible---if you use this plugin, you will need to update your configuration. Thanks to BrainDamage.
Other little fixes:
echonest: Tempo (BPM) is now always stored as an integer. Thanks to Heinz Wiesinger.- Fix Python 2.6 compatibility in some logging statements in
chromaandlastgenre. - Prevent some crashes when things go really wrong when writing file metadata at the end of the import process.
- New plugin events:
item_removed(thanks to Romuald Conty) anditem_copied(thanks to Stig Inge Lea Bjørnsen). - The
pluginpathconfig option can now point to the directory containing plugin code. (Previously, it awkwardly needed to point at a directory containing abeetsplugdirectory, which would then contain your code. This is preserved as an option for backwards compatibility.) This change should also work around a long-standing issue when usingpluginpathwhen beets is installed using pip. Many thanks to geigerzaehler. web: The/item/and/album/API endpoints now produce full details about albums and items, not just lists of IDs. Thanks to geigerzaehler.- Fix a potential crash when using image resizing with the
fetchartorembedartwithout ImageMagick installed. - Also, when invoking
convertfor image resizing fails, we now log an error instead of crashing. fetchart: Thebeet fetchartcommand can now associate local images with albums (unless--forceis provided). Thanks to brilnius.fetchart: Command output is now colorized. Thanks again to brilnius.- The modify-cmd command avoids writing files and committing to the database when nothing has changed. Thanks once more to brilnius.
- The importer now uses the album artist field when guessing existing metadata for albums (rather than just the track artist field). Thanks to geigerzaehler.
fromfilename: Fix a crash when a filename contained only a track number (e.g.,02.mp3).convert: Transcoding should now work on Windows.duplicates: Themoveandcopydestination arguments are now treated as directories. Thanks to Pedro Silva.- The modify-cmd command now skips confirmation and prints a message if no changes are necessary. Thanks to brilnius.
fetchart: When using theremote_priorityconfig option, local image files are no longer completely ignored.echonest: Fix an issue causing the plugin to appear twice in the output of thebeet versioncommand.lastgenre: Fix an occasional crash when no tag weight was returned by Last.fm.mpdstats: Restore thelast_playedfield. Thanks to Johann Klähn.- The modify-cmd command's output now clearly shows when a file has been deleted.
- Album art in files with Vorbis Comments is now marked with the "front cover" type. Thanks to Jason Lefley.