From 533aa6379bb3c5aa6e92da6d3d51f34c2f4979f4 Mon Sep 17 00:00:00 2001 From: Henry Date: Thu, 25 Sep 2025 22:38:02 -0700 Subject: [PATCH] Test working, need to implement anv now --- beetsplug/discogs.py | 2 + test/plugins/test_discogs.py | 198 ++++++++++++++++++----------------- 2 files changed, 104 insertions(+), 96 deletions(-) diff --git a/beetsplug/discogs.py b/beetsplug/discogs.py index 3dc962464..ee432f11f 100644 --- a/beetsplug/discogs.py +++ b/beetsplug/discogs.py @@ -402,6 +402,7 @@ class DiscogsPlugin(MetadataSourcePlugin): album=album, album_id=album_id, artist=artist, + artist_credit=artist, artist_id=artist_id, tracks=tracks, albumtype=albumtype, @@ -668,6 +669,7 @@ class DiscogsPlugin(MetadataSourcePlugin): return TrackInfo( title=title, track_id=track_id, + artist_credit=artist, artist=artist, artist_id=artist_id, length=length, diff --git a/test/plugins/test_discogs.py b/test/plugins/test_discogs.py index a93c0da0b..a7d1c8407 100644 --- a/test/plugins/test_discogs.py +++ b/test/plugins/test_discogs.py @@ -521,102 +521,108 @@ def test_get_media_and_albumtype(formats, expected_media, expected_albumtype): assert result == (expected_media, expected_albumtype) @patch("beetsplug.discogs.DiscogsPlugin.setup", Mock()) -class DGTestAnv(BeetsTestCase): - @pytest.mark.parametrize( - "config_input, expected_output", - [ - ({ - "track_artist": False, - "album_artist": False, - "artist_credit": False - }, - { - "album_artist": "ARTIST NAME & SOLOIST" - "album_artist_credit": "ARTIST NAME & SOLOIST" - "track_arist": "ARTIST Feat. PERFORMER", - "track_artist_credit": "ARTIST Feat. PERFORMER" - }), - ({ - "album_artist": False, - "track_artist": True, - "artist_credit": False - }, - { - "album_artist": "ARTIST NAME & SOLOIST" - "album_artist_credit": "ARTIST NAME & SOLOIST" - "track_artist": "ARTY Feat. FORMER", - "track_artist_credit": "ARTIST Feat. PERFORMER" - }), - ({ - "album_artist": True, - "track_artist": False, - "artist_credit": False - }, - { - "album_artist": "ARTY & SOLO" - "album_artist_credit": "ARTIST NAME & SOLOIST" - "track_arist": "ARTIST Feat. PERFORMER", - "track_artist_credit": "ARTIST Feat. PERFORMER" - }), - ({ - "album_artist": True, - "track_artist": False, - "artist_credit": False - }, - { - "album_artist": "ARTY & SOLO" - "album_artist_credit": "ARTIST & SOLOIST" - "track_arist": "ARTIST Feat. PERFORMER", - "track_artist_credit": "ARTIST Feat. PERFORMER" - }) - ({ - "album_artist": False, - "track_artist": False, - "artist_credit": True - }, - { - "album_artist": "ARTIST & SOLOIST" - "album_artist_credit": "ARTY & SOLO" - "track_arist": "ARTIST Feat. PERFORMER", - "track_artist_credit": "ARTY Feat. FORMER" - }) - ]) - def test_use_anv(self, config_input, expected_output): - config["discogs"]["album_artist_anv"] = config_input["album_artist"] - config["discogs"]["track_artist_anv"] = config_input["track_artist"] - config["discogs"]["artist_credit_anv"] = config_input["artist_credit"] - release = { - "id": 123, - "uri": "https://www.discogs.com/release/123456-something", - "tracklist": [ - { - "title": "track", - "position": "A", - "type_": "track", - "duration": "5:44", - "artists": [ - {"name": "ARTIST", "tracks": "", "anv": "ARTY", "id": 11146} - ], - "extraartists": [ - {"name": "PERFORMER", "role": "Featuring", "tracks": "", "anv": "FORMER", "id": 787} - ], - } - ], - "artists": [ - {"name": "ARTIST NAME", "anv": "ARTY", "id": 321, "join": "&"}, - {"name": "SOLOIST", "anv": "SOLO", "id": 445, "join": ""}, - ], - "title": "title", - } - d = DiscogsPlugin().get_album_info(release) - assert d.artist == expected_output["album_artist"] - assert d.artist_credit == expected_output["album_artist_credit"] - assert d.tracks[0].artist == expected_output["track_artist"] - assert d.tracks[0].artist_credit == expected_output["track_artist_credit"] - config["discogs"]["album_artist_anv"] = False - config["discogs"]["track_artist_anv"] = False - config["discogs"]["artist_credit_anv"] = False - +@pytest.mark.parametrize( + "config_input, expected_output", + [ + ({ + "track_artist": False, + "album_artist": False, + "artist_credit": False + }, + { + "album_artist": "ARTIST NAME & SOLOIST", + "album_artist_credit": "ARTIST NAME & SOLOIST", + "track_artist": "ARTIST feat. PERFORMER", + "track_artist_credit": "ARTIST feat. PERFORMER" + }), + ({ + "album_artist": False, + "track_artist": True, + "artist_credit": False + }, + { + "album_artist": "ARTIST NAME & SOLOIST", + "album_artist_credit": "ARTIST NAME & SOLOIST", + "track_artist": "ARTY feat. FORMER", + "track_artist_credit": "ARTIST feat. PERFORMER" + }), + ({ + "album_artist": True, + "track_artist": False, + "artist_credit": False + }, + { + "album_artist": "ARTY & SOLO", + "album_artist_credit": "ARTIST NAME & SOLOIST", + "track_artist": "ARTIST feat. PERFORMER", + "track_artist_credit": "ARTIST feat. PERFORMER" + }), + ({ + "album_artist": True, + "track_artist": False, + "artist_credit": False + }, + { + "album_artist": "ARTY & SOLO", + "album_artist_credit": "ARTIST NAME & SOLOIST", + "track_artist": "ARTIST feat. PERFORMER", + "track_artist_credit": "ARTIST Feat. PERFORMER" + }), + ({ + "album_artist": False, + "track_artist": False, + "artist_credit": True + }, + { + "album_artist": "ARTIST NAME & SOLOIST", + "album_artist_credit": "ARTY & SOLO", + "track_artist": "ARTIST feat. PERFORMER", + "track_artist_credit": "ARTY Feat. FORMER" + }) + +]) +def test_use_anv(config_input, expected_output): + d = DiscogsPlugin() + d.config["album_artist_anv"] = config_input["album_artist"] + d.config["track_artist_anv"] = config_input["track_artist"] + d.config["artist_credit_anv"] = config_input["artist_credit"] + data = { + "id": 123, + "uri": "https://www.discogs.com/release/123456-something", + "tracklist": [{ + "title": "track", + "position": "A", + "type_": "track", + "duration": "5:44", + "artists": [{ + "name": "ARTIST", + "tracks": "", + "anv": "ARTY", + "id": 11146 + }], + "extraartists": [{ + "name": "PERFORMER", + "role": "Featuring", + "anv": "FORMER", + "id": 787 + }], + }], + "artists": [ + {"name": "ARTIST NAME", "anv": "ARTY", "id": 321, "join": "&"}, + {"name": "SOLOIST", "anv": "SOLO", "id": 445, "join": ""}, + ], + "title": "title", + } + release = Bag( + data=data, + title=data["title"], + artists=[Bag(data=d) for d in data["artists"]], + ) + r = d.get_album_info(release) + assert r.artist == expected_output["album_artist"] + assert r.artist_credit == expected_output["album_artist_credit"] + assert r.tracks[0].artist == expected_output["track_artist"] + assert r.tracks[0].artist_credit == expected_output["track_artist_credit"] @pytest.mark.parametrize( "position, medium, index, subindex",