drpanwe

snes_rom_downloader

Oct 2nd, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.34 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. for letter in \# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do
  4.   # Construct letterpage
  5.   if [ "$letter" = "#" ]; then
  6.     letterpage="https://vimm.net/vault/?p=list&system=SNES&section=number"
  7.   else
  8.     letterpage="https://vimm.net/vault/SNES/$letter"
  9.   fi
  10.   echo "$letterpage"; echo "======================="
  11.  
  12.   # Base URL (should be without trailing slash)
  13.   baseURL="https://vimm.net"
  14.  
  15.   # find all gamepages in a letterpage
  16.   for gamepage in $(curl -s "$letterpage" |
  17.     grep 'onmouseover="buildTooltip' |
  18.     awk -F 'href="' '{print $2}' |
  19.     cut -d '"' -f1); do
  20.     # Construct the gamepage URL
  21.     gamepage="$baseURL$gamepage"
  22.  
  23.     # Find the mediaID
  24.     while true; do
  25.       id=$(curl -s "$gamepage" | grep 'fileSize\[' | head -n 1 | cut -d \[ -f2 | cut -d \] -f1)
  26.       if [ -z "$id" ]; then
  27.         echo "\$id is empty. Retrying ..."
  28.       else
  29.         echo "\$id is $id"
  30.         break
  31.       fi
  32.     done
  33.  
  34.     # Construct URL
  35.     URL="https://download.vimm.net/download/?mediaId=$id"
  36.     echo "Visiting $URL"
  37.  
  38.     # Find the filename
  39.     while true; do
  40.       filename=$(curl -s -D - \
  41.         -H "Referer: https://vimm.net/" \
  42.         -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" \
  43.         "$URL" | grep "Content-Disposition" | awk -F '=' '{print substr($2,2,length($2)-3)}')
  44.       if [ -z "$filename" ]; then
  45.         echo "\$filename is empty. Retrying ..."
  46.       else
  47.         echo "\$filename is $filename"
  48.         break
  49.       fi
  50.     done
  51.  
  52.     # Download it
  53.     while true; do
  54.       curl -s \
  55.         -H "Referer: https://vimm.net/" \
  56.         -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36" \
  57.         "$URL" --output "$filename"
  58.  
  59.       # Test the file
  60.       if test -f "$filename"; then
  61.         echo "$filename has been downloaded"
  62.         # Check if thefile is zip
  63.         if file "$filename" | grep 'Zip archive data' &>/dev/null; then
  64.           echo "$filename is a valid Zip archive"
  65.           break
  66.         else
  67.           echo "$filename is not a zip archive. Retrying ..."
  68.         fi
  69.       else
  70.         echo "$filename has not been downloaded. Retrying ..."
  71.       fi
  72.     done
  73.     echo "---"
  74.   done
  75.  
  76. done
Add Comment
Please, Sign In to add comment