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