beets 1.4.7
This new release includes lots of new features in the importer and the metadata source backends that it uses. We've changed how the beets importer handles non-audio tracks listed in metadata sources like MusicBrainz:
- The importer now ignores non-audio tracks (namely, data and video tracks) listed in MusicBrainz. Also, a new option, ignore_video_tracks, lets you return to the old behavior and include these video tracks. #1210
- A new importer option, ignored_media, can let you skip certain media formats. #2688
There are other subtle improvements to metadata handling in the importer:
- In the MusicBrainz backend, beets now imports the
musicbrainz_releasetrackid
field. This is a first step toward #406. Thanks to @Rawrmonkeys. - A new importer configuration option, artist_credit, will tell beets to prefer the artist credit over the artist when autotagging. #1249
And there are even more new features:
replaygain
: Thebeet replaygain
command now has--force
,--write
and--nowrite
options. #2778- A new importer configuration option, incremental_skip_later, lets you avoid recording skipped directories to the list of "processed" directories in incremental mode. This way, you can revisit them later with another import. Thanks to @sekjun9878. #2773
fetchart
: The configuration options now support finer-grained control via thesources
option. You can now specify the search order for different matching strategies within different backends.web
: A newcors_supports_credentials
configuration option lets in-browser clients communicate with the server even when it is protected by an authorization mechanism (a proxy with HTTP authentication enabled, for example).- A new
sonosupdate
plugin automatically notifies Sonos controllers to update the music library when the beets library changes. Thanks to @cgtobi. discogs
: The plugin now stores master release IDs intomb_releasegroupid
. It also "simulates" track IDs using the release ID and the track list position. Thanks to @dbogdanov. #2336discogs
: Fetch the original year from master releases. #1122
There are lots and lots of fixes:
replaygain
: Fix a corner-case with thebs1770gain
backend where ReplayGain values were assigned to the wrong files. The plugin now requires version 0.4.6 or later of thebs1770gain
tool. #2777lyrics
: The plugin no longer crashes in the Genius source when BeautifulSoup is not found. Instead, it just logs a message and disables the source. #2911lyrics
: Handle network and API errors when communicating with Genius. #2771lyrics
: Thelyrics
command previously wrote ReST files by default, even when you didn't ask for them. This default has been fixed.lyrics
: When writing ReST files, thelyrics
command now groups lyrics by thealbumartist
field, rather thanartist
. #2924- Plugins can now see updated import task state, such as when rejecting the initial candidates and finding new ones via a manual search. Notably, this means that the importer prompt options that the
edit
provides show up more reliably after doing a secondary import search. #2441 #2731 importadded
: Fix a crash on non-autotagged imports. Thanks to @m42i. #2601 #1918plexupdate
: The Plex token is now redacted in configuration output. Thanks to @Kovrinic. #2804- Avoid a crash when importing a non-ASCII filename when using an ASCII locale on Unix under Python 3. #2793 #2803
- Fix a problem caused by time zone misalignment that could make date queries fail to match certain dates that are near the edges of a range. For example, querying for dates within a certain month would fail to match dates within hours of the end of that month. #2652
convert
: The plugin now runs before other plugin-provided import stages, which addresses an issue with generating ReplayGain data incompatible between the source and target file formats. Thanks to @autrimpo. #2814ftintitle
: Thedrop
config option had no effect; it now does what it says it should do. #2817- Importing a release with multiple release events now selects the event based on the order of your preferred countries rather than the order of release events in MusicBrainz. #2816
web
: The time display in the web interface would incorrectly jump at the 30-second mark of every minute. Now, it correctly changes over at zero seconds. #2822web
: Fetching album art now works (instead of throwing an exception) under Python 3. Additionally, the server will now return a 404 response when the album ID is unknown (instead of throwing an exception and producing a 500 response). #2823web
: Fix an exception on Python 3 for filenames with non-Latin1 characters. (These characters are now converted to their ASCII equivalents.) #2815- Partially fix bash completion for subcommand names that contain hyphens. Thanks to @jhermann. #2836 #2837
replaygain
: Really fix album gain calculation using the GStreamer backend. #2846- Avoid an error when doing a "no-op" move on non-existent files (i.e., moving a file onto itself). #2863
discogs
: Fix themedium
andmedium_index
values, which were occasionally incorrect for releases with two-sided mediums such as vinyl. Also fix themedium_total
value, which now contains total number of tracks on the medium to which a track belongs, not the total number of different mediums present on the release. Thanks to @dbogdanov. #2887- The importer now supports audio files contained in data tracks when they are listed in MusicBrainz: the corresponding audio tracks are now merged into the main track list. Thanks to @jdetrey. #1638
keyfinder
: Avoid a crash when trying to process unmatched tracks. #2537mbsync
: Support MusicBrainz recording ID changes, relying on release track IDs instead. Thanks to @jdetrey. #1234mbsync
: We can now successfully update albums even when the first track has a missing MusicBrainz recording ID. #2920
There are a couple of changes for developers:
- Plugins can now run their import stages early, before other plugins. Use the
early_import_stages
list instead of plainimport_stages
to request this behavior. #2814 - We again properly send
albuminfo_received
andtrackinfo_received
in all cases, most notably when using thembsync
plugin. This was a regression since version 1.4.1. #2921