diff --git a/executor.py b/executor.py index 03631be..708049d 100644 --- a/executor.py +++ b/executor.py @@ -72,7 +72,9 @@ def _proposed_filename( Fehlende Teile werden weggelassen. """ tn = f"{proposal.track_number:02d}" if proposal.track_number else "00" - disc_prefix = f"{proposal.disc_number}-" if proposal.disc_number and proposal.disc_number > 1 else "" + # Wenn disc_number gesetzt (auch disc=1): immer "D-TT" — konsistent über alle CDs. + # disc=None (Einzel-CD ohne Tag): nur "TT". + disc_prefix = f"{proposal.disc_number}-" if proposal.disc_number else "" prefix = f"{disc_prefix}{tn}" track_artist = _safe_name(proposal.artist or "Unknown") diff --git a/hint_extractor.py b/hint_extractor.py index 4e34775..92654ce 100644 --- a/hint_extractor.py +++ b/hint_extractor.py @@ -41,8 +41,10 @@ _DIR_PATTERNS = [ # Tracklist line patterns _TRACKLIST_PATTERNS = [ re.compile(r"^(?P\d{1,2})[- _](?P\d{1,3})\s+(?P.+?)(?:\s+\d+:\d{2})?$"), - re.compile(r"^(?P<track>\d{1,3})[.):\s]+(?P<title>.+?)(?:\s+\d+:\d{2})?$"), - re.compile(r"^(?P<track>[A-Z]\d{1,2})[.):\s]+(?P<title>.+?)(?:\s+\d+:\d{2})?$"), + # Separator muss . ) oder : sein — reines Leerzeichen reicht nicht + # (verhindert False-Positives wie "2 x CD, Compilation, Remastered") + re.compile(r"^(?P<track>\d{1,3})[.):]\s*(?P<title>.+?)(?:\s+\d+:\d{2})?$"), + re.compile(r"^(?P<track>[A-Z]\d{1,2})[.):]\s*(?P<title>.+?)(?:\s+\d+:\d{2})?$"), ] _DISC_SECTION_RE = re.compile(r"(?i)(?:cd|disc|disk|side)[_ \-]*(\d{1,2})")