Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ua='Mozilla/5.0 (Windows NT 5.2; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
- login='RUTRACKER_LOGIN'
- password='RUTRACKER_PASSWORD'
- query="$*"
- limit=5
- downlink='http://dl.rutracker.org/forum/dl.php?t='
- referer='http://rutracker.org/forum/viewtopic.php?t='
- write() {
- echo -e "\e[1;36m[`date +%k:%M:%S`]\e[00m \e[1;37m$1 \e[00m"
- }
- ask() {
- echo -ne "\e[1;36m[`date +%k:%M:%S`]\e[00m \e[1;33m$1 \e[00m"
- }
- die() {
- echo -e "\e[1;36m[`date +%k:%M:%S`]\e[00m \e[1;31m$1 \e[00m"
- exit
- }
- startup() {
- rm /tmp/rutracker* 2>/dev/null
- which phantomjs >/dev/null && return 0 || return 1
- }
- auth() {
- wget --user-agent="$ua" -qO /tmp/rutracker_index "http://login.rutracker.org/forum/login.php" --post-data="login_username=$login&login_password=$password&redirect=index.php&login=Вход" --save-cookies=/tmp/rutracker_cookies --keep-session-cookies
- grep -q "med\">$login" /tmp/rutracker_index && return 0 || return 1
- }
- urlencode() {
- echo "$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$*")"
- }
- phantomjs_init() {
- echo "
- var login = '$login';
- var password = '$password';
- var query = '$(urlencode "$query")';
- var page = require('webpage').create();
- var querypage = require('webpage').create();
- var loginurl = 'http://login.rutracker.org/forum/login.php';
- var loginpost = 'login_username='+login+'&login_password='+password+'&login=Вход';
- var queryurl = 'http://rutracker.org/forum/tracker.php?nm='+query;
- var querypost = 'prev_my=0&prev_new=0&prev_oop=0&f[]=-1&o=10&s=2';
- function retr_query() {
- querypage.open(queryurl, 'post', querypost, function (status) {
- if (status === 'success') {
- console.log(querypage.content);
- } else {
- console.log('Error');
- }
- phantom.exit();
- });
- }
- page.open(loginurl, 'post', loginpost, function (status) {
- if (status === 'success') {
- retr_query();
- } else {
- console.log('Error');
- phantom.exit();
- }
- });
- " > /tmp/rutracker_parse.js
- }
- phantomjs_query() {
- phantomjs /tmp/rutracker_parse.js > /tmp/rutracker_index
- [ "$(cat /tmp/rutracker_index)" == "Error" ] && return 1
- # count results
- export count=$(grep Результатов\ поиска /tmp/rutracker_index|sed 's/<[^>]\+>//g'|awk '{ print $3 }')
- [ $count -eq 0 ] && return 1 || return 0
- }
- parse() {
- OLD_IFS=$IFS
- IFS=$'\n'
- topics=(` grep viewtopic.php?t= /tmp/rutracker_index | grep tLink | awk '{ print $2 }' | grep -oE '[0-9]{1,15}' `)
- names=(` grep viewtopic.php?t= /tmp/rutracker_index | grep tLink | sed 's/<[^>]\+>//g' | sed 's/\t//g' `)
- [ ${#topics[@]} -ge $limit ] && max=$limit || max=${#topics[@]}
- for i in `seq 0 $(($max-1))`; do
- echo -e " \e[1;35m*$i*\e[00m \e[1;32m${names[$i]}\e[00m"
- done
- }
- get_torrent() {
- wget -qO "/tmp/rutracker_torrent.torrent" "${downlink}${topics[$target]}" --load-cookies=/tmp/rutracker_cookies --keep-session-cookies --post-data='dummy=' --referer="${referer}${topics[$target]}"
- }
- cleanup() {
- rm /tmp/rutracker*
- exit 0
- }
- write "Welcome to ruTracker CLI Client v0.01 by annelin"
- startup || die "Can't find phantomjs installed."
- auth || die "Incorrect login/password"
- write "Logged in as $login."
- phantomjs_init
- phantomjs_query || die "Can't process request to tracker or no results found"
- write "Found $count results. Displaying first $limit."
- parse
- ask "Select torrent number... "
- read target
- write "Downloading ${names[$target]}"
- get_torrent
- xdg-open /tmp/rutracker_torrent.torrent
- # cleanup
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement