mirror of
https://github.com/rommapp/romm.git
synced 2026-03-03 03:07:01 +00:00
[ROMM-2949] Add support for shortfile scummvm names
This commit is contained in:
@@ -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.
|
||||
|
||||
1714
backend/handler/metadata/fixtures/scummvm_index.json
Normal file
1714
backend/handler/metadata/fixtures/scummvm_index.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user