From 30b62ab94ab306cb920e84fb1f7382f2288e76a5 Mon Sep 17 00:00:00 2001 From: Daniel Johnson Date: Fri, 12 Jan 2024 17:01:37 -0500 Subject: [PATCH] Move steam game playtime transfer code down to the steam service. It makes GOG crash, and probably other services too! --- lutris/services/base.py | 7 ------- lutris/services/steam.py | 12 ++++++++++++ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/lutris/services/base.py b/lutris/services/base.py index 7cb1c94ac..851a2f93e 100644 --- a/lutris/services/base.py +++ b/lutris/services/base.py @@ -1,5 +1,4 @@ """Generic service utilities""" -import json import os import shutil from gettext import gettext as _ @@ -219,12 +218,6 @@ class BaseService(GObject.Object): conditions={"id": game["id"]} ) - # Copy playtimes from Steam's data - for game in get_games(filters={"service": self.id, "service_id": service_game["appid"]}): - steam_game_playtime = json.loads(service_game["details"]).get("playtime_forever") - playtime = steam_game_playtime / 60 - sql.db_update(PGA_DB, "games", {"playtime": playtime}, conditions={"id": game["id"]}) - def match_games(self): """Matching of service games to lutris games""" service_games = { diff --git a/lutris/services/steam.py b/lutris/services/steam.py index 39f1ec33b..9211ac845 100644 --- a/lutris/services/steam.py +++ b/lutris/services/steam.py @@ -8,6 +8,7 @@ from gi.repository import Gio from lutris import settings from lutris.config import LutrisConfig, write_game_config +from lutris.database import sql from lutris.database.games import add_game, get_game_by_field, get_games from lutris.database.services import ServiceGameCollection from lutris.game import Game @@ -21,6 +22,8 @@ from lutris.util.steam.appmanifest import AppManifest, get_appmanifests from lutris.util.steam.config import get_active_steamid64, get_steam_library, get_steamapps_dirs from lutris.util.strings import slugify +PGA_DB = settings.PGA_DB + class SteamBanner(ServiceMedia): service = "steam" @@ -107,6 +110,15 @@ class SteamService(BaseService): self.match_games() return steam_games + def match_game(self, service_game, lutris_game): + super().match_game(service_game, lutris_game) + + # Copy playtimes from Steam's data + for game in get_games(filters={"service": self.id, "service_id": service_game["appid"]}): + steam_game_playtime = json.loads(service_game["details"]).get("playtime_forever") + playtime = steam_game_playtime / 60 + sql.db_update(PGA_DB, "games", {"playtime": playtime}, conditions={"id": game["id"]}) + def get_installer_files(self, installer, _installer_file_id, _selected_extras): steam_uri = "$STEAM:%s:." appid = str(installer.script["game"]["appid"])