Commit graph

231 commits

Author SHA1 Message Date
henry
b902352139
New Plugin: Titlecase (#6133)
This plugin aims to address the shortcomings of the %title function, as
brought up in issues #152, #3298 and an initial look to improvement with
#3411. It supplies a new string format command, `%titlecase` which
doesn't interfere with any prior expected behavior of the `%title`
format command.

It also adds the ability to apply titlecase logic to metadata fields
that a user selects, which is useful if you, like me, are looking for
stylistic consistency and the minor stylistic differences between
Musizbrainz, Discogs, Deezer etc, with title case are slightly
infuriating.

This will add an optional dependency of
[titlecase](https://pypi.org/project/titlecase/), which allows the
titlecase core logic to be externally maintained.

If there's not enough draw to have this as a core plugin, I can also
spin this into an independent one, but it seemed like a recurring theme
that the %title string format didn't really behave as expected, and I
wanted my metadata to match too.

- [x] Documentation. (If you've added a new command-line flag, for
example, find the appropriate page under `docs/` to describe it.)
- [x] Changelog. (Add an entry to `docs/changelog.rst` to the bottom of
one of the lists near the top of the document.)
- [x] Tests. - Not 100% coverage, but didn't see a lot of other plugins
with testing for import stages.
2025-11-23 10:34:05 -08:00
asardaes
defc602310 Update docs for mbpseudo plugin 2025-11-01 13:52:11 +01:00
Doron Behar
e181ebeaae importsource: Add new plugin (+docs/tests/changlog) 2025-10-29 08:50:01 +01:00
Šarūnas Nejus
498b14ee1d
Convert autotagger plugin docs to use conf role 2025-10-19 01:34:33 +01:00
Šarūnas Nejus
90ca0a799a
Consider unseen tracks in data source matching 2025-10-10 20:36:33 +01:00
Šarūnas Nejus
1f62a928ec
Update data source documentation 2025-10-10 20:36:33 +01:00
Šarūnas Nejus
f8887d48b6
Add deprecation warning for <plugin>.source_weight 2025-10-10 20:36:33 +01:00
Šarūnas Nejus
455d620ae0
Fix data source penalty application logic
The data_source penalty was not being calculated correctly because
`_get_distance` was being called for **all** enabled metadata plugins
which eventually meant that matches were being penalised needlessly.

This commit refactors the distance calculation to:
- Remove the plugin-based track_distance() and album_distance() methods
  that were applying penalties incorrectly
- Calculate data_source penalties directly in track_distance() and
  distance() functions when sources don't match
- Use a centralized get_penalty() function to retrieve plugin-specific
  penalty values via a registry with O(1) lookup
- Change default data_source_penalty from 0.0 to 0.5 to ensure
  mismatches are penalized by default
- Add data_source to get_most_common_tags() to determine the likely
  original source for comparison

This ensures that tracks and albums from different data sources are
properly penalized during matching, improving match quality and
preventing cross-source matches.
2025-10-10 20:36:33 +01:00
Šarūnas Nejus
203c2176d9
Update data_source_penalty docs 2025-10-10 20:36:33 +01:00
Šarūnas Nejus
e6084cd3ee
Set default data_source_penalty to 0.0 2025-10-10 20:36:33 +01:00
Šarūnas Nejus
6e5af90abb
Rename source_weight -> data_source_mismatch_penalty 2025-10-10 20:36:33 +01:00
henry
3336b68d08
Fix musicbrainz plugin documentation (#6024)
Add several lines to documentation to clear up possible confusion on
musicbrainz plugin being disabled when plugin list is modified.

closes #6020
2025-09-18 11:33:55 +02:00
Sebastian Mohr
69b47b3071
A number of smaller additions. 2025-09-04 12:49:43 +01:00
Šarūnas Nejus
ab5acaabb3
Reformat all docs using docstrfmt 2025-08-10 16:25:05 +01:00
Šarūnas Nejus
769dcdc88a
Docs: fix linting issues 2025-08-10 16:16:02 +01:00
Uncorrupt3318
dd2f203090
Feat: Add replace plugin (#5644)
Adds replace plugin. The plugin allows the user to replace the audio
file of a song, while keeping the tags and file name.

Some music servers keep track of favourite songs via paths and tags. Now
there won't be a need to 'refavourite'. Plus, this skips the
import/merge steps.
2025-05-27 00:17:52 +02:00
Šarūnas Nejus
3f1d117078
Add musicbrainz to plugins docs 2025-05-17 03:32:00 +01:00
Gavin Tronset
b92a1b3d98
Add beets-filetote to community plugins docs (#5779)
Add link to community plugin
[`beets-filetote`](https://github.com/gtronset/beets-filetote).

This plugin is the spiritual successor to
[beets-copyartifacts](https://github.com/adammillerio/beets-copyartifacts)
(`beets-copyartifacts3` was last updated 3 years ago) and
[beets-extrafiles](https://github.com/Holzhaus/beets-extrafiles) (last
updated 5 years ago).

Given the updates and changes in beets and how outdated those plugins
are, does it make sense to keep `beets-copyartifacts` in the community
plugins list?

---------

Co-authored-by: Sebastian Mohr <39738318+semohr@users.noreply.github.com>
2025-05-13 18:48:43 +02:00
Bob Cotton
670a3bcd17
Add beets-id3extract to community plugins (#5660)
Add link to community plugin beets-id3extract
2025-03-12 07:14:38 +00:00
Max Goltzsche
2e9308f713
docs: mention autogenre plugin 2024-04-20 05:33:48 +02:00
Max Goltzsche
3c6309fe22
docs: mention Beetstream and webrouter plugins
Also, moves the webm3u plugin link from tne interoperability section to the "Other Plugins" section of the documentation.
2024-04-13 04:55:43 +02:00
Max Goltzsche
c0afd3eb3c
smartplaylist: allow exporting item fields
Allow generating extm3u playlists so that they contain additional item fields such as the `id`.

The feature is required by the mgoltzsche/beets-webm3u plugin (M3U server) to transform playlists using a request based item URI template which may require additional fields such as the `id`, e.g. `beets:library:track;$id`.
2024-04-13 04:55:37 +02:00
Alok Saboo
d5a237912a Add listenbrainz to index 2023-12-21 12:22:12 -05:00
Adrian Sampson
37f12bfa49
Fix capitalization 2023-10-25 15:11:03 -04:00
Max Goltzsche
9dd0c6cea9
docs: add link to ytimport plugin to docs 2023-10-22 05:06:00 +02:00
Maxr1998
0a4c8e4952
Add advanced rewrite plugin
This plugin allows rewriting fields based on a given library query. This can be helpful, for example, when an artist was renamed but you'd like to keep their older releases under their old name, or if you have a single track from a Various Artists release and want to have it included with the original artist.
2023-10-14 15:00:57 +02:00
tandy1000
7961cf3aaa Add autobpm plugin
This plugin uses librosa to automatically calculate the BPM for a track.
It is based on the keyfinder plugin, and rounds the BPM to an int.

Co-authored-by: Adrian Sampson <adrian@radbox.org>
2023-09-30 16:25:06 +01:00
Hiroto Kaku
0f770b6dde
Add beets-mpd-utils plugin 2023-09-21 15:56:15 -04:00
J0J0 Todos
442a535b3e Add substitute plugin to the docs' plugins index 2023-08-31 08:27:33 +02:00
Sunny
edd4f9a4f5
Point URL to specific plugin 2023-06-27 15:33:11 +02:00
Sunny
76932962f8
Add beets-more to community plugins 2023-06-27 10:25:26 +02:00
Alok Saboo
b1b31f7fb4 Remove archived plugin 2023-05-21 16:29:35 -04:00
Adrian Sampson
eb361af84e
Caps fix 2023-05-13 13:34:10 -04:00
Alok Saboo
f655cd24c2 Add youtube tag source 2023-05-12 09:58:04 -04:00
J0J0 Todos
34227cfabc
Merge pull request #4708 from JOJ0/mb_external_ids
Save external ID's via MusicBrainz
2023-03-26 14:25:15 +02:00
J0J0 Todos
2e5394246f Docs for #4708 2023-03-25 20:51:52 +01:00
Alok Saboo
5231037591 Add JioSaavn as a tag source 2023-03-20 17:32:45 -04:00
Alok Saboo
033f63ad47 Add Github link 2023-03-07 17:18:15 -05:00
Alok Saboo
4c62673e41 Update index.rst 2023-03-07 17:12:11 -05:00
Mark Trolley
55255b0087
Deprecate absubmit and update acousticbrainz plugins
Fixes #4627.

AcousticBrainz is shutting down as of early 2023. Deprecate the absubmit
plugin and update the acousticbrainz plugin to require configuration of
an AcousticBrainz server instance.
2023-02-20 17:42:07 -05:00
Stefano Pigozzi
e76fe01212
Add missing space 2023-01-22 15:02:18 +01:00
Stefano Pigozzi
21bf37befa
Use definition lists with the plugins' names
So that they are easier to find when knowing the name of an enabled plugin
2023-01-20 12:36:44 +01:00
Phill Price
867656eef7
Update index.rst
Corrects popularity service from spotify to deezer to match plugin
2022-10-20 23:05:33 +01:00
Sacha Bron
93725c454d Add Beetstream in the plugin list 2022-08-20 01:30:38 +02:00
Dickson
eed8a5bd83 docs: add link to Beets-audible plugin 2022-06-19 18:44:54 +08:00
patrick-nicholson
126b4e94cf Fixing doc typo and adding limit to toctree. 2021-12-26 21:57:29 -05:00
wisp3rwind
786236f046 remove the gmusic plugin 2021-10-30 14:46:14 +02:00
Adrian Sampson
e1d41c241d
Merge pull request #4048 from edgars-supe/albumtypes-plugin
Add plugin for formatting albumtypes
2021-09-10 16:47:33 -04:00
Edgars Supe
fea5f5c548 Add beets-importreplace to external plugins list 2021-09-10 10:57:49 +03:00
Edgars Supe
c59a22efa2 Add albumtypes to plugin index 2021-09-09 23:07:11 +03:00