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 thezero
andscrub
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 newno_convert
option lets you skip transcoding items matching a query. Instead, the files are just copied as-is. Thanks to @Stunner. #2732 #2751fetchart
: A new quiet switch that only prints out messages when album art is missing. Thanks to @euri10. #2683mbcollection
: You can configure a custom MusicBrainz collection via the newcollection
configuration option. #2685mbcollection
: The collection update command can now remove albums from collections that are longer in the beets library.fetchart
: Theclearart
command now asks for confirmation before touching your files. Thanks to @konman2. #2708 #2427mpdstats
: 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. #2707acousticbrainz
: 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 ofitem
oralbum
(e.g.,item.track
) would cause a crash. Thanks to @broddo. #2740play
: Whenrelative_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 #2623lyrics
: The MusixMatch backend now detects and warns when the server has blocked the client. Thanks to @anarcat. #2634 #2632importfeeds
: Fix an error on Python 3 in certain configurations. Thanks to @djl. #2467 #2658edit
: 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. #2659kodiupdate
: 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 thesubmit
command on Python 3 on Windows with non-ASCII filenames. #2671absubmit
: Fix an occasional crash on Python 3 when the AB analysis tool produced non-ASCII metadata. #2673duplicates
: Use the default tiebreak for items or albums when the configuration only specifies a tiebreak for the other kind of entity. Thanks to @cgevans. #2758duplicates
: Fix the--key
command line option, which was ignored.replaygain
: Fix album ReplayGain calculation with the GStreamer backend. #2636scrub
: Handle errors when manipulating files using newer versions of Mutagen. #2716fetchart
: The plugin no longer gets skipped during import when the "Edit Candidates" option is used from theedit
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 as01.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 thefetchart
andembedart
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 themanipulate_files
function inbeets.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