Skip to content

Commit 6dbee24

Browse files
authored
Fix fetching large MusicBrainz releases (#6357)
Fixes #6355 - Fix `plugins/musicbrainz` handling of very large MusicBrainz releases by passing the missing `limit` and `includes` kwargs to `mb_api.browse_recordings`.
2 parents 3b89d72 + 8386817 commit 6dbee24

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

beetsplug/musicbrainz.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -489,14 +489,18 @@ def album_info(self, release: JSONDict) -> beets.autotag.hooks.AlbumInfo:
489489
self._log.debug("Retrieving tracks starting at {}", i)
490490
recording_list.extend(
491491
self.mb_api.browse_recordings(
492-
release=release["id"], offset=i
492+
release=release["id"],
493+
limit=BROWSE_CHUNKSIZE,
494+
includes=BROWSE_INCLUDES,
495+
offset=i,
493496
)
494497
)
495-
track_map = {r["id"]: r for r in recording_list}
498+
recording_by_id = {r["id"]: r for r in recording_list}
496499
for medium in release["media"]:
497-
for recording in medium["tracks"]:
498-
recording_info = track_map[recording["recording"]["id"]]
499-
recording["recording"] = recording_info
500+
for track in medium["tracks"]:
501+
track["recording"] = recording_by_id[
502+
track["recording"]["id"]
503+
]
500504

501505
# Basic info.
502506
track_infos = []

docs/changelog.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ Bug fixes:
1414
- :doc:`plugins/musicbrainz`: Fix search terms escaping. :bug:`6347`
1515
- :doc:`plugins/musicbrainz`: Fix support for ``alias`` and ``tracks``
1616
:conf:`plugins.musicbrainz:extra_tags`.
17+
- :doc:`plugins/musicbrainz`: Fix fetching very large releases that have more
18+
than 500 tracks. :bug:`6355`
1719

1820
For packagers:
1921

0 commit comments

Comments
 (0)