-
Notifications
You must be signed in to change notification settings - Fork 2k
Open
Labels
metadata_pluginsAn issue that is generally related to metadata plugin logic.An issue that is generally related to metadata plugin logic.musicbrainz
Description
In rare instances, a musicbrainz release can be both in the database and delivered without tracks - this release was found in an import attempt and causes a crash in the plugin, as the "track" key is assumed to always be present.
I think this can be handled by rejecting a release candidate if it has no track key, since there wouldn't be anything to match.
Problem
Running this command in verbose (-vv) mode:
musicbrainz: Requesting MusicBrainz release 3ed3affe-9664-40a8-a9cb-6a4a25b638e1
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "C:\Python312\Scripts\beet.exe\__main__.py", line 7, in <module>
File "C:\Python312\Lib\site-packages\beets\ui\__init__.py", line 1629, in main
_raw_main(args)
File "C:\Python312\Lib\site-packages\beets\ui\__init__.py", line 1608, in _raw_main
subcommand.func(lib, suboptions, subargs)
File "C:\Python312\Lib\site-packages\beets\ui\commands\import_\__init__.py", line 131, in import_func
import_files(lib, byte_paths, query)
File "C:\Python312\Lib\site-packages\beets\ui\commands\import_\__init__.py", line 75, in import_files
session.run()
File "C:\Python312\Lib\site-packages\beets\importer\session.py", line 236, in run
pl.run_parallel(QUEUE_SIZE)
File "C:\Python312\Lib\site-packages\beets\util\pipeline.py", line 471, in run_parallel
raise exc_info[1].with_traceback(exc_info[2])
File "C:\Python312\Lib\site-packages\beets\util\pipeline.py", line 336, in run
out = self.coro.send(msg)
^^^^^^^^^^^^^^^^^^^
File "C:\Python312\Lib\site-packages\beets\util\pipeline.py", line 219, in coro
func(*(args + (task,)))
File "C:\Python312\Lib\site-packages\beets\importer\stages.py", line 146, in lookup_candidates
task.lookup_candidates(session.config["search_ids"].as_str_seq())
File "C:\Python312\Lib\site-packages\beets\importer\tasks.py", line 367, in lookup_candidates
autotag.tag_album(self.items, search_ids=search_ids)
File "C:\Python312\Lib\site-packages\beets\autotag\match.py", line 319, in tag_album
for matched_candidate in metadata_plugins.candidates(
File "C:\Python312\Lib\site-packages\beets\plugins.py", line 559, in wrapper
for v in func(*args, **kwargs):
File "C:\Python312\Lib\site-packages\beets\metadata_plugins.py", line 41, in candidates
yield from plugin.candidates(*args, **kwargs)
File "C:\Python312\Lib\site-packages\beetsplug\musicbrainz.py", line 770, in candidates
if album_info := self.album_for_id(id_):
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python312\Lib\site-packages\beetsplug\musicbrainz.py", line 812, in album_for_id
release = self.album_info(res)
^^^^^^^^^^^^^^^^^^^^
File "C:\Python312\Lib\site-packages\beetsplug\musicbrainz.py", line 477, in album_info
ntracks = sum(len(m["tracks"]) for m in release["media"])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Python312\Lib\site-packages\beetsplug\musicbrainz.py", line 477, in <genexpr>
ntracks = sum(len(m["tracks"]) for m in release["media"])
~^^^^^^^^^^
KeyError: 'tracks'Metadata
Metadata
Assignees
Labels
metadata_pluginsAn issue that is generally related to metadata plugin logic.An issue that is generally related to metadata plugin logic.musicbrainz