Fix album_dir path after in-place directory rename

_rename_album_dir_inplace now returns the updated input_dir path
(e.g. .../Golden_Oldies_Vol_11/CD1 instead of .../Album1/CD1).
apply uses the return value so the final 'Fertig!' message and any
subsequent operations reference the correct, post-rename path.

Also fix CDDB header album name extraction (regex search between
---- markers instead of stripping leading/trailing dashes).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-02-18 10:44:09 +01:00
commit 984d8acc88

View file

@ -86,7 +86,7 @@ def _scan_to_album(
_CD_SUBDIR = re.compile(r"^CD\d+$", re.IGNORECASE)
def _rename_album_dir_inplace(input_dir: Path, album: Album) -> None:
def _rename_album_dir_inplace(input_dir: Path, album: Album) -> Path:
"""Benennt das Album-Wurzelverzeichnis nach den Metadaten um.
Muss als allerletzter Schritt aufgerufen werden, nachdem Tags,
@ -97,6 +97,9 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> None:
Umbenennung erfolgt automatisch.
- Sonst (input_dir ist selbst das Album-Wurzelverzeichnis) nur Hinweis
ausgeben, da ein Umbenennen des aktiven Verzeichnisses vermieden wird.
Returns:
Aktualisierter Pfad von input_dir nach dem Umbenennen.
"""
abs_input = input_dir.resolve()
desired = sanitize_filename(album.folder_name)
@ -105,7 +108,7 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> None:
# CD-Unterverzeichnis übergeben → Elternverzeichnis umbenennen
album_root = abs_input.parent
if album_root.name == desired:
return # bereits korrekt
return input_dir # bereits korrekt
new_path = album_root.parent / desired
if new_path.exists():
typer.echo(
@ -113,9 +116,10 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> None:
"Verzeichnis nicht umbenannt.",
err=True,
)
return
return input_dir
album_root.rename(new_path)
typer.echo(f"Verzeichnis umbenannt: {album_root.name}{desired}")
return new_path / abs_input.name # z.B. .../Golden_Oldies_Vol_11/CD1
else:
# Album-Wurzelverzeichnis direkt übergeben → nur Hinweis
if abs_input.name != desired:
@ -123,6 +127,7 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> None:
f"Tipp: Verzeichnis manuell umbenennen:\n"
f" mv '{abs_input.name}' '{desired}'"
)
return input_dir
def _check_disc_counts_or_exit(album: Album, input_dir: Path, album_json: Path) -> None:
@ -300,7 +305,7 @@ def apply(
generate_playlist(album, album_dir)
if in_place:
_rename_album_dir_inplace(input_dir, album)
album_dir = _rename_album_dir_inplace(input_dir, album)
typer.echo(f"Fertig! Album liegt in: {album_dir}")