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: