Skip to content

beets 1.3.3

Compare
Choose a tag to compare
@sampsyo sampsyo released this 27 Feb 04:46
· 9345 commits to master since this release

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 inline plugin to define a field called era, you can now filter your library based on that field by typing something like beet 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-02 or in the whole decade with added: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 --config command-line option lets you specify an additional configuration file. This option combines config settings with your default config file. (As part of this change, the BEETSDIR environment 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 chroma and lastgenre.
  • 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) and item_copied (thanks to Stig Inge Lea Bjørnsen).
  • The pluginpath config option can now point to the directory containing plugin code. (Previously, it awkwardly needed to point at a directory containing a beetsplug directory, 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 using pluginpath when 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 fetchart or embedart without ImageMagick installed.
  • Also, when invoking convert for image resizing fails, we now log an error instead of crashing.
  • fetchart: The beet fetchart command can now associate local images with albums (unless --force is 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: The move and copy destination 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 the remote_priority config option, local image files are no longer completely ignored.
  • echonest: Fix an issue causing the plugin to appear twice in the output of the beet version command.
  • lastgenre: Fix an occasional crash when no tag weight was returned by Last.fm.
  • mpdstats: Restore the last_played field. 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.