Fix: Album.album akzeptiert null-Werte vom LLM

Wenn das LLM keinen Albumtitel erkennt (z.B. nur Ensemblename auf
dem Backcover), gibt es "album": null zurück. Statt mit
ValidationError abzubrechen, wird null jetzt in "" konvertiert.
Der Nutzer kann den leeren Titel in album.json manuell ergänzen.

Geändert:
- Album.album: str = "" (statt str ohne Default)
- field_validator mode="before", None → ""

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-02-18 05:49:37 +01:00
commit db47aa4456

View file

@ -21,15 +21,21 @@ class Disc(BaseModel):
class Album(BaseModel): class Album(BaseModel):
artist: str artist: str
album: str album: str = ""
year: int | None = None year: int | None = None
discs: list[Disc] discs: list[Disc]
@field_validator("album", "artist") @field_validator("album", "artist", mode="before")
@classmethod @classmethod
def sanitize_name(cls, v: str) -> str: def sanitize_name(cls, v: object) -> str:
"""Entfernt Zeichen, die in Dateinamen problematisch sind.""" """Entfernt Zeichen, die in Dateinamen problematisch sind.
return re.sub(r'[<>:"/\\|?*]', "_", v).strip()
None wird zu "" konvertiert (LLM-Ausgabe kann null enthalten, wenn
kein Album-Titel auf dem Cover erkennbar ist).
"""
if v is None:
return ""
return re.sub(r'[<>:"/\\|?*]', "_", str(v)).strip()
@property @property
def folder_name(self) -> str: def folder_name(self) -> str: