beets v1.4.7 Release Notes

Release Date: 2018-05-29 // almost 6 years ago
  • ๐Ÿš€ 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: The beet 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 the sources option. You can now specify the search order for different matching strategies within different backends.
    • ๐Ÿ‘Œ web: A new cors_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 into mb_releasegroupid. It also "simulates" track IDs using the release ID and the track list position. Thanks to @dbogdanov. #2336
    • ๐Ÿš€ discogs: Fetch the original year from master releases. #1122

    ๐Ÿ›  There are lots and lots of fixes:

    • ๐Ÿ”Œ replaygain: Fix a corner-case with the bs1770gain backend where ReplayGain values were assigned to the wrong files. The plugin now requires version 0.4.6 or later of the bs1770gain tool. #2777
    • ๐Ÿ”Š lyrics: The plugin no longer crashes in the Genius source when BeautifulSoup is not found. Instead, it just logs a message and disables the source. #2911
    • lyrics: Handle network and API errors when communicating with Genius. #2771
    • 0๏ธโƒฃ lyrics: The lyrics 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, the lyrics command now groups lyrics by the albumartist field, rather than artist. #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 #1918
    • โšก๏ธ plexupdate: 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. #2814
    • ftintitle: The drop 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. #2822
    • ๐ŸŒ web: 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). #2823
    • ๐ŸŒ web: 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 the medium and medium_index values, which were occasionally incorrect for releases with two-sided mediums such as vinyl. Also fix the medium_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. #2537
    • ๐Ÿš€ mbsync: Support MusicBrainz recording ID changes, relying on release track IDs instead. Thanks to @jdetrey. #1234
    • โšก๏ธ mbsync: 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 plain import_stages to request this behavior. #2814
    • We again properly send albuminfo_received and trackinfo_received in all cases, most notably when using the mbsync plugin. This was a regression since version 1.4.1. #2921