From 021eba38e5187a2998aa553afdfcb5984367e799 Mon Sep 17 00:00:00 2001 From: derek-hirotsu <132305781+derek-hirotsu@users.noreply.github.com> Date: Fri, 24 Nov 2023 11:32:45 -0800 Subject: [PATCH] Audit Cyberpunk 2077 (#89) * remove mod file * update readme * update copying mod * update gitignore * update log messages * update cspell --- .gitignore | 1 + cspell.json | 1 + cyberpunk2077/README.md | 1 + .../basegame_no_intro_videos.archive | Bin 12288 -> 0 bytes cyberpunk2077/cyberpunk_utils.py | 50 ++++++++++-------- 5 files changed, 30 insertions(+), 23 deletions(-) delete mode 100644 cyberpunk2077/basegame_no_intro_videos.archive diff --git a/.gitignore b/.gitignore index 460dec5..e0bc5b2 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ flac-1.4.3-win/ flac-1.4.3-win.zip y-cruncher v0.8.2.9522/ y-cruncher v0.8.2.9522.zip +basegame_no_intro_videos.archive *.blend 0001.png *.msi diff --git a/cspell.json b/cspell.json index 681a78f..1161ec0 100644 --- a/cspell.json +++ b/cspell.json @@ -21,6 +21,7 @@ "opengles", "OPTIX", "psutil", + "Projekt", "pycache", "Returnal", "RLCS", diff --git a/cyberpunk2077/README.md b/cyberpunk2077/README.md index c547bbe..51204f4 100644 --- a/cyberpunk2077/README.md +++ b/cyberpunk2077/README.md @@ -7,6 +7,7 @@ Navigates menus to the in-game benchmark then runs it. - Python 3.10+ - Cyberpunk 2077 installed - Keras OCR service +- [No Intro Videos](https://www.nexusmods.com/cyberpunk2077/mods/533) mod downloaded. Place the mod file `basegame_no_intro_videos.archive` in the test folder. ## Options diff --git a/cyberpunk2077/basegame_no_intro_videos.archive b/cyberpunk2077/basegame_no_intro_videos.archive deleted file mode 100644 index 69398f5fbc05c5578498bc1f2c28f6bd41d9b841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 O3j9^zuLA##3j7al2R#-5 diff --git a/cyberpunk2077/cyberpunk_utils.py b/cyberpunk2077/cyberpunk_utils.py index 7be88ea..ab19cf9 100644 --- a/cyberpunk2077/cyberpunk_utils.py +++ b/cyberpunk2077/cyberpunk_utils.py @@ -6,10 +6,9 @@ from pathlib import Path import re import shutil -SCRIPT_DIRECTORY = os.path.dirname(os.path.realpath(__file__)) -CYBERPUNK_INSTALL_DIR = os.path.join( +SCRIPT_DIRECTORY = Path(__file__).resolve().parent +CYBERPUNK_INSTALL_DIR = Path( os.environ["ProgramFiles(x86)"], "Steam\\steamapps\\common\\Cyberpunk 2077") -DEFAULT_NO_INTRO_PATH = os.path.join(CYBERPUNK_INSTALL_DIR, "archive\\pc\\mod") def get_args() -> any: @@ -22,30 +21,35 @@ def get_args() -> any: return parser.parse_args() +def copy_from_network_drive(): + """Copies mod file from network drive to harness folder""" + src_path = Path(r"\\Labs\labs\03_ProcessingFiles\Cyberpunk 2077\basegame_no_intro_videos.archive") + dest_path = SCRIPT_DIRECTORY / "basegame_no_intro_videos.archive" + shutil.copyfile(src_path, dest_path) + + def copy_no_intro_mod() -> None: """Copies no intro mod file""" - src_file = os.path.join( - SCRIPT_DIRECTORY, "basegame_no_intro_videos.archive") - is_valid_no_intro = os.path.isfile(src_file) - - if not is_valid_no_intro: - raise OSError(f"Can't find no intro: {src_file}") - - # Validate/create path to directory where we will copy profile to - dest_dir: str = DEFAULT_NO_INTRO_PATH try: - Path(dest_dir).mkdir(parents=True, exist_ok=True) - except FileExistsError as err: - logging.error( - "Could not create rtss profiles directory - " + - "likely due to non-directory file existing at path." - ) - raise err + mod_path = CYBERPUNK_INSTALL_DIR / "archive" / "pc" / "mod" + mod_path.mkdir(parents=True, exist_ok=True) - # Copy the profile over - destination_file = os.path.join(dest_dir, os.path.basename(src_file)) - logging.info("Copying: %s -> %s", src_file, destination_file) - shutil.copy(src_file, destination_file) + src_path = SCRIPT_DIRECTORY / "basegame_no_intro_videos.archive" + dest_path = mod_path / "basegame_no_intro_videos.archive" + + logging.info("Copying: %s -> %s", src_path, dest_path) + shutil.copy(src_path, dest_path) + return + except OSError: + logging.error("Could not copy local mod file; Trying from network drive") + try: + copy_from_network_drive() + + logging.info("Copying: %s -> %s", src_path, dest_path) + shutil.copy(src_path, dest_path) + except OSError as err: + logging.error("Could not copy mod file from network drive") + raise err def read_current_resolution():