From 6108d9b22c97386aee48e4c0f9bc3b315f1f92f0 Mon Sep 17 00:00:00 2001 From: Valdos Sine Date: Tue, 3 Apr 2012 23:10:15 +0400 Subject: [PATCH] Handle download errors, save thread errors to log file --- massdl.sh | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) mode change 100644 => 100755 massdl.sh diff --git a/massdl.sh b/massdl.sh old mode 100644 new mode 100755 index e659f3b..a05ded2 --- a/massdl.sh +++ b/massdl.sh @@ -8,9 +8,10 @@ # # For getting help, execute ./massdl.sh without params +UNIXTIME=`date +%s` TMPDIR=`mktemp -d` CURDIR=`pwd` -LOG_FILE="`date +%s`-massdl.log" +LOG_FILE="$UNIXTIME-massdl.log" # Heading log file @@ -25,19 +26,19 @@ EOF wget_func () { # Wget helper, which makes many wget usages more stable # Usage wget_func [path_to_redirect] [anything (wget params, such as -O...)] - wget -t 99 --wait=1 --post-data="username=$USERNAME&password=$PASSWORD&autologin=on&login=%C2%F5%EE%E4&redirect=${1}" "http://nnm-club.me/forum/login.php" ${2} -a $CURDIR/$LOG_FILE + wget -t 99 --wait=1 --post-data="username=$USERNAME&password=$PASSWORD&autologin=on&login=%C2%F5%EE%E4&redirect=${1}" "http://nnm-club.ru/forum/login.php" ${2} -a $CURDIR/$LOG_FILE } # Checking if we have parameter, otherwise show help in Russian if [[ ${@} == "" ]] ; then - echo "massdl.sh — скрипт для пакетной загрузки торрент-файлов из разделов nnm-club.me." + echo "massdl.sh — скрипт для пакетной загрузки торрент-файлов из разделов NNM-club.ru." echo "Использование:" echo -ne "\n\t./massdl.sh [режим] [номер_раздела]\n\n" - echo "где [режим] это режим загрузки (от имени пользователя, указанного в конфигурации скрипта — значение user, или же от имени фрилич-пользователя — значение freeleech), а [номер_форума] — номер раздела на nnm-club.me (например, для форума '*Nix Игры' это 316)." + echo "где [режим] это режим загрузки (от имени пользователя, указанного в конфигурации скрипта — значение user, или же от имени фрилич-пользователя — значение freeleech), а [номер_форума] — номер раздела на NNM-club.ru (например, для форума '*Nix Игры' это 316)." echo -ne "Примеры:\n\n\t./massdl.sh freeleech 316 — скачивание форума '*Nix Игры' от фрилич-пользователя\n\t./massdl.sh user 332 — скачивание форума 'Русский рок' от собственного, указанного в скрипте, имени\n\n" echo "Автор: Valdos 'fat0troll' Sine." echo "Основано на технологиях GNU." - echo "Версия 0.3" + echo "Версия 0.5" exit 0 else echo "Выполняется скрипт ${0}." @@ -45,7 +46,6 @@ else echo -ne "Проводим разбор строки..." # Script configuration case "x${1}" in - "xuser" ) # TYPE YOUR USERNAME AND PASSWORD HERE! USERNAME=user @@ -105,12 +105,24 @@ do echo -ne "Скачиваем торрент $THREAD/$THREADS." # Temporary solution until will be finded way to use cookie.txt... wget_func $line "-O $TMPDIR/out_$THREAD.html" + # :3 + TOPICHDR=`cat $TMPDIR/out_$THREAD.html | grep maintitle | cut -d '>' -f 4 | cut -d '<' -f 1 | iconv -f cp1251 -t utf-8` + TOPICLNK=`cat $TMPDIR/out_$THREAD.html | grep maintitle | cut -d '"' -f 10` echo -ne "." - wget_func `cat $TMPDIR/out_$THREAD.html | iconv -f cp1251 -t utf-8 | grep download.php | sed 's/.*]*\).*/\1/' | cut -d '"' -f 2` "-P "$(($THREAD / 100))/" --content-disposition" + wget_func `cat $TMPDIR/out_$THREAD.html | iconv -f cp1251 -t utf-8 | grep download.php | sed 's/.*]*\).*/\1/' | cut -d '"' -f 2 | tail -1 -` "-P "$(($THREAD / 100))/" --content-disposition" # Check for bad wget saving... if [[ -f login.php ]] ; then echo -ne ".имя файла потеряно. используется сгенерированное скриптом.." mv login.php "$(($THREAD / 100 ))"/$THREAD.torrent + # Check if file is real torrent. If not... get an error + if [[ `file "$(($THREAD / 100 ))"/$THREAD.torrent | grep BitTorrent` ]] ; then + echo -ne ".файл сохранён как $(($THREAD / 100 ))/$THREAD.torrent.." + else + echo -ne ".скачан не BitTorrent-файл! После завершения работы скрипта проверьте файл $UNIXTIME-error.log — там будет ссылка на нескачанный топик!\n" + echo -ne "Пишем информацию в лог-файл.." + echo "Топик $THREAD: $TOPICHDR [https://nnm-club.ru/forum/$TOPICLNK]" >> $CURDIR/$UNIXTIME-error.log + rm "$(($THREAD / 100 ))"/$THREAD.torrent + fi fi echo -ne ".\n" popd >> /dev/null