From 001dddcf2f1a129e0941e6d30b27bfdb1afa7e60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Sat, 20 Dec 2025 00:41:24 +0000 Subject: [PATCH] Ensure that inc are joined with a plus See this line in https://musicbrainz.org/doc/MusicBrainz_API#Lookups > To include more than one subquery in a single request, separate the arguments to inc= with a + (plus sign), like inc=recordings+labels. --- beetsplug/musicbrainz.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/beetsplug/musicbrainz.py b/beetsplug/musicbrainz.py index f36d5a3a7..221afea71 100644 --- a/beetsplug/musicbrainz.py +++ b/beetsplug/musicbrainz.py @@ -115,7 +115,12 @@ class MusicBrainzAPI(RequestHandler): def create_session(self) -> LimiterTimeoutSession: return LimiterTimeoutSession(per_second=self.rate_limit) - def get_entity(self, entity: str, **kwargs) -> JSONDict: + def get_entity( + self, entity: str, inc_list: list[str] | None = None, **kwargs + ) -> JSONDict: + if inc_list: + kwargs["inc"] = "+".join(inc_list) + return self._group_relations( self.get_json( f"{self.api_host}/ws/2/{entity}", @@ -124,14 +129,14 @@ class MusicBrainzAPI(RequestHandler): ) def get_release(self, id_: str) -> JSONDict: - return self.get_entity(f"release/{id_}", inc=" ".join(RELEASE_INCLUDES)) + return self.get_entity(f"release/{id_}", inc_list=RELEASE_INCLUDES) def get_recording(self, id_: str) -> JSONDict: - return self.get_entity(f"recording/{id_}", inc=" ".join(TRACK_INCLUDES)) + return self.get_entity(f"recording/{id_}", inc_list=TRACK_INCLUDES) def browse_recordings(self, **kwargs) -> list[JSONDict]: kwargs.setdefault("limit", BROWSE_CHUNKSIZE) - kwargs.setdefault("inc", BROWSE_INCLUDES) + kwargs.setdefault("inc_list", BROWSE_INCLUDES) return self.get_entity("recording", **kwargs)["recordings"] @singledispatchmethod