From 0da5f94ea3601b8b82b111f04e24c9b32fa0707c Mon Sep 17 00:00:00 2001 From: kramo <93832451+kra-mo@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:42:07 +0200 Subject: [PATCH] SteamGridDB animated covers --- data/gtk/preferences.blp | 9 +++++ data/hu.kramo.Cartridges.gschema.xml | 3 ++ src/preferences.py | 8 +++++ src/utils/steamgriddb.py | 50 ++++++++++++++++++---------- 4 files changed, 53 insertions(+), 17 deletions(-) diff --git a/data/gtk/preferences.blp b/data/gtk/preferences.blp index 23b406b..ba64692 100644 --- a/data/gtk/preferences.blp +++ b/data/gtk/preferences.blp @@ -236,6 +236,7 @@ template PreferencesWindow : Adw.PreferencesWindow { valign: center; } } + Adw.ActionRow { title: _("Prefer Over Official Images"); @@ -243,6 +244,14 @@ template PreferencesWindow : Adw.PreferencesWindow { valign: center; } } + + Adw.ActionRow { + title: _("Prefer Animated Images"); + + Switch sgdb_animated_switch { + valign: center; + } + } } } } diff --git a/data/hu.kramo.Cartridges.gschema.xml b/data/hu.kramo.Cartridges.gschema.xml index 910a03e..1625267 100644 --- a/data/hu.kramo.Cartridges.gschema.xml +++ b/data/hu.kramo.Cartridges.gschema.xml @@ -69,6 +69,9 @@ false + + + false diff --git a/src/preferences.py b/src/preferences.py index 1e7a95f..102756e 100644 --- a/src/preferences.py +++ b/src/preferences.py @@ -120,6 +120,7 @@ class PreferencesWindow(Adw.PreferencesWindow): sgdb_key_entry_row = Gtk.Template.Child() sgdb_download_switch = Gtk.Template.Child() sgdb_prefer_switch = Gtk.Template.Child() + sgdb_animated_switch = Gtk.Template.Child() def __init__(self, parent_widget, **kwargs): super().__init__(**kwargs) @@ -325,6 +326,13 @@ class PreferencesWindow(Adw.PreferencesWindow): Gio.SettingsBindFlags.DEFAULT, ) + self.schema.bind( + "sgdb-animated", + self.sgdb_animated_switch, + "active", + Gio.SettingsBindFlags.DEFAULT, + ) + def sgdb_key_changed(_widget): self.schema.set_string("sgdb-key", self.sgdb_key_entry_row.get_text()) diff --git a/src/utils/steamgriddb.py b/src/utils/steamgriddb.py index 38260f3..8c90897 100644 --- a/src/utils/steamgriddb.py +++ b/src/utils/steamgriddb.py @@ -4,7 +4,7 @@ import requests from gi.repository import Gio from .create_dialog import create_dialog -from .save_cover import save_cover +from .save_cover import save_cover, resize_animation class SGDBSave: @@ -61,29 +61,45 @@ class SGDBSave: task.return_value(game[0]) return + animated_grid = False + response = None + try: - grid = requests.get( - f'{url}grids/game/{search_result.json()["data"][0]["id"]}?dimensions=600x900', - headers=headers, - timeout=5, - ) + if self.parent_widget.schema.get_boolean("sgdb-animated"): + try: + grid = requests.get( + f'{url}grids/game/{search_result.json()["data"][0]["id"]}?dimensions=600x900&types=animated', + headers=headers, + timeout=5, + ) + response = requests.get( + grid.json()["data"][0]["url"], timeout=5 + ) + animated_grid = True + except IndexError: + pass + if not response: + grid = requests.get( + f'{url}grids/game/{search_result.json()["data"][0]["id"]}?dimensions=600x900', + headers=headers, + timeout=5, + ) + response = requests.get(grid.json()["data"][0]["url"], timeout=5) except (requests.exceptions.RequestException, IndexError): task.return_value(game[0]) return tmp_file = Gio.File.new_tmp(None)[0] - - try: - response = requests.get( - grid.json()["data"][0]["url"], - timeout=5, - ) - except (requests.exceptions.RequestException, IndexError): - task.return_value(game[0]) - return - Path(tmp_file.get_path()).write_bytes(response.content) - save_cover(self.parent_widget, game[0], tmp_file.get_path()) + + save_cover( + self.parent_widget, + game[0], + tmp_file.get_path(), + animation_path=resize_animation(tmp_file.get_path()) + if animated_grid + else None, + ) task.return_value(game[0])