Added 3d and custom support
1
.gitignore
vendored
@@ -1,2 +1 @@
|
||||
|
||||
tools
|
||||
@@ -1,2 +0,0 @@
|
||||
pyinstaller "DuckStation cover downloader.py" --onefile --clean --distpath ""
|
||||
@RD /S /Q "build"
|
||||
@@ -1,120 +0,0 @@
|
||||
"""
|
||||
⣞⢽⢪⢣⢣⢣⢫⡺⡵⣝⡮⣗⢷⢽⢽⢽⣮⡷⡽⣜⣜⢮⢺⣜⢷⢽⢝⡽⣝
|
||||
⠸⡸⠜⠕⠕⠁⢁⢇⢏⢽⢺⣪⡳⡝⣎⣏⢯⢞⡿⣟⣷⣳⢯⡷⣽⢽⢯⣳⣫⠇
|
||||
⠀⠀⢀⢀⢄⢬⢪⡪⡎⣆⡈⠚⠜⠕⠇⠗⠝⢕⢯⢫⣞⣯⣿⣻⡽⣏⢗⣗⠏⠀
|
||||
⠀⠪⡪⡪⣪⢪⢺⢸⢢⢓⢆⢤⢀⠀⠀⠀⠀⠈⢊⢞⡾⣿⡯⣏⢮⠷⠁⠀⠀
|
||||
⠀⠀⠀⠈⠊⠆⡃⠕⢕⢇⢇⢇⢇⢇⢏⢎⢎⢆⢄⠀⢑⣽⣿⢝⠲⠉⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠀⡿⠂⠠⠀⡇⢇⠕⢈⣀⠀⠁⠡⠣⡣⡫⣂⣿⠯⢪⠰⠂⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⡦⡙⡂⢀⢤⢣⠣⡈⣾⡃⠠⠄⠀⡄⢱⣌⣶⢏⢊⠂⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⢝⡲⣜⡮⡏⢎⢌⢂⠙⠢⠐⢀⢘⢵⣽⣿⡿⠁⠁⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠨⣺⡺⡕⡕⡱⡑⡆⡕⡅⡕⡜⡼⢽⡻⠏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⣼⣳⣫⣾⣵⣗⡵⡱⡡⢣⢑⢕⢜⢕⡝⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⣴⣿⣾⣿⣿⣿⡿⡽⡑⢌⠪⡢⡣⣣⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⡟⡾⣿⢿⢿⢵⣽⣾⣼⣘⢸⢸⣞⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
|
||||
⠀⠀⠀⠀⠁⠇⠡⠩⡫⢿⣝⡻⡮⣒⢽⠋⠀⠀⠀
|
||||
|
||||
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, ssl
|
||||
import platform
|
||||
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
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'{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))
|
||||
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'{os.path.join(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'{os.path.join("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 set_terminal_title(title):
|
||||
if platform.system() == "Windows":
|
||||
os.system(f"title {title}")
|
||||
|
||||
|
||||
def run():
|
||||
set_terminal_title(f"DuckStation Cover Downloader {VERSION}")
|
||||
# check_version()
|
||||
download_covers(serial_list())
|
||||
print(
|
||||
"[LOG]:",
|
||||
colored(
|
||||
f"Done!, please report Not found | Low quality | Wrong covers in GitHub.",
|
||||
"green",
|
||||
),
|
||||
)
|
||||
input()
|
||||
|
||||
|
||||
init()
|
||||
run()
|
||||
@@ -1,3 +0,0 @@
|
||||
colorama==0.4.4
|
||||
PyYAML==6.0
|
||||
termcolor==1.1.0
|
||||
@@ -1 +0,0 @@
|
||||
1.1
|
||||
47
README.md
@@ -2,11 +2,31 @@
|
||||
|
||||
⚠️**Please report Not found | Low quality | Wrong covers**⚠️
|
||||
|
||||
- [PSX Covers](https://github.com/xlenore/psx-covers#psx-covers "PSX Covers")
|
||||
- [Covers Stats](https://github.com/xlenore/psx-covers#covers-stats "Covers Stats")
|
||||
- [PSCoverDL App](https://github.com/xlenore/psx-covers#PSCoverDL)
|
||||
- [Duckstation Setup](https://github.com/xlenore/psx-covers#duckstation-setup "Duckstation Setup")
|
||||
- [Duckstation Cover Downloader](https://github.com/xlenore/psx-covers#duckstation-Cover-Downloader "Duckstation Setup")
|
||||
|
||||
## PSX Covers
|
||||
## PSCoverDL
|
||||
|
||||
[](https://user-images.githubusercontent.com/57191159/275665605-4c4b3042-85e4-45b5-8f1b-48a6f00a93ea.png)
|
||||
|
||||
Small tool to download PS1/PS2 covers for DuckStation and PCSX2.
|
||||
You can download it from here: [PSCoverDL](https://github.com/xlenore/pscoverdl "PSCoverDL")
|
||||
|
||||
## Duckstation setup
|
||||
|
||||
[](https://i.imgur.com/FJWeE0e.gif)
|
||||
|
||||
DuckStation has its own cover downloader, upgrade to version **0.1-5227** or higher.
|
||||
- Open DuckStation
|
||||
- Tools -> Cover Downloader
|
||||
- Use this URL `https://raw.githubusercontent.com/xlenore/psx-covers/main/covers/${serial}.jpg` for default covers, or use `https://raw.githubusercontent.com/xlenore/psx-covers/main/covers/3d/${serial}.png` for 3D covers.
|
||||
- Check "Use Serial Files Name"
|
||||
- Click Start
|
||||
- Enjoy :)
|
||||
|
||||
## Covers Stats
|
||||
|
||||
| Serial | Available/Total | Percentage |
|
||||
| ------ | --------------- | ---------- |
|
||||
| SLPS | 3012/3146 | 95.74% |
|
||||
@@ -38,27 +58,6 @@
|
||||
| PSRM | 0/1 | 0.00% |
|
||||
| HPS | 2/2 | 100.00% |
|
||||
|
||||
## Duckstation setup
|
||||
DuckStation has its own cover downloader, upgrade to version **0.1-5227** or higher.
|
||||
- Open DuckStation
|
||||
- Tools -> Cover Downloader
|
||||
- Use this url `https://raw.githubusercontent.com/xlenore/psx-covers/main/covers/${serial}.jpg`
|
||||
- Check "Use Serial Files Name"
|
||||
- Click Start
|
||||
- Enjoy :)
|
||||
|
||||
[](https://i.imgur.com/jTGL0HH.gif)
|
||||
|
||||
## Duckstation Cover Downloader
|
||||
|
||||
This is an alternative in case you don't want to be copying and pasting the repository url every time you want to download a cover.
|
||||
- Download [Duckstation Cover Downloader](https://github.com/xlenore/psx-covers/raw/main/DuckStation-cover-downloader/DuckStation%20cover%20downloader.exe) | ([Source Code](https://github.com/xlenore/psx-covers/raw/main/DuckStation-cover-downloader/DuckStation%20cover%20downloader.py))
|
||||
- Put **Duckstation Cover Downloader.exe** in **Documents\DuckStation** folder
|
||||
- Run the App every time you want to download covers
|
||||
- Enjoy :)
|
||||
|
||||
[](https://i.imgur.com/oRSsKZi.png)
|
||||
|
||||
## Credits
|
||||
* psxdatacenter.com
|
||||
* duckstation.org
|
||||
BIN
covers/3d/SCES-02066.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
covers/custom/SCES-00967.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
covers/custom/SCUS-94154.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
covers/custom/SLPS-02020.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
covers/custom/SLPS-02021.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 316 KiB After Width: | Height: | Size: 316 KiB |
|
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 72 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 64 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 59 KiB After Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 67 KiB After Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |