SHA256
1
0
forked from pool/beets

Accepting request 1355239 from home:jaimeMF:branches:multimedia:apps

- update to 2.11.0:
  * New features
    * Smart Playlist Plugin: The splupdate command output is restructured. The
      per-playlist summary now includes a track count. Per-track details are
      shown only when -v flag is provided (beet -v splupdate). The --pretend
      flag produces the same output but reports "N playlists would be updated"
      instead of "N playlists updated". The --format option allows customizing
      the track line format. The --pretend-paths option was removed (use
      --format='$path' instead). (#6183)
    * import command: When importing an archive (zip, tar, rar, or 7z) with
      move: yes, the source archive is now removed after a successful import.
      Archives are preserved if any file in the archive was not imported (e.g.
      skipped as a duplicate, or the import was aborted), and in non-move
      import modes.
    * FromFilename Plugin: Support track prefix when parsing the track number
      from the filename (e.g., track01.m4a).
    * Tidal plugin: Introduces a new plugin for fetching metadata from Tidal.
      It supports album and track lookups by ID, including batch operations via
      albums_for_ids and tracks_for_ids. It also enables search by query as
      well as identifier-based retrieval, with support for ISRC codes (tracks)
      and barcode/EANs (albums).
      This is an initial, relatively minimal implementation, but already fully
      usable for common metadata workflows. We welcome feedback, improvement
      ideas, and community contributions to further extend its capabilities.
    * Add support for adding or modifying a subtitle (ID3 tag TIT3) field
  * Bug fixes
    * Bad Files Plugin: Respect quiet mode (the --quiet flag or import.quiet:
      yes config) during import so the corrupt-file prompt is suppressed in
      non-interactive imports. (#4736)
    * Discogs Plugin: Prevent duplicate featured artists in track artist fields
      when the same artist is credited both in artists (for example with Feat.
      join text) and extraartists as Featuring. (#6166)
    * import command: Fix duplicate album art files (e.g. cover.2.jpg) being
      created when re-importing albums with the FetchArt Plugin plugin enabled.
      Old album art is now properly removed when replacing duplicate albums
      during import. (#1264) (#6205)
    * import command: Metadata source plugin ID lookups now correctly call each
      plugin's own lookup method when running in parallel. (#6583)
    * import command: Multi-disc album detection now recognizes cassette,
      digital media, and vinyl as disc markers (e.g. vinyl 1, 12 vinyl 2), in
      addition to the existing disc, disk, and cd markers.
    * import command: Tags with a zero distance penalty are no longer shown as
      differences in the match display. Previously, custom distance_weights
      could cause fields with no actual mismatch to appear in the ≠ line.
    * import command: With original_date: yes, album-level year, month, and day
      now use the original release date. (#6577)
    * Lyrics Plugin: Fix apostrophe handling in the musixmatch backend slug.
      (#4759)
    * MusicBrainz Plugin: Correctly handle release dates where leading or
      intermediate components are missing, e.g. 2008-??-02
    * Improve DBAccessError messages to help users diagnose database permission
      issues more easily. The error message now mentions directory missing and
      file permissions as potential causes. (#1676)
    * Library path migration now also handles manually edited database rows
      where item or album-art paths were stored as SQLite TEXT values instead
      of bytes, so upgrading to the portable-path storage format no longer
      fails for those libraries. (#6561)
  * Other changes
    * Spotify Plugin: Batch spotifysync track and audio-features API requests
      and deduplicate repeated Spotify track IDs within a run.
- update to 2.10.0:
  * New features
    * Beets library is now made portable: item and album-art paths are now
      stored relative to the library root in the database while remaining
      absolute in the rest of beets. Path queries continue matching both
      library-relative paths and absolute paths under the currently configured
      music directory under the new storage model. The existing paths in the
      database are migrated automatically the first time you run any beet
      command after the update. (#133)
      Warning!
      make sure you run beet version (or any other command) at least once after
      upgrading to trigger the migration. Only then you can safely move the
      library to a new location.
    * Inline Plugin: Add access to the album or item object as db_obj in inline
      fields.
    * Discogs Plugin: Import Discogs remixer, lyricist, composer, and arranger
      credits into the multi-value remixers, lyricists, composers, and
      arrangers fields. (#6380)
    * Lyrics Plugin: Add keep_synced config option and --keep-synced CLI flag
      to skip re-fetching lyrics for tracks that already have synced lyrics,
      even when force is enabled. (#5249)
    * MusicBrainz Plugin: Use aliases for artist credit.
    * Metadata source plugin searches and lookups are now executed
      concurrently, speeding up lookups when multiple plugins (e.g. MusicBrainz
      and Spotify) are enabled.
  * Bug fixes
    * Chromaprint/Acoustid Plugin: Do not produce MusicBrainz-sourced
      autotagger candidates when the MusicBrainz Plugin plugin is not enabled.
      The chroma plugin now looks up the musicbrainz plugin through the
      metadata-source registry instead of unconditionally instantiating its own
      private instance, which also restores compatibility with MusicBrainz
      Pseudo-Release Plugin for chroma-triggered lookups. (#6212) (#6441)
    * import command Automatically remux WAV files containing MP3 streams
      (WAVE_FORMAT_MPEGLAYER3) to proper MP3 files during import, instead of
      silently importing them with incorrect metadata. (#6455)
    * import command Remove clutter from imported album folders. (#5016)
    * ListenBrainz Plugin: Retry listenbrainz requests for temporary failures.
    * Web Plugin: Fix a stored XSS vulnerability where unescaped metadata
      fields (artist, album, title, comments, lyrics) could execute arbitrary
      JavaScript in the browser. Template tags now use <%- (escaped
      interpolation) instead of <%= (raw interpolation). CVE-2026-42052
      boo#1263988
  * For plugin developers
    * Consumers of beetsplug._utils.musicbrainz.MusicBrainzAPI now receive
      normalized MusicBrainz payloads with underscore-separated field names
      (for example artist_credit and release_group) and grouped relation lists
      such as work_relations, release_relations, and url_relations. The API
      responses are also now fully typed with concrete TypedDict models for
      releases, recordings, works, and relations. Update direct access to raw
      MusicBrainz response keys if needed.
- update to 2.9.0:
  * New features
    * AutoBPM Plugin: Add force configuration and CLI option and deprecate
      overwrite.
    * AutoBPM Plugin: The "BPM already exists for item" log message can now be
      hidden with the --quiet flag.
    * Chromaprint/Acoustid Plugin: Add new command chromasearch to search the
      local library by chromaprint fingerprint.
    * FetchArt Plugin: Add support for WebP images.
    * import command Use ffprobe to recognize format of any import music file
      that has no extension. If the file cannot be recognized as a music file,
      leave it alone. (#4881)
    * LastGenre Plugin: Add support for a user-configurable ignorelist to
      exclude unwanted or incorrect Last.fm (or existing) genres, either per
      artist or globally (#6449)
    * MusicBrainz Plugin: Store MBIDs for remixers, lyricists, composers, and
      arrangers in the new multi-valued fields remixers_mbid, lyricists_mbid,
      composers_mbid, and arrangers_mbid. (#5698)
    * ReplayGain Plugin: Conflicting replay gain tags are now removed on write.
      RG* tags are removed when setting R128* and vice versa.
    * Smart Playlist Plugin: The list of available playlists shown when an
      unknown playlist name is passed as an argument is now sorted
      alphabetically and printed space-delimited and POSIX shell-quoted when
      required. This makes it easier to copy and paste multiple playlists for
      further use in the shell.
    * Query: Add has_cover_art computed field to query items by embedded cover
      art presence. Users can now search for tracks with or without embedded
      artwork using beet list has_cover_art:true or beet list
      has_cover_art:false.
    * Store track remixers, lyricists, composers, and arrangers in the
      multi-valued remixers, lyricists, composers, and arrangers fields instead
      of the legacy single-value remixer, lyricist, composer, and arranger
      fields. Existing libraries are migrated automatically, and MusicBrainz
      Plugin now preserves each MusicBrainz remixer, lyricist, composer, and
      arranger relation as a separate value.
  * Bug fixes
    * Deezer Plugin: Fix a regression in 2.8.0 where selecting a Deezer match
      during import could crash with AttributeError: 'AlbumInfo' object has no
      attribute 'raw_data' when Deezer returned numeric artist IDs. (#6503)
    * Deezer Plugin: Fix Various Artists albums being tagged with a localized
      string instead of the configured va_name. Detection now uses Deezer's
      artist ID rather than the artist name string. (#4956)
    * Discogs Plugin: Store specific Discogs styles in beets genres and broader
      Discogs genres in the style field. When append_style_genre is enabled,
      the broader Discogs genres are also appended to the genres list. (#6390)
    * FetchArt Plugin: Error when a configured source does not exist or sources
      configuration is empty. (#6336)
    * import command Fix albumartists_sort (and related fields) incorrectly
      prepending the full combined artist credit as the first element for
      multi-artist releases. (#6470)
    * ListenBrainz Plugin: Fix lbimport crashing when ListenBrainz tracks are
      processed through Last.fm-specific play-count import logic. Play-count
      imports now use source-specific fields so ListenBrainz Plugin, LastImport
      Plugin, and MPDStats Plugin do not clash. (#6469)
    * ListenBrainz Plugin: Paginate through all ListenBrainz listens instead of
      fetching only 25, aggregate individual listen events into correct play
      counts, use recording_mbid from the ListenBrainz mapping when available,
      and avoid per-listen MusicBrainz API lookups that caused imports to hang
      on large listen histories. (#6469)
    * modify command accepts legacy singular field names such as genre,
      composer, lyricist, remixer, and arranger in assignments, rewrites them
      to the corresponding multi-valued fields, and warns users to switch to
      the plural field names. list command, and query expressions, accept the
      same legacy singular field names and warn users to switch to the plural
      field names. (#6483)
    * Rewrite Plugin Advanced Rewrite Plugin: Fix rewriting multi-valued fields
      such as genres by applying rules to each matching list entry.
      Additionally, apply rewrite rules in config order, so that multiple rules
      can be applied to the same field. (#6515)
    * Correctly handle semicolon-delimited genre values from externally-tagged
      files. (#6450)
  * For plugin developers
    * If you maintain a metadata source plugin that populates any of arranger,
      composer, lyricist, remixer fields, update it to populate the respective
      multi-valued fields instead (arrangers, composers, lyricists, remixers).

OBS-URL: https://build.opensuse.org/request/show/1355239
OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/beets?expand=0&rev=37
This commit is contained in:
2026-05-27 10:41:00 +00:00
committed by Git OBS Bridge
commit 01ef146223
7 changed files with 1758 additions and 0 deletions
+1588
View File
File diff suppressed because it is too large Load Diff
+133
View File
@@ -0,0 +1,133 @@
#
# spec file for package beets
#
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%if 0%{?suse_version} > 1500
# Build only one time
%define pythons %{primary_python}
%else
# Build only with python 3.11
%{?sle15_python_module_pythons}
%endif
Name: beets
Version: 2.11.0
Release: 0
Summary: Music tagger and library organizer
License: MIT
Group: Productivity/Multimedia/Sound/Players
URL: http://beets.io/
Source: https://github.com/beetbox/beets/archive/refs/tags/v%{version}.tar.gz
BuildRequires: fdupes
BuildRequires: python-rpm-macros
BuildRequires: python3-PyYAML
BuildRequires: python3-Unidecode
BuildRequires: python3-confuse >= 2.2.0
BuildRequires: python3-devel >= 3.10.0
BuildRequires: python3-jellyfish
BuildRequires: python3-mediafile >= 0.16.2
BuildRequires: python3-pip
BuildRequires: python3-poetry-core
BuildRequires: python3-setuptools
# test requirements
BuildRequires: python3-Flask
BuildRequires: python3-beautifulsoup4
BuildRequires: python3-discogs-client
%if 0%{?suse_version} <= 1320
BuildRequires: python3-pathlib
%endif
BuildRequires: python3-pylast
BuildRequires: python3-python-mpd2 >= 0.4.2
BuildRequires: python3-pyxdg
BuildRequires: python3-rarfile
BuildRequires: python3-responses
BuildRequires: python3-testsuite
Requires: python3-PyYAML
Requires: python3-Unidecode
Requires: python3-confuse >= 2.2.0
Requires: python3-jellyfish
Requires: python3-lap
Requires: python3-mediafile >= 0.16.0
Requires: python3-numpy >= 2.3.5
Requires: python3-packaging >= 24.0
Requires: python3-platformdirs
Requires: python3-requests >= 2.32.5
Requires: python3-requests-ratelimiter >= 0.7.0
Requires: python3-sqlite3
Recommends: ffmpeg
Recommends: python3-Flask
Recommends: python3-Flask-Cors
Recommends: python3-dbus-python
Recommends: python3-discogs-client >= 2.3.15
Recommends: python3-langdetect
Recommends: python3-pyacoustid >= 1.3.1
Recommends: python3-pylast
Recommends: python3-python-mpd2
Recommends: python3-pyxdg
Recommends: python3-rarfile
Recommends: python3-requests-oauthlib >= 0.6.1
Suggests: flac
Suggests: mp3val
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
%description
Beets is a media library management system for obsessive-compulsive music
geeks.
The purpose of beets is to get a music collection right once and for all.
It catalogs the collection, automatically improving its metadata as it goes.
It then provides a bouquet of tools for manipulating and accessing the music.
beets is designed as a library, has a number of plugins which
support these actions:
- Fetch or calculate all the metadata that could possibly be needed:
album art, lyrics, genres, tempos, ReplayGain levels, or acoustic
fingerprints.
- Get metadata from MusicBrainz, Discogs, and Beatport, or guess
metadata using songs' filenames or their acoustic fingerprints.
- Transcode audio to any format.
- Check your library for duplicate tracks and albums or for albums that
are missing tracks.
- Clean up crufty tags left behind by other tools.
- Embed and extract album art from files' metadata.
- Browse the music library graphically through a Web browser and play it in any
browser that supports HTML5 Audio.
- Analyze music files' metadata from the command line.
- Listen to your library with a music player that speaks the MPD protocol
and works with a variety of interfaces.
Writing additional plugins for beets is possible using Python.
%prep
%setup -q -n beets-%{version}
%build
%pyproject_wheel
%install
%pyproject_install
%fdupes %{buildroot}
%files
%defattr(-,root,root,-)
%doc README.rst
%license LICENSE
%{_bindir}/beet
%{python3_sitelib}/*
%changelog
+24
View File
@@ -0,0 +1,24 @@
*.changes merge=merge-changes
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
+4
View File
@@ -0,0 +1,4 @@
*.obscpio
*.osc
_build.*
.pbuild
BIN
View File
Binary file not shown.
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b26cd3d509d35a1fe7f664f253beccc546da05cbaf43203749ccc582bf93772f
size 2330578
+3
View File
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f19c2deb8a39c5f8de5a3a2acc48963e83db39a3679ee17565c819c1a3e0a44b
size 2437882