diff --git a/backend/endpoints/responses/rom.py b/backend/endpoints/responses/rom.py index 14ebf7182..0202ba0a3 100644 --- a/backend/endpoints/responses/rom.py +++ b/backend/endpoints/responses/rom.py @@ -12,7 +12,7 @@ from models.rom import Rom from pydantic import BaseModel, Field, computed_field from typing_extensions import NotRequired, TypedDict -SORT_COMPARE_REGEX = r"^([Tt]he|[Aa]|[Aa]nd)\s" +SORT_COMPARE_REGEX = re.compile(r"^([Tt]he|[Aa]|[Aa]nd)\s") RomIGDBMetadata = TypedDict( # type: ignore[misc] "RomIGDBMetadata", @@ -101,8 +101,7 @@ class RomSchema(BaseModel): @property def sort_comparator(self) -> str: return ( - re.sub( - SORT_COMPARE_REGEX, + SORT_COMPARE_REGEX.sub( "", self.name or self.file_name_no_tags, ) diff --git a/backend/handler/filesystem/base_handler.py b/backend/handler/filesystem/base_handler.py index 0f983f569..d5c34a6f8 100644 --- a/backend/handler/filesystem/base_handler.py +++ b/backend/handler/filesystem/base_handler.py @@ -5,8 +5,8 @@ from enum import Enum from config.config_manager import config_manager as cm -TAG_REGEX = r"\(([^)]+)\)|\[([^]]+)\]" -EXTENSION_REGEX = r"\.(([a-z]+\.)*\w+)$" +TAG_REGEX = re.compile(r"\(([^)]+)\)|\[([^]]+)\]") +EXTENSION_REGEX = re.compile(r"\.(([a-z]+\.)*\w+)$") LANGUAGES = [ ("Ar", "Arabic"), @@ -95,14 +95,14 @@ class FSHandler: ) def get_file_name_with_no_extension(self, file_name: str) -> str: - return re.sub(EXTENSION_REGEX, "", file_name).strip() + return EXTENSION_REGEX.sub("", file_name).strip() def get_file_name_with_no_tags(self, file_name: str) -> str: file_name_no_extension = self.get_file_name_with_no_extension(file_name) - return re.split(TAG_REGEX, file_name_no_extension)[0].strip() + return TAG_REGEX.split(file_name_no_extension)[0].strip() def parse_file_extension(self, file_name) -> str: - match = re.search(EXTENSION_REGEX, file_name) + match = EXTENSION_REGEX.search(file_name) return match.group(1) if match else "" def _exclude_files(self, files, filetype) -> list[str]: diff --git a/backend/handler/filesystem/roms_handler.py b/backend/handler/filesystem/roms_handler.py index 63169c4e7..e490f05d1 100644 --- a/backend/handler/filesystem/roms_handler.py +++ b/backend/handler/filesystem/roms_handler.py @@ -33,7 +33,7 @@ class FSRomsHandler(FSHandler): regs = [] langs = [] other_tags = [] - tags = [tag[0] or tag[1] for tag in re.findall(TAG_REGEX, file_name)] + tags = [tag[0] or tag[1] for tag in TAG_REGEX.findall(file_name)] tags = [tag for subtags in tags for tag in subtags.split(",")] tags = [tag.strip() for tag in tags] diff --git a/backend/handler/metadata/base_hander.py b/backend/handler/metadata/base_hander.py index 2070372a9..bafce64a2 100644 --- a/backend/handler/metadata/base_hander.py +++ b/backend/handler/metadata/base_hander.py @@ -24,8 +24,8 @@ def conditionally_set_cache( # These are loaded in cache in update_switch_titledb_task -SWITCH_TITLEDB_REGEX: Final = r"(70[0-9]{12})" -SWITCH_PRODUCT_ID_REGEX: Final = r"(0100[0-9A-F]{12})" +SWITCH_TITLEDB_REGEX: Final = re.compile(r"(70[0-9]{12})") +SWITCH_PRODUCT_ID_REGEX: Final = re.compile(r"(0100[0-9A-F]{12})") # No regex needed for MAME @@ -33,12 +33,12 @@ MAME_XML_KEY: Final = "romm:mame_xml" conditionally_set_cache(MAME_XML_KEY, "mame_index.json") # PS2 OPL -PS2_OPL_REGEX: Final = r"^([A-Z]{4}_\d{3}\.\d{2})\..*$" +PS2_OPL_REGEX: Final = re.compile(r"^([A-Z]{4}_\d{3}\.\d{2})\..*$") PS2_OPL_KEY: Final = "romm:ps2_opl_index" conditionally_set_cache(PS2_OPL_KEY, "ps2_opl_index.json") # Sony serial codes for PS1, PS2, and PSP -SONY_SERIAL_REGEX: Final = r".*([a-zA-Z]{4}-\d{5}).*$" +SONY_SERIAL_REGEX: Final = re.compile(r".*([a-zA-Z]{4}-\d{5}).*$") PS1_SERIAL_INDEX_KEY: Final = "romm:ps1_serial_index" conditionally_set_cache(PS1_SERIAL_INDEX_KEY, "ps1_serial_index.json") diff --git a/backend/handler/metadata/igdb_handler.py b/backend/handler/metadata/igdb_handler.py index 600d7a875..916b47e29 100644 --- a/backend/handler/metadata/igdb_handler.py +++ b/backend/handler/metadata/igdb_handler.py @@ -341,13 +341,13 @@ class IGDBBaseHandler(MetadataHandler): fallback_rom = IGDBRom(igdb_id=None) # Support for PS2 OPL filename format - match = re.match(PS2_OPL_REGEX, file_name) + match = PS2_OPL_REGEX.match(file_name) if platform_igdb_id == PS2_IGDB_ID and match: search_term = await self._ps2_opl_format(match, search_term) fallback_rom = IGDBRom(igdb_id=None, name=search_term) # Support for sony serial filename format (PS, PS3, PS3) - match = re.search(SONY_SERIAL_REGEX, file_name, re.IGNORECASE) + match = SONY_SERIAL_REGEX.search(file_name, re.IGNORECASE) if platform_igdb_id == PS1_IGDB_ID and match: search_term = await self._ps1_serial_format(match, search_term) fallback_rom = IGDBRom(igdb_id=None, name=search_term) @@ -361,7 +361,7 @@ class IGDBBaseHandler(MetadataHandler): fallback_rom = IGDBRom(igdb_id=None, name=search_term) # Support for switch titleID filename format - match = re.search(SWITCH_TITLEDB_REGEX, file_name) + match = SWITCH_TITLEDB_REGEX.search(file_name) if platform_igdb_id == SWITCH_IGDB_ID and match: search_term, index_entry = await self._switch_titledb_format( match, search_term @@ -376,7 +376,7 @@ class IGDBBaseHandler(MetadataHandler): ) # Support for switch productID filename format - match = re.search(SWITCH_PRODUCT_ID_REGEX, file_name) + match = SWITCH_PRODUCT_ID_REGEX.search(file_name) if platform_igdb_id == SWITCH_IGDB_ID and match: search_term, index_entry = await self._switch_productid_format( match, search_term diff --git a/backend/handler/metadata/moby_handler.py b/backend/handler/metadata/moby_handler.py index 442f5b9a4..70a507938 100644 --- a/backend/handler/metadata/moby_handler.py +++ b/backend/handler/metadata/moby_handler.py @@ -172,13 +172,13 @@ class MobyGamesHandler(MetadataHandler): fallback_rom = MobyGamesRom(moby_id=None) # Support for PS2 OPL filename format - match = re.match(PS2_OPL_REGEX, file_name) + match = PS2_OPL_REGEX.match(file_name) if platform_moby_id == PS2_MOBY_ID and match: search_term = await self._ps2_opl_format(match, search_term) fallback_rom = MobyGamesRom(moby_id=None, name=search_term) # Support for sony serial filename format (PS, PS3, PS3) - match = re.search(SONY_SERIAL_REGEX, file_name, re.IGNORECASE) + match = SONY_SERIAL_REGEX.search(file_name, re.IGNORECASE) if platform_moby_id == PS1_MOBY_ID and match: search_term = await self._ps1_serial_format(match, search_term) fallback_rom = MobyGamesRom(moby_id=None, name=search_term) @@ -192,7 +192,7 @@ class MobyGamesHandler(MetadataHandler): fallback_rom = MobyGamesRom(moby_id=None, name=search_term) # Support for switch titleID filename format - match = re.search(SWITCH_TITLEDB_REGEX, file_name) + match = SWITCH_TITLEDB_REGEX.search(file_name) if platform_moby_id == SWITCH_MOBY_ID and match: search_term, index_entry = await self._switch_titledb_format( match, search_term @@ -207,7 +207,7 @@ class MobyGamesHandler(MetadataHandler): ) # Support for switch productID filename format - match = re.search(SWITCH_PRODUCT_ID_REGEX, file_name) + match = SWITCH_PRODUCT_ID_REGEX.search(file_name) if platform_moby_id == SWITCH_MOBY_ID and match: search_term, index_entry = await self._switch_productid_format( match, search_term