Commit Graph

1438 Commits

Author SHA1 Message Date
Samad
3d197ee024 replaygain: use a yaml code-block for the docs config example 2026-07-15 22:22:07 +01:00
Samad
4ccdcc90c9 replaygain: add metaflac backend
Add a MetaflacBackend that computes ReplayGain for FLAC files with metaflac --add-replay-gain and reads the values back with --show-tag. Only FLAC is supported. Includes docs, a changelog entry, and tests.
2026-07-15 22:22:07 +01:00
f1nn
0d65a46bbc lyrics: add lrcmux backend 2026-07-15 16:12:21 +02:00
J0J0 Todos
fda3fef148 lastgenre: Genre aliases docs; Tools chapter, More
- Document the genre alias normalization feature and the default aliases
  we ship with the plugin (by using rst "literalinclude" referring to
  aliases.yaml directly)
- Clarify what canonicalization acutually does when used without a
  whitelist enabled.
- New docs chapter "Using the right tool"
2026-07-15 16:04:51 +02:00
Alok Saboo
7f45f51690 Merge branch 'master' into edit 2026-07-12 20:39:16 -04:00
Šarūnas Nejus
d9a1bde1c9 Add --no-keep-synced CLI option to lyrics
- Allow manual lyrics fetches to override keep_synced configuration for a single
  run.
2026-07-13 01:14:41 +01:00
Alok Saboo
aeaab7320d Merge branch 'master' into edit 2026-07-12 20:14:33 -04:00
Šarūnas Nejus
8020c07acf Track instrumental lyrics metadata
- Leave lyrics text empty when a backend reports an instrumental track and
  persist that state in lyrics_instrumental.
2026-07-13 01:07:59 +01:00
Alok Saboo
f91ba3a315 Merge branch 'master' into edit 2026-07-12 09:12:02 -04:00
Ross Williams
c3de685484 Add fetch_for_asis setting to FetchArt plugin
Enable fetching art for imports even when as-is is selected as the
metadata source. Allows for the case when files with good metadata
but without album art are being imported (e.g. digital download store).

Signed-off-by: Ross Williams <ross@ross-williams.net>
2026-07-10 22:15:32 +01:00
Alok Saboo
094e38e002 Merge remote-tracking branch 'upstream/master' into edit
# Conflicts:
#	docs/changelog.rst
2026-07-10 16:31:13 -04:00
Alok Saboo
bf94ae66ef sync branch 2026-07-10 08:27:23 -04:00
Trey Turner
1160d31cfa feat(ftintitle): hook metadata events, fixing mbsync 2026-07-08 21:10:47 -05:00
Alok Saboo
9ec30f82a0 tidal: fix docstrfmt formatting in tidal.rst 2026-06-24 14:03:58 -04:00
Alok Saboo
28fa210422 tidal: fix mypy docref and dict access
- Fix mypy: avoid {} default in relationships.get() that creates Never type

- Fix doc build: use :doc:\etchart\ instead of :doc:\plugins/fetchart\ from within plugins/ directory
2026-06-24 14:03:58 -04:00
Alok Saboo
659ee7df0b add cover art support 2026-06-24 14:03:56 -04:00
Pierre Ayoub
b8f1f7b1a4 chore(docs): Format convert 2026-06-24 13:00:59 +02:00
Pierre Ayoub
0759bdbe14 Fix convert documentation paragraph order 2026-06-24 13:00:56 +02:00
Pierre Ayoub
db905ad545 Update documentation according for new convert --refresh option 2026-06-24 13:00:56 +02:00
Blake Hakkila
05ecfc8bc6 Merge branch 'master' into rest-directory-config 2026-06-19 15:18:28 -07:00
Sebastian Mohr
7a15e2d295 Fixup docs 2026-06-19 10:48:28 +02:00
Alok Saboo
dcd54146d8 address reviewer comments 2026-06-17 09:45:02 -04:00
Blake Hakkila
478ac8cb63 lyrics: add rest_directory configuration option 2026-06-15 22:48:00 -07:00
Alok Saboo
2f434b2b93 address reviewer comments 2026-06-15 09:45:35 -04:00
Alok Saboo
98681406af tidal: add flexattrs and tidalsync command
- Add item_types ClassVar with tidal_track_id, tidal_album_id,
  tidal_artist_id, tidal_track_popularity, tidal_alb_popularity,
  tidal_updated fields
- Populate flexattrs during album/track import via AlbumInfo/TrackInfo
  kwargs
- Add beet tidalsync command to refresh popularity data post-import
- Add tidal fields to REIMPORT_FRESH_FIELDS_ITEM for reimport support
- Add tests for flexattr population and tidalsync behavior
- Update tidal plugin docs with attribute reference and tidalsync usage
2026-06-14 13:44:16 -04:00
Šarūnas Nejus
0edda6df26 Fix links 2026-06-13 01:46:44 +01:00
Tommy Schnabel-Jones
97d593de84 Fix format 2026-06-08 11:16:40 -04:00
Tommy Schnabel-Jones
6ccd1e6db2 Reformat badfiles.rst 2026-06-08 11:16:40 -04:00
Tommy Schnabel-Jones
7cf79e0585 Fixed doc grammar; added error precedence comment 2026-06-08 11:16:40 -04:00
Tommy Schnabel-Jones
a871e9309e badfiles: added config options to automatically take action on error/warning 2026-06-08 11:16:40 -04:00
culpen0
fb7a940ea3 Fix titlecase template documentation 2026-06-06 09:36:14 -04:00
David Logie
785f8b7a5c Make aliases-as-credits functionality opt-in.
This feature was introduced in 2.10 but results a lot of data being
overwritten with (potentially) incorrect data the next time a user runs
`mbsync` over their library.

To make this less of a "breaking" change, make this feature opt-in. The
users who want this large change can enable the functionality.
2026-05-29 17:25:00 +01:00
benstev1
272d38ae0b Merge branch 'master' into feat/sylt-synchronized-lyrics 2026-05-27 14:33:45 -04:00
Maxr1998
3126957ea9 Fix code review comments 2026-05-24 01:33:00 +01:00
yosinn1-blip
2db31cda0d docs: fix received spelling in docs
Signed-off-by: Yoshiki <yosinn1@gmail.com>
2026-05-24 08:10:48 +09:00
benstev1
d9ef72ca02 Merge branch 'master' into feat/sylt-synchronized-lyrics 2026-05-22 15:05:53 -04:00
jaedonswanson
cbd5f3a813 docs: adding beets-getlrc to the 'other plugins' list 2026-05-21 20:20:53 -05:00
Benjamin Stevenson
fc8217f576 merge: resolve changelog and poetry.lock conflicts with master 2026-05-21 19:50:06 -04:00
Šarūnas Nejus
4acbb0f913 Add dependency extra for tidal 2026-05-14 14:54:40 +01:00
Šarūnas Nejus
34772d2684 Replace _get_opts_and_config with attributes 2026-05-06 15:30:50 +01:00
Ivan Kanis
4fdd8e2b96 Add Beetnik in other plugins 2026-05-02 02:47:02 +01:00
Terry Chen
e546e02596 Clarify MusicBrainz extra_tags defaults 2026-04-25 23:29:17 -04:00
Benjamin Stevenson
1b7b7a2b21 Fix docstrfmt line wrapping in changelog and lyrics docs 2026-04-21 17:42:03 -04:00
Benjamin Stevenson
fc769e9a79 lyrics: write synced LRC lyrics to SYLT ID3 frame
When the lyrics plugin writes LRC-formatted (timestamped) lyrics to an
ID3-tagged audio file, store the timing data in the SYLT (synchronized
lyrics) frame and plain text in USLT, rather than writing raw LRC text
verbatim to USLT.

Fixes #6541
2026-04-21 17:22:15 -04:00
Sebastian Mohr
dd58cc8ccc Added documentation. 2026-04-20 20:55:47 +02:00
J0J0 Todos
4fb9c9a816 smartplaylist: Document CLI output overhaul changes 2026-04-19 22:55:35 +02:00
Šarūnas Nejus
348eb9555f Update docs 2026-04-17 09:19:15 +01:00
Šarūnas Nejus
5528a2b7f5 Update docs 2026-04-16 09:02:28 +01:00
Christopher Larson
5bc11ea736 inline: make the album/item available directly
There have been multiple requests, in the past, for the ability to use
plugin fields in inline fields. This has not previously been available.
From what I can tell, it was intentionally left unavailable due to
performance concerns.

The way the item fields are made available to the inline python code
means that all fields are looked up, whether they're actually used by
the code or not. Doing that for all computed fields would be a
performance concern.

I don't believe there's a good way to postpone the field computation, as
python eval and compile requires that globals be a dictionary, not a
mapping. Instead, we can make available the album or item model object
to the code directly, and let the code access the fields it needs via
that object, resulting in postponing the computation of the fields until
they're actually accessed.

This is a simple approach that makes the computed and plugin fields
available to inline python, which allows for more code reuse, as well as
more options for shifting logic out of templates and into python code.
The object is available as `db_obj`.

Examples:

    item_fields:
      test_file_size: db_obj.filesize

    album_fields:
      test_album_path: db_obj.path
      # If the missing plugin is enabled
      test_album_missing: db_obj.missing

Signed-off-by: Christopher Larson <kergoth@gmail.com>
2026-04-15 11:59:19 -07:00
Andrew Yang
692ef4a923 chroma: gate candidates on the musicbrainz plugin being enabled
The chroma plugin uses Acoustid fingerprinting, which returns MusicBrainz
release and recording IDs. It then unconditionally resolved those IDs
through a privately instantiated MusicBrainzPlugin, so MusicBrainz-sourced
candidates appeared during tagging even when the user had not enabled the
musicbrainz plugin.

Replace the direct MusicBrainzPlugin() instantiation with a lookup through
the metadata-source registry via get_metadata_source("musicbrainz"). When
that returns None, short-circuit both candidates() and item_candidates()
to return empty. This also fixes an incidental issue where the private
instance bypassed any plugin that swaps the musicbrainz plugin at runtime
(e.g. mbpseudo).

Acoustid fingerprinting itself is unaffected — acoustid_id and
acoustid_fingerprint item fields are still populated as before.

Fixes #6212
2026-04-15 00:03:23 +01:00