Commit Graph

4634 Commits

Author SHA1 Message Date
Šarūnas Nejus
90099f128d Merge branch 'master' into fix-mpdstats-cli-host 2026-06-04 06:03:48 +01:00
Šarūnas Nejus
fb9de7a619 lyrics: fix musica parsing 2026-06-03 15:42:19 +01:00
Šarūnas Nejus
5a22b40735 lyrics: introduce apply_methods 2026-06-02 15:46:43 +01:00
Šarūnas Nejus
29580d2f00 Import everything from parent beets.autotag 2026-06-02 08:57:35 +01:00
Tsuizxgo
cf7c5e4eb2 Fix mpdstats CLI option overrides 2026-06-01 23:57:07 +08:00
Alok Saboo
f8a834fb7a add typehints 2026-06-01 10:46:57 +02:00
Alok Saboo
4b554e9697 Batch SQLite commits and follow write-before-store pattern 2026-06-01 10:46:57 +02:00
Šarūnas Nejus
893df40534 Merge branch 'master' into fix/fetchart-permission-error-graceful 2026-05-29 17:33:13 +01: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
terminalchai
874f7a5917 fetchart: catch OSError in _set_art for graceful permission error handling
When album art is being moved to the destination folder, a PermissionError (or
other OSError) can occur if the file is locked by another process (e.g. a media
player scanning the folder). Previously this caused an unhandled traceback crash.

Wrap album.set_art() in a try/except OSError block in _set_art, log a warning,
and return False so callers can handle the failure gracefully.

Fixes #6193
2026-05-29 16:49:17 +01:00
Martin Caspersen
bbf786da92 Merge branch 'master' into fix/browse-recordings-missing-aliases 2026-05-29 16:52:41 +02:00
Martin Caspersen
31e18b2c4c refactor(musicbrainz): use direct aliases access and improve browse test
Replace defensive .get("aliases", []) with recording["aliases"] now that
"aliases" is in BROWSE_INCLUDES. Swap the graceful-fallback test for one
that asserts aliases from browse results take priority over the track title.
2026-05-29 16:50:23 +02:00
Šarūnas Nejus
1e7f00b16f Add py.typed to beetsplug 2026-05-27 20:03:54 +01:00
benstev1
272d38ae0b Merge branch 'master' into feat/sylt-synchronized-lyrics 2026-05-27 14:33:45 -04:00
Martin Caspersen
ba798ae281 style: apply ruff formatting and address review comments
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 15:25:18 +02:00
Martin Caspersen
beb1610476 fix(musicbrainz): handle missing aliases in browse_recordings for large releases
When a release exceeds BROWSE_MAXTRACKS tracks, _ensure_complete_recordings
fetches recordings via browse_recordings. BROWSE_INCLUDES was missing "aliases",
so the API never returned alias data, causing a KeyError in get_tracks_from_medium.

Add "aliases" to BROWSE_INCLUDES and defensively use .get("aliases", []) at the
access site, consistent with all other alias lookups in the file.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-27 13:45:17 +02:00
Šarūnas Nejus
0c227e9453 Define Library.path_formats property 2026-05-24 15:09:58 +01:00
Šarūnas Nejus
74021ee6b5 Define ConvertPlugin.get_item_destination to centralize the args 2026-05-24 15:09:58 +01:00
Šarūnas Nejus
a0a88b5301 Handle BeetsHTTPError in mbcollection graciously 2026-05-24 15:00:25 +01:00
Šarūnas Nejus
abcfd96c32 Create UnauthorizedMBError 2026-05-24 14:59:51 +01:00
Maxr1998
c866eeb6cf Move types to the top 2026-05-24 01:33:00 +01:00
Maxr1998
755ef2d329 Use TypedDict for listen return type 2026-05-24 01:33:00 +01:00
Maxr1998
6dfe5eecf7 Add missing return type 2026-05-24 01:33:00 +01:00
Maxr1998
1447282ad7 Pass tests 2026-05-24 01:33:00 +01:00
Maxr1998
acfeb0987f Fix formatting 2026-05-24 01:33:00 +01:00
Maxr1998
397a919821 Address review feedback 2026-05-24 01:33:00 +01:00
Maxr1998
3126957ea9 Fix code review comments 2026-05-24 01:33:00 +01:00
Maxr1998
5fdc567c22 Prefer explicitly supplied recording_mbid from additional_info if available 2026-05-24 01:33:00 +01:00
Maxr1998
fb7fbdafff Handle null mbid_mapping 2026-05-24 01:33:00 +01:00
Maxr1998
2b2c028e64 Import listens from file 2026-05-24 01:33:00 +01:00
Benjamin Stevenson
fc8217f576 merge: resolve changelog and poetry.lock conflicts with master 2026-05-21 19:50:06 -04:00
Benjamin Stevenson
85d5509baa fix: keep LRC in USLT, simplify synced_lyrics write path, fix poetry.lock 2026-05-21 19:48:37 -04:00
Sebastian Mohr
adfb73b66d Run ruff format 2026-05-20 16:53:06 +02:00
Šarūnas Nejus
d4fd36a033 sort: Update imports 2026-05-17 07:39:13 +01:00
Šarūnas Nejus
30ab81eb5b Extract UserError from beets.ui to a new beets.exceptions module.
Update all references in core, plugins, and tests to import UserError
from the new location. This centralizes exception handling and improves
code organization.
2026-05-16 11:18:51 +01:00
Šarūnas Nejus
d4f7f9ffd5 Fix types 2026-05-14 14:54:40 +01:00
ShimmerGlass
65ccaf1408 fix(mbsync): do not clear metadata if import.from_scratch is set
if import.from_scratch was set in the config, runnning mbsync would
clear any metadata not provided by MBz (replay gain, lyrics, genres...).
we now ignore this setting when running mbsync to preserve metadata.

Fixes: #6613
2026-05-13 18:06:08 +02:00
ShimmerGlass
ec1c25644d fix(duplicates): output format
* the pugin used an empty format string unless --count was provided,
  resulting in outputs like `: 1`. it now correctly displays duplicated
  items.
* --count was ignored (aside from above bug), and item count was always
  appended to output.
2026-05-11 22:43:53 +02:00
Martin Caspersen
5342d9bc76 Merge remote-tracking branch 'fork/master' into fix/mbpseudo-raw-data 2026-05-08 12:25:49 +02:00
Šarūnas Nejus
86813678d7 Use pipeline.mutator_stage instead of a Generator 2026-05-06 15:30:51 +01:00
Šarūnas Nejus
ec940e8b61 Remove redundant param provision to encode 2026-05-06 15:30:51 +01:00
Šarūnas Nejus
dd33fef52e Remove redundant param provision to should_transcode 2026-05-06 15:30:51 +01:00
Šarūnas Nejus
e574e86887 Replace get_format with command attribute 2026-05-06 15:30:51 +01:00
Šarūnas Nejus
34772d2684 Replace _get_opts_and_config with attributes 2026-05-06 15:30:50 +01:00
Šarūnas Nejus
ee895efd2d Handle opts using the config 2026-05-06 15:30:10 +01:00
Šarūnas Nejus
b15006ca11 Remove dependency on global config 2026-05-06 15:30:10 +01:00
Šarūnas Nejus
241eb6db09 Fix typing issues 2026-05-06 15:30:10 +01:00
Šarūnas Nejus
33efc2bd19 Add types 2026-05-06 15:30:10 +01:00
Šarūnas Nejus
10d0f37793 Merge branch 'master' into fix/badfiles-quiet-mode 2026-05-02 22:35:41 +01:00
ShimmerGlass
cc63a4e9b9 fix(MusicBrainz): date parsing fix
Correctly handle release dates where leading or
intermediate components are missing, e.g. 2008-??-02
2026-05-02 16:26:48 +02:00