From 57bd3189df80675cca362ea696b7971efb1bf2e8 Mon Sep 17 00:00:00 2001 From: w4grfw <> Date: Wed, 11 Feb 2026 16:26:00 +0100 Subject: [PATCH 1/5] Fix #6302: musicbrainz: crash when releases lack the "track" key. --- beetsplug/musicbrainz.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/beetsplug/musicbrainz.py b/beetsplug/musicbrainz.py index 8a95b3b57..9f4581004 100644 --- a/beetsplug/musicbrainz.py +++ b/beetsplug/musicbrainz.py @@ -477,7 +477,7 @@ class MusicBrainzPlugin(MusicBrainzAPIMixin, MetadataSourcePlugin): release["artist-credit"], include_join_phrase=False ) - ntracks = sum(len(m["tracks"]) for m in release["media"]) + ntracks = sum(len(m.get("tracks", [])) for m in release["media"]) # The MusicBrainz API omits 'relations' # when the release has more than 500 tracks. So we use browse_recordings @@ -512,7 +512,7 @@ class MusicBrainzPlugin(MusicBrainzAPIMixin, MetadataSourcePlugin): if format in config["match"]["ignored_media"].as_str_seq(): continue - all_tracks = medium["tracks"] + all_tracks = medium.get("tracks", []) if ( "data-tracks" in medium and not config["match"]["ignore_data_tracks"] From fe833d83772c56ded694e19f8b4c0d8b67bc0e72 Mon Sep 17 00:00:00 2001 From: w4grfw <> Date: Wed, 11 Feb 2026 18:23:55 +0100 Subject: [PATCH 2/5] test added --- test/plugins/test_musicbrainz.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/plugins/test_musicbrainz.py b/test/plugins/test_musicbrainz.py index 069f1fb99..8d7c5a2f8 100644 --- a/test/plugins/test_musicbrainz.py +++ b/test/plugins/test_musicbrainz.py @@ -691,6 +691,23 @@ class MBAlbumInfoTest(MusicBrainzTestCase): assert t[0].trackdisambig is None assert t[1].trackdisambig == "SECOND TRACK" + def test_missing_tracks(self): + tracks = [ + self._make_track("TITLE ONE", "ID ONE", 100.0 * 1000.0), + self._make_track( + "TITLE TWO", + "ID TWO", + 200.0 * 1000.0, + disambiguation="SECOND TRACK", + ), + ] + release = self._make_release(tracks=tracks) + release["media"].append(release["media"][0]) + del release["media"][0]["tracks"] + del release["media"][0]["data-tracks"] + d = self.mb.album_info(release) + assert d.mediums == 2 + class ArtistFlatteningTest(unittest.TestCase): def _credit_dict(self, suffix=""): From 63ec1f2f56ec80e88de30f85546d8c3b2509072e Mon Sep 17 00:00:00 2001 From: w4grfw <> Date: Wed, 11 Feb 2026 18:25:53 +0100 Subject: [PATCH 3/5] changelog entry --- docs/changelog.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/changelog.rst b/docs/changelog.rst index 621dfbf2f..178c89e2a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -16,6 +16,8 @@ Unreleased Bug fixes ~~~~~~~~~ +- :doc:`plugins/musicbrainz`: Fix musicbrainz: crash when releases + lack the "track" key. :bug:`6302` - :doc:`plugins/musicbrainz`: Fix search terms escaping. :bug:`6347` - :doc:`plugins/musicbrainz`: Fix support for ``alias`` and ``tracks`` :conf:`plugins.musicbrainz:extra_tags`. From 7f1e7d7bc85f30530d0b75fb7d6961f9021b86cd Mon Sep 17 00:00:00 2001 From: w4grfw <> Date: Wed, 11 Feb 2026 18:28:57 +0100 Subject: [PATCH 4/5] format changelog --- docs/changelog.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 178c89e2a..995a27f6a 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -16,8 +16,8 @@ Unreleased Bug fixes ~~~~~~~~~ -- :doc:`plugins/musicbrainz`: Fix musicbrainz: crash when releases - lack the "track" key. :bug:`6302` +- :doc:`plugins/musicbrainz`: Fix musicbrainz: crash when releases lack the + "track" key. :bug:`6302` - :doc:`plugins/musicbrainz`: Fix search terms escaping. :bug:`6347` - :doc:`plugins/musicbrainz`: Fix support for ``alias`` and ``tracks`` :conf:`plugins.musicbrainz:extra_tags`. From be8d25ffa46dda4f72deb15731356e6a49691d2f Mon Sep 17 00:00:00 2001 From: w4grfw Date: Wed, 11 Feb 2026 21:21:14 +0100 Subject: [PATCH 5/5] Update docs/changelog.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Šarūnas Nejus --- docs/changelog.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 995a27f6a..ee094f4a1 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -16,8 +16,8 @@ Unreleased Bug fixes ~~~~~~~~~ -- :doc:`plugins/musicbrainz`: Fix musicbrainz: crash when releases lack the - "track" key. :bug:`6302` +- :doc:`plugins/musicbrainz`: Fix crash when release mediums lack the ``tracks`` + key. :bug:`6302` - :doc:`plugins/musicbrainz`: Fix search terms escaping. :bug:`6347` - :doc:`plugins/musicbrainz`: Fix support for ``alias`` and ``tracks`` :conf:`plugins.musicbrainz:extra_tags`.