1

Handle download errors, save thread errors to log file

This commit is contained in:
Valdos Sine 2012-04-03 23:10:15 +04:00 committed by Vladimir Hodakov
parent 1ac2983013
commit 6108d9b22c

26
massdl.sh Normal file → Executable file
View File

@ -8,9 +8,10 @@
# #
# For getting help, execute ./massdl.sh without params # For getting help, execute ./massdl.sh without params
UNIXTIME=`date +%s`
TMPDIR=`mktemp -d` TMPDIR=`mktemp -d`
CURDIR=`pwd` CURDIR=`pwd`
LOG_FILE="`date +%s`-massdl.log" LOG_FILE="$UNIXTIME-massdl.log"
# Heading log file # Heading log file
@ -25,19 +26,19 @@ EOF
wget_func () { wget_func () {
# Wget helper, which makes many wget usages more stable # Wget helper, which makes many wget usages more stable
# Usage wget_func [path_to_redirect] [anything (wget params, such as -O...)] # 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 # Checking if we have parameter, otherwise show help in Russian
if [[ ${@} == "" ]] ; then if [[ ${@} == "" ]] ; then
echo "massdl.sh — скрипт для пакетной загрузки торрент-файлов из разделов nnm-club.me." echo "massdl.sh — скрипт для пакетной загрузки торрент-файлов из разделов NNM-club.ru."
echo "Использование:" echo "Использование:"
echo -ne "\n\t./massdl.sh [режим] [номер_раздела]\n\n" 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 -ne "Примеры:\n\n\t./massdl.sh freeleech 316 — скачивание форума '*Nix Игры' от фрилич-пользователя\n\t./massdl.sh user 332 — скачивание форума 'Русский рок' от собственного, указанного в скрипте, имени\n\n"
echo "Автор: Valdos 'fat0troll' Sine." echo "Автор: Valdos 'fat0troll' Sine."
echo "Основано на технологиях GNU." echo "Основано на технологиях GNU."
echo "Версия 0.3" echo "Версия 0.5"
exit 0 exit 0
else else
echo "Выполняется скрипт ${0}." echo "Выполняется скрипт ${0}."
@ -45,7 +46,6 @@ else
echo -ne "Проводим разбор строки..." echo -ne "Проводим разбор строки..."
# Script configuration # Script configuration
case "x${1}" in case "x${1}" in
"xuser" ) "xuser" )
# TYPE YOUR USERNAME AND PASSWORD HERE! # TYPE YOUR USERNAME AND PASSWORD HERE!
USERNAME=user USERNAME=user
@ -105,12 +105,24 @@ do
echo -ne "Скачиваем торрент $THREAD/$THREADS." echo -ne "Скачиваем торрент $THREAD/$THREADS."
# Temporary solution until will be finded way to use cookie.txt... # Temporary solution until will be finded way to use cookie.txt...
wget_func $line "-O $TMPDIR/out_$THREAD.html" 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 "." echo -ne "."
wget_func `cat $TMPDIR/out_$THREAD.html | iconv -f cp1251 -t utf-8 | grep download.php | sed 's/.*<a href=\([^>]*\).*/\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/.*<a href=\([^>]*\).*/\1/' | cut -d '"' -f 2 | tail -1 -` "-P "$(($THREAD / 100))/" --content-disposition"
# Check for bad wget saving... # Check for bad wget saving...
if [[ -f login.php ]] ; then if [[ -f login.php ]] ; then
echo -ne ".имя файла потеряно. используется сгенерированное скриптом.." echo -ne ".имя файла потеряно. используется сгенерированное скриптом.."
mv login.php "$(($THREAD / 100 ))"/$THREAD.torrent 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 fi
echo -ne ".\n" echo -ne ".\n"
popd >> /dev/null popd >> /dev/null