diff --git a/DuckStation_cover_downloader.exe b/DuckStation_cover_downloader.exe new file mode 100644 index 0000000..71daf56 Binary files /dev/null and b/DuckStation_cover_downloader.exe differ diff --git a/DuckStation_cover_downloader.py b/DuckStation_cover_downloader.py new file mode 100644 index 0000000..fa3f152 --- /dev/null +++ b/DuckStation_cover_downloader.py @@ -0,0 +1,91 @@ +""" +⣞⢽⢪⢣⢣⢣⢫⡺⡵⣝⡮⣗⢷⢽⢽⢽⣮⡷⡽⣜⣜⢮⢺⣜⢷⢽⢝⡽⣝ +⠸⡸⠜⠕⠕⠁⢁⢇⢏⢽⢺⣪⡳⡝⣎⣏⢯⢞⡿⣟⣷⣳⢯⡷⣽⢽⢯⣳⣫⠇ +⠀⠀⢀⢀⢄⢬⢪⡪⡎⣆⡈⠚⠜⠕⠇⠗⠝⢕⢯⢫⣞⣯⣿⣻⡽⣏⢗⣗⠏⠀ +⠀⠪⡪⡪⣪⢪⢺⢸⢢⢓⢆⢤⢀⠀⠀⠀⠀⠈⢊⢞⡾⣿⡯⣏⢮⠷⠁⠀⠀ +⠀⠀⠀⠈⠊⠆⡃⠕⢕⢇⢇⢇⢇⢇⢏⢎⢎⢆⢄⠀⢑⣽⣿⢝⠲⠉⠀⠀⠀⠀ +⠀⠀⠀⠀⠀⡿⠂⠠⠀⡇⢇⠕⢈⣀⠀⠁⠡⠣⡣⡫⣂⣿⠯⢪⠰⠂⠀⠀⠀⠀ +⠀⠀⠀⠀⡦⡙⡂⢀⢤⢣⠣⡈⣾⡃⠠⠄⠀⡄⢱⣌⣶⢏⢊⠂⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⢝⡲⣜⡮⡏⢎⢌⢂⠙⠢⠐⢀⢘⢵⣽⣿⡿⠁⠁⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠨⣺⡺⡕⡕⡱⡑⡆⡕⡅⡕⡜⡼⢽⡻⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⣼⣳⣫⣾⣵⣗⡵⡱⡡⢣⢑⢕⢜⢕⡝⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⣴⣿⣾⣿⣿⣿⡿⡽⡑⢌⠪⡢⡣⣣⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⡟⡾⣿⢿⢿⢵⣽⣾⣼⣘⢸⢸⣞⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ +⠀⠀⠀⠀⠁⠇⠡⠩⡫⢿⣝⡻⡮⣒⢽⠋⠀⠀⠀ + + NO COVERS? +""" + + +import re +from time import sleep +from urllib.error import HTTPError +from termcolor import colored +from colorama import init +import urllib.request +import os, sys + + +COVERS_URL = 'https://github.com/LouiseSulyvahn/DuckStation_Cover_Downloader/raw/main/covers/' +VERSION_URL = 'https://raw.githubusercontent.com/LouiseSulyvahn/DuckStation_Cover_Downloader/main/version' +VERSION = 1.0 + + +def path(): + if getattr(sys, 'frozen', False): + path = os.path.dirname(os.path.realpath(sys.executable)) + elif __file__: + path = os.path.dirname(__file__) + return 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')) + except: + 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()) + serial_list = list(dict.fromkeys(regex)) + 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')) + input() + quit() + return serial_list + + +def existing_covers(): + covers = [w.replace('.jpg', '') for w in os.listdir(f'{path()}\covers')] + return 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')) + try: + urllib.request.urlretrieve(f'{COVERS_URL}{game_serial}.jpg', f'covers/{game_serial}.jpg') + sleep(1) + except HTTPError: + print('[WARNING]',colored(f'{game_serial} Not found. Report it in GitHub please...','yellow')) + else: + print('[WARNING]:',colored(f'{game_serial} already exist in \covers. Skipping...','yellow')) + + +def run(): + check_version() + download_covers(serial_list()) + print('[LOG]:', colored(f'Done!', 'green')) + input() + + +init() +run() \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..846eaa1 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +## DuckStation Cover Downloader +![](...) + +## How to use + +- Download DuckStation_Cover_Downloader.exe +- Put DuckStation_Cover_Downloader.exe in Documents\DuckStation folder +- Run + +## Credits +* psxdatacenter.com \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..944f743 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +colorama==0.4.4 +PyYAML==6.0 +termcolor==1.1.0 \ No newline at end of file