From 2c6a165e18550d2706e0ac51e43f211e36134dd1 Mon Sep 17 00:00:00 2001 From: zurdi Date: Fri, 3 Jan 2025 11:15:17 +0000 Subject: [PATCH] misc: improved manual match speed --- backend/endpoints/search.py | 26 +++++++++++-------- env.template | 6 ++--- .../common/Game/Dialog/MatchRom.vue | 6 ++--- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/backend/endpoints/search.py b/backend/endpoints/search.py index ee628f75c..209bc58fa 100644 --- a/backend/endpoints/search.py +++ b/backend/endpoints/search.py @@ -1,3 +1,5 @@ +import asyncio + import emoji from decorators.auth import protected_route from endpoints.responses.search import SearchCoverSchema, SearchRomSchema @@ -66,14 +68,12 @@ async def search_rom( log.info(emoji.emojize(f":video_game: {rom.platform_slug}: {rom.file_name}")) if search_by.lower() == "id": try: - igdb_matched_roms = await meta_igdb_handler.get_matched_roms_by_id( - int(search_term) - ) - moby_matched_roms = await meta_moby_handler.get_matched_roms_by_id( - int(search_term) - ) - ss_matched_roms = await meta_ss_handler.get_matched_roms_by_id( - int(search_term) + igdb_task = meta_igdb_handler.get_matched_roms_by_id(int(search_term)) + moby_task = meta_moby_handler.get_matched_roms_by_id(int(search_term)) + ss_task = meta_ss_handler.get_matched_roms_by_id(int(search_term)) + + igdb_matched_roms, moby_matched_roms, ss_matched_roms = ( + await asyncio.gather(igdb_task, moby_task, ss_task) ) except ValueError as exc: log.error(f"Search error: invalid ID '{search_term}'") @@ -82,16 +82,20 @@ async def search_rom( detail=f"Tried searching by ID, but '{search_term}' is not a valid ID", ) from exc elif search_by.lower() == "name": - igdb_matched_roms = await meta_igdb_handler.get_matched_roms_by_name( + igdb_task = meta_igdb_handler.get_matched_roms_by_name( search_term, (await _get_main_platform_igdb_id(rom.platform)) ) - moby_matched_roms = await meta_moby_handler.get_matched_roms_by_name( + moby_task = meta_moby_handler.get_matched_roms_by_name( search_term, rom.platform.moby_id ) - ss_matched_roms = await meta_ss_handler.get_matched_roms_by_name( + ss_task = meta_ss_handler.get_matched_roms_by_name( search_term, rom.platform.ss_id ) + igdb_matched_roms, moby_matched_roms, ss_matched_roms = await asyncio.gather( + igdb_task, moby_task, ss_task + ) + merged_dict: dict[str, dict] = {} for item in igdb_matched_roms: diff --git a/env.template b/env.template index d6a9d4a55..e3c9a611a 100644 --- a/env.template +++ b/env.template @@ -9,14 +9,14 @@ GUNICORN_WORKERS=4 IGDB_CLIENT_ID= IGDB_CLIENT_SECRET= +# Mobygames +MOBYGAMES_API_KEY= + # Screenscraper SCREENSCRAPER_USER= SCREENSCRAPER_PASSWORD= SCREENSCRAPER_API_KEY= -# Mobygames -MOBYGAMES_API_KEY= - # SteamGridDB STEAMGRIDDB_API_KEY= diff --git a/frontend/src/components/common/Game/Dialog/MatchRom.vue b/frontend/src/components/common/Game/Dialog/MatchRom.vue index e702bf9c6..079d41c95 100644 --- a/frontend/src/components/common/Game/Dialog/MatchRom.vue +++ b/frontend/src/components/common/Game/Dialog/MatchRom.vue @@ -146,21 +146,21 @@ function showSources(matchedRom: SearchRomSchema) { showSelectSource.value = true; selectedMatchRom.value = matchedRom; sources.value = []; - if (matchedRom.igdb_url_cover) { + if (matchedRom.igdb_url_cover || matchedRom.igdb_id) { sources.value.push({ url_cover: matchedRom.igdb_url_cover, name: "IGDB", logo_path: "/assets/scrappers/igdb.png", }); } - if (matchedRom.moby_url_cover) { + if (matchedRom.moby_url_cover || matchedRom.moby_id) { sources.value.push({ url_cover: matchedRom.moby_url_cover, name: "Mobygames", logo_path: "/assets/scrappers/moby.png", }); } - if (matchedRom.ss_url_cover) { + if (matchedRom.ss_url_cover || matchedRom.ss_id) { sources.value.push({ url_cover: matchedRom.ss_url_cover, name: "Screenscraper",