pabloalcantara

Bash Script to download Title Update for xbox360

Jan 12th, 2012
311
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.65 KB | None | 0 0
  1. #!/bin/bash
  2. #
  3. # updateTitleXbox.sh
  4. #
  5. # by Molukki on 12 Jan 2012, 18 Jan 2012
  6. # changed by pabloalc on 18 Jan 2012
  7. # This file is public domain.
  8. #
  9. # Search all isos in a folder an download the TU
  10.  
  11. function marketplace {
  12.  
  13. echo "==== Searching for Media ID $MEDIAID on marketplace.jqe360.com"
  14.  
  15. # Search for update name and download URL from marketplace.jqe360.com
  16. HTMLDATA=$(curl -s "http://marketplace.jqe360.com/index.php?search=$1" \
  17.   | egrep '(details&name|Direct)' | head -2 | tr -d '\n')
  18.  
  19. # Extract download URL from html data
  20. RELATIVE_DOWNLOAD_URL=`echo $HTMLDATA | cut -d '"' -f 2`
  21.  
  22. # Get the filename from the download url HTTP headers
  23. DOWNLOAD_FILENAME=$(
  24.     ( echo "HEAD $RELATIVE_DOWNLOAD_URL HTTP/1.0"
  25.       echo "Host: marketplace.jqe360.com"
  26.       echo ) | nc marketplace.jqe360.com 80 | grep 'filename=' \
  27.              | cut -d '=' -f 2 | tr -d '\n' | tr -d '\r')
  28.  
  29. # Extract update name from html data
  30. UPDATENAME=`echo $HTMLDATA | cut -d '>' -f 3 | cut -d '<' -f 1`
  31.  
  32. INFO="marketplace.jqe360 - `date` - $UPDATENAME - $DOWNLOAD_FILENAME"
  33. if [ "$UPDATENAME" ]
  34.    then
  35.       INFO="marketplace.jqe360 - `date` - $UPDATENAME -
  36. $DOWNLOAD_FILENAME"
  37.       download "$DOWNLOAD_FILENAME" \
  38.           "http://marketplace.jqe360.com$RELATIVE_DOWNLOAD_URL" \
  39.           "$INFO" "$UPDATENAME"
  40.    #else
  41.    #   echo "==== No Title Updates for $MEDIAID on marketplace.jqe360"
  42. fi
  43. }
  44.  
  45. function xbuc {
  46.  
  47. echo "==== Searching for Media ID $MEDIAID on xbuc.net"
  48. curl -s "http://www.xbuc.net/?searchString=$MEDIAID" \
  49.   | grep '^<td>' | tr -d '\n' | tr -d '\r' | sed 's/<\/td>/<\/td>\n/g' \
  50.   | head -n 6 | while read DATA
  51. do
  52.     #echo -n $DATA | sed 's/<[^>]*>//g'
  53.     #echo -n "  "
  54.     if [[ "$DATA" =~ "details=" ]]
  55.     then
  56.         TITLE=$(echo $DATA | sed 's/<[^>]*>//g')
  57.     fi
  58.     if [[ "$DATA" =~ "download" ]]
  59.     then
  60.         DOWNLOAD=$(echo "$DATA" | cut -d "'" -f 2 | sed 's/\&amp;/\&/g')
  61.         LOCATION=$(curl -s -D - http://www.xbuc.net/$DOWNLOAD \
  62.           | grep Location: | cut -d ' ' -f 2- | tr -d '\n' | tr -d '\r')
  63.         if [ "${LOCATION##*/}" ]
  64.         then
  65.                 INFO="xbuc.net - `date` - $TITLE - ${LOCATION##*/}"
  66.                 download "${LOCATION##*/}" "$LOCATION" "$INFO" "$TITLE"
  67.         #else
  68.         #       echo "== No Title Updates for $MEDIAID on xbuc.net"
  69.         fi
  70.      fi
  71. done
  72. }
  73.  
  74. function download {
  75.  
  76.         UPDATEFILE="$DIRECTORY/TU/$1"
  77.         if [ -f "$UPDATEFILE" ];
  78.         then
  79.                 echo "====== Title Update already exist in: $UPDATEFILE"
  80.         else
  81.                 echo "====== Downloading $4"
  82.                 wget -q -O "$DIRECTORY/TU/$1" --tries=1 $2
  83.                 if [ -f "$UPDATEFILE" ]; then
  84.                         echo "$3">>"$DIRECTORY/TU/updates.txt"
  85.                 fi
  86.  
  87.         fi
  88.  
  89. }
  90.  
  91.  
  92.  
  93. if [ "x$1" == "x" ]
  94. then
  95.     echo "Usage:"
  96.     echo "$0 <xbox360_image.iso>"
  97.     echo "or:"
  98.     echo "$0 <folder with xbox360 isos>"
  99.     exit 1
  100. fi
  101. find "$1" -iname "*.iso" -print0 | while read -d $'\0' file
  102. do
  103. DIRECTORY=${file%/*}
  104. echo "=============================================================="
  105. echo "== Processing $DIRECTORY"
  106. if [ ! -d "$DIRECTORY/TU" ]; then
  107.      mkdir "$DIRECTORY/TU"
  108. fi
  109. if [ -f "$DIRECTORY/TU/MEDIAID" ]; then
  110.      MEDIAID=`cat "$DIRECTORY/TU/MEDIAID"`
  111. else
  112.     echo "== Executing abgx360 to get MediaID"
  113.     MEDIAID=$(abgx360 -swordv --noheader --dontparsefs "$file" \
  114.         | grep -i "XEX Media ID" | head -1 | cut -d '-' -f 2)
  115.     echo $MEDIAID >"$DIRECTORY/TU/MEDIAID"
  116. fi
  117.  
  118. if [ "x$MEDIAID" == "x" ]
  119. then
  120.     echo "No Media ID found. (Not an XBox360 iso?)"
  121.     exit 1
  122. fi
  123.  
  124. marketplace $MEDIAID
  125. xbuc $MEDIAID
  126.  
  127. done
Add Comment
Please, Sign In to add comment