This commit is contained in:
kramo
2023-09-26 19:47:03 +02:00
parent c3226e33e8
commit 38e71e32b9
6 changed files with 31 additions and 31 deletions

View File

@@ -31,7 +31,7 @@ from src.errors.friendly_error import FriendlyError
from src.game import Game
from src.game_cover import GameCover
from src.store.managers.cover_manager import CoverManager
from src.store.managers.sgdb_manager import SGDBManager
from src.store.managers.sgdb_manager import SgdbManager
from src.utils.create_dialog import create_dialog
from src.utils.save_cover import convert_cover, save_cover
@@ -245,7 +245,7 @@ class DetailsWindow(Adw.Window):
# Get a cover from SGDB if none is present
if not self.game_cover.get_texture():
self.game.set_loading(1)
sgdb_manager = shared.store.managers[SGDBManager]
sgdb_manager = shared.store.managers[SgdbManager]
sgdb_manager.reset_cancellable()
sgdb_manager.process_game(self.game, {}, self.update_cover_callback)
@@ -254,7 +254,7 @@ class DetailsWindow(Adw.Window):
self.close()
shared.win.show_details_page(self.game)
def update_cover_callback(self, manager: SGDBManager) -> None:
def update_cover_callback(self, manager: SgdbManager) -> None:
# Set the game as not loading
self.game.set_loading(-1)
self.game.update()

View File

@@ -51,7 +51,7 @@ from src.preferences import PreferencesWindow
from src.store.managers.cover_manager import CoverManager
from src.store.managers.display_manager import DisplayManager
from src.store.managers.file_manager import FileManager
from src.store.managers.sgdb_manager import SGDBManager
from src.store.managers.sgdb_manager import SgdbManager
from src.store.managers.steam_api_manager import SteamAPIManager
from src.store.store import Store
from src.utils.migrate_files_v1_to_v2 import migrate_files_v1_to_v2
@@ -107,7 +107,7 @@ class CartridgesApplication(Adw.Application):
# Add rest of the managers for game imports
shared.store.add_manager(CoverManager())
shared.store.add_manager(SteamAPIManager())
shared.store.add_manager(SGDBManager())
shared.store.add_manager(SgdbManager())
shared.store.toggle_manager_in_pipelines(FileManager, True)
# Create actions

View File

@@ -38,7 +38,7 @@ from src.importer.sources.lutris_source import LutrisSource
from src.importer.sources.retroarch_source import RetroarchSource
from src.importer.sources.source import Source
from src.importer.sources.steam_source import SteamSource
from src.store.managers.sgdb_manager import SGDBManager
from src.store.managers.sgdb_manager import SgdbManager
from src.utils.create_dialog import create_dialog
@@ -175,15 +175,15 @@ class PreferencesWindow(Adw.PreferencesWindow):
)
)
def redownload_sgdb(*_args) -> None:
def update_sgdb(*_args: Any) -> None:
counter = 0
games_len = len(shared.store)
sgdb_manager = shared.store.managers[SGDBManager]
sgdb_manager = shared.store.managers[SgdbManager]
sgdb_manager.reset_cancellable()
self.add_toast(download_toast := Adw.Toast.new(_("Downloading covers…")))
def update_cover_callback(manager: SGDBManager) -> None:
def update_cover_callback(manager: SgdbManager) -> None:
nonlocal counter
nonlocal games_len
nonlocal download_toast
@@ -208,7 +208,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
for game in shared.store:
sgdb_manager.process_game(game, {}, update_cover_callback)
self.sgdb_fetch_button.connect("clicked", redownload_sgdb)
self.sgdb_fetch_button.connect("clicked", update_sgdb)
# Switches
self.bind_switches(

View File

@@ -21,14 +21,14 @@ from src import shared
from src.game import Game
from src.game_cover import GameCover
from src.store.managers.manager import Manager
from src.store.managers.sgdb_manager import SGDBManager
from src.store.managers.sgdb_manager import SgdbManager
from src.store.managers.steam_api_manager import SteamAPIManager
class DisplayManager(Manager):
"""Manager in charge of adding a game to the UI"""
run_after = (SteamAPIManager, SGDBManager)
run_after = (SteamAPIManager, SgdbManager)
signals = {"update-ready"}
def main(self, game: Game, _additional_data: dict) -> None:

View File

@@ -26,10 +26,10 @@ from src.game import Game
from src.store.managers.async_manager import AsyncManager
from src.store.managers.cover_manager import CoverManager
from src.store.managers.steam_api_manager import SteamAPIManager
from src.utils.steamgriddb import SGDBAuthError, SGDBHelper
from src.utils.steamgriddb import SgdbAuthError, SgdbHelper
class SGDBManager(AsyncManager):
class SgdbManager(AsyncManager):
"""Manager in charge of downloading a game's cover from SteamGridDB"""
run_after = (SteamAPIManager, CoverManager)
@@ -37,9 +37,9 @@ class SGDBManager(AsyncManager):
def main(self, game: Game, _additional_data: dict) -> None:
try:
sgdb = SGDBHelper()
sgdb = SgdbHelper()
sgdb.conditionaly_update_cover(game)
except SGDBAuthError as error:
except SgdbAuthError as error:
# If invalid auth, cancel all SGDBManager tasks
self.cancellable.cancel()
raise FriendlyError(

View File

@@ -31,27 +31,27 @@ from src.game import Game
from src.utils.save_cover import convert_cover, save_cover
class SGDBError(Exception):
class SgdbError(Exception):
pass
class SGDBAuthError(SGDBError):
class SgdbAuthError(SgdbError):
pass
class SGDBGameNotFoundError(SGDBError):
class SgdbGameNotFound(SgdbError):
pass
class SGDBBadRequestError(SGDBError):
class SgdbBadRequest(SgdbError):
pass
class SGDBNoImageFoundError(SGDBError):
class SgdbNoImageFound(SgdbError):
pass
class SGDBHelper:
class SgdbHelper:
"""Helper class to make queries to SteamGridDB"""
base_url = "https://www.steamgriddb.com/api/v2/"
@@ -70,9 +70,9 @@ class SGDBHelper:
case 200:
return res.json()["data"][0]["id"]
case 401:
raise SGDBAuthError(res.json()["errors"][0])
raise SgdbAuthError(res.json()["errors"][0])
case 404:
raise SGDBGameNotFoundError(res.status_code)
raise SgdbGameNotFound(res.status_code)
case _:
res.raise_for_status()
@@ -86,12 +86,12 @@ class SGDBHelper:
case 200:
data = res.json()["data"]
if len(data) == 0:
raise SGDBNoImageFoundError()
raise SgdbNoImageFound()
return data[0]["url"]
case 401:
raise SGDBAuthError(res.json()["errors"][0])
raise SgdbAuthError(res.json()["errors"][0])
case 404:
raise SGDBGameNotFoundError(res.status_code)
raise SgdbGameNotFound(res.status_code)
case _:
res.raise_for_status()
@@ -115,7 +115,7 @@ class SGDBHelper:
# Get ID for the game
try:
sgdb_id = self.get_game_id(game)
except (HTTPError, SGDBError) as error:
except (HTTPError, SgdbError) as error:
logging.warning(
"%s while getting SGDB ID for %s", type(error).__name__, game.name
)
@@ -135,10 +135,10 @@ class SGDBHelper:
tmp_file_path = tmp_file.get_path()
Path(tmp_file_path).write_bytes(response.content)
save_cover(game.game_id, convert_cover(tmp_file_path))
except SGDBAuthError as error:
except SgdbAuthError as error:
# Let caller handle auth errors
raise error
except (HTTPError, SGDBError) as error:
except (HTTPError, SgdbError) as error:
logging.warning(
"%s while getting image for %s kwargs=%s",
type(error).__name__,
@@ -156,4 +156,4 @@ class SGDBHelper:
game.name,
sgdb_id,
)
raise SGDBNoImageFoundError()
raise SgdbNoImageFound()