Skip to content

Commit

Permalink
Handle missing release-relation-list field during pseudo-release lookup
Browse files Browse the repository at this point in the history
Some pseudo-releases (erroneously) lack the relation to the actual
release which previously would've caused a crash.
  • Loading branch information
Bobo1239 committed Jun 29, 2023
1 parent 99f641c commit 25ebb0f
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 2 deletions.
5 changes: 4 additions & 1 deletion beets/autotag/mb.py
Original file line number Diff line number Diff line change
Expand Up @@ -678,7 +678,10 @@ def _is_translation(r):

def _find_actual_release_from_pseudo_release(pseudo_rel: Dict) \
-> Optional[Dict]:
relations = pseudo_rel['release']["release-relation-list"]
try:
relations = pseudo_rel['release']["release-relation-list"]
except KeyError:
return None

# currently we only support trans(liter)ation's
translations = [r for r in relations if _is_translation(r)]
Expand Down
39 changes: 38 additions & 1 deletion test/test_mb.py
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@ def test_follow_pseudo_releases(self):
album = mb.album_for_id('d2a6f856-b553-40a0-ac54-a321e8e2da02')
self.assertEqual(album.country, 'COUNTRY')

def test_pseudo_releases_without_links(self):
def test_pseudo_releases_with_empty_links(self):
side_effect = [{
'release': {
'title': 'pseudo',
Expand Down Expand Up @@ -762,6 +762,43 @@ def test_pseudo_releases_without_links(self):
album = mb.album_for_id('d2a6f856-b553-40a0-ac54-a321e8e2da02')
self.assertEqual(album.country, None)

def test_pseudo_releases_without_links(self):
side_effect = [{
'release': {
'title': 'pseudo',
'id': 'd2a6f856-b553-40a0-ac54-a321e8e2da02',
'status': 'Pseudo-Release',
'medium-list': [{
'track-list': [{
'id': 'baz',
'recording': {
'title': 'translated title',
'id': 'bar',
'length': 42,
},
'position': 9,
'number': 'A1',
}],
'position': 5,
}],
'artist-credit': [{
'artist': {
'name': 'some-artist',
'id': 'some-id',
},
}],
'release-group': {
'id': 'another-id',
},
}
},
]

with mock.patch('musicbrainzngs.get_release_by_id') as gp:
gp.side_effect = side_effect
album = mb.album_for_id('d2a6f856-b553-40a0-ac54-a321e8e2da02')
self.assertEqual(album.country, None)

def test_pseudo_releases_with_unsupported_links(self):
side_effect = [
{
Expand Down

0 comments on commit 25ebb0f

Please sign in to comment.