From fb65d852c586f778376d2ae275bb5c206ce41aa1 Mon Sep 17 00:00:00 2001 From: J0J0 Todos Date: Tue, 5 Aug 2025 06:53:32 +0200 Subject: [PATCH] lastgenre: Precompile blacklist regex patterns --- beetsplug/lastgenre/__init__.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/beetsplug/lastgenre/__init__.py b/beetsplug/lastgenre/__init__.py index aafdca445..9860879a5 100644 --- a/beetsplug/lastgenre/__init__.py +++ b/beetsplug/lastgenre/__init__.py @@ -214,7 +214,14 @@ class LastGenrePlugin(plugins.BeetsPlugin): blacklist[section].append(line.strip()) if self.config["extended_debug"]: self._log.debug("Blacklist: {}", blacklist) - return blacklist + + # Compile regex patterns + compiled_blacklist = defaultdict(list) + for artist, patterns in blacklist.items(): + compiled_blacklist[artist] = [ + re.compile(pattern) for pattern in patterns + ] + return compiled_blacklist @property def sources(self) -> tuple[str, ...]: @@ -339,7 +346,7 @@ class LastGenrePlugin(plugins.BeetsPlugin): # Check global forbidden patterns if "*" in self.blacklist: for pattern in self.blacklist["*"]: - if re.search(pattern, genre): + if pattern.search(genre): return True # Check artist-specific forbidden patterns @@ -347,7 +354,7 @@ class LastGenrePlugin(plugins.BeetsPlugin): artist = artist.lower() if artist in self.blacklist: for pattern in self.blacklist[artist]: - if re.search(pattern, genre): + if pattern.search(genre): return True return False