Initial commit, imported from forum
This commit is contained in:
commit
b68b126e1e
115
massdl.sh
Normal file
115
massdl.sh
Normal file
@ -0,0 +1,115 @@
|
||||
#!/bin/bash
|
||||
# For NNM-Club Uploaders
|
||||
# Copyright (c) 2012 Valdos Sine <fat0troll at yandex dot ru>
|
||||
#
|
||||
# Usage:
|
||||
#
|
||||
# ./massdl.sh [mode] [forum]
|
||||
#
|
||||
# For getting help, execute ./massdl.sh without params
|
||||
|
||||
TMPDIR=`mktemp -d`
|
||||
CURDIR=`pwd`
|
||||
LOG_FILE="`date +%s`-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.me/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 "Использование:"
|
||||
echo -ne "\n\t./massdl.sh [режим] [номер_раздела]\n\n"
|
||||
echo "где [режим] это режим загрузки (от имени пользователя, указанного в конфигурации скрипта — значение user, или же от имени фрилич-пользователя — значение freeleech), а [номер_форума] — номер раздела на nnm-club.me (например, для форума '*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"
|
||||
exit 0
|
||||
else
|
||||
echo "Выполняется скрипт ${0}."
|
||||
echo "Строка параметров работы: ${@}."
|
||||
echo -ne "Проводим разбор строки..."
|
||||
# Script configuration
|
||||
case "x${1}" in
|
||||
|
||||
"xuser" )
|
||||
# TYPE YOUR USERNAME AND PASSWORD HERE!
|
||||
USERNAME=user
|
||||
PASSWORD=password
|
||||
echo -ne "пользователь $USERNAME"
|
||||
;;
|
||||
"xfreeleech" )
|
||||
# Freeleech user credentials
|
||||
USERNAME=freeleech_user
|
||||
PASSWORD=freeleech_password
|
||||
echo -ne "фрилич"
|
||||
;;
|
||||
* )
|
||||
# ERROR!
|
||||
echo -ne "ошибка, неправильный режим работы скрипта! Разрешённые режимы — freeleech или же user.\nЗавершение...\n"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
FORUM=${2}
|
||||
echo -ne ", номер форума ${FORUM}.\n"
|
||||
echo "Начинаем работу..."
|
||||
fi
|
||||
# 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'`
|
||||
echo "Скачиваем форум \"${FORUMNAME}\"..."
|
||||
ITERATOR=0
|
||||
THREADS=0
|
||||
# Downloading all pages
|
||||
while [ `cat $TMPDIR/page$ITERATOR.html | iconv -f cp1251 -t utf-8 | grep "След."| grep 'start' | wc -l` == "2" ]
|
||||
do
|
||||
iconv -f cp1251 -t utf-8 $TMPDIR/page$ITERATOR.html > $TMPDIR/page$ITERATOR.utf8.html
|
||||
cat $TMPDIR/page$ITERATOR.utf8.html | grep topictitle | sed 's/.*<a href=\([^>]*\).*/\1/' | cut -d '"' -f 2 >> $TMPDIR/alllinkz.txt
|
||||
THREADS=$(($THREADS + 50))
|
||||
ITERATOR=$(($ITERATOR + 1))
|
||||
START=$(($ITERATOR * 50))
|
||||
echo "Скачиваем страницу $((${ITERATOR} + 1))..."
|
||||
wget_func `echo 'viewforum.php?f='$FORUM'%26start='$START` "-O $TMPDIR/page$ITERATOR.html"
|
||||
done
|
||||
# Last loop ending :)
|
||||
iconv -f cp1251 -t utf-8 $TMPDIR/page$ITERATOR.html > $TMPDIR/page$ITERATOR.utf8.html
|
||||
cat $TMPDIR/page$ITERATOR.utf8.html | grep topictitle | sed 's/.*<a href=\([^>]*\).*/\1/' | cut -d '"' -f 2 >> $TMPDIR/alllinkz.txt
|
||||
|
||||
# You can use it as statistic :)
|
||||
THREADS=$(($THREADS + `cat $TMPDIR/page$ITERATOR.html | grep topictitle | wc -l`))
|
||||
echo -ne "Выявлено $THREADS топиков, содержащих торренты! Скачиваем...\n"
|
||||
# And this is what we need -- getting threads and torrents!
|
||||
# Torrents will be saved in folders like 100, 200, 300... Every folder contains
|
||||
# 100 torrents (except the last one).
|
||||
THREAD=0
|
||||
mkdir "$FORUMNAME"
|
||||
while read line
|
||||
do
|
||||
pushd "${FORUMNAME}" >> /dev/null
|
||||
mkdir "$(($THREAD / 100))" 2>> /dev/null
|
||||
THREAD=$(($THREAD + 1))
|
||||
echo -ne "Скачиваем торрент $THREAD/$THREADS."
|
||||
# Temporary solution until will be finded way to use cookie.txt...
|
||||
wget_func $line "-O $TMPDIR/out_$THREAD.html"
|
||||
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"
|
||||
echo -ne ".\n"
|
||||
popd >> /dev/null
|
||||
done < $TMPDIR/alllinkz.txt
|
||||
|
||||
# Cleaning up...
|
||||
rm -r $TMPDIR
|
Loading…
Reference in New Issue
Block a user