From e0d1d1cf23278098bada043f20a05e64cb1a0449 Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Fri, 15 Aug 2025 22:30:13 -0400 Subject: [PATCH] run sgdb in parallel --- backend/endpoints/search.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/backend/endpoints/search.py b/backend/endpoints/search.py index e70b4d846..02ef4aac0 100644 --- a/backend/endpoints/search.py +++ b/backend/endpoints/search.py @@ -14,7 +14,7 @@ from handler.metadata import ( ) from handler.metadata.igdb_handler import IGDB_API_ENABLED, IGDBRom from handler.metadata.moby_handler import MOBY_API_ENABLED, MobyGamesRom -from handler.metadata.sgdb_handler import STEAMGRIDDB_API_ENABLED +from handler.metadata.sgdb_handler import STEAMGRIDDB_API_ENABLED, SGDBRom from handler.metadata.ss_handler import SS_API_ENABLED, SSRom from handler.scan_handler import get_main_platform_igdb_id from logger.formatter import BLUE, CYAN @@ -147,11 +147,18 @@ async def search_rom( **merged_dict.get(ss_name, {}), } - for name, matched_rom in merged_dict.items(): - sgdb_rom = await meta_sgdb_handler.get_details_by_names([name]) + async def get_sgdb_rom(name: str) -> tuple[str, SGDBRom]: + return name, await meta_sgdb_handler.get_details_by_names([name]) + + # Only get SteamGridDB details for first 5 results + sgdb_roms = await asyncio.gather( + *[get_sgdb_rom(name) for name in list(merged_dict.keys())[:5]] + ) + + for name, sgdb_rom in sgdb_roms: if sgdb_rom["sgdb_id"]: merged_dict[name] = { - **matched_rom, + **merged_dict[name], "sgdb_id": sgdb_rom.get("sgdb_id", ""), "sgdb_url_cover": sgdb_rom.get("url_cover", ""), }