Add per-track artist to filename: 09_Titel_-_Kuenstler.flac
- Track model: add optional artist field (None = fall back to album artist) - organizer: append _-_<artist> to each filename - tagger: use track.artist over album.artist for the 'artist' tag - playlist: widen glob pattern to match new _-_<artist> suffix - tests: update assertions + add test for track-artist override Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
775f274d02
commit
255496bd1b
6 changed files with 41 additions and 18 deletions
|
|
@ -10,6 +10,7 @@ from pydantic import BaseModel, field_validator
|
|||
class Track(BaseModel):
|
||||
track_number: int
|
||||
title: str
|
||||
artist: str | None = None # Track-Künstler (z.B. bei Samplern); None = Album-Künstler
|
||||
|
||||
|
||||
class Disc(BaseModel):
|
||||
|
|
|
|||
|
|
@ -131,7 +131,8 @@ def build_mapping(
|
|||
|
||||
for audio_file, track in zip(audio_files, disc.tracks):
|
||||
safe_title = _sanitize_filename(track.title)
|
||||
new_name = f"{track.track_number:02d}_{safe_title}{audio_file.suffix}"
|
||||
safe_artist = _sanitize_filename(track.artist or album.artist)
|
||||
new_name = f"{track.track_number:02d}_{safe_title}_-_{safe_artist}{audio_file.suffix}"
|
||||
mapping[audio_file] = target_dir / new_name
|
||||
|
||||
return mapping
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ def generate_playlist(album: Album, album_dir: Path) -> Path:
|
|||
for track in disc.tracks:
|
||||
safe_title = _sanitize_filename(track.title)
|
||||
# Audiodatei im Zielverzeichnis finden
|
||||
pattern = f"{track.track_number:02d}_{safe_title}.*"
|
||||
pattern = f"{track.track_number:02d}_{safe_title}*"
|
||||
if multi_disc:
|
||||
search_dir = album_dir / f"CD{disc.disc_number}"
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ def tag_file(
|
|||
logger.warning("Kann Datei nicht öffnen: %s", path)
|
||||
return
|
||||
|
||||
audio["artist"] = album.artist
|
||||
audio["artist"] = track.artist or album.artist
|
||||
audio["album"] = album.album
|
||||
audio["albumartist"] = album.artist
|
||||
audio["title"] = track.title
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue