Added Cover downloader tool
This commit is contained in:
92
DuckStation-cover-downloader/DuckStation cover downloader.py
Normal file
92
DuckStation-cover-downloader/DuckStation cover downloader.py
Normal file
@@ -0,0 +1,92 @@
|
||||
"""
|
||||
⣞⢽⢪⢣⢣⢣⢫⡺⡵⣝⡮⣗⢷⢽⢽⢽⣮⡷⡽⣜⣜⢮⢺⣜⢷⢽⢝⡽⣝
|
||||
⠸⡸⠜⠕⠕⠁⢁⢇⢏⢽⢺⣪⡳⡝⣎⣏⢯⢞⡿⣟⣷⣳⢯⡷⣽⢽⢯⣳⣫⠇
|
||||
⠀⠀⢀⢀⢄⢬⢪⡪⡎⣆⡈⠚⠜⠕⠇⠗⠝⢕⢯⢫⣞⣯⣿⣻⡽⣏⢗⣗⠏⠀
|
||||
⠀⠪⡪⡪⣪⢪⢺⢸⢢⢓⢆⢤⢀⠀⠀⠀⠀⠈⢊⢞⡾⣿⡯⣏⢮⠷⠁⠀⠀
|
||||
⠀⠀⠀⠈⠊⠆⡃⠕⢕⢇⢇⢇⢇⢇⢏⢎⢎⢆⢄⠀⢑⣽⣿⢝⠲⠉⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠀⡿⠂⠠⠀⡇⢇⠕⢈⣀⠀⠁⠡⠣⡣⡫⣂⣿⠯⢪⠰⠂⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⡦⡙⡂⢀⢤⢣⠣⡈⣾⡃⠠⠄⠀⡄⢱⣌⣶⢏⢊⠂⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⢝⡲⣜⡮⡏⢎⢌⢂⠙⠢⠐⢀⢘⢵⣽⣿⡿⠁⠁⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠨⣺⡺⡕⡕⡱⡑⡆⡕⡅⡕⡜⡼⢽⡻⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⣼⣳⣫⣾⣵⣗⡵⡱⡡⢣⢑⢕⢜⢕⡝⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⣴⣿⣾⣿⣿⣿⡿⡽⡑⢌⠪⡢⡣⣣⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⡟⡾⣿⢿⢿⢵⣽⣾⣼⣘⢸⢸⣞⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠁⠇⠡⠩⡫⢿⣝⡻⡮⣒⢽⠋⠀⠀⠀
|
||||
|
||||
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://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):
|
||||
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(0.1)
|
||||
except HTTPError:
|
||||
print('[WARNING]',colored(f'{game_serial} Not found. Skipping...','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!, please report Not found | Low quality | Wrong covers in GitHub.', 'green'))
|
||||
input()
|
||||
|
||||
|
||||
os.system(f'title DuckStation Cover Downloader {VERSION}')
|
||||
init()
|
||||
run()
|
||||
Reference in New Issue
Block a user