fix: show clean error message when MusicBrainz barcode lookup fails

Catch ValueError (barcode not found) and httpx.HTTPError (network error)
in _scan_to_album and print a user-friendly message with hint instead of
a raw Python traceback. Also remove unused `call` import in test_ripper.py.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-02-18 06:18:12 +01:00
commit c0e4d2aa85
2 changed files with 14 additions and 2 deletions

View file

@ -6,6 +6,7 @@ import json
import logging
from pathlib import Path
import httpx
import typer
from mutagen import File as MutagenFile
@ -46,7 +47,18 @@ def _scan_to_album(
"""Gemeinsame Scan-Logik: Barcode, Text-Datei, Vision-LLM oder OCR+LLM."""
if barcode:
typer.echo(f"MusicBrainz-Suche nach Barcode {barcode}...")
return lookup_by_barcode(barcode)
try:
return lookup_by_barcode(barcode)
except ValueError as e:
typer.echo(f"Fehler: {e}", err=True)
typer.echo(
"Tipp: Barcode prüfen oder Metadaten per --from-text / --vision ermitteln.",
err=True,
)
raise typer.Exit(1)
except httpx.HTTPError as e:
typer.echo(f"Netzwerkfehler bei MusicBrainz-Abfrage: {e}", err=True)
raise typer.Exit(1)
elif from_text:
text = from_text.read_text(encoding="utf-8")
typer.echo(f"Text-Datei geladen ({len(text)} Zeichen). LLM-Parsing...")

View file

@ -1,7 +1,7 @@
"""Tests für den CD-Ripper."""
from pathlib import Path
from unittest.mock import MagicMock, call, patch
from unittest.mock import MagicMock, patch
from musiksammlung.config import AudioFormat
from musiksammlung.models import Album, Disc, Track