From e5a6ac78219e7369f4db594dc8682cc9848e3de8 Mon Sep 17 00:00:00 2001 From: Broque Thomas <26755000+Nezreka@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:28:18 -0700 Subject: [PATCH] Strip all parentheticals in AcoustID title normalization --- core/acoustid_verification.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/core/acoustid_verification.py b/core/acoustid_verification.py index d934836a..77a7311e 100644 --- a/core/acoustid_verification.py +++ b/core/acoustid_verification.py @@ -38,15 +38,12 @@ def _normalize(text: str) -> str: if not text: return "" s = text.lower().strip() - # Remove common parenthetical suffixes like (Live), (Remastered), (Cover), (Instrumental), etc. - s = re.sub(r'\s*\((?:live|(?:\d{4}\s*)?remaster(?:ed)?(?:\s*\d{4})?|deluxe|bonus|radio\s*edit|single\s*edit|album\s*edit|single\s*version|cover|acoustic|instrumental|original\s*mix|extended\s*mix|club\s*mix|remix|clean|explicit|visualize.*?)\)', '', s, flags=re.IGNORECASE) - # Remove common square bracket suffixes: [Live], [Remastered], [Cover], [Instrumental], etc. - s = re.sub(r'\s*\[(?:live|(?:\d{4}\s*)?remaster(?:ed)?(?:\s*\d{4})?|deluxe|bonus|radio\s*edit|single\s*edit|album\s*edit|single\s*version|cover|acoustic|instrumental|original\s*mix|extended\s*mix|club\s*mix|remix|clean|explicit)\]', '', s, flags=re.IGNORECASE) - # Remove featuring info in parentheses: "(feat. ...)", "(ft. ...)", "(featuring ...)", "(with ...)" - s = re.sub(r'\s*\((?:feat\.?|ft\.?|featuring|w/|with)\s+[^)]*\)', '', s, flags=re.IGNORECASE) - # Remove featuring info in square brackets: "[feat. ...]", "[ft. ...]", "[W/ ...]", "[with ...]" - s = re.sub(r'\s*\[(?:feat\.?|ft\.?|featuring|w/|with)\s+[^\]]*\]', '', s, flags=re.IGNORECASE) - # Remove trailing featuring info: "feat. ...", "ft. ...", "featuring ..." + # Remove ALL parenthetical suffixes — these are metadata annotations, not core title + # Covers: (Live), (Remastered), (Parody of ...), (from "..." Soundtrack), (feat. ...), etc. + s = re.sub(r'\s*\([^)]*\)', '', s) + # Remove ALL square bracket suffixes: [Live], [Remastered], [Deluxe], etc. + s = re.sub(r'\s*\[[^\]]*\]', '', s) + # Remove trailing featuring info not in parentheses: "feat. ...", "ft. ...", "featuring ..." s = re.sub(r'\s+(?:feat\.?|ft\.?|featuring)\s+.*$', '', s, flags=re.IGNORECASE) # Remove dash-separated version tags: "- Vocal", "- Instrumental", "- Acoustic", etc. s = re.sub(r'\s*-\s*(?:vocal|instrumental|acoustic|live|remix|cover|clean|explicit|radio\s*edit|original\s*mix|extended\s*mix|club\s*mix)\s*$', '', s, flags=re.IGNORECASE)