From a07133d6787343e6815ac0ad12bac60e9f4accc2 Mon Sep 17 00:00:00 2001 From: zurdi Date: Thu, 27 Jun 2024 16:43:03 +0200 Subject: [PATCH] added filter for static/animated cover --- backend/handler/metadata/sgdb_handler.py | 66 ++++++++++++++----- .../common/Game/Dialog/SearchCoverRom.vue | 65 +++++++++++++----- 2 files changed, 101 insertions(+), 30 deletions(-) diff --git a/backend/handler/metadata/sgdb_handler.py b/backend/handler/metadata/sgdb_handler.py index b16867180..f690bfc5c 100644 --- a/backend/handler/metadata/sgdb_handler.py +++ b/backend/handler/metadata/sgdb_handler.py @@ -8,11 +8,17 @@ STEAMGRIDDB_API_ENABLED: Final = bool(STEAMGRIDDB_API_KEY) # SteamGridDB dimensions -STEAMVERTICAL = "600x900" -GALAXY342 = "342x482" -GALAXY660 = "660x930" -SQUARE512 = "512x512" -SQUARE1024 = "1024x1024" +STEAMVERTICAL: Final = "600x900" +GALAXY342: Final = "342x482" +GALAXY660: Final = "660x930" +SQUARE512: Final = "512x512" +SQUARE1024: Final = "1024x1024" + +# SteamGridDB types +STATIC: Final = "static" +ANIMATED: Final = "animated" + +SGDB_API_COVER_LIMIT: Final = 50 class SGDBBaseHandler: @@ -34,28 +40,58 @@ def get_details(self, search_term): if len(search_response["data"]) == 0: log.warning(f"Could not find '{search_term}' on SteamGridDB") - return "" + return [] games = [] for game in search_response["data"]: + page = 0 covers_response = requests.get( f"{self.grid_endpoint}/{game['id']}", headers=self.headers, timeout=120, params={ "dimensions": f"{STEAMVERTICAL},{GALAXY342},{GALAXY660},{SQUARE512},{SQUARE1024}", + "types": f"{STATIC},{ANIMATED}", + "page": page, }, ).json() - games.append( - { - "name": game["name"], - "resources": [ - {"thumb": cover["thumb"], "url": cover["url"]} - for cover in covers_response["data"] - ], - } - ) + while ( + len(covers_response["data"]) < covers_response["total"] + and covers_response["total"] > SGDB_API_COVER_LIMIT + ): + page += 1 + covers_response["data"].extend( + requests.get( + f"{self.grid_endpoint}/{game['id']}", + headers=self.headers, + timeout=120, + params={ + "dimensions": f"{STEAMVERTICAL},{GALAXY342},{GALAXY660},{SQUARE512},{SQUARE1024}", + "types": f"{STATIC},{ANIMATED}", + "page": page, + }, + ).json()["data"] + ) + + if len(covers_response["data"]) > 0: + games.append( + { + "name": game["name"], + "resources": [ + { + "thumb": cover["thumb"], + "url": cover["url"], + "type": ( + "animated" + if cover["thumb"].split(".")[-1] == "webm" + else "static" + ), + } + for cover in covers_response["data"] + ], + } + ) return games diff --git a/frontend/src/components/common/Game/Dialog/SearchCoverRom.vue b/frontend/src/components/common/Game/Dialog/SearchCoverRom.vue index 1709342c3..31ff60ae6 100644 --- a/frontend/src/components/common/Game/Dialog/SearchCoverRom.vue +++ b/frontend/src/components/common/Game/Dialog/SearchCoverRom.vue @@ -1,25 +1,25 @@