[ROMM-2949] Add support for shortfile scummvm names

This commit is contained in:
Georges-Antoine Assi
2026-01-29 11:12:35 -05:00
parent 2052ca6296
commit 58e16d9c69
6 changed files with 1750 additions and 0 deletions

View File

@@ -30,6 +30,9 @@ SWITCH_PRODUCT_ID_REGEX: Final = re.compile(r"(0100[0-9A-F]{12})")
# No regex needed for MAME
MAME_XML_KEY: Final = "romm:mame_xml"
# ScummVM
SCUMMVM_INDEX_KEY: Final = "romm:scummvm_index"
# PS2 OPL
PS2_OPL_REGEX: Final = re.compile(r"^([A-Z]{4}_\d{3}\.\d{2})\..*$")
PS2_OPL_KEY: Final = "romm:ps2_opl_index"
@@ -261,6 +264,17 @@ class MetadataHandler(abc.ABC):
return search_term
async def _scummvm_format(self, search_term: str) -> str:
from handler.filesystem import fs_rom_handler
search_term = fs_rom_handler.get_file_name_with_no_extension(search_term)
index_entry = await async_cache.hget(SCUMMVM_INDEX_KEY, search_term)
if index_entry:
index_entry = json.loads(index_entry)
search_term = index_entry["name"]
return search_term
def _mask_sensitive_values(self, values: dict[str, str | None]) -> dict[str, str]:
"""
Mask sensitive values (headers or params), leaving only the first 2 and last 2 characters of the token.

File diff suppressed because it is too large Load Diff

View File

@@ -669,6 +669,12 @@ class IGDBHandler(MetadataHandler):
search_term = await self._mame_format(search_term)
fallback_rom = IGDBRom(igdb_id=None, name=search_term)
# Support for ScummVM filename format
scummvm_platform = self.get_platform(UPS.SCUMMVM)
if platform_igdb_id == scummvm_platform.get("igdb_id"):
search_term = await self._scummvm_format(search_term)
fallback_rom = IGDBRom(igdb_id=None, name=search_term)
search_term = self.normalize_search_term(search_term)
log.debug("Searching for %s on IGDB with game_type", search_term)

View File

@@ -268,6 +268,10 @@ class LaunchboxHandler(MetadataHandler):
search_term = search_term.lower()
if platform_slug == UPS.SCUMMVM:
search_term = await self._scummvm_format(search_term)
fallback_rom = LaunchboxRom(launchbox_id=None, name=search_term)
index_entry = await self._get_rom_from_metadata(search_term, platform_slug)
if not index_entry:

View File

@@ -667,6 +667,12 @@ class SSHandler(MetadataHandler):
search_term = await self._mame_format(search_term)
fallback_rom = SSRom(ss_id=None, name=search_term)
# Support for ScummVM filename format
scummvm_platform = self.get_platform(UPS.SCUMMVM)
if platform_ss_id == scummvm_platform.get("ss_id"):
search_term = await self._scummvm_format(search_term)
fallback_rom = SSRom(ss_id=None, name=search_term)
## SS API requires punctuation to match
normalized_search_term = self.normalize_search_term(
search_term, remove_punctuation=False

View File

@@ -20,6 +20,7 @@ from handler.metadata.base_handler import (
PS2_OPL_KEY,
PS2_SERIAL_INDEX_KEY,
PSP_SERIAL_INDEX_KEY,
SCUMMVM_INDEX_KEY,
)
from handler.redis_handler import async_cache
from logger.logger import log
@@ -69,6 +70,11 @@ async def main() -> None:
await conditionally_set_cache(
async_cache, MAME_XML_KEY, METADATA_FIXTURES_DIR / "mame_index.json"
)
await conditionally_set_cache(
async_cache,
SCUMMVM_INDEX_KEY,
METADATA_FIXTURES_DIR / "scummvm_index.json",
)
await conditionally_set_cache(
async_cache, PS2_OPL_KEY, METADATA_FIXTURES_DIR / "ps2_opl_index.json"
)