beets v1.4.4 Release Notes

Release Date: 2017-06-10 // almost 7 years ago
  • ๐Ÿš€ This release built up a longer-than-normal list of nifty new features. We now support DSF audio files and the importer can hard-link your files, for example.

    Here's a full list of new features:

    • โž• Added support for DSF files, once a future version of Mutagen is released that supports them. Thanks to @docbobo. #459 #2379
    • ๐Ÿ‘ A new hardlink config option instructs the importer to create hard links on filesystems that support them. Thanks to @jacobwgillespie. #2445
    • โšก๏ธ A new kodiupdate lets you keep your Kodi library in sync with beets. Thanks to @Pauligrinder. #2411
    • ๐Ÿ”ง A new bell configuration option under the import section enables a terminal bell when input is required. Thanks to @SpirosChadoulos. #2366 #2495
    • ๐Ÿ‘ A new field, composer_sort, is now supported and fetched from MusicBrainz. Thanks to @dosoe. #2519 #2529
    • The MusicBrainz backend and discogs now both provide a new attribute called track_alt that stores more nuanced, possibly non-numeric track index data. For example, some vinyl or tape media will report the side of the record using a letter instead of a number in that field. #1831 #2363
    • ๐ŸŒ web: Added a new endpoint, /item/path/foo, which will return the item info for the file at the given path, or 404.
    • ๐ŸŒ web: Added a new config option, include_paths, which will cause paths to be included in item API responses if set to true.
    • 0๏ธโƒฃ The %aunique template function for aunique now takes a third argument that specifies which brackets to use around the disambiguator value. The argument can be any two characters that represent the left and right brackets. It defaults to [] and can also be blank to turn off bracketing. #2397 #2399
    • โž• Added a --move or -m option to the importer so that the files can be moved to the library instead of being copied or added "in place." #2252 #2429
    • 0๏ธโƒฃ badfiles: Added a --verbose or -v option. Results are now displayed only for corrupted files by default and for all the files when the verbose option is set. #1654 #2434
    • embedart: The explicit embedart command now asks for confirmation before embedding art into music files. Thanks to
      @Stunner. #1999
    • You can now run beets by typing python -m beets. #2453
    • smartplaylist: Different playlist specifications that generate identically-named playlist files no longer conflict; instead, the resulting lists of tracks are concatenated. #2468
    • ๐Ÿ‘€ missing: A new mode lets you see missing albums from artists you have in your library. Thanks to @qlyoung. #2481
    • ๐Ÿ”Œ web : Add new reverse_proxy config option to allow serving the web plugins under a reverse proxy.
    • ๐Ÿš€ Importing a release with multiple release events now selects the event based on your preferred countries. #2501
    • โš  play: A new -y or --yes parameter lets you skip the warning message if you enqueue more items than the warning threshold usually allows.
    • ๐Ÿ›  Fix a bug where commands which forked subprocesses would sometimes prevent further inputs. This bug mainly affected convert. Thanks to @jansol. #2488 #2524

    ๐Ÿ›  There are also quite a few fixes:

    • ๐Ÿ”ง In the replace configuration option, we now replace a leading hyphen (-) with an underscore. #549 #2509
    • absubmit: We no longer filter audio files for specific formats---we will attempt the submission process for all formats. #2471
    • โšก๏ธ mpdupdate: Fix Python 3 compatibility. #2381
    • replaygain: Fix Python 3 compatibility in the bs1770gain backend. #2382
    • bpd: Report playback times as integers. #2394
    • ๐Ÿ”Œ mpdstats: Fix Python 3 compatibility. The plugin also now requires version 0.4.2 or later of the python-mpd2 library. #2405
    • mpdstats: Improve handling of MPD status queries.
    • badfiles: Fix Python 3 compatibility.
    • ๐Ÿ›  Fix some cases where album-level ReplayGain/SoundCheck metadata would be written to files incorrectly. #2426
    • badfiles: The command no longer bails out if the validator command is not found or exits with an error. #2430 #2433
    • lyrics: The Google search backend no longer crashes when the server responds with an error. #2437
    • discogs: You can now authenticate with Discogs using a personal access token. #2447
    • ๐Ÿ›  Fix Python 3 compatibility when extracting rar archives in the importer. Thanks to @Lompik. #2443 #2448
    • ๐Ÿšš duplicates: Fix Python 3 compatibility when using the copy and move options. #2444
    • mbsubmit: The tracks are now sorted properly. Thanks to
      @awesomer. #2457
    • thumbnails: Fix a string-related crash on Python 3. #2466
    • beatport: More than just 10 songs are now fetched per album. #2469
    • ๐Ÿ”ง On Python 3, the terminal_encoding setting is respected again for output and printing will no longer crash on systems configured with a limited encoding.
    • ๐Ÿ”ง convert: The default configuration uses FFmpeg's built-in AAC codec instead of faac. Thanks to @jansol. #2484
    • ๐Ÿ›  Fix the importer's detection of multi-disc albums when other subdirectories are present. #2493
    • ๐Ÿ–จ Invalid date queries now print an error message instead of being silently ignored. Thanks to @discopatrick. #2513 #2517
    • ๐Ÿ–จ When the SQLite database stops being accessible, we now print a friendly error message. Thanks to @Mary011196. #1676 #2508
    • ๐Ÿ–จ web: Avoid a crash when sending binary data, such as Chromaprint fingerprints, in music attributes. #2542 #2532
    • ๐Ÿ›  Fix a hang when parsing templates that end in newlines. #2562
    • ๐Ÿ›  Fix a crash when reading non-ASCII characters in configuration files on Windows under Python 3. #2456 #2565 #2566

    ๐Ÿ“‡ We removed backends from two metadata plugins because of bitrot:

    • ๐Ÿšš lyrics: The Lyrics.com backend has been removed. (It stopped working because of changes to the site's URL structure.) #2548 #2549
    • ๐Ÿ“š fetchart: The documentation no longer recommends iTunes Store artwork lookup because the unmaintained python-itunes is broken. Want to adopt it? #2371 #1610