From 9f52899973db6951a628780bf1810996d09c6d58 Mon Sep 17 00:00:00 2001 From: GeiserX <9169332+GeiserX@users.noreply.github.com> Date: Wed, 13 May 2026 13:31:59 +0200 Subject: [PATCH] fix: catch MutagenError on corrupt audio files during scan Files with malformed metadata (e.g. MP4 with truncated chapter atoms) crash the scan. Catch MutagenError and skip unreadable files gracefully. Closes #10 --- src/slskd_transform/search.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/slskd_transform/search.py b/src/slskd_transform/search.py index 282f9dd..ea1f33e 100644 --- a/src/slskd_transform/search.py +++ b/src/slskd_transform/search.py @@ -29,7 +29,10 @@ def list_files_with_duration( if file.startswith('.'): continue file_path = os.path.join(root, file) - audio_info = mutagen.File(file_path, easy=True) + try: + audio_info = mutagen.File(file_path, easy=True) + except mutagen.MutagenError: + continue if audio_info is None or audio_info.info is None: continue duration = int(audio_info.info.length) @@ -42,7 +45,10 @@ def list_files_with_duration( file_path = os.path.join(str(music_dir), file) if not os.path.isfile(file_path): continue - audio_info = mutagen.File(file_path, easy=True) + try: + audio_info = mutagen.File(file_path, easy=True) + except mutagen.MutagenError: + continue if audio_info is None or audio_info.info is None: continue duration = int(audio_info.info.length)