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])