From 762b36c0f220eee67855f57d483c57a61263614a Mon Sep 17 00:00:00 2001 From: Valdos Sine Date: Thu, 5 Apr 2012 00:20:11 +0400 Subject: [PATCH] Handle login errors, handle torrents count mismatch --- massdl.sh | 66 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 11 deletions(-) diff --git a/massdl.sh b/massdl.sh index a05ded2..ac08720 100755 --- a/massdl.sh +++ b/massdl.sh @@ -13,20 +13,14 @@ TMPDIR=`mktemp -d` CURDIR=`pwd` LOG_FILE="$UNIXTIME-massdl.log" -# Heading log file - -cat > $LOG_FILE << EOF -================================================================================ -= Скрипт скачки раздела NNM-Club для Linux и Unix-like ОС. = -= Построен на технологиях GNU. = - Дата запуска: `date`. -================================================================================ -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.ru/forum/login.php" ${2} -a $CURDIR/$LOG_FILE + if [[ $? -gt 0 ]] ; then + echo -ne "..ошибка загрузки, повтор.." + wget_func "${1}" "${2}" + fi } # Checking if we have parameter, otherwise show help in Russian @@ -68,6 +62,17 @@ else echo -ne ", номер форума ${FORUM}.\n" echo "Начинаем работу..." fi + +# Heading log file + +cat > $LOG_FILE << EOF +================================================================================ += Скрипт скачки раздела NNM-Club для Linux и Unix-like ОС. = += Построен на технологиях GNU. = + Дата запуска: `date`. +================================================================================ +EOF + # Downloading main page of the selected forum wget_func `echo 'viewforum.php?f='$FORUM` "-O $TMPDIR/page0.html" FORUMNAME=`cat $TMPDIR/page0.html | iconv -f cp1251 -t utf-8 | grep maintitle | cut -d '>' -f 4 | cut -d '<' -f 1 | sed 's/\//_/g'` @@ -120,10 +125,49 @@ do else echo -ne ".скачан не BitTorrent-файл! После завершения работы скрипта проверьте файл $UNIXTIME-error.log — там будет ссылка на нескачанный топик!\n" echo -ne "Пишем информацию в лог-файл.." - echo "Топик $THREAD: $TOPICHDR [https://nnm-club.ru/forum/$TOPICLNK]" >> $CURDIR/$UNIXTIME-error.log + echo "Топик $THREAD: ошибка скачивания $TOPICHDR [https://nnm-club.ru/forum/$TOPICLNK]" >> $CURDIR/$UNIXTIME-error.log rm "$(($THREAD / 100 ))"/$THREAD.torrent fi fi + echo -ne "." + # Check sanity: torrents must equal threads. If not -- post a warning ;) + sanity_error () { + echo -ne ".кажется, топик не отдал нам файла. После завершения работы скрипта проверьте $UNIXTIME-error.log — там будет ссылка на проблемный топик!\n" + echo -ne "Пишем информацию в лог-файл.." + echo "Топик $THREAD: подозрительный $TOPICHDR [https://nnm-club.ru/forum/$TOPICLNK]" >> $CURDIR/$UNIXTIME-error.log + } + actualize_delta () { + # Actualizes delta between files count and expected count: when we switching + # folder delta should be nulled! + if [[ $(($THREAD / 100)) -gt $LAST_ERROR ]] ; then + ERROR_DELTA=0 + else + if [[ x$ERROR_DELTA == "x" ]] ; then + ERROR_DELTA=0 + fi + fi + } + add_delta () { + # Adding delta + LAST_ERROR=$(($THREAD / 100)) + ERROR_DELTA=$(($ERROR_DELTA + 1)) + } + actualize_delta + if [[ $(($THREAD / 100)) -eq '0' ]] ; then + if [[ `ls $(($THREAD / 100))/*.torrent | wc -l` -eq $(($THREAD - $(($THREAD / 100 * 100)) - $ERROR_DELTA)) ]] ; then + echo -ne "" + else + sanity_error + add_delta + fi + else + if [[ `ls $(($THREAD / 100))/*.torrent | wc -l` -eq $(($THREAD - $(($THREAD / 100 * 100)) + 1 - $ERROR_DELTA)) ]] ; then + echo -ne "" + else + sanity_error + add_delta + fi + fi echo -ne ".\n" popd >> /dev/null done < $TMPDIR/alllinkz.txt