Henry
459fd39768
Fix behavior when ANV does not exist
2026-01-19 12:43:30 -08:00
Henry Oberholtzer
08a2c248b9
Fix handling of commas and semicolons in artist join
2026-01-19 12:43:30 -08:00
Henry
f0aef6e213
Cleanup for #6177 , #6068
2026-01-19 12:43:27 -08:00
Henry
1d6e05709e
Fix #6068 - Multivalue fields are now supported & tested.
2026-01-19 12:41:36 -08:00
Henry
9efe87101c
Fix #6177 , remove derived types, refactor coalesce tracks
2026-01-19 12:40:42 -08:00
m_igashi
545e7eb0b6
refactor: simplify CommandBackend and improve documentation
...
- Remove auto-detection of command tools, require explicit command config
- Simplify __init__ method by removing redundant else branch
- Reorganize docs with separate sections for mp3gain, aacgain, mp3rgain
- Fix CVE reference (CVE-2021-34085 is fixed in mp3gain 1.6.2)
- Update command option description per review feedback
2026-01-18 10:52:41 +01:00
m_igashi
29e1c283eb
fix: sort imports alphabetically
2026-01-17 02:15:43 +01:00
m_igashi
5ea41b3fbb
refactor: simplify CommandBackend with SUPPORTED_FORMATS_BY_TOOL
...
- Add Tool type alias and SUPPORTED_FORMATS_BY_TOOL class variable
- Refactor __init__ to use shutil.which() and set cmd_name early
- Simplify format_supported() to use dictionary lookup
2026-01-17 02:10:29 +01:00
m_igashi
179dc7d070
style: remove trailing whitespace from blank line
2026-01-16 16:06:17 +01:00
Jesse Pinkman
dc117046a9
Merge branch 'master' into add-mp3rgain-support
2026-01-16 15:55:23 +01:00
frigginbrownie
1ff254215a
Update convert.py
2026-01-15 15:46:01 +00:00
m_igashi
ebd0e70012
Add mp3rgain support to ReplayGain command backend
...
mp3rgain is a modern Rust rewrite of mp3gain that provides:
- CLI-compatible drop-in replacement for mp3gain
- Support for both MP3 and AAC/M4A formats (like aacgain)
- Fixes for CVE-2021-34085 (Critical, CVSS 9.8) and CVE-2019-18359 (Medium)
- Memory-safe implementation in Rust
- Works on modern systems (Windows 11, macOS Apple Silicon)
Changes:
- Add mp3rgain to the command search list (prioritized first)
- Update format_supported() with more robust command name detection
using os.path.basename() and startswith() instead of substring matching
- Update documentation with installation instructions
See: https://github.com/M-Igashi/mp3rgain
2026-01-14 01:47:45 +01:00
Šarūnas Nejus
1c20e4bd4e
Address RUF012
2026-01-13 20:55:40 +00:00
Šarūnas Nejus
c52656fb0a
Enable RUF rules
2026-01-13 20:55:40 +00:00
Šarūnas Nejus
078ffc1c57
Configure ruff for py310
2026-01-13 20:55:40 +00:00
Šarūnas Nejus
b964d8b7eb
Configure future-annotations
2026-01-13 20:55:40 +00:00
David Logie
3ea4bb7941
Fix bug in fetching preferred release event.
...
With the changes to how data is fetched from MusicBrainz, empty releases
are now `None` instead of an empty dict.
2026-01-13 13:16:09 +00:00
Šarūnas Nejus
f63585fe31
Remove expired Spotify credentials and log error for missing configuration ( #6271 )
...
Looks like our hard-coded API credentials expired. This PR removes
expired credentials and makes it clear to the user that they must
provide their credentials.
Fixes #6270
2026-01-11 19:02:37 +00:00
Alok Saboo
cff631f9c9
updated credentials
2026-01-11 09:20:03 -05:00
Henry Oberholtzer
f7b05cb7db
ftintitle: fix changelog conflict
2026-01-08 12:20:25 -08:00
Šarūnas Nejus
a3c2e383f4
Merge branch 'master' into spotify
2026-01-08 00:23:15 +00:00
Alok Saboo
dd3ecec579
Updated Spotify API credentials
2026-01-07 18:54:39 -05:00
Aidan Epstein
b53aff9b15
Fix fetchart colors broken by 67e668d81f
2026-01-07 10:36:08 -08:00
Šarūnas Nejus
d4b00ab4f4
Add request handler utils to the docs
2026-01-06 09:54:02 +00:00
Šarūnas Nejus
59b02bc49b
Type MusicBrainzAPI properly
2026-01-06 09:54:02 +00:00
Šarūnas Nejus
55b9c1c145
Retry on server errors too
2026-01-06 09:54:02 +00:00
Šarūnas Nejus
1447f49b72
Add some documentation to musicbrainz api mixins
2026-01-06 09:54:02 +00:00
Šarūnas Nejus
b49d71cb69
mbcollection: slight refactor
2026-01-06 09:54:02 +00:00
Šarūnas Nejus
92352574aa
Migrate mbcollection to use MusicBrainzAPI
2026-01-06 09:54:02 +00:00
Šarūnas Nejus
143cd70e2f
mbcollection: Add tests
2026-01-06 00:51:51 +00:00
Šarūnas Nejus
9349ad7551
Migrate missing to use MusicBrainzAPI
2026-01-06 00:51:50 +00:00
Šarūnas Nejus
d346daf48e
missing: add tests for --album flag
2026-01-06 00:51:24 +00:00
Šarūnas Nejus
a33371b6ef
Migrate parentwork to use MusicBrainzAPI
2026-01-06 00:27:36 +00:00
Šarūnas Nejus
741f5c4be1
parentwork: simplify work retrieval and tests
2026-01-06 00:27:36 +00:00
Šarūnas Nejus
36964e433e
Migrate listenbrainz plugin to use our MusicBrainzAPI implementation
2026-01-06 00:27:36 +00:00
Šarūnas Nejus
af96c3244e
Add a minimal test for listenbrainz
2026-01-06 00:26:42 +00:00
Šarūnas Nejus
523fa6ceaf
Move MusicBrainzAPI to a shared util
2026-01-06 00:26:41 +00:00
Trey Turner
714c9705c3
Merge branch 'master' into feat/ftintitle/insert_featured_artist_before_variant_clauses
2026-01-01 15:40:37 -06:00
Trey Turner
b14755df88
fix(ftintitle): remaining opportunities for improvement
2026-01-01 15:39:17 -06:00
J0J0 Todos
b8c7c87b41
lastgenre: Add typehints to remaining methods,
...
to finally reach full type hint coverage in the plugin!
2025-12-30 21:33:07 +01:00
J0J0 Todos
f19d672016
lastgenre: Type hints for genre fetch methods
2025-12-30 20:57:10 +01:00
J0J0 Todos
a046f60c51
lastgenre: Hint mypy to Album.items()
...
instead of obj.items()
2025-12-30 20:57:10 +01:00
j0j0
355c9cc1b6
lastgenre: Use multi-valued albumartists field
...
In case the albumartist genre can't be found (often due to variations of
artist-combination wording issues, eg "featuring", "+", "&" and so on)
use the albumartists list field, fetch a genre for each artist
separately and concatenate them.
2025-12-30 20:57:10 +01:00
j0j0
40a212a2c4
lastgenre: Simplify genre fetchers
...
Reduce fetcher methods to 3: last.fm can be asked for
for a genre for these combinations of metadata:
- albumartist/album
- artist/track
- artist
Passing them in the callers instead of hiding it in the
methods also helps readability in _get_genre().
2025-12-30 20:57:10 +01:00
Danny Trunk
9ddddf4c39
fetchart: Add support for configurable fallback cover art
2025-12-30 13:45:03 +01:00
Šarūnas Nejus
f9c3aae4ed
Musicbrainz: fix original release id access for a pseudo releae
2025-12-29 17:05:32 +00:00
Šarūnas Nejus
ea157832fe
hooks: make AlbumMatch.mapping a tuple
2025-12-24 11:01:26 +00:00
Sebastian Mohr
53a42bf6f6
Merge branch 'master' into gabepush-test-fix
2025-12-23 15:34:47 +01:00
Trey Turner
572645b94c
Merge branch 'master' into feat/ftintitle/insert_featured_artist_before_variant_clauses
2025-12-21 21:06:31 -06:00
Doron Behar
0230352da1
importsource: fix potential prevent_suggest_removal crash
2025-12-21 13:07:02 +01:00