Adds support for Windows installations

This commit is contained in:
William Hubbard
2022-02-05 19:32:56 +00:00
committed by GitHub
parent 571f918c87
commit 01b78f8500

View File

@@ -6,8 +6,10 @@ import requests
from pathlib import Path from pathlib import Path
from argparse import Namespace from argparse import Namespace
from io import StringIO from io import StringIO
import winreg
steamClient = False steamClient = False
userdata = None
class App: class App:
""" """
@@ -469,9 +471,10 @@ def copyContent(name, content, byte=True):
Whether or not to write in bytenode. Defaults to true. Whether or not to write in bytenode. Defaults to true.
""" """
userdata = Path(Path.home(), ".steam", "root", "userdata")
for user in userdata.iterdir(): for user in userdata.iterdir():
toFile = Path(user, name) toFile = Path(user, name)
if not toFile.parent.is_dir():
toFile.parent.mkdir(parents=True)
print("Writing to %s" % (toFile)) print("Writing to %s" % (toFile))
mode = 'w' mode = 'w'
if byte: if byte:
@@ -497,8 +500,7 @@ def copyFile(fromURL, toCode):
fromURLComp = fromURL.split('/') fromURLComp = fromURL.split('/')
fromName = fromURLComp[6] fromName = fromURLComp[6]
fromCode = fromURLComp[5] fromCode = fromURLComp[5]\
userdata = Path(Path.home(), ".steam", "root", "userdata")
# Gets the final file name # Gets the final file name
if fromName == "library_hero.jpg": if fromName == "library_hero.jpg":
@@ -513,6 +515,7 @@ def copyFile(fromURL, toCode):
print("Copying %s (%s) to %s" % (fromName, fromCode, toName)) print("Copying %s (%s) to %s" % (fromName, fromCode, toName))
fromContent = requests.get(fromURL, allow_redirects=True) fromContent = requests.get(fromURL, allow_redirects=True)
copyContent(Path("config", "grid", toName), fromContent.content) copyContent(Path("config", "grid", toName), fromContent.content)
def copyContents(ids): def copyContents(ids):
@@ -552,7 +555,7 @@ def copyContents(ids):
# Generate the positioning data for logos and such # Generate the positioning data for logos and such
logo = data["apps"][ids[i][0]]["common"]["library_assets"]["logo_position"] logo = data["apps"][ids[i][0]]["common"]["library_assets"]["logo_position"]
logo2 = { logo2 = {
"nversion": 1, "nVersion": 1,
"logoPosition": { "logoPosition": {
"pinnedPosition": logo["pinned_position"], "pinnedPosition": logo["pinned_position"],
"nWidthPct": logo["width_pct"], "nWidthPct": logo["width_pct"],
@@ -577,13 +580,12 @@ def copyContents(ids):
], [ ], [
"customimage", { "customimage", {
"version": 1, "version": 1,
"data": logo2 "data": logo2["logoPosition"]
} }
] ]
] ]
copyContent(Path("config", "librarycache", str(ids[i][1]) + ".json"), json.dumps(logo2), byte=False) copyContent(Path("config", "librarycache", str(ids[i][1]) + ".json"), json.dumps(logo2), byte=False)
userdata = Path(Path.home(), ".steam", "root", "userdata")
# Write the actual shortcut data. # Write the actual shortcut data.
for user in userdata.iterdir(): for user in userdata.iterdir():
shortcutData = parseShortcuts(Path(user, "config", "shortcuts.vdf")) shortcutData = parseShortcuts(Path(user, "config", "shortcuts.vdf"))
@@ -624,10 +626,25 @@ if __name__ == "__main__":
else: else:
for op in term[1:]: for op in term[1:]:
ops.append(op) ops.append(op)
if len(keys) < 2 and not "a" in ops: if len(keys) < 1 and not "a" in ops:
print("%s [OPTIONS] (<fromId> <toId>)..." % __file__) print("%s [OPTIONS] (<fromId> <toId>)..." % __file__)
print("%s [OPTIONS] <term>..." % __file__) print("%s [OPTIONS] <term>..." % __file__)
exit(1) exit(1)
# Find the steam installation directory.
try:
import winreg
hkey = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, "SOFTWARE\WOW6432Node\Valve\Steam")
if hkey:
userdata = Path(winreg.QueryValueEx(hkey, "InstallPath")[0], "userdata")
except:
hkey = None
if not userdata:
userdata = Path(Path.home(), ".steam", "root", "userdata")
if not userdata:
print("Could not find Steam installation directory.", file=sys.stderr)
exit(1)
if ids: if ids:
# In this event, we make sure that all IDs have a mapping, by checking # In this event, we make sure that all IDs have a mapping, by checking
# the last index. # the last index.
@@ -639,12 +656,12 @@ if __name__ == "__main__":
else: else:
tempApps = {} tempApps = {}
apps = [] apps = []
# Find the steam installation directory.
userdata = Path(Path.home(), ".steam", "root", "userdata")
# Loop through all user folders # Loop through all user folders
for user in userdata.iterdir(): for user in userdata.iterdir():
# The shortcut file contain a collection of games that the client recognizes # The shortcut file contain a collection of games that the client recognizes
shortcutData = parseShortcuts(Path(user, "config", "shortcuts.vdf")) shortcutData = parseShortcuts(Path(user, "config", "shortcuts.vdf"))
# Obtain
for app in shortcutData: for app in shortcutData:
if type(app) != dict: if type(app) != dict:
if "a" in ops: if "a" in ops: