@sampsyo sampsyo released this Dec 21, 2017 · 489 commits to master since this release

The highlight of this release is "album merging," an oft-requested option in the importer to add new tracks to an existing album you already have in your library. This way, you no longer need to resort to removing the partial album from your library, combining the files manually, and importing again.

Here are the larger new features in this release:

  • When the importer finds duplicate albums, you can now merge all the tracks—old and new—together and try importing them as a single, combined album. Thanks to @udiboy1209. #112 #2725
  • lyrics: The plugin can now produce reStructuredText files for beautiful, readable books of lyrics. Thanks to @anarcat. #2628
  • A new from_scratch configuration option makes the importer remove old metadata before applying new metadata. This new feature complements the zero and scrub plugins but is slightly different: beets clears out all the old tags it knows about and only keeps the new data it gets from the remote metadata source. Thanks to @tummychow. #934 #2755

There are also somewhat littler, but still great, new features:

  • convert: A new no_convert option lets you skip transcoding items matching a query. Instead, the files are just copied as-is. Thanks to @Stunner. #2732 #2751
  • fetchart: A new quiet switch that only prints out messages when album art is missing. Thanks to @euri10. #2683
  • mbcollection: You can configure a custom MusicBrainz collection via the new collection configuration option. #2685
  • mbcollection: The collection update command can now remove albums from collections that are longer in the beets library.
  • fetchart: The clearart command now asks for confirmation before touching your files. Thanks to @konman2. #2708 #2427
  • mpdstats: The plugin now correctly updates song statistics when MPD switches from a song to a stream and when it plays the same song multiple times consecutively. #2707
  • acousticbrainz: The plugin can now be configured to write only a specific list of tags. Thanks to @woparry.

There are lots and lots of bug fixes:

  • hook: Fixed a problem where accessing non-string properties of item or album (e.g., item.track) would cause a crash. Thanks to @broddo. #2740
  • play: When relative_to is set, the plugin correctly emits relative paths even when querying for albums rather than tracks. Thanks to @j000. #2702
  • We suppress a spurious Python warning about a BrokenPipeError being ignored. This was an issue when using beets in simple shell scripts. Thanks to @Azphreal. #2622 #2631
  • replaygain: Fix a regression in the previous release related to the new R128 tags. #2615 #2623
  • lyrics: The MusixMatch backend now detects and warns when the server has blocked the client. Thanks to @anarcat. #2634 #2632
  • importfeeds: Fix an error on Python 3 in certain configurations. Thanks to @djl. #2467 #2658
  • edit: Fix a bug when editing items during a re-import with the -L flag. Previously, diffs against against unrelated items could be shown or beets could crash. #2659
  • kodiupdate: Fix the server URL and add better error reporting. #2662
  • Fixed a problem where "no-op" modifications would reset files' mtimes, resulting in unnecessary writes. This most prominently affected the edit plugin when saving the text file without making changes to some music. #2667
  • chroma: Fix a crash when running the submit command on Python 3 on Windows with non-ASCII filenames. #2671
  • absubmit: Fix an occasional crash on Python 3 when the AB analysis tool produced non-ASCII metadata. #2673
  • duplicates: Use the default tiebreak for items or albums when the configuration only specifies a tiebreak for the other kind of entity. Thanks to @cgevans. #2758
  • duplicates: Fix the --key command line option, which was ignored.
  • replaygain: Fix album ReplayGain calculation with the GStreamer backend. #2636
  • scrub: Handle errors when manipulating files using newer versions of Mutagen. #2716
  • fetchart: The plugin no longer gets skipped during import when the "Edit Candidates" option is used from the edit plugin. #2734
  • Fix a crash when numeric metadata fields contain just a minus or plus sign with no following numbers. Thanks to @eigengrau. #2741
  • fromfilename: Recognize file names that contain only a track number, such as 01.mp3. Also, the plugin now allows underscores as a separator between fields. Thanks to @Vrihub. #2738 #2759
  • Fixed an issue where images would be resized according to their longest edge, instead of their width, when using the maxwidth config option in the fetchart and embedart plugins.

There are some changes for developers:

  • "Fixed fields" in Album and Item objects are now more strict about translating missing values into type-specific null-like values. This should help in cases where a string field is unexpectedly None sometimes instead of just showing up as an empty string. #2605
  • Refactored the move functions the beets.library module and the manipulate_files function in beets.importer to use a single parameter describing the file operation instead of multiple Boolean flags. There is a new numerated type describing how to move, copy, or link files. #2682
Assets 3