@sampsyo sampsyo released this May 29, 2018 · 304 commits to master since this release

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
  • 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
Assets 3