beets 1.4.4
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 calledtrack_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.- 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 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 #2434embedart
: The explicitembedart
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. #2468missing
: A new mode lets you see missing albums from artists you have in your library. Thanks to @qlyoung. #2481web
: Add newreverse_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. #2471mpdupdate
: Fix Python 3 compatibility. #2381replaygain
: Fix Python 3 compatibility in thebs1770gain
backend. #2382bpd
: Report playback times as integers. #2394mpdstats
: Fix Python 3 compatibility. The plugin also now requires version 0.4.2 or later of thepython-mpd2
library. #2405mpdstats
: 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 #2433lyrics
: The Google search backend no longer crashes when the server responds with an error. #2437discogs
: 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 thecopy
andmove
options. #2444mbsubmit
: The tracks are now sorted properly. Thanks to
@awesomer. #2457thumbnails
: Fix a string-related crash on Python 3. #2466beatport
: 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 #2549fetchart
: The documentation no longer recommends iTunes Store artwork lookup because the unmaintained python-itunes is broken. Want to adopt it? #2371 #1610