dev/bash/scripts/allget.sh

60 lines
2.4 KiB
Bash
Raw Normal View History

2011-04-07 14:30:45 +04:00
#!/bin/bash
# Автоматический загрузчик из командной строки с возможностью добавления файлов в список
# и переносом в конец неудачных закачек.
# Переменная $list определяет файл со списком закачек (простые ссылки)
# Переменная $downdir определяет директорию загрузки
# Автор: Шашкин Николай г.Пенза
list="$1"
if [[ "$list" == "" ]]; then
list=~/etc/wget_list.txt ;
fi
if [ ! -e "$list" ]; then
echo "Не найден файл $list со списком загрузок - выходим !"
exit 1
fi
downdir="$2"
if [[ "$downdir" == "" ]]; then
downdir=/home/kolan/download ;
fi
if [ ! -d $downdir ]; then rm -f $downdir; mkdir $downdir; fi ;
while true; do
unset fname
if [[ `wc $list | cut -d ' ' -f2` == 0 ]]; then exit 0; fi; # Список загрузок пуст
{
while [[ "$fname" == "" ]]; do
read fname ; # Считываем первое имя в списке загрузок
done
}<$list ;
echo "#############################################################################################"
echo "Downloading $fname"
#cd "$downdir"; lftp -c pget -n 10 "$fname" # бред, докачка не работает
#cd "$downdir"; lftpget -c "$fname" # бред, докачка не работает
#aria2c -d "$downdir" -j 10 -s 10 -c "$fname" # нормальная тулза
wget --mirror -c -l5 --no-directories --timeout=30 --tries=3 --directory-prefix="$downdir" "$fname"
#cd "$downdir"; axel -n 13 --search=4 -N -a "$fname" # нормальная тулза
result="$?"
if [[ "$result" != "0" ]]; then sleep 2; fi # Ожидаем 2 секунды, дабы избежать черезчур частых попыток и, вследствие чего, повышенной загрузки ЦП
buf=`tail -n +2 $list | grep -v '$fname'` # Вырезаем имя текущей загрузки из списка
echo "$buf" > $list
if [[ "$result" == "0" ]]; then
echo "$fname" >> "${list}-ready.txt"
echo "Загрузка успешно завершена!"
else
echo "$fname" >> $list
echo "Загрузка не удалась - переносим её в конец списка."
fi
done