diff --git a/api/funkwhale_api/music/metadata.py b/api/funkwhale_api/music/metadata.py index 49425671199d5888ded30df31f9465ee9f239355..519dd8b5eb1aefe04c01c51d2d859452c02c316a 100644 --- a/api/funkwhale_api/music/metadata.py +++ b/api/funkwhale_api/music/metadata.py @@ -30,7 +30,7 @@ def get_id3_tag(f, k): def get_flac_tag(f, k): try: - return f.get(k)[0] + return f.get(k, [])[0] except (KeyError, IndexError): raise TagNotFound(k) @@ -158,6 +158,9 @@ CONF = { 'musicbrainz_recordingid': { 'field': 'musicbrainz_trackid' }, + 'test': { + 'field': 'test' + }, } }, } diff --git a/api/tests/music/test_metadata.py b/api/tests/music/test_metadata.py index 3f1ea9177d8e69f34294cabd9b42156e85644e86..e7b9012b609232f890e96092b0bc0d8331722063 100644 --- a/api/tests/music/test_metadata.py +++ b/api/tests/music/test_metadata.py @@ -57,3 +57,11 @@ def test_can_get_metadata_from_flac_file(field, value): data = metadata.Metadata(path) assert data.get(field) == value + + +def test_can_get_metadata_from_flac_file_not_crash_if_empty(): + path = os.path.join(DATA_DIR, 'sample.flac') + data = metadata.Metadata(path) + + with pytest.raises(metadata.TagNotFound): + data.get('test') diff --git a/changes/changelog.d/214.bugfix b/changes/changelog.d/214.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..f2f36c4af387a9fe8b4a0de61a8a186f1b2f1bd2 --- /dev/null +++ b/changes/changelog.d/214.bugfix @@ -0,0 +1 @@ +Do not crash on flac import if musicbrainz tags are missing (#214)