beets v2.8.0

v2.8.0Desktop

Release v2.8.0

Added 5
  • Add extra_tags option to Discogs Plugin to use additional tags in search queries
  • Add auto_ignore configuration option to Lyrics Plugin to skip fetching lyrics for items matching a beets query during auto import
  • Add --release-type flag to Missing Plugin to specify MusicBrainz release types to show in missing album mode
  • Add -R/--randomize flag to Play Plugin to shuffle the playlist order before passing it to the player
  • Add dest_regen configuration option to Smart Playlist Plugin to regenerate items' path in the generated playlist
Changed 4
  • Missing Plugin default behavior changed to show only releases of type album
  • beets.metadata_plugins.album_for_id and beets.metadata_plugins.track_for_id now require a data_source argument and query only that provider
  • Colorisation, diff and layout utility helpers moved from beets.ui to beets.util.color, beets.util.diff, and beets.util.layout
  • lastgenre tunelog helper generalized into beets.logging.BeetsLogger.extra_debug which emits DEBUG messages only at verbosity level 3 or higher
Fixed 10
  • Beatport Plugin now uses va_name config for the album artist on VA releases instead of hardcoded "Various Artists"
  • config command on Windows now uses cmd /c start "" for the default editor fallback so beet config -e works when VISUAL and EDITOR are unset
  • Fix AttributeError in Fish Plugin
  • import command autotagging by explicit release or recording IDs now keeps candidates from all enabled metadata sources instead of dropping matches when different providers share the same ID
  • Simplify import command autotag metadata application for albums and singletons, fixing null-overwrite handling and keeping singular/plural artist metadata fields in sync
  • LastImport Plugin flexible field renamed from play_count to lastfm_play_count to avoid conflicts with MPDStats Plugin

New features

  • Discogs Plugin: Add extra_tags option to use additional tags (such as barcode, catalognum, country, label, media, and year) in Discogs search queries.
  • Lyrics Plugin: Add auto_ignore configuration option to skip fetching lyrics for items matching a beets query during auto import.
  • Missing Plugin: When running in missing album mode, allows users to specify MusicBrainz release types to show using the --release-type flag. The default behavior is also changed to just show releases of type album. :bug: (#2661)
  • Play Plugin: Added -R/--randomize flag to shuffle the playlist order before passing it to the player.
  • Smart Playlist Plugin: Add new configuration option dest_regen to regenerate items' path in the generated playlist instead of using those in the library. This is useful when items have been imported in don't copy-move (-C -M) mode in the library but are later passed through the Convert Plugin plugin which will regenerate new paths according to the Beets path format.

Bug fixes

  • Beatport Plugin: Use va_name config for the album artist on VA releases instead of hardcoded "Various Artists". :bug: (#6316)
  • config command on Windows now uses cmd /c start "" for the default editor fallback so beet config -e works when VISUAL and EDITOR are unset. :bug: (#6436)
  • Fish Plugin: Fix AttributeError. :bug: (#6340)
  • import command Autotagging by explicit release or recording IDs now keeps candidates from all enabled metadata sources instead of dropping matches when different providers share the same ID. :bug: (#6178) :bug: (#6181)
  • import command Simplify autotag metadata application for albums and singletons, fixing null-overwrite handling and keeping singular/plural artist metadata fields in sync during tagging.
  • LastImport Plugin: Rename flexible field play_count to lastfm_play_count to avoid conflicts with MPDStats Plugin. Migration: This cannot be migrated automatically because of the field clash. If you use LastImport Plugin without MPDStats Plugin, migrate manually with beet modify lastfm_play_count='$play_count'.
  • MBSync Plugin and Missing Plugin now use each item's stored data_source for ID lookups, with a fallback to MusicBrainz.
  • Missing Plugin: Fix --album mode incorrectly reporting albums already in the library as missing. The comparison now correctly uses mb_releasegroupid.
  • MusicBrainz Plugin: Use va_name config for albumartist_sort, albumartists_sort, albumartist_credit, albumartists_credit, and albumartists on VA releases instead of hardcoded "Various Artists". :bug: (#6316)
  • replace: Made drive_sep_replace regex logic more precise to prevent edge-case mismatches (e.g., a song titled "1:00 AM" would incorrectly be considered a Windows drive path).

For plugin developers

  • beets.metadata_plugins.album_for_id and beets.metadata_plugins.track_for_id now require a data_source argument and query only that provider.
  • Colorisation, diff and layout utility helpers previously imported from beets.ui now live in beets.util.color, beets.util.diff, and beets.util.layout. Update external imports accordingly.
  • The lastgenre tunelog helper was generalized into beets.logging.BeetsLogger.extra_debug, which emits DEBUG messages only at verbosity level 3 or higher (for example -vvv). Plugin authors can use it via self._log.extra_debug(...).

Other changes

  • Contributing: Update pipx installation guide link
  • Getting Started: Update quick installation section to reflect current installation guide structure.
  • Installation: Remove redundant macOS section from the installation guide. :bug: (#5993)
  • Installation: Update installation guide to document plugin management with pipx and move package manager instructions to the FAQ.
  • Installation: Update pipx installation guide link
  • API-backed metadata source plugins can now use SearchApiMetadataSourcePlugin for shared search orchestration. Implement provider behavior in ~beets.metadata_plugins.SearchApiMetadataSourcePlugin.get_search_query_with_filters and ~beets.metadata_plugins.SearchApiMetadataSourcePlugin.get_search_response.
  • Deprecate the Beatport Plugin and BPSync Plugin plugins. Beatport has retired the API these plugins rely on, making them non-functional. :bug: (#3862)
View original

Upgraded? How did it go?

Discussion