From 446d54f81913d22cbfbd6f8da217066f36c31a25 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Sat, 11 Jul 2026 16:54:11 +0200 Subject: [PATCH] feat: MBTarget exposes rgMbid + artistMbid from the resolver --- worker/lyra_worker/_musicbrainz.py | 7 ++++++- worker/lyra_worker/types.py | 2 ++ worker/tests/test_musicbrainz_live.py | 2 ++ worker/tests/test_types_mbtarget.py | 8 ++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 worker/tests/test_types_mbtarget.py diff --git a/worker/lyra_worker/_musicbrainz.py b/worker/lyra_worker/_musicbrainz.py index 8cd8852..e73b34f 100644 --- a/worker/lyra_worker/_musicbrainz.py +++ b/worker/lyra_worker/_musicbrainz.py @@ -36,9 +36,12 @@ class MusicBrainzResolver: canonical_album = rg.get("title", album) canonical_artist = artist + artist_mbid = "" credit = rg.get("artist-credit") if isinstance(credit, list) and credit and isinstance(credit[0], dict): - canonical_artist = (credit[0].get("artist") or {}).get("name", artist) + _artist = credit[0].get("artist") or {} + canonical_artist = _artist.get("name", artist) + artist_mbid = _artist.get("id", "") or "" year = None frd = rg.get("first-release-date", "") or "" @@ -72,4 +75,6 @@ class MusicBrainzResolver: total_duration_s=total_duration_s, year=year, tracklist=titles, + rg_mbid=rg.get("id", "") or "", + artist_mbid=artist_mbid, ) diff --git a/worker/lyra_worker/types.py b/worker/lyra_worker/types.py index 0635d17..67e3cf1 100644 --- a/worker/lyra_worker/types.py +++ b/worker/lyra_worker/types.py @@ -9,6 +9,8 @@ class MBTarget: total_duration_s: int | None = None year: int | None = None tracklist: tuple[str, ...] = () + rg_mbid: str = "" + artist_mbid: str = "" @dataclass(frozen=True) diff --git a/worker/tests/test_musicbrainz_live.py b/worker/tests/test_musicbrainz_live.py index c303636..c453f82 100644 --- a/worker/tests/test_musicbrainz_live.py +++ b/worker/tests/test_musicbrainz_live.py @@ -16,3 +16,5 @@ def test_live_resolves_continuum(): assert target.track_count and target.track_count >= 10 # Continuum has 12 tracks assert "continuum" in target.album.casefold() assert target.year == 2006 + assert target.rg_mbid # a real release-group MBID + assert target.artist_mbid # a real artist MBID diff --git a/worker/tests/test_types_mbtarget.py b/worker/tests/test_types_mbtarget.py new file mode 100644 index 0000000..d3a5c80 --- /dev/null +++ b/worker/tests/test_types_mbtarget.py @@ -0,0 +1,8 @@ +from lyra_worker.types import MBTarget + + +def test_mbtarget_has_rg_and_artist_mbid_defaults(): + t = MBTarget(artist="A", album="B") + assert t.rg_mbid == "" and t.artist_mbid == "" + t2 = MBTarget(artist="A", album="B", rg_mbid="rg1", artist_mbid="a1") + assert t2.rg_mbid == "rg1" and t2.artist_mbid == "a1"