Skip to content

Commit 6614da8

Browse files
committed
Try simple MB search in case artist is an alias
1 parent 50e8e24 commit 6614da8

File tree

1 file changed

+29
-8
lines changed

1 file changed

+29
-8
lines changed

beetsplug/musicbrainz.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -926,18 +926,31 @@ def _search_api(
926926
self,
927927
query_type: Literal["recording", "release"],
928928
filters: dict[str, str],
929+
advanced: bool = True,
930+
*args,
929931
) -> list[JSONDict]:
930932
"""Perform MusicBrainz API search and return results.
931933
932934
Execute a search against the MusicBrainz API for recordings or releases
933-
using the provided criteria. Handles API errors by converting them into
934-
MusicBrainzAPIError exceptions with contextual information.
935+
using the provided criteria.
935936
"""
936-
query = " AND ".join(
937-
f'{k}:"{_v}"'
938-
for k, v in filters.items()
939-
if (_v := v.lower().strip())
940-
)
937+
if advanced:
938+
query = " AND ".join(
939+
f'{k}:"{_v}"'
940+
for k, v in filters.items()
941+
if (_v := v.lower().strip())
942+
)
943+
else:
944+
params = itertools.chain(
945+
(str(arg) for arg in args),
946+
(
947+
f'{k}:"{_v}"'
948+
for k, v in filters.items()
949+
if (_v := v.lower().strip())
950+
),
951+
)
952+
query = " ".join(params)
953+
941954
self._log.debug(
942955
"Searching for MusicBrainz {}s with: {!r}", query_type, query
943956
)
@@ -953,7 +966,15 @@ def candidates(
953966
va_likely: bool,
954967
) -> Iterable[AlbumInfo]:
955968
criteria = self.get_album_criteria(items, artist, album, va_likely)
956-
release_ids = (r["id"] for r in self._search_api("release", criteria))
969+
release_ids = [r["id"] for r in self._search_api("release", criteria)]
970+
971+
if len(release_ids) == 0 and "artist" in criteria:
972+
# try a less advanced search if va_likely is False
973+
del criteria["artist"]
974+
release_ids = [
975+
r["id"]
976+
for r in self._search_api("release", criteria, False, artist)
977+
]
957978

958979
for id_ in release_ids:
959980
with suppress(HTTPNotFoundError):

0 commit comments

Comments
 (0)