Merge pull request #30 from DarhkVoyd/main

refactor for platform compatibility
This commit is contained in:
xlenore
2023-10-02 18:18:42 -04:00
committed by GitHub

View File

@@ -23,16 +23,17 @@ from urllib.error import HTTPError
from termcolor import colored from termcolor import colored
from colorama import init from colorama import init
import urllib.request import urllib.request
import os, sys 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/' 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_URL = "https://raw.githubusercontent.com/xlenore/psx-covers/main/DuckStation-cover-downloader/version"
VERSION = 1.1 VERSION = 1.1
def path(): def path():
if getattr(sys, 'frozen', False): if getattr(sys, "frozen", False):
path = os.path.dirname(os.path.realpath(sys.executable)) path = os.path.dirname(os.path.realpath(sys.executable))
elif __file__: elif __file__:
path = os.path.dirname(__file__) path = os.path.dirname(__file__)
@@ -42,51 +43,78 @@ def path():
def check_version(): def check_version():
try: try:
version = urllib.request.urlopen(VERSION_URL) version = urllib.request.urlopen(VERSION_URL)
if float(version.read().decode('utf-8').replace('\n','')) != VERSION: if float(version.read().decode("utf-8").replace("\n", "")) != VERSION:
print('[LOG]:', colored(f'New update available!\n', 'green')) print("[LOG]:", colored(f"New update available!\n", "green"))
except: except:
pass pass
def serial_list(): # Get game serial def serial_list(): # Get game serial
with open(f'{path()}\cache\gamelist.cache', errors='ignore') as file: with open(
regex = re.compile('(\w{4}-\d{5})').findall(file.read()) 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)) 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: 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() input()
quit() quit()
return serial_list return serial_list
def existing_covers(): 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 return covers
def download_covers(serial_list:list): # Download Covers def download_covers(serial_list: list): # Download Covers
existing_cover = existing_covers() existing_cover = existing_covers()
for i in range(len(serial_list)): for i in range(len(serial_list)):
game_serial = serial_list[i] game_serial = serial_list[i]
if game_serial not in existing_cover: 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: 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) sleep(0.1)
except HTTPError: except HTTPError:
print('[WARNING]',colored(f'{game_serial} Not found. Skipping...','yellow')) print(
"[WARNING]",
colored(f"{game_serial} Not found. Skipping...", "yellow"),
)
else: 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(): def run():
#check_version() set_terminal_title(f"DuckStation Cover Downloader {VERSION}")
# check_version()
download_covers(serial_list()) 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() input()
os.system(f'title DuckStation Cover Downloader {VERSION}')
init() init()
run() run()