Merge pull request #30 from DarhkVoyd/main
refactor for platform compatibility
This commit is contained in:
@@ -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()
|
||||||
Reference in New Issue
Block a user