Каждое утро с рутрекера парсится 20 .torrent-файлов киношек с наибольшим количеством сидов, и ставится на закачку в aria2c. Может кому пригодится скрипт:
#!/bin/bash
TR_HOST="rutracker.org"
TR_USER="vasiliy"
TR_PASSWORD="pivo"
SC_COOKIE="/tmp/gt-$TR_HOST-$TR_USER.ck"
SC_UA="Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.15) Gecko/20110303 Ubuntu/10.10 (maverick) Firefox/3.6.15"
echo "---Cheking auth"
if [ -w $SC_COOKIE ]; then
aut_page="`curl -b $SC_COOKIE -c $SC_COOKIE -A "$SC_UA" "http://rutracker.org/forum/index.php"`"
# echo "$aut_page" > aut_page.html
result=`echo "$aut_page" | egrep -o "$TR_USER"`
fi
sleep 1
echo "---$result";
if [ -z "$result" ]; then
echo "---Makin auth";
autpath="http://login.rutracker.org/forum/login.php";
if [ -w $SC_COOKIE ]; then
cookie_data=`cat $SC_COOKIE`
curl --trace-ascii - -b $SC_COOKIE -c $SC_COOKIE -A "$SC_UA" -d "login_username=$TR_USER" \
-d "login_password=$TR_PASSWORD" --data-binary "login=%C2%F5%EE%E4" "$autpath">/dev/null
else
curl --trace-ascii - -c $SC_COOKIE -A "$SC_UA" -d "login_username=$TR_USER" \
-d "login_password=$TR_PASSWORD" --data-binary "login=%C2%F5%EE%E4" "$autpath">123.html
fi
fi
sleep 1
echo "get list_id"
tracker_page="`curl -b $SC_COOKIE -c $SC_COOKIE -A "$SC_UA" -d "o=10" -d "s=2" "http://rutracker.org/forum/tracker.php"`"
echo "$tracker_page" > /tmp/tracker_page.html
#echo $tracker_page | xargs | iconv -t utf8 -f cp1251 | grep -P -o '<tr .*?</tr>' | egrep -i 'фильмы' | egrep -i 'проверено'
list_id=`echo "$tracker_page" | \
tr -d "\n" | iconv -t utf8 -f cp1251 | \
grep -P -o '<tr .*?</tr>' | egrep -i "Фильмы" | egrep -i "проверено" | \
grep -P -o '(?<=dl.php\?t=)[0-9]*' | head -n 20`
echo -e "---List_id:\n$list_id";
if [ -z "$list_id" ]; then
echo "--Parsing error!"
exit
fi
rm -f /tmp/\[rutracker.org\]*
#rm -r /mnt/FILMS/*
for id in $list_id
do
echo "---Loading $id"
curl --cookie "bb_dl=$id" -b $SC_COOKIE -c $SC_COOKIE -A "$SC_UA" -o "/tmp/[rutracker.org].t$id.torrent" \
-e "http://rutracker.org/forum/viewtopic.php?t=$id" "http://dl.rutracker.org/forum/dl.php?t=$id"
done
#find /mnt/ALL/\!Софт/2GIS* | sort | sed -n 2,+99p | xargs rm -f
#curl -s irkutsk.2gis.ru | grep -P -o "http://download.2gis.ru/arhives/2GISShell.*?\.exe" | xargs wget -cP /mnt/ALL/\!Софт/
#screen -d -m -L
aria2c --no-conf --seed-time=0 --bt-max-peers=5 -V -j20 -d /mnt/FILMS /tmp/\[rutracker.org\]*
cd /mnt/FILMS/
rm -f *.aria2
ls -t1 | sed -n 21,+99p | while read file; do rm -rf "$file"; done;
Чтобы удалять лишние фильмы я перед началом закачки сортирую по возрасту и удаляю файлы с 21-го:
ls -t1 | sed -n 21,+99p | while read file; do rm -rf "$file"; done;
Проблема в том, что удаляется и то, что можно было не удалять и вместо, например, 2 новых фильмов, которые сегодня утром появились в этом «топе», на закачку ставится(перекачивается) 4-5, я думаю вы уже поняли почему.
Как оптимизировать эту «синхронизацию»?
rutracker parser парсер