""" ⣞⢽⢪⢣⢣⢣⢫⡺⡵⣝⡮⣗⢷⢽⢽⢽⣮⡷⡽⣜⣜⢮⢺⣜⢷⢽⢝⡽⣝ ⠸⡸⠜⠕⠕⠁⢁⢇⢏⢽⢺⣪⡳⡝⣎⣏⢯⢞⡿⣟⣷⣳⢯⡷⣽⢽⢯⣳⣫⠇ ⠀⠀⢀⢀⢄⢬⢪⡪⡎⣆⡈⠚⠜⠕⠇⠗⠝⢕⢯⢫⣞⣯⣿⣻⡽⣏⢗⣗⠏⠀ ⠀⠪⡪⡪⣪⢪⢺⢸⢢⢓⢆⢤⢀⠀⠀⠀⠀⠈⢊⢞⡾⣿⡯⣏⢮⠷⠁⠀⠀ ⠀⠀⠀⠈⠊⠆⡃⠕⢕⢇⢇⢇⢇⢇⢏⢎⢎⢆⢄⠀⢑⣽⣿⢝⠲⠉⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⡿⠂⠠⠀⡇⢇⠕⢈⣀⠀⠁⠡⠣⡣⡫⣂⣿⠯⢪⠰⠂⠀⠀⠀⠀ ⠀⠀⠀⠀⡦⡙⡂⢀⢤⢣⠣⡈⣾⡃⠠⠄⠀⡄⢱⣌⣶⢏⢊⠂⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⢝⡲⣜⡮⡏⢎⢌⢂⠙⠢⠐⢀⢘⢵⣽⣿⡿⠁⠁⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠨⣺⡺⡕⡕⡱⡑⡆⡕⡅⡕⡜⡼⢽⡻⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⣼⣳⣫⣾⣵⣗⡵⡱⡡⢣⢑⢕⢜⢕⡝⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⣴⣿⣾⣿⣿⣿⡿⡽⡑⢌⠪⡢⡣⣣⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⡟⡾⣿⢿⢿⢵⣽⣾⣼⣘⢸⢸⣞⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠁⠇⠡⠩⡫⢿⣝⡻⡮⣒⢽⠋⠀⠀⠀ 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()