Added 3d and custom support
1
.gitignore
vendored
@@ -1,2 +1 @@
|
|||||||
|
|
||||||
tools
|
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**⚠️
|
⚠️**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 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 |
|
| Serial | Available/Total | Percentage |
|
||||||
| ------ | --------------- | ---------- |
|
| ------ | --------------- | ---------- |
|
||||||
| SLPS | 3012/3146 | 95.74% |
|
| SLPS | 3012/3146 | 95.74% |
|
||||||
@@ -38,27 +58,6 @@
|
|||||||
| PSRM | 0/1 | 0.00% |
|
| PSRM | 0/1 | 0.00% |
|
||||||
| HPS | 2/2 | 100.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
|
## Credits
|
||||||
* psxdatacenter.com
|
* psxdatacenter.com
|
||||||
* duckstation.org
|
* 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 |