From baaac65896638daa110016ebcc0579101e24f6bf Mon Sep 17 00:00:00 2001 From: Roy <88516395+moraroy@users.noreply.github.com> Date: Wed, 8 May 2024 01:55:55 -0700 Subject: [PATCH] fixed gog for sd card paths --- NSLGameScanner.py | 87 +++++++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/NSLGameScanner.py b/NSLGameScanner.py index 1dc84ae..0785167 100644 --- a/NSLGameScanner.py +++ b/NSLGameScanner.py @@ -723,7 +723,7 @@ else: -# Gog Galaxy Scanner +#Gog Galaxy Scanner def getGogGameInfo(filePath): # Check if the file contains any GOG entries with open(filePath, 'r') as file: @@ -740,45 +740,55 @@ def getGogGameInfo(filePath): depends_on = None launch_command = None start_menu_link = None + gog_entry = False for line in file: - split_line = line.split("=") - if len(split_line) > 1: - if "gameID" in line: - game_id = re.findall(r'\"(.+?)\"', split_line[1]) - if game_id: - game_id = game_id[0] - if "gameName" in line: - game_name = re.findall(r'\"(.+?)\"', split_line[1]) - if game_name: - game_name = bytes(game_name[0], 'utf-8').decode('unicode_escape') - game_name = game_name.replace('!22', '™') - if "exe" in line and "GOG Galaxy" in line and not "unins000.exe" in line: - exe_path = re.findall(r'\"(.+?)\"', split_line[1]) - if exe_path: - exe_path = exe_path[0].replace('\\\\', '\\') - if "dependsOn" in line: - depends_on = re.findall(r'\"(.+?)\"', split_line[1]) - if depends_on: - depends_on = depends_on[0] - if "launchCommand" in line: - launch_command = re.findall(r'\"(.+?)\"', split_line[1]) - if launch_command: - launch_command = launch_command[0] - if "startMenuLink" in line: - start_menu_link = re.findall(r'\"(.+?)\"', split_line[1]) - if start_menu_link: - start_menu_link = start_menu_link[0] - if game_id and game_name and launch_command and 'GOG.com' in start_menu_link: - game_dict[game_name] = {'id': game_id, 'exe': exe_path} - game_id = None - game_name = None - exe_path = None - depends_on = None - launch_command = None - start_menu_link = None + if "GOG.com" in line: + gog_entry = True + if gog_entry: + split_line = line.split("=") + if len(split_line) > 1: + if "gameID" in line: + game_id = re.findall(r'\"(.+?)\"', split_line[1]) + if game_id: + game_id = game_id[0] + if "gameName" in line: + game_name = re.findall(r'\"(.+?)\"', split_line[1]) + if game_name: + game_name = bytes(game_name[0], 'utf-8').decode('unicode_escape') + game_name = game_name.replace('!22', '™') + if "exe" in line and not "unins000.exe" in line: + exe_path = re.findall(r'\"(.+?)\"', split_line[1]) + if exe_path: + exe_path = exe_path[0].replace('\\\\', '\\') + if "dependsOn" in line: + depends_on = re.findall(r'\"(.+?)\"', split_line[1]) + if depends_on: + depends_on = depends_on[0] + if "launchCommand" in line: + launch_command = re.findall(r'\"(.+?)\"\s*$', split_line[1]) + if launch_command: + # Remove leading and trailing whitespace from the path + path = launch_command[0].strip() + # Reconstruct the launch command with the cleaned path + launch_command = f"\"{path}\"" + if "startMenuLink" in line: + start_menu_link = re.findall(r'\"(.+?)\"', split_line[1]) + if start_menu_link: + start_menu_link = start_menu_link[0] + if game_id and game_name and launch_command and start_menu_link and 'GOG.com' in start_menu_link: + game_dict[game_name] = {'id': game_id, 'exe': exe_path} + game_id = None + game_name = None + exe_path = None + depends_on = None + launch_command = None + start_menu_link = None return game_dict + + + # Define your paths gog_games_directory = f"{logged_in_home}/.local/share/Steam/steamapps/compatdata/{gog_galaxy_launcher}/pfx/drive_c/Program Files (x86)/GOG Galaxy/Games" registry_file_path = f"{logged_in_home}/.local/share/Steam/steamapps/compatdata/{gog_galaxy_launcher}/pfx/system.reg" @@ -792,7 +802,9 @@ else: for game, game_info in game_dict.items(): if game_info['id']: - launch_options = f"STEAM_COMPAT_DATA_PATH=\"{logged_in_home}/.local/share/Steam/steamapps/compatdata/{gog_galaxy_launcher}/\" %command% /command=runGame /gameId={game_info['id']} /path=\"{game_info['exe']}\"" + # Strip leading and trailing spaces from the exe path + exe_path = game_info['exe'].strip() + launch_options = f"STEAM_COMPAT_DATA_PATH=\"{logged_in_home}/.local/share/Steam/steamapps/compatdata/{gog_galaxy_launcher}/\" %command% /command=runGame /gameId={game_info['id']} /path=\"{exe_path}\"" exe_path = f"\"{logged_in_home}/.local/share/Steam/steamapps/compatdata/{gog_galaxy_launcher}/pfx/drive_c/Program Files (x86)/GOG Galaxy/GalaxyClient.exe\"" start_dir = f"\"{logged_in_home}/.local/share/Steam/steamapps/compatdata/{gog_galaxy_launcher}/pfx/drive_c/Program Files (x86)/GOG Galaxy/\"" create_new_entry(exe_path, game, launch_options, start_dir) @@ -802,6 +814,7 @@ else: + #Battle.net Scanner # Define your mapping flavor_mapping = {