diff --git a/beetsplug/musicbrainz.py b/beetsplug/musicbrainz.py index 4dc44a289..78baaa7db 100644 --- a/beetsplug/musicbrainz.py +++ b/beetsplug/musicbrainz.py @@ -789,10 +789,9 @@ class MusicBrainzPlugin(MusicBrainzAPIMixin, MetadataSourcePlugin): self, item: Item, artist: str, title: str ) -> Iterable[beets.autotag.hooks.TrackInfo]: criteria = {"artist": artist, "recording": title, "alias": title} + ids = (r["id"] for r in self._search_api("recording", criteria)) - yield from filter( - None, map(self.track_info, self._search_api("recording", criteria)) - ) + return filter(None, map(self.track_for_id, ids)) def album_for_id( self, album_id: str diff --git a/test/plugins/test_musicbrainz.py b/test/plugins/test_musicbrainz.py index 49039f2ba..663a34176 100644 --- a/test/plugins/test_musicbrainz.py +++ b/test/plugins/test_musicbrainz.py @@ -1022,7 +1022,7 @@ class TestMusicBrainzPlugin(PluginMixin): mbid = "d2a6f856-b553-40a0-ac54-a321e8e2da99" RECORDING: ClassVar[dict[str, int | str]] = { "title": "foo", - "id": "bar", + "id": "00000000-0000-0000-0000-000000000000", "length": 42, } @@ -1065,7 +1065,11 @@ class TestMusicBrainzPlugin(PluginMixin): def test_item_candidates(self, monkeypatch, mb): monkeypatch.setattr( "beetsplug._utils.musicbrainz.MusicBrainzAPI.get_json", - lambda *_, **__: {"recordings": [self.RECORDING]}, + lambda *_, **__: {"recordings": [{"id": self.RECORDING["id"]}]}, + ) + monkeypatch.setattr( + "beetsplug._utils.musicbrainz.MusicBrainzAPI.get_recording", + lambda *_, **__: self.RECORDING, ) candidates = list(mb.item_candidates(Item(), "hello", "there"))