EmuDeck/tools/scrapers/screenscraper.sh
Rodrigo 24582eeb74 Revert "== > ="
This reverts commit 28e8adc03d.
2023-11-30 22:39:36 +01:00

448 lines
9.9 KiB
Bash

#!/bin/bash
user=$(zenity --entry --title="ScreenScrapper" --text="User:")
password=$(zenity --password --title="ScreenScrapper" --text="Password:")
encryption_key=$(openssl rand -base64 32)
encrypted_password=$(echo "$password" | openssl enc -aes-256-cbc -pbkdf2 -base64 -pass "pass:$encryption_key")
echo "$encryption_key" > "$HOME/.config/EmuDeck/logs/.key"
echo "$encrypted_password" > "$HOME/.config/EmuDeck/.passSS"
echo "$user" > "$HOME/.config/EmuDeck/.userSS"
romParser_SS_download(){
local romName=$1
local system=$2
local type=$3
local userSS=$(cat "$HOME/emudeck/.userSS")
local encryption_key=$(cat "$HOME/.config/EmuDeck/logs/.key")
local encrypted_password=$(cat "$HOME/.config/EmuDeck/.passSS")
local decrypted_password=$(echo "$encrypted_password" | openssl enc -d -aes-256-cbc -pbkdf2 -base64 -pass "pass:$encryption_key")
local passSS=$decrypted_password
#local ssID Set but calling romParser_SS_getAlias before
case "$type" in
"marquees")
media="wheel"
;;
"screenshots")
media="ss"
;;
*)
media="box-2D"
;;
esac
FILE=$romsPath/$system/media/$type/$romName.png
if [ -f "$FILE" ]; then
echo -e "Image already exists, ${YELLOW}ignoring${NONE}"
else
#We get the gameIDSS
urlIDSS="https://www.screenscraper.fr/api2/jeuInfos.php?devid=djrodtc&devpassword=diFay35WElL&softname=zzz&output=json&ssid=${userSS}&sspassword=${passSS}&crc=&systemeid=${ssID}&romtype=rom&romnom=${romName}.zip"
#Cleaning URL
urlIDSS=$(echo "$urlIDSS" | sed 's/ /%20/g')
#ID Game
content=$(curl $urlIDSS)
#Don't check art if screenscraper is closed
if [[ $content == *"API closed"* ]]; then
echo -e "The Screenscraper API is currently down, please try again later."
exit
fi
#Don't check art after a failed curl request
if [[ $content == "" ]]; then
echo -e "Request failed to send for $romName, ${YELLOW}skipping${NONE}"
echo ""
echo "Request failed for $romName"
exit
fi
#Don't check art if screenscraper can't find a match
if [[ $content == *"Erreur"* ]]; then
echo -e "Couldn't find a match for $romName, ${YELLOW}skipping${NONE}"
echo ""
echo "Couldn't find a match for $romName"
exit
fi
gameIDSS=$( jq -r '.response.jeu.id' <<< "${content}" )
#Downloading art!
local url="https://www.screenscraper.fr/api2/mediaJeu.php?devid=djrodtc&devpassword=diFay35WElL&softname=EmuDeck&ssid=${userSS}&sspassword=${passSS}&crc=&md5=&sha1=&systemeid=${ssID}&jeuid=${gameIDSS}&media=${media}(wor)"
urlSave="$romsPath/$system/media/$media/$romName.png"
echo $urlSave
echo -e "${BOLD}Scraping: $media${NONE}"
StatusString=$(wget --spider "$url" 2>&1)
echo -ne "${BOLD}Searching World Region..."
if [[ $StatusString == *"image/png"* ]] || [[ $StatusString == *"image/jpeg"* ]] || [[ $StatusString == *"image/jpg"* ]]; then
wget -q --show-progress "$url" -O "$urlSave" |
zenity --progress \
--title="EmuDeck RetroArch Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
echo -e "${GREEN}Found it!${NONE}"
else
echo -ne "${BOLD}Searching US Region..."
firstString="$url"
secondString="(us)"
url="${firstString/(wor)/"$secondString"}"
StatusString=$(wget --spider "$url" 2>&1)
if [[ $StatusString == *"image/png"* ]] || [[ $StatusString == *"image/jpeg"* ]] || [[ $StatusString == *"image/jpg"* ]]; then
wget -q --show-progress "$url" -O "$urlSave" |
zenity --progress \
--title="EmuDeck RetroArch Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
echo -e "${GREEN}Found it!${NONE}"
else
echo -ne "${BOLD}Searching EU Region..."
firstString="$url"
secondString="(eu)"
url="${firstString/(us)/"$secondString"}"
StatusString=$(wget --spider "$url" 2>&1)
if [[ $StatusString == *"image/png"* ]] || [[ $StatusString == *"image/jpeg"* ]] || [[ $StatusString == *"image/jpg"* ]]; then
wget -q --show-progress "$url" -O "$urlSave" |
zenity --progress \
--title="EmuDeck RetroArch Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
echo -e "${GREEN}Found it!${NONE}"
else
echo -ne "${BOLD}Searching USA Region..."
firstString="$url"
secondString="(usa)"
url="${firstString/(eu)/"$secondString"}"
StatusString=$(wget --spider "$url" 2>&1)
if [[ $StatusString == *"image/png"* ]] || [[ $StatusString == *"image/jpeg"* ]] || [[ $StatusString == *"image/jpg"* ]]; then
wget -q --show-progress "$url" -O "$urlSave" |
zenity --progress \
--title="EmuDeck RetroArch Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
echo -e "${GREEN}Found it!${NONE}"
else
echo -ne "${BOLD}Searching Custom Region..."
firstString="$url"
secondString="(cus)"
url="${firstString/(usa)/"$secondString"}"
StatusString=$(wget --spider "$url" 2>&1)
if [[ $StatusString == *"image/png"* ]] || [[ $StatusString == *"image/jpeg"* ]] || [[ $StatusString == *"image/jpg"* ]]; then
wget -q --show-progress "$url" -O "$urlSave" |
zenity --progress \
--title="EmuDeck RetroArch Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
echo -e "${GREEN}Found it!${NONE}"
else
echo -ne "${BOLD}Searching No Region..."
firstString="$url"
secondString=""
url="${firstString/(cus)/"$secondString"}"
StatusString=$(wget --spider "$url" 2>&1)
if [[ $StatusString == *"image/png"* ]] || [[ $StatusString == *"image/jpeg"* ]] || [[ $StatusString == *"image/jpg"* ]]; then
wget -q --show-progress "$url" -O "$urlSave" &> /dev/null
echo -e "${GREEN}Found it!${NONE}"|
zenity --progress \
--title="EmuDeck RetroArch Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
else
echo -e "${RED}NO IMG FOUND${NONE}"
fi
fi
fi
fi
fi
fi
fi
}
romParser_SS_getAlias(){
#SS ID systems
case $1 in
genesis)
ssID="1";;
genesiswide)
ssID="1";;
mastersystem)
ssID="2";;
nes)
ssID="3";;
snes)
ssID="4";;
gb)
ssID="9";;
gbc)
ssID="10";;
virtualboy)
ssID="11";;
gba)
ssID="12";;
gc)
ssID="13";;
n64)
ssID="14";;
nds)
ssID="15";;
wii)
ssID="16";;
3ds)
ssID="17";;
sega32x)
ssID="19";;
segacd)
ssID="20";;
gamegear)
ssID="21";;
saturn)
ssID="22";;
dreamcast)
ssID="23";;
ngp)
ssID="25";;
atari2600)
ssID="26";;
jaguar)
ssID="27";;
lynx)
ssID="28";;
3do)
ssID="29";;
pcengine)
ssID="31";;
bbcmicro)
ssID="37";;
atari5200)
ssID="40";;
atari7800)
ssID="41";;
atarist)
ssID="42";;
atari800)
ssID="43";;
wswan)
ssID="45";;
wswanc)
ssID="46";;
colecovision)
ssID="48";;
pcengine)
ssID="50";;
gw)
ssID="52";;
psx)
ssID="57";;
ps2)
ssID="58";;
psp)
ssID="61";;
amiga600)
ssID="64";;
amstradcpc)
ssID="65";;
c64)
ssID="66";;
scv)
ssID="67";;
neogeocd)
ssID="70";;
pcfx)
ssID="72";;
vic20)
ssID="73";;
zxspectrum)
ssID="76";;
zx81)
ssID="77";;
x68000)
ssID="79";;
channelf)
ssID="80";;
ngpc)
ssID="82";;
apple2)
ssID="86";;
gx4000)
ssID="87";;
dragon)
ssID="91";;
bk)
ssID="93";;
vectrex)
ssID="102";;
supergrafx)
ssID="105";;
fds)
ssID="106";;
satellaview)
ssID="107";;
sufami)
ssID="108";;
sg1000)
ssID="109";;
amiga1200)
ssID="111";;
msx)
ssID="113";;
pcenginecd)
ssID="114";;
intellivision)
ssID="115";;
msx2)
ssID="116";;
msxturbor)
ssID="118";;
64dd)
ssID="122";;
scummvm)
ssID="123";;
gb)
ssID="127";;
gb)
ssID="128";;
amigacdtv)
ssID="129";;
amigacd32)
ssID="130";;
oricatmos)
ssID="131";;
amiga)
ssID="134";;
dos)
ssID="135";;
prboom)
ssID="135";;
amigacd32)
ssID="139";;
thomson)
ssID="141";;
neogeo)
ssID="142";;
psp)
ssID="172";;
snes)
ssID="202";;
sneswide)
ssID="202";;
megadrive)
ssID="203";;
ti994a)
ssID="205";;
lutro)
ssID="206";;
supervision)
ssID="207";;
pc98)
ssID="208";;
pokemini)
ssID="211";;
samcoupe)
ssID="213";;
openbor)
ssID="214";;
uzebox)
ssID="216";;
apple2gs)
ssID="217";;
spectravideo)
ssID="218";;
palm)
ssID="219";;
x1)
ssID="220";;
pc88)
ssID="221";;
tic80)
ssID="222";;
solarus)
ssID="223";;
mame)
ssID="230";;
easyrpg)
ssID="231";;
pico8)
ssID="234";;
pcv2)
ssID="237";;
pet)
ssID="240";;
lowresnx)
ssID="244";;
*)
echo -n "unknown"
;;
esac
}
romParser_SS_start(){
echo -e "${BOLD}Starting ScreenScraper Thumbnails Scraper...${NONE}"
for systemPath in $romsPath/*;
do
if [[ "$systemPath" == *tx* ]]; then
break
fi
system=$(echo "$systemPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/')
romNumber=$(find "$systemPath" -maxdepth 1 -type f | wc -l)
#Getting roms
i=0
for romPath in $systemPath/*;
do
#Validating
if [ -f "$romPath" ] && [ "$(basename "$romPath")" != ".*" ] && [[ "$romPath" != *".tx" ]] && [[ "$(basename "$romPath")" != *".exe" ]] && [[ "$(basename "$romPath")" != *".conf" ]] && [[ "$(basename "$romPath")" != *".xml" ]]; then
#Cleaning rom directory
romfile=$(echo "$romPath" | sed 's/.*\/\([^\/]*\)\/\?$/\1/')
romName=$(basename "$romfile" .zip)
if [ $i = 96 ]; then
i=95
fi
(
#We get the ssID for later
romParser_SS_getAlias $system
romParser_SS_download "$romName" $system "screenshots"
romParser_SS_download "$romName" $system "covers"
romParser_SS_download "$romName" $system "marquees"
) |
zenity --progress \
--title="EmuDeck ScreenScraper Parser" \
--text="Downloading artwork for $system..." \
--auto-close \
--pulsate \
((i++))
fi
done
done
echo -e "${GREEN}RetroArch Parser completed!${NONE}"
}