diff --git a/src/musiksammlung/cli.py b/src/musiksammlung/cli.py index fabd871..b8fc49c 100644 --- a/src/musiksammlung/cli.py +++ b/src/musiksammlung/cli.py @@ -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) -> Path: +def _rename_album_dir_inplace(input_dir: Path, album: Album) -> None: """Benennt das Album-Wurzelverzeichnis nach den Metadaten um. Muss als allerletzter Schritt aufgerufen werden, nachdem Tags, @@ -97,9 +97,6 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> Path: 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) @@ -108,7 +105,7 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> Path: # CD-Unterverzeichnis übergeben → Elternverzeichnis umbenennen album_root = abs_input.parent if album_root.name == desired: - return input_dir # bereits korrekt + return # bereits korrekt new_path = album_root.parent / desired if new_path.exists(): typer.echo( @@ -116,10 +113,9 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> Path: "Verzeichnis nicht umbenannt.", err=True, ) - return input_dir + return 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: @@ -127,7 +123,6 @@ def _rename_album_dir_inplace(input_dir: Path, album: Album) -> Path: 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: @@ -305,7 +300,7 @@ def apply( generate_playlist(album, album_dir) if in_place: - album_dir = _rename_album_dir_inplace(input_dir, album) + _rename_album_dir_inplace(input_dir, album) typer.echo(f"Fertig! Album liegt in: {album_dir}") diff --git a/src/musiksammlung/ripper.py b/src/musiksammlung/ripper.py index b1be88f..c85197f 100644 --- a/src/musiksammlung/ripper.py +++ b/src/musiksammlung/ripper.py @@ -207,11 +207,10 @@ def _stream_abcde( stripped_hdr = line.strip() print(f"\n {stripped_hdr}", flush=True) # Album-Name zwischen den Strichen extrahieren (einmalig) - # Zeile z.B.: "#1 (Musicbrainz): ---- Artist / Album ----" if not detected_album: - inner_m = re.search(r"-{2,}\s*(.+?)\s*-{2,}", stripped_hdr) - if inner_m: - detected_album = inner_m.group(1).strip() + inner = re.sub(r"^[-\s]+|[-\s]+$", "", stripped_hdr) + if inner: + detected_album = inner continue # ── CDDB track lines "1: Artist - Title" or "1: Artist / Title"