Advertisement
Guest User

Torrentz.eu shell search API script

a guest
Feb 22nd, 2012
689
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.07 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # by Sairon Istyar, 2012
  4. # distributed under the GPLv3 license
  5. # http://www.opensource.org/licenses/gpl-3.0.html
  6. #
  7.  
  8. # program to use for torrent download
  9. program='/opt/usr/bin/transmission-remote'
  10. progopts='-a'
  11. # show N first matches by default
  12. limit=15
  13. # colors
  14. numbcolor='\x1b[1;35m'
  15. namecolor='\x1b[1;33m'
  16. sizecolor='\x1b[1;36m'
  17. seedcolor='\x1b[1;31m'
  18. peercolor='\x1b[1;32m'
  19. nonecolor='\x1b[0m'
  20.  
  21. printhelp() {
  22.     echo -e "Usage:\n\t$0 [options] search query\n\nAvailable options:\n\t-h\t\tShow help\n\t-n [num]\tShow only first N results (default 15; max 50)\n\t-C\t\tDo not use colors"
  23. }
  24.  
  25. while getopts :hCn: opt ; do
  26.     case "$opt" in
  27.         h) printhelp; exit 0;;
  28.         n) limit="$OPTARG";;
  29.         C) unset numbcolor; unset namecolor; unset sizecolor; unset seedcolor; unset peercolor; unset nonecolor;;
  30.         *) echo -e "Unknown option(s)."; printhelp; exit 1;;
  31.     esac
  32. done
  33.  
  34. shift `expr $OPTIND - 1`
  35.  
  36. q=`echo "$*" | tr -d '\n' | od -t x1 -A n | tr ' ' '%'`
  37.  
  38. r=`curl -s "http://torrentz.eu/search?f=$q" \
  39.     | grep -Eo '<dl><dt><a href=\"\/[[:alnum:]]*\">.*</a>|<span class=\"[speud]*\">[^<]*</span>' \
  40.     | sed 's!<dl><dt><a href=\"/!!; \
  41.         s!\">!|!; \
  42.         s!<[/]*b>!!g; \
  43.         N;N;N;s!\n<span class=\"[pesud]*\">!|!g; \
  44.         s!</span>!!g; \
  45.         s!</a>!!'`
  46.  
  47. n=`echo "$r" | wc -l`
  48.  
  49. IFS=$'\n'
  50.  
  51. echo "$r" \
  52.     | head -n "$limit" \
  53.     | awk -v N=1 \
  54.         -v NU="$numbcolor" \
  55.         -v NA="$namecolor" \
  56.         -v SI="$sizecolor" \
  57.         -v SE="$seedcolor" \
  58.         -v PE="$peercolor" \
  59.         -v NO="$nonecolor" \
  60.         -F '|' \
  61.         '{print NU N ") " NA $2 " " SI $3 " " SE $4 " " PE $5 NO; N++}'
  62.  
  63. read -p ">> Enter torrent No. to download: " down
  64.  
  65. down=`echo "$down" | sed 's/[^[:digit:]]*//g' | head -n 1`
  66.  
  67. if [ -z "$down" ] ; then
  68.     echo "Not a number!"
  69.     unset IFS
  70.     exit 1
  71. elif [ $down -ge 1 ] ; then
  72.     if [ $down -le $limit ] ; then
  73.         echo "Downloading..."
  74.         $program $progopts "`echo "$r" | awk -F '|' 'NR=='$down'{print "magnet:?xt=urn:btih:" $1; exit}'`"
  75.     else
  76.         echo "Number too high! ($down)"
  77.         unset IFS
  78.         exit 3
  79.     fi
  80. else
  81.     echo "Number too low! ($down)"
  82.     unset IFS
  83.     exit 2
  84. fi
  85.  
  86. unset IFS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement