199 lines
4.6 KiB
Bash
Executable File
199 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
readonly USAGE="
|
|
USAGE:
|
|
$(basename "$0") [SYSTEM]"
|
|
|
|
function help_message() {
|
|
echo "$USAGE"
|
|
echo
|
|
echo "Where [SYSTEM] are:"
|
|
for WORD in $SYSTEMS; do
|
|
echo -e "\t$WORD"
|
|
done
|
|
}
|
|
|
|
SYSTEMS="apple2 arcade atari2600 atari7800 atarilynx coleco gamegear gb gba gbc mastersystem megadrive msx n64 nes ngpc pcengine sega32x sg1000 snes vectrex virtualboy wonderswan wonderswancolor"
|
|
|
|
# check if there is any parameter
|
|
if [ "$#" -ne 1 ]; then
|
|
echo "You must enter a system name."
|
|
help_message
|
|
exit 0
|
|
fi
|
|
|
|
# check if the parameter is valid
|
|
if ! echo "$SYSTEMS" | grep -w "$1" >/dev/null; then
|
|
echo "You must enter a valid system name."
|
|
help_message
|
|
exit 0
|
|
fi
|
|
|
|
# variables
|
|
readonly SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
readonly GAME_LIST_DIR="$SCRIPT_DIR/webdata"
|
|
readonly SYSTEM_NAME="$1"
|
|
readonly SYSTEM_HTML="$GAME_LIST_DIR/$SYSTEM_NAME".html
|
|
readonly URL_LIST="$SCRIPT_DIR/${SYSTEM_NAME}.url"
|
|
readonly COOKIE_FILE="$SCRIPT_DIR/cookie.txt"
|
|
readonly BLUE_COLOR=$(tput setaf 4)
|
|
readonly RESET_COLOR=$(tput sgr0)
|
|
|
|
case $SYSTEM_NAME in
|
|
|
|
apple2)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=38"
|
|
;;
|
|
|
|
arcade)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=27"
|
|
;;
|
|
|
|
atari2600)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=25"
|
|
;;
|
|
|
|
atari7800)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=51"
|
|
;;
|
|
|
|
atarijaguar)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=17"
|
|
;;
|
|
|
|
atarilynx)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=13"
|
|
;;
|
|
|
|
coleco)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=44"
|
|
;;
|
|
|
|
gba)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=5"
|
|
;;
|
|
|
|
gbc)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=6"
|
|
;;
|
|
|
|
gb)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=4"
|
|
;;
|
|
|
|
gamegear)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=15"
|
|
;;
|
|
|
|
mastersystem)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=11"
|
|
;;
|
|
|
|
megadrive)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=1"
|
|
;;
|
|
|
|
msx)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=29"
|
|
;;
|
|
|
|
ngpc)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=14"
|
|
;;
|
|
|
|
nes)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=7"
|
|
;;
|
|
|
|
n64)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=2"
|
|
;;
|
|
|
|
nds)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=18"
|
|
;;
|
|
|
|
panasonic3do)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=43"
|
|
;;
|
|
|
|
pc8000)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=47"
|
|
;;
|
|
|
|
pcengine)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=8"
|
|
;;
|
|
|
|
pcfx)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=49"
|
|
;;
|
|
|
|
psx)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=12"
|
|
;;
|
|
|
|
pokemonmini)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=24"
|
|
;;
|
|
|
|
sega32x)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=10"
|
|
;;
|
|
|
|
segacd)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=9"
|
|
;;
|
|
|
|
segasaturn)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=39"
|
|
;;
|
|
|
|
sg1000)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=33"
|
|
;;
|
|
|
|
snes)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=3"
|
|
;;
|
|
|
|
vectrex)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=46"
|
|
;;
|
|
|
|
virtualboy)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=28"
|
|
;;
|
|
|
|
wonderswan)
|
|
readonly URL="https://retroachievements.org/gameList.php?c=53"
|
|
;;
|
|
|
|
esac
|
|
|
|
wget "$URL" -O "$SYSTEM_HTML"
|
|
|
|
# process system html to get game url list
|
|
printf "%s\n" "${BLUE_COLOR}Processing $SYSTEM_NAME. ${RESET_COLOR}"
|
|
grep -E "Game/[0-9]+" -Eo "$SYSTEM_HTML" | sort -u | sed 's,Game/,https://retroachievements.org/linkedhashes.php?g=,' >"$URL_LIST"
|
|
printf "%s\n" "${BLUE_COLOR}Found $(wc -l <"$URL_LIST") games.${RESET_COLOR}"
|
|
|
|
# create system folder for webpages with hashes
|
|
if test -d "./${GAME_LIST_DIR}/$SYSTEM_NAME"; then
|
|
rm -rdf "./${GAME_LIST_DIR}/$SYSTEM_NAME"
|
|
echo "Deleting ${GAME_LIST_DIR}/$SYSTEM_NAME folder."
|
|
fi
|
|
if ! test -d "./${GAME_LIST_DIR}/$SYSTEM_NAME"; then
|
|
mkdir -p "./${GAME_LIST_DIR}/$SYSTEM_NAME"
|
|
echo "Create ${GAME_LIST_DIR}/$SYSTEM_NAME folder."
|
|
fi
|
|
|
|
# download webpages with hashes form url list
|
|
echo "Downloading game info ..."
|
|
wget --random-wait --no-verbose --load-cookies "${COOKIE_FILE}" -i "${URL_LIST}" -P "${GAME_LIST_DIR}/${SYSTEM_NAME}"
|
|
|
|
# remove tempfiles
|
|
if test -f "$URL_LIST"; then
|
|
rm "$URL_LIST"
|
|
fi
|