From db47aa4456596cfeef4c5ae89f68273578e90e74 Mon Sep 17 00:00:00 2001 From: dschlueter Date: Wed, 18 Feb 2026 05:49:37 +0100 Subject: [PATCH] Fix: Album.album akzeptiert null-Werte vom LLM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/musiksammlung/models.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/musiksammlung/models.py b/src/musiksammlung/models.py index f60e891..c261210 100644 --- a/src/musiksammlung/models.py +++ b/src/musiksammlung/models.py @@ -21,15 +21,21 @@ class Disc(BaseModel): class Album(BaseModel): artist: str - album: str + album: str = "" year: int | None = None discs: list[Disc] - @field_validator("album", "artist") + @field_validator("album", "artist", mode="before") @classmethod - def sanitize_name(cls, v: str) -> str: - """Entfernt Zeichen, die in Dateinamen problematisch sind.""" - return re.sub(r'[<>:"/\\|?*]', "_", v).strip() + def sanitize_name(cls, v: object) -> str: + """Entfernt Zeichen, die in Dateinamen problematisch sind. + + 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 def folder_name(self) -> str: