diff --git a/ra-rom-downloader/test.bash b/ra-rom-downloader/test.bash new file mode 100644 index 0000000..f40c1e8 --- /dev/null +++ b/ra-rom-downloader/test.bash @@ -0,0 +1,755 @@ +#!/usr/bin/env bash +# This script is for dev purposes +scriptVersion="1.1" +scriptName="RA-ROM-Downloader" + +#### Import Settings +source /config/extended.conf + + +#### Funcitons +log () { + m_time=`date "+%F %T"` + echo $m_time" :: $scriptName :: $scriptVersion :: "$1 2>&1 | tee -a /config/$scriptName.log +} + +logfileSetup () { + # auto-clean up log file to reduce space usage + if [ -f "/config/$scriptName.log" ]; then + if find /config -type f -name "$scriptName.log" -size +1024k | read; then + echo "" > /config/$scriptName.log + fi + fi + + if [ ! -f "/config/$scriptName.log" ]; then + echo "" > /config/$scriptName.log + chmod 666 "/config/$scriptName.log" + fi +} + +UrlDecode () { : "${*//+/ }"; echo -e "${_//%/\\x}"; } + +CreatePlatformRomList () { + if [ -f /config/romlist ]; then + rm /config/romlist + fi + archiveUrl="$(wget -qO- "$1" | grep -io '> /config/romlist + sed -i '/#maincontent/d' /config/romlist + sed -i '/blog.archive.org/d' /config/romlist +} + +DownloadFile () { + # $1 = URL + # $2 = Output Folder/file + # $3 = Number of concurrent connections to use + axel -n $3 --output="$2" "$1" | awk -W interactive '$0~/\[/{printf "%s'$'\r''", $0}' + #wget -q --show-progress --progress=bar:force 2>&1 "$1" -O "$2" + if [ ! -f "$2" ]; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Download Failed ($1)" + fi +} + +DownloadFileVerification () { + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Verifing Download..." + case "$1" in + *.zip|*.ZIP) + verify="$(unzip -t "$1" &>/dev/null; echo $?)" + ;; + *.rar|*.RAR) + verify="$(unrar t "$1" &>/dev/null; echo $?)" + ;; + *.7z|*.7Z) + verify="$(7z t "$1" &>/dev/null; echo $?)" + ;; + *.chd|*.CHD) + verify="$(chdman verify -i "$1" &>/dev/null; echo $?)" + ;; + *.iso|*.ISO|*.hex|*.HEX|*.wasm|*.WASM|*.sv|*.SV) + echo "No methdod to verify this type of file (iso,hex,wasm,sv)" + verify="0" + ;; + esac + + if [ "$verify" != "0" ]; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: ERROR :: Failed Verification!" + rm "$1" + else + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Download Verified!" + fi +} + +PlatformSelection () { + if [ "$platform" == "snes" ]; then + PlatformSnes + elif [ "$platform" == "apple2" ]; then + PlatformApple2 + elif [ "$platform" == "megadrive" ]; then + PlatformMegadrive + elif [ "$platform" == "n64" ]; then + PlatformN64 + elif [ "$platform" == "megaduck" ]; then + PlatformMegaduck + elif [ "$platform" == "pokemini" ]; then + PlatformPokemini + elif [ "$platform" == "virtualboy" ]; then + PlatformVirtualboy + elif [ "$platform" == "nes" ]; then + PlatformNes + elif [ "$platform" == "arduboy" ]; then + PlatformArduboy + elif [ "$platform" == "sega32x" ]; then + PlatformSega32x + elif [ "$platform" == "mastersystem" ]; then + PlatformMastersystem + elif [ "$platform" == "sg1000" ]; then + PlatformSg1000 + elif [ "$platform" == "atarilynx" ]; then + PlatformAtarilynx + elif [ "$platform" == "jaguar" ]; then + PlatformJaguar + elif [ "$platform" == "gb" ]; then + PlatformGameBoy + elif [ "$platform" == "gbc" ]; then + PlatformGameBoyColor + elif [ "$platform" == "gba" ]; then + PlatformGameBoyAdvance + elif [ "$platform" == "gamegear" ]; then + PlatformGameGear + elif [ "$platform" == "atari2600" ]; then + PlatformAtari2600 + elif [ "$platform" == "atari7800" ]; then + PlatformAtari7800 + elif [ "$platform" == "nds" ]; then + PlatformNintendoDS + elif [ "$platform" == "colecovision" ]; then + PlatformColecoVision + elif [ "$platform" == "intellivision" ]; then + PlatformIntellivision + elif [ "$platform" == "ngp" ]; then + PlatformNeoGeoPocket + elif [ "$platform" == "ndsi" ]; then + PlatformNintendoDSi + elif [ "$platform" == "wasm4" ]; then + PlatformNintendoWASM-4 + elif [ "$platform" == "channelf" ]; then + PlatformNintendoChannelF + elif [ "$platform" == "o2em" ]; then + PlatformO2em + elif [ "$platform" == "arcadia" ]; then + PlatformArcadia + elif [ "$platform" == "supervision" ]; then + PlatformSupervision + elif [ "$platform" == "wswan" ]; then + PlatformWonderSwan + elif [ "$platform" == "vectrex" ]; then + PlatformVectrex + elif [ "$platform" == "amstradcpc" ]; then + PlatformAmstradCPC + elif [ "$platform" == "psp" ]; then + PlatformPsp + else + log "ERROR :: No Platforms Selected, exiting..." + exit + fi +} + +UncompressFile () { + # $1 is input file + # $2 is output folder + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Uncompressing \"$1\" to \"$2\"" + case "$1" in + *.zip|*.ZIP) + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Zip file detected!" + unzip -o -d "$2" "$1" >/dev/null + ;; + *.rar|*.RAR) + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Rar file detected!" + unrar x "$1" "$2" &>/dev/null + ;; + *.7z|*.7Z) + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: 7z file detected!" + 7z e "$1" -o"$2" &>/dev/null + ;; + esac + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Uncompressing Complete!" + rm "$1" +} + +DownloadRomCountSummary () { + log "Summarizing ROM counts..." + romCount=$(find "$romPath" -type f | wc -l) + platformCount=$(find "/$romPath" -maxdepth 1 -mindepth 1 -type d | wc -l) + log "$romCount ROMS downloaded on $platformCount different platforms!!!" + log "Platform breakdown...." + echo "Platforms ($platformCount):;Total:;Released:;Hack/Homebrew/Proto/Unlicensed:" > /config/temp + for romfolder in $(find "/$romPath" -maxdepth 1 -mindepth 1 -type d); do + platform="$(basename "$romfolder")" + PlatformSelection + platformRomCount=$(find "$romPath/$platformFolder" -type f | wc -l) + platformRomSubCount=$(find "$romPath/$platformFolder" -mindepth 2 -type f | wc -l) + platformMainRomCount=$(( $platformRomCount - $platformRomSubCount )) + echo "$platformName;$platformRomCount;$platformMainRomCount;$platformRomSubCount" >> /config/temp + done + platformRomSubCount=$(find "$romPath" -mindepth 3 -type f | wc -l) + platformMainRomCount=$(( $romCount - $platformRomSubCount )) + echo "Totals:;$romCount;$platformMainRomCount;$platformRomSubCount" >> /config/temp + data=$(cat /config/temp | column -s";" -t) + rm /config/temp + echo "$data" +} + +#### Platforms +PlatformPsp () { + platformName="PlayStation Portable" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_PlayStation_Portable/PlayStation%20Portable/" + platformFolder="psp" + consoleRomFileExt=".iso, .cso, .pbp" + raConsoleId="41" + uncompressRom="true" + compressRom="false" +} + +PlatformAmstradCPC () { + platformName="Amstrad CPC" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Amstrad%20CPC/" + platformFolder="amstradcpc" + consoleRomFileExt=".dsk, .sna, .tap, .cdt, .voc, .m3u, .zip, .7z" + raConsoleId="37" + uncompressRom="false" + compressRom="false" +} + +PlatformVectrex () { + platformName="Vectrex" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Vectrex/" + platformFolder="vectrex" + consoleRomFileExt=".bin, .gam, .vec, .zip, .7z" + raConsoleId="46" + uncompressRom="false" + compressRom="false" +} + +PlatformSupervision () { + platformName="Watara Supervision" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Watara%20Supervision/" + platformFolder="supervision" + consoleRomFileExt=".sv, .zip, .7z" + raConsoleId="63" + uncompressRom="false" + compressRom="false" +} + +PlatformWonderSwan () { + platformName="WonderSwan" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/WonderSwan/" + platformFolder="wswan" + consoleRomFileExt=".ws, .zip, .7z" + raConsoleId="53" + uncompressRom="false" + compressRom="false" +} + +PlatformApple2 () { + platformName="Apple II" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Apple%20II/" + platformFolder="apple2" + consoleRomFileExt=".nib, .do, .po, .dsk, .mfi, .dfi, .rti, .edd, .woz, .wav, .zip, .7z" + raConsoleId="38" + uncompressRom="false" + compressRom="false" +} + +PlatformArcadia () { + platformName="Arcadia 2001" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Arcadia%202001/" + platformFolder="arcadia" + consoleRomFileExt=".bin, .zip, .7z" + raConsoleId="73" + uncompressRom="false" + compressRom="false" +} + +PlatformO2em () { + platformName="Magnavox Odyssey 2" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Magnavox%20Odyssey%202/" + platformFolder="o2em" + consoleRomFileExt=".bin, .zip, .7z" + raConsoleId="23" + uncompressRom="false" + compressRom="false" +} + +PlatformSnes () { + platformName="Super Nintentdo" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_SNES/SNES/" + platformFolder="snes" + consoleRomFileExt=".smc, .fig, .sfc, .gd3, .gd7, .dx2, .bsx, .swc, .zip, .7z" + raConsoleId="3" + uncompressRom="false" + compressRom="false" +} + +PlatformMegadrive () { + platformName="Mega Drive" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Mega%20Drive/" + platformFolder="megadrive" + consoleRomFileExt=".bin, .gen, .md, .sg, .smd, .zip, .7z" + raConsoleId="1" + uncompressRom="false" + compressRom="false" +} + +PlatformN64 () { + platformName="Nintendo 64" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Nintendo%2064/" + platformFolder="n64" + consoleRomFileExt=".z64, .n64, .v64, .zip, .7z" + raConsoleId="2" + uncompressRom="false" + compressRom="false" +} + +PlatformMegaduck () { + platformName="Mega Duck" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Mega%20Duck/" + platformFolder="megaduck" + consoleRomFileExt=".bin, .zip, .7z" + raConsoleId="69" + uncompressRom="false" + compressRom="false" +} + +PlatformPokemini () { + platformName="Pokemon Mini" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Pokemon%20Mini/" + platformFolder="pokemini" + consoleRomFileExt=".min, .zip, .7z" + raConsoleId="24" + uncompressRom="false" + compressRom="false" +} + +PlatformVirtualboy () { + platformName="Virtual Boy" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Virtual%20Boy/" + platformFolder="virtualboy" + consoleRomFileExt=".vb, .zip, .7z" + raConsoleId="28" + uncompressRom="false" + compressRom="false" +} + +PlatformNes () { + platformName="Nintendo Entertainment System" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_NES/NES/" + platformFolder="nes" + consoleRomFileExt=".nes, .unif, .unf, .zip, .7z" + raConsoleId="7" + uncompressRom="false" + compressRom="false" +} + +Platform3do () { + platformName="3DO Interactive Multiplayer" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/3DO%20Interactive%20Multiplayer/" + platformFolder="3do" + consoleRomFileExt=".iso, .chd, .cue" + raConsoleId="43" + uncompressRom="false" + compressRom="false" +} + +PlatformArduboy () { + platformName="Arduboy" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Arduboy/" + platformFolder="arduboy" + consoleRomFileExt=".hex, .zip, .7z" + raConsoleId="71" + uncompressRom="false" + compressRom="false" +} + +PlatformSega32x () { + platformName="Sega 32X" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/32X/" + platformFolder="sega32x" + consoleRomFileExt=".32x, .smd, .bin, .md, .zip, .7z" + raConsoleId="10" + uncompressRom="false" + compressRom="false" +} + +PlatformMastersystem () { + platformName="Sega Master System" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Master%20System/" + platformFolder="mastersystem" + consoleRomFileExt=".bin, .sms, .zip, .7z" + raConsoleId="11" + uncompressRom="false" + compressRom="false" +} + +PlatformSg1000 () { + platformName="SG-1000" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/SG-1000/" + platformFolder="sg1000" + consoleRomFileExt=".bin, .sg, .zip, .7z" + raConsoleId="33" + uncompressRom="false" + compressRom="false" +} + +PlatformAtarilynx () { + platformName="Atari Lynx" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Atari%20Lynx/" + platformFolder="atarilynx" + consoleRomFileExt=".lnx, .zip, .7z" + raConsoleId="13" + uncompressRom="false" + compressRom="false" +} + +PlatformJaguar () { + platformName="Atari Jaguar" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Atari%20Jaguar/" + platformFolder="jaguar" + consoleRomFileExt=".cue, .j64, .jag, .cof, .abs, .cdi, .rom, .zip, .7z" + raConsoleId="17" + uncompressRom="false" + compressRom="false" +} + +PlatformGameBoy () { + platformName="Game Boy" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Game%20Boy/" + platformFolder="gb" + consoleRomFileExt=".gb, .zip, .7z" + raConsoleId="4" + uncompressRom="false" + compressRom="false" +} + +PlatformGameBoyColor () { + platformName="Game Boy Color" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Game%20Boy%20Color/" + platformFolder="gbc" + consoleRomFileExt=".gbc, .zip, .7z" + raConsoleId="6" + uncompressRom="false" + compressRom="false" +} + +PlatformGameBoyAdvance () { + platformName="Game Boy Advance" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Game%20Boy%20Advance/" + platformFolder="gba" + consoleRomFileExt=".gba, .zip, .7z" + raConsoleId="5" + uncompressRom="false" + compressRom="false" +} + +PlatformGameGear () { + platformName="Game Gear" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Game%20Gear/" + platformFolder="gamegear" + consoleRomFileExt=".bin, .gg, .zip, .7z" + raConsoleId="15" + uncompressRom="false" + compressRom="false" +} + +PlatformAtari2600 () { + platformName="Atari 2600" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Atari%202600/" + platformFolder="atari2600" + consoleRomFileExt=".a26, .bin, .zip, .7z" + raConsoleId="25" + uncompressRom="false" + compressRom="false" +} + +PlatformAtari7800 () { + platformName="Atari 7800" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Atari%207800/" + platformFolder="atari7800" + consoleRomFileExt=".a78, .bin, .zip, .7z" + raConsoleId="51" + uncompressRom="false" + compressRom="false" +} + +PlatformNintendoDS () { + platformName="Nintendo DS" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Nintendo%20DS/" + downloadExtension="zip" + platformFolder="nds" + consoleRomFileExt=".nds, .bin, .zip, .7z" + raConsoleId="18" + uncompressRom="false" + compressRom="false" +} + +PlatformNintendoDSi () { + platformName="Nintendo DSi" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Nintendo%20DSi/" + downloadExtension="zip" + platformFolder="ndsi" + consoleRomFileExt=".nds, .bin, .zip, .7z" + raConsoleId="78" + uncompressRom="false" + compressRom="false" +} + +PlatformColecoVision () { + platformName="ColecoVision" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/ColecoVision/" + downloadExtension="zip" + platformFolder="colecovision" + consoleRomFileExt=".bin, .col, .rom, .zip, .7z" + raConsoleId="44" + uncompressRom="false" + compressRom="false" +} + +PlatformIntellivision () { + platformName="Intellivision" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Intellivision/" + downloadExtension="zip" + platformFolder="intellivision" + consoleRomFileExt=".int, .bin, .rom, .zip, .7z" + raConsoleId="45" + uncompressRom="false" + compressRom="false" +} + +PlatformNeoGeoPocket () { + platformName="Neo Geo Pocket" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Neo%20Geo%20Pocket/" + downloadExtension="zip" + platformFolder="ngp" + consoleRomFileExt=".ngp, .zip, .7z" + raConsoleId="14" + uncompressRom="false" + compressRom="false" +} + +PlatformNintendoWASM-4 () { + platformName="WASM-4" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/WASM-4/" + downloadExtension="zip" + platformFolder="wasm4" + consoleRomFileExt=".wasm" + raConsoleId="72" + uncompressRom="false" + compressRom="false" +} + +PlatformNintendoChannelF () { + platformName="Fairchild Channel F" + platformArchiveContentsUrl="https://archive.org/download/retroachievements_collection_v5/Fairchild%20Channel%20F/" + downloadExtension="zip" + platformFolder="channelf" + consoleRomFileExt=".zip, .rom, .bin, .chf" + raConsoleId="57" + uncompressRom="false" + compressRom="false" +} + +DownloadRomCountSummary +log "######################################" +log "Processing platforms..." +platform="" +platformsToProcessNumber=0 +IFS=',' read -r -a filters <<< "$platforms" +for platform in "${filters[@]}" +do + platformToProcessNumber=$(( $platformToProcessNumber + 1 )) +done + +platform="" +processNumber=0 +IFS=',' read -r -a filters <<< "$platforms" +for platform in "${filters[@]}" +do + processNumber=$(( $processNumber + 1 )) + PlatformSelection + log "$processNumber/$platformToProcessNumber :: $platformName :: Starting..." + log "$processNumber/$platformToProcessNumber :: $platformName :: Finding ROMS..." + CreatePlatformRomList "$platformArchiveContentsUrl" + outputdir="$romPath/$platformFolder" + + romlist=$(cat /config/romlist) + romListCount=$(echo "$romlist" | wc -l) + log "$processNumber/$platformToProcessNumber :: $platformName :: $romListCount ROMS Found!" + romProcessNumber=0 + echo "$romlist" | while read -r rom; do + + romProcessNumber=$(( $romProcessNumber + 1 )) + archiveContentsUrl="$rom/" + #echo "$rom" + archiveUrl="$(wget -qO- "$archiveContentsUrl" | grep -i ".zip" | grep -io ' /config/romfilelist + romfiles="$(cat /config/romfilelist | awk '{ print length, $0 }' | sort -n | cut -d" " -f2-)" + #echo $romfiles + + # debugging + #echo "original list: " + #cat romfilelist + #echo "" + #echo "rom file list sorted by length: " + #echo "$romfiles" + #filteredUsaRoms="$(echo "$romfiles" | grep "%20%28U%29" | head -n 1)" + #echo "" + #echo "filtered:" + #echo "$filteredUsaRoms" + #if [ -f romfilelist ]; then + # rm romfilelist + #fi + #continue\ + + filteredUsaRoms="$(echo "$romfiles" | grep -i "%20%28U%29" | head -n 1)" + filteredUsaRomscount="$(echo "$romfiles" | grep -i "%20%28U%29" | head -n 1 | wc -l)" + filteredUsa2Roms="$(echo "$romfiles" | grep -i "%20%28USA%29" | head -n 1)" + filteredUsa2Romscount="$(echo "$romfiles" | grep -i "%20%28USA%29" | head -n 1 | wc -l)" + filteredUsa3Roms="$(echo "$romfiles" | grep -i "%20%28UE%29" | head -n 1)" + filteredUsa3Romscount="$(echo "$romfiles" | grep -i "%20%28UE%29" | head -n 1 | wc -l)" + filteredEuropeRoms="$(echo "$romfiles" | grep -i "%20%28E%29" | head -n 1)" + filteredEuropeRomscount="$(echo "$romfiles" | grep -i "%20%28E%29" | head -n 1 | wc -l)" + filteredEurope2Roms="$(echo "$romfiles" | grep -i "%20%28Europe%29" | head -n 1)" + filteredEurope2Romscount="$(echo "$romfiles" | grep -i "%20%28Europe%29" | head -n 1 | wc -l)" + filteredWorldRoms="$(echo "$romfiles" | grep -i "%20%28W%29" | head -n 1)" + filteredWorldRomscount="$(echo "$romfiles" | grep -i "%20%28W%29" | head -n 1 | wc -l)" + filteredWorld2Roms="$(echo "$romfiles" | grep -i "%20%28World%29" | head -n 1)" + filteredWorld2Romscount="$(echo "$romfiles" | grep -i "%20%28World%29" | head -n 1 | wc -l)" + filteredJapanRoms="$(echo "$romfiles" | grep -i "%20%28J%29" | head -n 1)" + filteredJapanRomscount="$(echo "$romfiles" | grep -i "%20%28J%29" | head -n 1 | wc -l)" + filteredJapan2Roms="$(echo "$romfiles" | grep -i "%20%28Japan%29" | head -n 1)" + filteredJapan2Romscount="$(echo "$romfiles" | grep -i "%20%28Japan%29" | head -n 1 | wc -l)" + filteredOtherRoms="$(echo "$romfiles" | head -n 1)" + filteredOtherRomscount="$(echo "$romfiles" | head -n 1 | wc -l)" + filteredOtherRomsDecoded="$(UrlDecode "$filteredOtherRoms")" + subFolder="$(dirname "$filteredOtherRomsDecoded")" + subFolder="$(basename "$subFolder")" + romUrl="" + if echo "$subFolder" | grep "~" | read; then + subFolder="/$(echo "$subFolder" | cut -d "~" -f 2)/" + else + subFolder="/" + fi + + if [ ! -d "${outputdir}${subFolder}" ]; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: Creating \"${subFolder}\" folder... " + mkdir -p "${outputdir}${subFolder}" + chmod 777 "${outputdir}${subFolder}" + fi + + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: Searching Archive URL ROM Folder" + + if [ $filteredUsaRomscount -eq 1 ]; then + fileName="$(basename "$filteredUsaRoms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredUsaRoms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: USA (U) ROM FOUND ($fileName)" + elif [ $filteredUsa2Romscount -eq 1 ]; then + fileName="$(basename "$filteredUsa2Roms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredUsa2Roms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: USA (USA) ROM FOUND ($fileName)" + elif [ $filteredUsa3Romscount -eq 1 ]; then + fileName="$(basename "$filteredUsa3Roms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredUsa3Roms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: USA (USA) ROM FOUND ($fileName)" + elif [ $filteredEuropeRomscount -eq 1 ]; then + fileName="$(basename "$filteredEuropeRoms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredEuropeRoms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: EUROPE ROM FOUND ($fileName)" + elif [ $filteredEurope2Romscount -eq 1 ]; then + fileName="$(basename "$filteredEurope2Roms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredEurope2Roms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: EUROPE ROM FOUND ($fileName)" + elif [ $filteredWorldRomscount -eq 1 ]; then + fileName="$(basename "$filteredWorldRoms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredWorldRoms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: WORLD ROM FOUND ($fileName)" + elif [ $filteredWorld2Romscount -eq 1 ]; then + fileName="$(basename "$filteredWorld2Roms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredWorld2Roms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: WORLD ROM FOUND ($fileName)" + elif [ $filteredJapanRomscount -eq 1 ]; then + fileName="$(basename "$filteredJapanRoms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredJapanRoms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: JAPAN ROM FOUND ($fileName)" + elif [ $filteredJapan2Romscount -eq 1 ]; then + fileName="$(basename "$filteredJapan2Roms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredJapan2Roms" + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: JAPAN ROM FOUND ($fileName)" + elif [ $filteredOtherRomscount -eq 1 ]; then + fileName="$(basename "$filteredOtherRoms")" + fileName="$(UrlDecode "$fileName")" + romUrl="$filteredOtherRoms" + if [ ! -z "$fileName" ]; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: OTHER ROM FOUND ($fileName)" + fi + fi + + if [ -z "$fileName" ]; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ERROR :: No Filtered Roms Found ($archiveContentsUrl)..." + continue + fi + + fileNameNoExt="${fileName%.*}" + + # verify download + if [ -f "${outputdir}${subFolder}${fileName}" ]; then + DownloadFileVerification "${outputdir}${subFolder}${fileName}" + fi + + # download file + if ! find "${outputdir}${subFolder}" -type f -iname "$fileNameNoExt.*" | grep -v ".st$" | read; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: ROM downloading to \"${outputdir}${subFolder}\"..." + #wget "$romUrl" -O "${outputdir}${subFolder}${fileName}" + DownloadFile "$romUrl" "${outputdir}${subFolder}${fileName}" "$concurrentConnectionCount" + + # verify download + if [ -f "${outputdir}${subFolder}${fileName}" ]; then + DownloadFileVerification "${outputdir}${subFolder}${fileName}" + fi + else + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: ROM previously downloaded..." + fi + + if [ -f "${outputdir}${subFolder}${fileName}" ]; then + if [ "$uncompressRom" == "true" ]; then + UncompressFile "${outputdir}${subFolder}${fileName}" "${outputdir}${subFolder}" + fi + fi + + # set permisions + if [ -f "${outputdir}${subFolder}${fileName}" ]; then + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${fileName} :: Setting Permissions to 666" + chmod 666 "${outputdir}${subFolder}${fileName}" + else + log "$processNumber/$platformToProcessNumber :: $platformName :: $romProcessNumber/$romListCount :: ${outputdir}${subFolder} :: Setting Permissions to 666" + chmod 666 "${outputdir}${subFolder}"/* + fi + + if [ -f /config/romfilelist ]; then + rm /config/romfilelist + fi + done + downloadedRomCount=$(find "$outputdir" -type f | wc -l) + log "$processNumber/$platformToProcessNumber :: $platformName :: $downloadedRomCount ROMS Successfully Downloaded!!" +done + +DownloadRomCountSummary + +exit