#!/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