From 28b2a243f3a2d8e793876fbb708048506b5a735f Mon Sep 17 00:00:00 2001 From: D V Date: Sun, 13 Aug 2023 17:17:50 +0530 Subject: [PATCH 1/2] fix bugs and renamed --- .../{DuckStation cover downloader.py => covers.py} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename DuckStation-cover-downloader/{DuckStation cover downloader.py => covers.py} (95%) diff --git a/DuckStation-cover-downloader/DuckStation cover downloader.py b/DuckStation-cover-downloader/covers.py similarity index 95% rename from DuckStation-cover-downloader/DuckStation cover downloader.py rename to DuckStation-cover-downloader/covers.py index 9eddd39..a83fe02 100644 --- a/DuckStation-cover-downloader/DuckStation cover downloader.py +++ b/DuckStation-cover-downloader/covers.py @@ -23,9 +23,9 @@ from urllib.error import HTTPError from termcolor import colored from colorama import init import urllib.request -import os, sys - +import os, sys, ssl +ssl._create_default_https_context = ssl._create_unverified_context COVERS_URL = 'https://raw.githubusercontent.com/xlenore/psx-covers/main/covers/' VERSION_URL = 'https://raw.githubusercontent.com/xlenore/psx-covers/main/DuckStation-cover-downloader/version' VERSION = 1.1 @@ -49,7 +49,7 @@ def check_version(): def serial_list(): # Get game serial - with open(f'{path()}\cache\gamelist.cache', errors='ignore') as file: + with open(f'{path()}/cache/gamelist.cache', errors='ignore') as file: regex = re.compile('(\w{4}-\d{5})').findall(file.read()) serial_list = list(dict.fromkeys(regex)) print('[LOG]:', colored(f'Found {len(serial_list)} games', 'green')) @@ -61,7 +61,7 @@ def serial_list(): # Get game serial def existing_covers(): - covers = [w.replace('.jpg', '') for w in os.listdir(f'{path()}\covers')] + covers = [w.replace('.jpg', '') for w in os.listdir(f'{path()}/covers')] return covers From 69733608267a5e8e3602f2cc7b2ad7dfa735a06c Mon Sep 17 00:00:00 2001 From: D V Date: Sat, 9 Sep 2023 14:21:49 +0530 Subject: [PATCH 2/2] refactor for platform compatibility Updated the code to ensure compatibility with both Windows and Unix-like systems. This involved adding platform-specific checks for certain commands and file paths. Specifically, the code now correctly sets the terminal window title on Windows systems while avoiding errors on other platforms. Additionally, code style and formatting were improved for better readability. --- DuckStation-cover-downloader/covers.py | 72 ++++++++++++++++++-------- 1 file changed, 50 insertions(+), 22 deletions(-) diff --git a/DuckStation-cover-downloader/covers.py b/DuckStation-cover-downloader/covers.py index a83fe02..746cf16 100644 --- a/DuckStation-cover-downloader/covers.py +++ b/DuckStation-cover-downloader/covers.py @@ -24,15 +24,16 @@ from termcolor import colored from colorama import init import urllib.request import os, sys, ssl +import platform ssl._create_default_https_context = ssl._create_unverified_context -COVERS_URL = 'https://raw.githubusercontent.com/xlenore/psx-covers/main/covers/' -VERSION_URL = 'https://raw.githubusercontent.com/xlenore/psx-covers/main/DuckStation-cover-downloader/version' +COVERS_URL = "https://raw.githubusercontent.com/xlenore/psx-covers/main/covers/" +VERSION_URL = "https://raw.githubusercontent.com/xlenore/psx-covers/main/DuckStation-cover-downloader/version" VERSION = 1.1 def path(): - if getattr(sys, 'frozen', False): + if getattr(sys, "frozen", False): path = os.path.dirname(os.path.realpath(sys.executable)) elif __file__: path = os.path.dirname(__file__) @@ -42,51 +43,78 @@ def path(): def check_version(): try: version = urllib.request.urlopen(VERSION_URL) - if float(version.read().decode('utf-8').replace('\n','')) != VERSION: - print('[LOG]:', colored(f'New update available!\n', 'green')) + if float(version.read().decode("utf-8").replace("\n", "")) != VERSION: + print("[LOG]:", colored(f"New update available!\n", "green")) except: - pass + pass def serial_list(): # Get game serial - with open(f'{path()}/cache/gamelist.cache', errors='ignore') as file: - regex = re.compile('(\w{4}-\d{5})').findall(file.read()) + with open( + f'{os.path.join(path(), "cache", "gamelist.cache")}', errors="ignore" + ) as file: + regex = re.compile("(\w{4}-\d{5})").findall(file.read()) serial_list = list(dict.fromkeys(regex)) - print('[LOG]:', colored(f'Found {len(serial_list)} games', 'green')) + print("[LOG]:", colored(f"Found {len(serial_list)} games", "green")) if len(serial_list) == 0: - print('[ERROR]:', colored(f'You have 0 games installed', 'red')) + print("[ERROR]:", colored(f"You have 0 games installed", "red")) input() - quit() + quit() return serial_list - + def existing_covers(): - covers = [w.replace('.jpg', '') for w in os.listdir(f'{path()}/covers')] + covers = [ + w.replace(".jpg", "") for w in os.listdir(f'{os.path.join(path(), "covers")}') + ] + return covers -def download_covers(serial_list:list): # Download Covers +def download_covers(serial_list: list): # Download Covers existing_cover = existing_covers() for i in range(len(serial_list)): game_serial = serial_list[i] if game_serial not in existing_cover: - print('[LOG]:',colored(f'Downloading {game_serial} cover...', 'green')) + print("[LOG]:", colored(f"Downloading {game_serial} cover...", "green")) try: - urllib.request.urlretrieve(f'{COVERS_URL}{game_serial}.jpg', f'covers/{game_serial}.jpg') + urllib.request.urlretrieve( + f"{COVERS_URL}{game_serial}.jpg", + f'{os.path.join("covers", "{game_serial}.jpg")}', + ) sleep(0.1) except HTTPError: - print('[WARNING]',colored(f'{game_serial} Not found. Skipping...','yellow')) + print( + "[WARNING]", + colored(f"{game_serial} Not found. Skipping...", "yellow"), + ) else: - print('[WARNING]:',colored(f'{game_serial} already exist in \covers. Skipping...','yellow')) + print( + "[WARNING]:", + colored( + f"{game_serial} already exist in \covers. Skipping...", "yellow" + ), + ) + + +def set_terminal_title(title): + if platform.system() == "Windows": + os.system(f"title {title}") def run(): - #check_version() + set_terminal_title(f"DuckStation Cover Downloader {VERSION}") + # check_version() download_covers(serial_list()) - print('[LOG]:', colored(f'Done!, please report Not found | Low quality | Wrong covers in GitHub.', 'green')) + print( + "[LOG]:", + colored( + f"Done!, please report Not found | Low quality | Wrong covers in GitHub.", + "green", + ), + ) input() -os.system(f'title DuckStation Cover Downloader {VERSION}') init() -run() \ No newline at end of file +run()