New features
- Ability to query albums with track db fields and vice-versa, for example
beet list -a title:something
orbeet list artpath:cover
. Consequently album queries involvingpath
field have been sped up, likebeet list -a path:/path/
. - Beets now uses
platformdirs
to determine the default music directory. This location varies between systems -- for example, users can configure it on Unix systems viauser-dirs.dirs(5)
. - New template function added:
%capitalize
. Converts the first letter of the text to uppercase and the rest to lowercase. - Plugin
autobpm
: Add new configuration optionbeat_track_kwargs
which enables adjusting keyword arguments supplied to librosa'sbeat_track
function call. - Plugin
ftintitle
: Newkeep_in_artist
option for the plugin, which allows keeping the "feat." part in the artist metadata while still changing the title.
Bug fixes
- Album flexible fields are now correctly saved. For instance MusicBrainz external links such as
bandcamp_album_id
will be available on albums in addition to tracks. For albums already in your library, a re-import is required for the fields to be added. Such a re-import can be done with, in this case,beet import -L data_source:=MusicBrainz
. - Fix lyrics plugin only getting part of the lyrics from
Genius.com
🐛 (#4815) - Fix the
TypeError
whenset_fields
is provided non-string values. 🐛 (#4840) - Fix the
auto
value for thereflink
config option. - Improve naming of temporary files by separating the random part with the file extension.
- Plugin
autobpm
: Fix theTypeError
where tempo was being returned as a numpy array. Updatelibrosa
dependency constraint to prevent similar issues in the future. 🐛 (#5289) - Plugin
convert
: Fixed the convert pluginno_convert
option so that it no longer treats "and" and "or" queries the same. To maintain previous behaviour add commas between your query keywords. For help seecombiningqueries
. - Plugin
discogs
: Fix theTypeError
when there is no description. - Plugin
ftintitle
: The detection of a "feat. X" part in a song title does not produce any false positives caused by words like "and" or "with" anymore. 🐛 (#5441) - Plugin
ftintitle
: The detection of a "feat. X" part now also matches such parts if they are in parentheses or brackets. 🐛 (#5436) - Plugin
lyrics
: Updatetekstowo
backend to fetch lyrics directly since recent updates to their website made it unsearchable. 🐛 (#5456) - Use single quotes in all SQL queries 🐛 (#4709)
For packagers
- The
beet
script has been removed from the repository. - The
typing_extensions
is required for Python 3.10 and below. - The minimum supported Python version is now 3.8.
Other changes
- Added caching for dependency installation in all CI jobs which speeds them up a bit, especially the tests.
- GitHub workflows have been reorganised for clarity: style, linting, type and docs checks now live in separate jobs and are named accordingly.
- Installation instructions have been made consistent across plugins documentation. Users should simply install
beets
with anextra
of the corresponding plugin name in order to install extra dependencies for that plugin. - Plugin
autobpm
: Add plugin dependencies topyproject.toml
under theautobpm
extra and update the plugin installation instructions in the docs. Since importing the bpm calculation functionality fromlibrosa
takes around 4 seconds, update the plugin to only do so when it actually needs to calculate the bpm. Previously this import was being done immediately, so everybeet
invocation was being delayed by a couple of seconds. 🐛 (#5185) - The linting workflow has been made to run only when Python files or documentation is changed, and they only check the changed files. When dependencies are updated (
poetry.lock
), then the entire code base is checked. - The long-deprecated
beets.util.confit
module has been removed. This may cause extremely outdated external plugins to fail to load. contributing
: Sincepoetry
now manages local virtual environments,tox
has been replaced by a task runnerpoethepoet
. This change affects beets developers and contributors. Please see updates in thedevelopment-tools
section for more details. Typepoe
while in the project directory to see the available commands.contributing
: The project now usespoetry
for packaging and dependency management. This change affects project management and mostly affects beets developers. Please see updates ingetting-the-source
andtesting
for more information.