* New features
* /plugins/substitute: Allow the replacement string to use capture groups
from the match. It is thus possible to create more general rules,
applying to many different artists at once.
* Bug fixes
* Bring back test files and the manual to the source distribution tarball.
* Fix bug where matcher doesn't consider medium number when importing. This
makes it difficult to import hybrid SACDs and other releases with
duplicate tracks.
* Check if running python from the Microsoft Store and provide feedback to
install from python.org.
* Other changes
* Changed bitesize label to good first issue. Our contribute page is now
automatically populated with these issues.
- Update to 2.1.0
* New features
* Ability to query albums with track db fields and vice-versa, for example
beet list -a title:something or beet list artpath:cover. Consequently
album queries involving path field have been sped up, like beet 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 via user-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 option beat_track_kwargs which
enables adjusting keyword arguments supplied to librosa's beat_track
function call.
* Plugin ftintitle: New keep_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
* Fix the TypeError when set_fields is provided non-string values.
* Fix the auto value for the reflink config option.
* Improve naming of temporary files by separating the random part with the
file extension.
* Plugin autobpm: Fix the TypeError where tempo was being returned as a
numpy array. Update librosa dependency constraint to prevent similar
issues in the future.
* Plugin convert: Fixed the convert plugin no_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 see
combiningqueries.
* Plugin discogs: Fix the TypeError 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.
* Plugin ftintitle: The detection of a "feat. X" part now also matches such
parts if they are in parentheses or brackets.
* Plugin lyrics: Update tekstowo backend to fetch lyrics directly since
recent updates to their website made it unsearchable.
* Use single quotes in all SQL queries
* 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 an extra of the
corresponding plugin name in order to install extra dependencies for that
plugin.
* Plugin autobpm: Add plugin dependencies to pyproject.toml under the
autobpm extra and update the plugin installation instructions in the
docs. Since importing the bpm calculation functionality from librosa
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 every beet invocation was being delayed by a couple of
seconds.
* 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: Since poetry now manages local virtual environments, tox
has been replaced by a task runner poethepoet. This change affects beets
developers and contributors. Please see updates in the development-tools
section for more details. Type poe while in the project directory to see
the available commands.
* contributing: The project now uses poetry for packaging and dependency
management. This change affects project management and mostly affects
beets developers. Please see updates in getting-the-source and testing
for more information.
OBS-URL: https://build.opensuse.org/package/show/multimedia:apps/beets?expand=0&rev=25
134 lines
4.3 KiB
RPMSpec
134 lines
4.3 KiB
RPMSpec
#
|
|
# spec file for package beets
|
|
#
|
|
# Copyright (c) 2025 SUSE LLC
|
|
#
|
|
# 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.2.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 >= 1.5.0
|
|
BuildRequires: python3-devel >= 3.8.0
|
|
BuildRequires: python3-jellyfish
|
|
BuildRequires: python3-mediafile >= 0.12.0
|
|
BuildRequires: python3-munkres
|
|
BuildRequires: python3-musicbrainzngs >= 0.4
|
|
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 >= 1.5.0
|
|
Requires: python3-jellyfish
|
|
Requires: python3-mediafile >= 0.12.0
|
|
Requires: python3-munkres
|
|
Requires: python3-musicbrainzngs >= 0.4
|
|
Requires: python3-musicbrainzngs >= 0.4
|
|
Requires: python3-platformdirs
|
|
Recommends: ffmpeg
|
|
Recommends: python3-Flask
|
|
Recommends: python3-Flask-Cors
|
|
Recommends: python3-dbus-python
|
|
Recommends: python3-discogs-client >= 2.3.15
|
|
Recommends: python3-pyacoustid
|
|
Recommends: python3-pylast
|
|
Recommends: python3-python-mpd2
|
|
Recommends: python3-pyxdg
|
|
Recommends: python3-rarfile
|
|
Recommends: python3-requests
|
|
Recommends: python3-requests
|
|
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
|