From c9b09e9ee1462bedf78b39140f5e6fa218b65d1e Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Sat, 12 Jul 2025 23:52:51 -0400 Subject: [PATCH] better search term nomralization --- backend/handler/filesystem/platforms_handler.py | 2 +- backend/handler/metadata/base_hander.py | 6 ++---- backend/handler/metadata/igdb_handler.py | 1 - backend/handler/metadata/moby_handler.py | 3 +-- backend/handler/metadata/ss_handler.py | 1 - 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/backend/handler/filesystem/platforms_handler.py b/backend/handler/filesystem/platforms_handler.py index 73fcb265a..44c5d5278 100644 --- a/backend/handler/filesystem/platforms_handler.py +++ b/backend/handler/filesystem/platforms_handler.py @@ -52,7 +52,7 @@ class FSPlatformsHandler(FSHandler): ) try: - platforms = [d for _, d in iter_directories(platforms_dir)] + platforms = sorted([d for _, d in iter_directories(platforms_dir)]) return self._exclude_platforms(cnfg, platforms) except IndexError as exc: raise FolderStructureNotMatchException from exc diff --git a/backend/handler/metadata/base_hander.py b/backend/handler/metadata/base_hander.py index f346d98eb..37ec82fdf 100644 --- a/backend/handler/metadata/base_hander.py +++ b/backend/handler/metadata/base_hander.py @@ -56,16 +56,14 @@ COMMA_ARTICLE_PATTERN = re.compile(r",\s(a|an|the)\b$") NON_WORD_SPACE_PATTERN = re.compile(r"[^\w\s]") MULTIPLE_SPACE_PATTERN = re.compile(r"\s+") -CHAR_REMOVAL_TABLE = str.maketrans("_'\"", " ") - # This caches results to avoid repeated normalization of the same search term @lru_cache(maxsize=1024) def _normalize_search_term( name: str, remove_articles: bool = True, remove_punctuation: bool = True ) -> str: - # Single translate operation - name = name.lower().translate(CHAR_REMOVAL_TABLE) + # Lower and replace underscores with spaces + name = name.lower().replace("_", " ") # Remove articles (combined if possible) if remove_articles: diff --git a/backend/handler/metadata/igdb_handler.py b/backend/handler/metadata/igdb_handler.py index f0330358c..a8702d8a4 100644 --- a/backend/handler/metadata/igdb_handler.py +++ b/backend/handler/metadata/igdb_handler.py @@ -572,7 +572,6 @@ class IGDBHandler(MetadataHandler): if not platform_igdb_id: return [] - search_term = self.normalize_search_term(search_term) matched_roms = await self._request( self.games_endpoint, data=f'search "{uc(search_term)}"; fields {",".join(self.games_fields)}; where platforms=[{platform_igdb_id}];', diff --git a/backend/handler/metadata/moby_handler.py b/backend/handler/metadata/moby_handler.py index 80d70b19d..1f0d732ce 100644 --- a/backend/handler/metadata/moby_handler.py +++ b/backend/handler/metadata/moby_handler.py @@ -254,10 +254,9 @@ class MobyGamesHandler(MetadataHandler): if not platform_moby_id: return [] - search_term = uc(search_term) matched_roms = await self.moby_service.list_games( platform_ids=[platform_moby_id], - title=quote(search_term, safe="/ "), + title=quote(uc(search_term), safe="/ "), ) return [ diff --git a/backend/handler/metadata/ss_handler.py b/backend/handler/metadata/ss_handler.py index 713bf8954..4d4c4b1ef 100644 --- a/backend/handler/metadata/ss_handler.py +++ b/backend/handler/metadata/ss_handler.py @@ -445,7 +445,6 @@ class SSHandler(MetadataHandler): if not platform_ss_id: return [] - search_term = self.normalize_search_term(search_term) matched_roms = await self.ss_service.search_games( term=quote(uc(search_term), safe="/ "), system_id=platform_ss_id,