PDA

Bekijk de volledige versie : Download Engine 2.0 - скрипт для загрузки файлов (с поддержкой файлообменников)



Pages : [1] 2 3

Megarem
09-07-2007, 17:47
Назначение скрипта
Данный скрипт предназначен для автоматической загрузки файлов по протоколам http и ftp (c поддержкой файлообменников).

Благодарности
al37919 за идею и первоначальную версию скрипта
KGy за пару строчек, позаимствованных из его cgi-скриптов
angel_il за дальнейшее усовершенствование скрипта
Serg0 за разработку плагинов для файлообменников

Установка
Скачайте архив, прикрепленный к сообщению, распакуйте из него ipk пакет и установите на рутере:
ipkg install имя_пакета.ipkПри установке автоматически скачаются и установятся еще несколько необходимых для работы скрипта пакетов.

Настройка
Все настройки сосредоточены в одном файле /opt/etc/dlengine.conf


REFRESHTIME=30 # in seconds
EXITEMPTYQUEUE=NO # YES or NO
WGETBIN=/opt/bin/wget
CGIENGINENAME=dlengine.sh
USERAGENT="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"

BASEDIR=/tmp/harddisk/downloads/
PARTIALDIR=$BASEDIR"partial/"
COMPLETEDIR=$BASEDIR"completed/"
QUEUEFILE=$BASEDIR"files.queue"
DONEFILE=$BASEDIR"files.done"
ERRFILE=$BASEDIR"files.error"
LOGFILE=$BASEDIR"log"
TEMPDIR=/tmp/

AUTHEXP[0]="http://.*site\.net.*"
AUTHUSR[0]="admin"
AUTHPAS[0]="passw"
AUTHEXP[1]="ftp://ftp.site2\.net.*"
AUTHUSR[1]="root"
AUTHPAS[1]="123456"
AUTHEXP[2]="vip-file.com"
AUTHUSR[2]=""
AUTHPAS[2]="PLIM1B052A4"

PVTFTP="ftp.mysite.net"
PVTUSER="download"
PVTPASS="warezzz"

QUEUEFILE: список URL-ов предназначеных к закачке. Если надо изменить последовательность закачиваний - меняйте местами строки в этом файле. Закачка идет построчно сверху вниз. При замене первой строчки загрузка предыдущего файла будет продолжаться до конца, потом пойдет новый первый. Если надо запустить загрузку нового первого файла не дожидаясь окончания предыдущего, надо выполнить S50dlengine reload При этом неоконченый предыдущий сохранится и когда до него дойдет очередь будет загружаться с того места на котором остановился.
LOGFILE: процесс закачки текущего файла.
DONEFILE: список закачаных URL-ов
ERRFILE: список URL-ов, при закачке которых произошла ошибка
COMPLETEDIR: директория, содержащая закачаные файлы
PARTIALDIR: директория, содержащая частично-закачаные файлы
Скрипт позволяет выполнять автоматическую подстановку логина/пароля для заданных сайтов. В AUTHEXP[i] пишите регулярное выражения для идентификации вашего сайта, в AUTHUSR[i] AUTHPAS[i] - логин и пароль соответственно. Индексы должны начинаться от нуля и быть последовательными.

Использование скрипта
После установки в /opt/etc/init.d копируются два скрипта. Первый S50dlengine отвечает за работу с самим скриптом. Синтаксис /opt/etc/init.d/S50dlengine command . Поддерживаются следующие значения параметра command:
start --- запуск демона
stop --- остановка демона и загрузки
reload --- повторно считать список файлов и запустить первую строку на закачку без остановки демона
restart --- перезапуск демона и загрузки
Второй скрипт S90busybox_httpd запускает встроенный в прошивку busybox_httpd и обеспечивает веб-интерфейс скрипта (если у вас установлен свой http сервер, этот скрипт вам не нужен). Можно обойтись и без веб-интерфейса - через фтп или самбу добавлять новые закачки в QUEUEFILE (файл должен быть в формате UNIX!) и запускать/останавливать скрипт через телнет или ssh. Веб-интерфейс позволяет немного облегчить жизнь. Он доступен по адресу http://router:8080/cgi-bin/dlengine.sh

Замечания по использованию плагинов
depositfiles.com
Замечаний нет.
rapidshare.com
Чтобы скачивалось с использованием пароля, нужно записать логин/пароль в файле /opt/etc/dlengine.conf примерно так:

AUTHEXP[3]="^rapidshare.com"
AUTHUSR[3]="ЛОГИН"
AUTHPAS[3]="ПАРОЛЬ"Кроме того, в настройках Premium аккаунта на сайте rapidshare.com нужно установить птичку:
[v] Direct downloads
vip-file.com
Чтобы скачивалось с использованием пароля, нужно записать этот пароль в файл /opt/etc/dlengine.conf Логин не используется, поэтому его можно и не заполнять. Пример см. выше. Если для vip-file.com пароль не задан, то скрипт будет пытаться скачивать файл без пароля если есть ссылка "Или качайте очень медленно и бесплатно". Если этой ссылки нет (т.е. сервер не предложил скачать бесплатно), то скрипт пытается самостоятельно составить такую ссылку и скачает файл как будто эта ссылка есть. Но в режиме без пароля сервер отдаёт файл очень медленно.
hotfile.com
hotfile.com для некоторых файлов показывает картинки(captcha), поэтому скачиваются только те файлы, для которых картинки не показываются.
letitbit.net
Плагин самостоятельно пытается распознать капчу. Чтобы скачивалось с использованием пароля, нужно записать пароль в файле /opt/etc/dlengine.conf примерно так:

AUTHEXP[3]="^letitbit.net"
AUTHUSR[3]=""
AUTHPAS[3]="ПАРОЛЬ"
История
04.08.2010 - 2.0-19 Обновление плагинов
17.06.2010 - 2.0-18 Обновление плагинов
07.06.2010 - 2.0-17 Обновление плагинов
18.05.2010 - 2.0-16 Обновление плагинов
15.04.2010 - 2.0-15 Обновление плагинов
21.12.2009 - 2.0-14 Поддержка премиум аккаунтов на рапидшаре
21.12.2009 - 2.0-13 Обновление плагина, фикс от SSN
13.11.2009 - 2.0-12 Обновление плагинов
10.11.2009 - 2.0-11 Обновление плагинов
03.11.2009 - 2.0-10 Обновление плагинов
28.10.2009 - 2.0-9 Обновлен плагин для vipfile
20.10.2009 - 2.0-8 Фикс для ssl закачек
10.10.2009 - 2.0-7 Добавил в конфиг опцию ограничения скорости
30.09.2009 - 2.0-6 Исправил пакет, теперь зависимости должны работать нормально
28.09.2009 - 2.0-5 Новый плагин letitbit.net
23.09.2009 - 2.0-4 Добавил опцию выходить из скрипта при пустой очереди
19.09.2009 - 2.0-3 Тестирование скрипта прошло успешно, выложил релиз

Sheeft
10-07-2007, 01:03
Можешь постучать мне в асю 919т405 есть предложение кое как развить скрипт ;) жду!

als
14-07-2007, 15:58
Вроде бы все сделал строго по инструкции. Скрипт автозагружается, появились папки - partial and completed, пустой лог-файл и files.queue.
Добавляю ссылку в files.queue. Жду - ничего не происходит.

Тогда делаю так:
[admin@Asus root]$ /opt/etc/init.d/S50dlengine reload

Ответ:

"Reloading Download Engine... nothing to do."

В конфиге пробовал менять axel на wget - не помогло. Где причину поискать?

Megarem
14-07-2007, 16:32
Вроде бы все сделал строго по инструкции. Скрипт автозагружается, появились папки - partial and completed, пустой лог-файл и files.queue.
Добавляю ссылку в files.queue. Жду - ничего не происходит.
Странно, похоже скрипт и не начинает качать. Попробуй остановить скрипт, переключить его на wget, добавить ссылку в files.queue а потом запустить его вручную в консоли. Может какая ошибка вывалится.

als
14-07-2007, 18:25
Хм. Ну как-то все не очень хорошо.

1. В первый раз я для пробы пытался закачать html-файл.
Уже после того, как написал сообщение, увидел в логе, что в конце ссылки появляется "%0D", и ошибка 404". Причем, что совсем неприятно - после этой ошибки следующие файлы в списке скрипт не качает.

То же самое воспроизвел и на файле с расширением "stm" - с сайта BBC.
Когда же поставил на закачку один mp-3 файл, он начал качаться нормально. Попробовал еще несколько раз - закономерности не уловил. Html-файлы то нормально качаются, то в конце добавляется - 0D.
Этот символ "0D" вроде как-то связан с переводом формата в юникс?

Что посоветуете? Если пользоваться веб-интерфейсом, то таких проблем не должно быть?

2. После того, как установил веб-сервер thttpd скрипт перестал автозапускаться. Все проверил - все нужные файлы на своих местах, исполнимые. Но автозагрузки нет.

3. После того, как запускаешь скрипт вручную, не запускается http://192.168.1.1:81/cgi-bin/dlengine. Причем веб-сервер работает - тестовая страница открывается, transmission.cgi, которая лежит в той же папке, что и dlengine - запускается, а интерфейс для скрипта - нет.

Megarem
15-07-2007, 10:55
Html-файлы то нормально качаются, то в конце добавляется - 0D. Этот символ "0D" вроде как-то связан с переводом формата в юникс?
Файл с очередью на закачку должен быть в юникс формате, т.е. перевод строки - один только символ 0А.

3. После того, как запускаешь скрипт вручную, не запускается http://192.168.1.1:81/cgi-bin/dlengine. Причем веб-сервер работает - тестовая страница открывается, transmission.cgi, которая лежит в той же папке, что и dlengine - запускается, а интерфейс для скрипта - нет.
Был у меня похожий глюк. Если скрипт веб-интерфейса запускать из консоли - все работает, а если из браузера - нет. То ли глюк в баше, то ли в моем скрипте что-то не так... Вообщем это вылечилось даунгрейдом баша до версии 3.2-2. Попробуй.

Dayran
12-12-2008, 13:19
Установил, штука неплохая, но есть несколько вопросов:

1.
Переместите файл /opt/www/cgi-bin/dlengine в папку cgi-bin вашего веб-сервера и также сделайте его исполняемым.
Я не понял, куда этот файл надо вставить.

2.
AUTHEXP[0]="http://.*mysite\.net.*"
Я пользуюсь премиумом рапидшары, но не могу понять в каком формате это нужно записать.

SergKM
13-12-2008, 11:39
1. ну например в /opt/share/www/lighttpd или тому подобное...

Dayran
13-12-2008, 14:42
1. ну например в /opt/share/www/lighttpd или тому подобное...

Не получается, всё равно вместо страницы вот такой набор символов:

" # Read the queue declare -a queue readqueue # Processing the command cat >/tmp/post post="`cat /tmp/post`" if [ "$post" = "daemon=Start" ] && ! daemonrunning; then $DAEMON & sleep 3 elif [ "$post" = "daemon=Stop" ] && daemonrunning; then kill "`cat $MAINPID`" 2>/dev/null kill "`cat $TASKPID`" 2>/dev/null sleep 3 elif [ -n "`grep /tmp/post -e \"addurl=.*\"`" ]; then url=${post##addurl=} url=`echo $url | sed -e 's/ /_/g' -e 's/%3A/:/g' -e 's/%2F/\//g' -e 's/%7E/~/g' -e 's/+/ /'` echo "$url" >>$QUEUEFILE readqueue elif [ -n "`grep /tmp/post -e \"qpos=.*&qact=.*\"`" ]; then qpos=${post%%&*} qpos=${qpos##*=} act=${post##*act=} let qsize=${#queue }-1 if [ "$act" = "Up" ] && [ $qpos != 0 ]; then swapurls $qpos $qpos-1 savequeue elif [ "$act" = "Down" ] && [ $qpos != $qsize ]; then swapurls $qpos $qpos+1 savequeue elif [ "$act" = "Bottom" ] && [ $qpos != $qsize ]; then url=${queue[$qpos]} deleteurl $qpos savequeue echo "$url" >>$QUEUEFILE readqueue elif [ "$act" = "Top" ] && [ $qpos != 0 ]; then echo "${queue[$qpos]}" >/tmp/post deleteurl $qpos savequeue cat $QUEUEFILE >>/tmp/post mv /tmp/post $QUEUEFILE readqueue elif [ "$act" = "Delete" ]; then deleteurl $qpos savequeue fi fi # Status and start/stop buttons echo "

NRG_r
14-12-2008, 09:12
Не получается, всё равно вместо страницы вот такой набор символов:
у меня тоже самое
http://pic.ipicture.ru/uploads/081214/thumbs/7U3B1914W8.jpg (http://ipicture.ru/Gallery/Viewfull/10286220.html)

Dayran
14-12-2008, 12:44
веб-интерфейс конечно хотелось бы, но можно и без него обойтись. Меня вот больше интересует как сделать авторизацию на сайтах. Пробовал разные варианты:

AUTHEXP[0]="http://.*rapidshare\.com.*"
AUTHEXP[0]="http://.*rapidshare.com*"
AUTHEXP[0]="*rapidshare*"
пробовал даже конкретно писать ссылку:

AUTHEXP[0]="http://rapidshare.com/files/123456789/xxxxx.part01.rar"
ничего не помогает.

До этого использовал ADOS, но у него бьются архивы при скачке, вот и решил найти альтернативу.

Megarem
14-12-2008, 12:55
1. К вопросу о вебинтерфейсе. Если у вас lighthttpd, то файлик dlengine надо переименовать в dlengine.sh и исправить конфиг lighthttpd:

#### CGI module
cgi.assign = ( ".pl" => "/opt/bin/microperl",
".cgi" => "/opt/bin/microperl",
".sh" => "/opt/bin/bash" )

После этого все заработает. Ну и конечно не забываем ipkg install bash.

2. Авторизация. Авторизация поддерживается двух типов. Первый - это авторизация на фтп. Второй - это так называемая basic http. Это когда при попытке захода на сайт выскакивает браузерное окошко с просьбой ввести логин и пароль. Если для авторизации нужно вводить что-то в формы на страничке, то мой скрипт увы бессилен.

NRG_r
14-12-2008, 15:16
1. К вопросу о вебинтерфейсе. Если у вас lighthttpd, то файлик dlengine надо переименовать в dlengine.sh и исправить конфиг lighthttpd:

#### CGI module
cgi.assign = ( ".pl" => "/opt/bin/microperl",
".cgi" => "/opt/bin/microperl",
".sh" => "/opt/bin/bash" )

После этого все заработает. Ну и конечно не забываем ipkg install bash.

морда после этого работает...но вот все кнопки работать перестали, т.к. ссылаются на dlengine, а не dlengine.sh

Dayran
14-12-2008, 15:31
морда после этого работает...но вот все кнопки работать перестали, т.к. ссылаются на dlengine, а не dlengine.sh

выкладываю исправленный dlengine.

Хотя лично мне без авторизации всё это неинтересно, так как в основном все файлы сейчас на файлообменниках, прямых ссылок почти нет. Но идея была неплохая, самое главное, что используя cron можно было делать закачки по расписанию.

NRG_r
14-12-2008, 16:37
А ftp-ссылки в Юникоде (на нелатинице и с пробелами) Download Engine качать должен? У меня что-то не хочет...

Vacheslav
14-12-2008, 20:20
А тем, у кого thttpd как настраивать?

nnikif
14-12-2008, 23:00
Поскольку конфигурационный файл не работает с куками, а мне нужна только закачка с Rapidshare, я руками вписал в скрипт, там где формируется командная строка для wget:

-c --load-cookies /usr/local/rapidshare

В принципе, процесс запускается, вот образец лога:

Connecting to rapidshare.com|195.122.131.15|:80... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: http://rs107cg2.rapidshare.com/files/33634268/BerSymFanOp14.part1.rar%20%0D [following]
--2008-12-15 00:54:43-- http://rs107cg2.rapidshare.com/files/33634268/BerSymFanOp14.part1.rar%20%0D
Resolving rs107cg2.rapidshare.com... 82.129.35.108
Connecting to rs107cg2.rapidshare.com|82.129.35.108|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 60000000 (57M) [application/octet-stream]
Saving to: `/tmp/harddisk/downloads/partial/BerSymFanOp14.part1.rar %0D'
Но почему-то после того, как файл докачивается до 99 процентов, wget начинает все грузить заново, и в результате файл так и лежит в директории partial.
Этому могут быть какие-то объяснения?

Megarem
15-12-2008, 17:35
Этому могут быть какие-то объяснения?
Угу. Знаки процентов в ссылке на файл. Мой скрипт на это откровенно не рассчитан. Юникод тоже работать не должен.

А тем, у кого thttpd как настраивать?
Не знаю. Смотри доки по thttpd как запускать из под него cgi скрипты.

nnikif
16-12-2008, 14:22
Угу. Знаки процентов в ссылке на файл. Мой скрипт на это откровенно не рассчитан. Юникод тоже работать не должен.
Спасибо, уже почитал внимательно тред и разобрался. Проблема была с CR знаком из файла, созданного в Windows.
А вы не хотели бы сделать модификацию скрипта, чтобы он мог подгружать куки? Если нет, то я могу попробовать сделать, хотя опыт писания скриптов нулевой.

сначала сохраняешь куки:

curl \
--cookie-jar /usr/local/rapidshare \
--data "login=UNAME&password=PWORD" \
https://ssl.rapidshare.com/cgi-bin/premiumzone.cgi \
> /dev/null
(curl, потому что у меня wget почему-то этого делать не хочет)
потом их используешь их при загрузке:

wget --load-cookies /usr/local/rapidshare

Megarem
16-12-2008, 18:09
А вы не хотели бы сделать модификацию скрипта, чтобы он мог подгружать куки? Если нет, то я могу попробовать сделать, хотя опыт писания скриптов нулевой.
Честно говоря нет. Меня скрипт устраивает в своем текущем состоянии, но если есть желание его доработать - буду рад оказать посильную помощь. Нужно добавить в конфиг логин с пароль на рапидшару ну и пару дополнительных условий в коде.
Я обновил шапку - там самая последняя версия скрипта, которая живет у меня на рутере. Не помню правда, что именно я изменял. Помню добавил опции с таймаутами в запуск вгета.

ryzhov_al
17-12-2008, 14:25
Megarem, спасибо за скрипт!
По нажатию кнопочки "ScanFTP" происходит перечитывание списка заданий. Концы строк обрабатываются утилиткой dos2unix.

Либо укажи в шапке, что необходимо доустанавливать пакет hd2u,
Либо поправь скрипт так, чтобы он обходился без dos2unix, например так:


cat inputfile | tr -d "\r" > outputfile

Megarem
17-12-2008, 18:28
По нажатию кнопочки "ScanFTP" происходит перечитывание списка заданий.
По нажатию этой кнопочки скрипт лезет на фтп, смотрит, нет ли там файлов, которые мы еще не качали, и добавляет их в очередь. Это вообще недокументированнная функция :) Но за наводку спасибо, исправил.

wyatt
21-12-2008, 19:53
Привет. Может кто-нибудь сталкивался с проблемой запуска download engine по расписанию: по расписания только запускается, выключаться не хочет?

Megarem
22-12-2008, 17:22
Привет. Может кто-нибудь сталкивался с проблемой запуска download engine по расписанию: по расписания только запускается, выключаться не хочет?
Как запускается и останавливается? Что пишет?

wyatt
23-12-2008, 13:05
Как запускается и останавливается? Что пишет?
Проблемы были с кроном, заработало. Подскажите, почему например, добавляю очередь 3 файла, первый скачивает нормально, а переходить к следующим не хочет. Может в конце строки следует добавлять что-нибудь, чтобы следующая закачка начиналась?

Megarem
23-12-2008, 17:40
Подскажите, почему например, добавляю очередь 3 файла, первый скачивает нормально, а переходить к следующим не хочет. Может в конце строки следует добавлять что-нибудь, чтобы следующая закачка начиналась?
Что значит не хочет? Скачанный файл из списка удаляется?
P.S. Список закачек должен быть в формате linux (переводы строк). Иначе возможны глюки.

wyatt
23-12-2008, 18:10
Что значит не хочет? Скачанный файл из списка удаляется?
P.S. Список закачек должен быть в формате linux (переводы строк). Иначе возможны глюки.
можешь привести пример правильно наполненного files.queue ?
Файлы скачиваются, но не перемещаются из каталога partial в completed и закачку следующего не начинает.

Megarem
23-12-2008, 18:19
можешь привести пример правильно наполненного files.queue ?
Пример файла в аттаче. Если проблема не в неправильных переводах строк, то тогда покажи свой файл log.

wyatt
23-12-2008, 18:27
Пример файла в аттаче. Если проблема не в неправильных переводах строк, то тогда покажи свой файл log.
Я добавил в конце каждой строки tab и нормально качаться стало.
Подскажи пожалуйста как экранировать или заменять пробел и другие специальные символы в ссылках?

Megarem
23-12-2008, 18:36
Подскажи пожалуйста как экранировать или заменять пробел и другие специальные символы в ссылках?
К сожалению скрипт не рассчитан на спецсимволы в ссылках.

wyatt
23-12-2008, 18:46
К сожалению скрипт не рассчитан на спецсимволы в ссылках.
А пробелы?

Megarem
23-12-2008, 18:59
А пробелы?
Не помню. Пробелы вроде должны работать.

wyatt
23-12-2008, 19:56
Не помню. Пробелы вроде должны работать.
Скажи докачка оборванного файла с фтп поддерживается?
П.С. Огромное тебе спасибо за скрипт, давно искал альтернативу адосу.

Megarem
24-12-2008, 18:12
Поддерживается.

wyatt
25-12-2008, 11:59
Поддерживается.
Ты случайно не знаешь почему иногда скаченные файлы получаются размером в несколько раз больше? Я пытаюсь решить проблему скидывая их в каталог partial и ещё раз запустив докачку, но скрипт просто сливает их в completed. Не подскажешь как заставить его проверить контрольную сумму и докачать файл верно?

Megarem
27-12-2008, 14:38
Ты случайно не знаешь почему иногда скаченные файлы получаются размером в несколько раз больше?
Мой скрипт тут ни при чем. А чем качаешь? Если акселем, то переключишь на wget. Аксель шибко глюкав.

Vacheslav
29-12-2008, 22:52
1) Читаем: http://wl500g.info/showthread.php?t=3171 7d)
2) Вставляем в директорию cgi-bin скрипт dlengine.php:

<?php
system('/путь к www/cgi-bin/dlengine.sh');
?>

3) в браузере вводим: http://my.router:порт/cgi-bin/dlengine.php
Вуаля :)

angel_il
30-12-2008, 16:59
хорошо, а почему не ADOS? хотябы пару аргументов.

Megarem
31-12-2008, 13:22
хорошо, а почему не ADOS? хотябы пару аргументов.
Ну ADOS конечно более навороченный/имеет больше функций, с этим никто не спорит. Вот только например мне эти функции не нужны, мало того, иногда эти навороты только мешают (я сторонник минимализма). Я доволен своим скриптом на 100%. Все что нужно лично мне он выполняет отлично. Достоинства: не требует php и базы данных.
Интересно послушать других пользователей моего скрипта. И правда, почему не ADOS? Я то автор :) меня понять можно.

wyatt
31-12-2008, 14:18
Мой скрипт тут ни при чем. А чем качаешь? Если акселем, то переключишь на wget. Аксель шибко глюкав.
Качаю wget но подобную ситуацию наблюдал уже на 2-х файлах.

al37919
31-12-2008, 14:54
еще один аргумент --- чтобы не ставить php и как следствие не допаивать память

Visionary
02-01-2009, 12:14
хорошо, а почему не ADOS? хотябы пару аргументов.

у меня ados толком так и не заработал. тормоза жуткие. при любом действии нужно ждать 5-15 сек. иногда просто не работает. докачка не работает итд. Данный скрипт завелся и работает без проблем. Собственно для меня это главный аргумент.
Есть пара неприятных, но не критичных моментов (невозможность закачки с обменников, не возможность закачки нескольких файлов одновременно, для заполнения полосы итд).

Dayran
03-01-2009, 15:41
Если у вас все настроено, то скрипт будет стартовать автоматически при перезагрузке рутера

А как сделать, что бы он не стартовал? Мне нужно, что бы скрипт работал строго по времени - 23 до 8.

И ещё, при запуске скрипт выдаёт такое:
grep: can't load library 'libuClibc++.so.0'

ddimmassikk
04-01-2009, 16:30
Спасибо за скриптик. Очень все просто и надежно.

Но вот хотелось бы еще... чтобы можно было сохранять закаченные файлы в различных в папках.
Т.е., например, в файле с закачками указывать через пробел имя директории, либо оставлять пустым, тогда закачка сохраняться по дефолту :D
files.queue
<закачка1> <dir1>
<закачка2>
<закачка3> <dir2>

Или нет желания ни у кого усовершенствовать?)

Megarem
04-01-2009, 16:32
А как сделать, что бы он не стартовал? Мне нужно, что бы скрипт работал строго по времени - 23 до 8.
Не класть скрипт запуска в /opt/etc/init.d/

И ещё, при запуске скрипт выдаёт такое:
grep: can't load library 'libuClibc++.so.0'
ipkg install libuclibc++

Dayran
05-01-2009, 17:49
Всё заработало, спасибо за скрипт.


ipkg install libuclibc++Может добавить это в первый пост?

-=serg=-
06-01-2009, 11:17
Решил попробовать данный скрипт. Пакеты установил, настройки сделал. lighttpd запускается, скрипт запускается и качает, но на веб-интерфейс интерфейс попасть не могу, страница не найдена. Правда мне не совсем понятно как где именно должен быть dlengine.sh в /opt/share/www/lighttpd или /opt/share/www/lighttpd/cgi-bin хотя в любом варианте не работает.
Решил попробовать сделать ребут роутера, всё равно не работает, зато исчезли все папки с винта кроме downloads:eek: После предпринятых разыскных мероприятий они нашлись в другом месте. Раньше всё было в /tmp/harddisk а теперь в /tmp/mnt/disc0_1.
Вообщем почему может не работать веб-интерфейс и поменялась точка монтирования диска?

Dayran
06-01-2009, 12:13
Имхо веб-интерфейс тут вообще не нужен, тем более, что вся его функциональность сводится в добавлении ссылок в files.queue, что гораздо проще сделать простым копипастом, да и не нужно нагружать роутер лишними пакетами типа lighttpd

-=serg=-
06-01-2009, 21:12
Вроде разобрался.
Чтобы интерфейс работал надо, как минимум разрешить ешё "mod_cgi" в lighttpd.conf и поставить php

ipkg install php-fcgi
возможно что то еще, но я столько всего перепробовал, что однозначно не скажу.:)
Проблема изменения точки монтирования диска при перезагрузке исчезает, если убрать S50dlengine из /opt/etc/init.d:rolleyes: Кто виноват и что делать?:)

Megarem
07-01-2009, 12:47
Вроде разобрался.
Чтобы интерфейс работал надо, как минимум разрешить ешё "mod_cgi" в lighttpd.conf и поставить php
mod_cgi - согласен. А вот php точно не нужен.


Проблема изменения точки монтирования диска при перезагрузке исчезает, если убрать S50dlengine из /opt/etc/init.d:rolleyes: Кто виноват и что делать?:)
Внимательно читай историю прошивок:

Переделано автомонтирование дисков: теперь они монтируются в /tmp/mnt/, /tmp/harddisk - символическая ссылка на первый раздел;

-=serg=-
07-01-2009, 20:37
mod_cgi - согласен. А вот php точно не нужен.
без php у меня не получилось, станица не найдена:(

Внимательно читай историю прошивок:
Код:

Переделано автомонтирование дисков: теперь они монтируются в /tmp/mnt/, /tmp/harddisk - сим
настраивал довольно давно с прямым указанием монтировать в /tmp/harddisk и менять что то было лень. проблема появилась только с S50dlengine, значит и виноват он. хотя сейчас это уже не актуально, собрался с силами и переделал всю систему загрузки роутера, спасибо al37919:)

зато появился новый вопрос, как скрипт обрабатывает ситуацию когда сервер почему-либо не отвечает? я так понимаю тупо его долбит, вместо перехода к следующей ссылке в очереди

--2009-01-07 19:36:37-- ftp://10.127.0.104/war.avi
(try: 6) => `/tmp/harddisk/downloads/partial/war.avi'
Connecting to 10.127.0.104:21... failed: Connection timed out.
Retrying.

--2009-01-07 19:37:43-- ftp://10.127.0.104/war.avi
(try: 7) => `/tmp/harddisk/downloads/partial/war.avi'
Connecting to 10.127.0.104:21...
в итоге может получиться, что за целый день он ничего не скачает из списка, застряв на выключенном серваке. владелец сервера мне тоже спасибо не скажет, если например превышено число юзеров для для доступа, а я буду ломиться каждые 20-60сек
а время между попытками подключения настраивается?

Megarem
08-01-2009, 14:11
без php у меня не получилось, станица не найдена:(
Странно, у меня все рабоает без него.


зато появился новый вопрос, как скрипт обрабатывает ситуацию когда сервер почему-либо не отвечает? я так понимаю тупо его долбит, вместо перехода к следующей ссылке в очереди
Ага. Но я посмотрел сейчас код - я там предусмотрел подобный вариант. Можно добавить пару строчек и он будет переставлять файл в конец списка и качать следующий. Исправь функцию в /opt/bin/dlengine

isfiledelay()
{
if [ -n "`echo $1 | grep \"Connection timed out\"`" ]; then
return 0
fi
return 1
}


а время между попытками подключения настраивается?
В конфиге параметр REFRESHTIME.

angel_il
08-01-2009, 16:24
Megarem,
Не будешь против если я сделаю пакет? :)

Megarem
08-01-2009, 16:34
Megarem,
Не будешь против если я сделаю пакет? :)
Нет конечно.

angel_il
08-01-2009, 16:40
меня смущает axel который лежит в bin получается что будет конфликт версий. его надо или выкинуть или переименовать. Какие есть предложения?

Megarem
08-01-2009, 18:05
меня смущает axel который лежит в bin получается что будет конфликт версий. его надо или выкинуть или переименовать. Какие есть предложения?
Выкинь. Так будет правильней.
P.S. А есть пакет с акселем? Где?

angel_il
08-01-2009, 18:16
А есть пакет с акселем? Где?
нетуть :) но вдруг будет :)

короче у меня при инсталляции пакета будет проверяться наличие axel и если он есть то из dlengine ставиться не будет, в противном случае поставится.

-=serg=-
08-01-2009, 22:06
Эх, что то не получается у меня найти общий язык со скриптом.:(

isfiledelay()
{
if [ -n "`echo $1 | grep \"Connection timed out\"`" ]; then
return 0
fi
return 1
}
почему то такой вариант у меня не работает и при параметре REFRESHTIME равном 180 соединяется с сервером раз в минуту.:confused:
Скрипт мне нужен в основном для локалки, а там ссылки могут быть любыми.:D
Ссылку с русскими буквами и пробелом отказывается закачивать - No such directory, а её в "..." - Unsupported scheme. При этом дальше вообще ничего не происходит. Попробывал по аналогии добавить для этого случая в раздел isfilerror() эти ситуации

if [ -n "`echo $1 | grep \"No such directory\"`" ]; then
return 0
fi

так результата вроде нет, хотя один раз вроде бы перешло к следующей, а её добавило в files.error.
Это я такой криворучка или действительно не работает?
Еще полезно иметь в веб-интерфейсе кнопки reload и restart.

angel_il
09-01-2009, 10:31
Эх, что то не получается у меня найти общий язык со скриптом.:(

isfiledelay()
{
if [ -n "`echo $1 | grep \"Connection timed out\"`" ]; then
return 0
fi
return 1
}



isfiledelay()
{
echo $1 >> путь/debug.message
if [ -n "`echo $1 | grep \"Connection timed out\"`" ]; then
return 0
fi
return 1
}

Потом посмотреть что в этом файле...

-=serg=-
09-01-2009, 14:28
isfiledelay()
{
echo $1 >> /tmp/harddisk/downloads/debug.message
if [ -n "`echo $1 | grep \"Connection timed out\"`" ]; then
return 0
fi
return 1
}

Потом посмотреть что в этом файле...
файла не появляется:) в syslog.log тоже ничего нет

angel_il
09-01-2009, 14:51
файла не появляется:) в syslog.log тоже ничего нет

нет сислог не причем
если файл не появляется то оно скорее всего в isfiledelay не заходит.

angel_il
09-01-2009, 15:06
кстати тестировал разные ссылки... и вот что еще тут нашел


wget "http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=nginx+cgi"
--2009-01-09 17:01:11-- http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=nginx+cgi
Resolving www.google.com... 74.125.43.104, 74.125.43.147, 74.125.43.99, ...
Connecting to www.google.com|74.125.43.104|:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
2009-01-09 17:01:13 ERROR 403: Forbidden.


предлагаю сравнить с


wget "http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=nginx+cgi" --user-agent="Gecko/2008120122 Firefox/3.0.5"


Saving to: `NginxSimpleCGI'

[ <=> ] 54,517 20.6K/s in 2.6s

2009-01-09 16:59:18 (20.6 KB/s) - `NginxSimpleCGI' saved [54517]


казалось бы какой то user-agent :)

-=serg=-
09-01-2009, 15:38
казалось бы какой то user-agent :)
Если задуматься, то это не сильно удивляет, хотя в скрипте такая конструкция не работает.
А почему скрипт не позволяет использовать весь функционал качалок?

angel_il
09-01-2009, 16:35
Если задуматься, то это не сильно удивляет, хотя в скрипте такая конструкция не работает.


ну почему не работает :)



А почему скрипт не позволяет использовать весь функционал качалок?

это джаст фо фан. Понадобился автору определенный функционал он его реализовал.

Megarem
09-01-2009, 16:43
ну почему не работает :)
это джаст фо фан. Понадобился автору определенный функционал он его реализовал.
Именно! Скрипт был написан прежде всего для собственных нужд и содержит именно тот функционал,который нужен лично мне (типа функции сканирования фтп и добавления в список файлов, которые оттуда еще не скачены). Он написан на скриптовом языке и легко поддается правке/усовершенствованию. Если вам нужна какая-то функция - допишите. Нашли ошибку - исправьте. Я с удовольствием потом приму ваши добавления/исправления и обновлю скрипт. Unix-way господа :) На данный момент мне весьма лениво изучать почему у вас что-то не работает.

P.S. Что-то блин к моему скрипту в последний месяц возник огромный интерес :) К чему-бы это?
P.P.S. angel_il: прикольно, надо добавить в скрипт строчку про user-agent на всякий случай.

-=serg=-
09-01-2009, 17:43
ну почему не работает :)
Если делать в консоли, то результат идентичен вашему. Скрипт выдает следующее:
"http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=nginx+cgi" --user-agent="Gecko/2008120122 Firefox/3.0.5" результат "http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=nginx+cgi" --user-agent="Gecko/2008120122 Firefox/3.0.5": Unsupported scheme.

если http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=nginx+cgi --user-agent="Gecko/2008120122 Firefox/3.0.5" результат ERROR 403: Forbidden.

Megarem
Я вас не обвиняю в чем либо, а сообщаю о своих затруднениях в соответствии с вашим пожеланием :)

Вообщем пробуйте. Замечания и предложения приветствуются.

Мои познания в области программирования нулевые и исправить скрипт под свои потребности без глубокого изучения вряд ли возможно. Хотя вашу лень тоже прекрасно понимаю.;) Буду как-нибудь выкручиваться.

angel_il
09-01-2009, 21:36
я в общем немного поработал напильником, добавил чуть-чуть аякса, немного юзер-агента и сделал пакет...

angel_il
10-01-2009, 07:03
Тип файла: zip dlengine_1.0-1_mipsel.zip (25.9 Кбайт, 666 просмотров)


666 просмотров... мда :)

angel_il
10-01-2009, 07:52
666 просмотров... мда :)

вот я тормознул, вчера в ходе экспериментов тренировался на ссылке на этот файл, ушел спать а оно продолжало качать его, видимо не в силах выйти из цикла... а еще и удивляюсь почему так много просмотров. :)

al37919
10-01-2009, 09:27
н-да :D:D:D а я то смотрю как народ с голодухи накинулся --- все качают и качают. Вот так и накручивают счетчики :)

-=serg=-
10-01-2009, 13:45
Такс, докладываю. Домашнюю директорию сразу поменял на /tmp/harddisk/downloads. Часть файлов получилась при установке не исполняемыми. Веб-интерфейс не открывается, http://router/cgi-bin/dlengine.cgi тоже пробывал. Переименовал dlengine.cgi в dlengine.sh и CGIENGINENAME=dlengine.sh интерфейс появился, хотя refresh log не работает и новую ссылку добавил в конец старой. Сам скрипт качает.:)

Megarem
10-01-2009, 14:08
я в общем немного поработал напильником, добавил чуть-чуть аякса, немного юзер-агента и сделал пакет...
О, спасибо. Объединил изменения со своим скриптом. Немножко поковырял аякс (опера упорно кешировала лог). Вернул обратно кнопку Reload (она все-таки нужна, аякс не перегружает список закачек). Доведу до ума еще функцию scanftp и можно будет пересобрать пакет.

angel_il
10-01-2009, 15:12
О, спасибо. Объединил изменения со своим скриптом. Немножко поковырял аякс (опера упорно кешировала лог). Вернул обратно кнопку Reload (она все-таки нужна, аякс не перегружает список закачек). Доведу до ума еще функцию scanftp и можно будет пересобрать пакет.

давай я список закачек тоже заАякслю?

кстати в закачке axel-лем есть проблема... с ключем -o, он задает не директорию а имя файла, а в скрипте передается именно директория.
Кроме того в wget есть косяк в плане задания имени файла и опция --content-disposition к сожалению хотя и присутствует но не работает.

angel_il
10-01-2009, 15:16
Такс, докладываю. Домашнюю директорию сразу поменял на /tmp/harddisk/downloads. Часть файлов получилась при установке не исполняемыми. Веб-интерфейс не открывается, http://router/cgi-bin/dlengine.cgi тоже пробывал. Переименовал dlengine.cgi в dlengine.sh и CGIENGINENAME=dlengine.sh интерфейс появился, хотя refresh log не работает и новую ссылку добавил в конец старой. Сам скрипт качает.:)

работало у меня в опере, фф3 и ИЕ

-=serg=-
10-01-2009, 16:04
работало у меня в опере, фф3 и ИЕ
Везде должно быть dlengine.cgi и работать ссылка http://router/cgi-bin/dlengine.cgi?

Megarem
10-01-2009, 17:21
давай я список закачек тоже заАякслю?
Можно, но тогда нужно повесить на одну кнопку обновление и лога и списка закачек.


кстати в закачке axel-лем есть проблема... с ключем -o, он задает не директорию а имя файла, а в скрипте передается именно директория.
Downloaded data will be put in a local file with the same name,
unless you specify a different name using this option. You can
specify a directory as well, the program will append the filename.

angel_il
10-01-2009, 17:48
вобщем набодяжил я тут способ получения имени файла из заголовка с помощью wget-a но при этом избежать скачивания самого файла...

wget url --header="Range: bytes=0-999999999999" -S -t 1 2>&1|grep "ontent-disposition"|cut -f2 -d"="

angel_il
10-01-2009, 18:09
хотя может лучше воспользоваться curl-ом?

angel_il
10-01-2009, 18:20
curl url -D- -r 0-1|grep "ontent-disposition"|cut -f2 -d"="

Megarem
10-01-2009, 19:04
вобщем набодяжил я тут способ получения имени файла из заголовка с помощью wget-a но при этом избежать скачивания самого файла...
Никак не пойму зачем это вообще нужно.

angel_il
10-01-2009, 19:08
Никак не пойму зачем это вообще нужно.

чтобы получить имя файла.

angel_il
10-01-2009, 19:09
например как определить как будет называться файл со ссылки
http://wl500g.info/attachment.php?attachmentid=4070&d=1231536050

angel_il
10-01-2009, 19:11
имя файла отдается сервером в заголовке. поле "Content-disposition"

angel_il
10-01-2009, 20:12
Megarem,
а нельзя ли на обновку посмотреть?

-=serg=-
11-01-2009, 00:06
Эх гуру-телепаты, не могли подсказать, что microperl надо поставить:D и тогда заработает интерфейс с cgi. Мы же ламеры, сами не догодаемся, perl стоит думал этого хватит.:)
Хотя нажатие refresh log всё равно не работает и что с ним делать незнаю.

Last log events: refresh log
#!/opt/bin/bash . /opt/etc/dlengine.conf . /opt/bin/dlelib echo "Content-type: text/html" echo echo "" echo "" echo "" echo "" echo "
"
tail -n10 $LOGFILE
echo "
" echo ""
Зато прикрутил кнопку Reload потратив всего навсего часа 3:p хотя там делов оказывается на 2 минуты.

angel_il
11-01-2009, 07:44
кстати у кого какой сервер используется?

я все это дело прикрутил на busybox_httpd который уже установлен в прошивке

Megarem
11-01-2009, 18:41
angel_il: Работает он под любым вебсервором, который умеет cgi. Лично я настраивал busybox_httpd и lighttpd. Обновка в аттаче.
-=serg=-: Да не нужен скрипту microperl. Я не знаю почему у тебя он понадобился.

Megarem
11-01-2009, 18:46
angel_il: Работает он под любым вебсервором, который умеет cgi. Лично я настраивал busybox_httpd и lighttpd. Обновка в аттаче.
-=serg=-: Да не нужен скрипту microperl. Я не знаю почему у тебя он понадобился.

P.S. Внутри обновки новый axel 2.2 (взял из соседней темы). Вроде работает, но особенно не тестил.

angel_il
11-01-2009, 19:23
angel_il: Работает он под любым вебсервором, который умеет cgi. Лично я настраивал busybox_httpd и lighttpd. Обновка в аттаче.
-=serg=-: Да не нужен скрипту microperl. Я не знаю почему у тебя он понадобился.

в том то и дело что "любой" это только бизибоксовский и lighttpd. :)
У меня nginx а он не умеет, придется скрещивать busybox_httpd + nginx, чтобы авторизация и все остальные ресурсы были под nginx. Не понравился мне lighttpd.

-=serg=-
11-01-2009, 21:24
Я понятия не имею, почему некоторые вещи у меня в роутере работают загадочным образом. Требуются пакеты, без которых у других все работает. Почему crontab -e говорит, что у меня нет доступа к этой программе, а прямое редактирование crontab работает. Почему fuppes падает через минуту с сегментатион фаулт:confused:

angel_il: Работает он под любым вебсервором, который умеет cgi. Лично я настраивал busybox_httpd и lighttpd.
Вот нельзя было сразу сказать про busybox_httpd:( и зачем я тогда ставил lighttpd. Причем под busybox_httpd всё работает и даже refresh log обновляется, а под lighttpd нажатие кнопки показывает содержимое lastlog.

Megarem, angel_il: Последнее что приходит на ум. Можно увидеть ваш lighttpd.conf

angel_il
12-01-2009, 01:27
выложу для ознакомления вариант...
есть нюанс но для теста сойдет, по нажатию на ссылку to file идет выделение имени файла из ссылки...

нюанс в том что к итоговой ссылке добавляется &loc_fname=ИмяФайла и никак не обрабатывается. это дело надо бы обсудить, как удобнее сделать.

angel_il
12-01-2009, 07:58
К сожалению скрипт не рассчитан на спецсимволы в ссылках.

ну да я ведь в той версии поправлял кой чего на тему спецсимволов, а в твоей я смотрю опять поломано :)

Megarem
12-01-2009, 18:37
ну да я ведь в той версии поправлял кой чего на тему спецсимволов, а в твоей я смотрю опять поломано :)
Где? :confused: Я запускал diff и вроде перенес все изменения. Вообщем давай сделаем так: я вроде больше пока не собирался ковыряться в скрипте, так что отдаю его тебе на растерзание :) А потом заберу у тебя последнюю версию.

angel_il
12-01-2009, 19:52
Где? :confused: Я запускал diff и вроде перенес все изменения. Вообщем давай сделаем так: я вроде больше пока не собирался ковыряться в скрипте, так что отдаю его тебе на растерзание :) А потом заберу у тебя последнюю версию.

ok :) а как на счет работы определения имени файла?

Megarem
12-01-2009, 19:58
ok :) а как на счет работы определения имени файла?
Что как? Если сделаешь - неплохо.

angel_il
12-01-2009, 20:17
Что как? Если сделаешь - неплохо.

дак я ж ночью выложил вариант, там вставляешь ссылку, потом по "to file" кликаешь

angel_il
14-01-2009, 01:18
Вобщем вот выкладываю последнюю версию в виде пакета.

+Решил проблему с ситуацией когда не определялась ошибка при закачке
+Добавил отображение закаченных файлов
+Добавил функцию определения имени файла
+подложил новый axel

angel_il
14-01-2009, 12:06
т.к. сейчас модно заводить проекты на гугле, выложил все туда
http://code.google.com/p/dlengine/
естественно без претензий на авторство :)

Megarem
14-01-2009, 17:59
Вобщем вот выкладываю последнюю версию в виде пакета.
Потестим. Кстати, я тут че подумал. Раз веб-интерфейс работает под busybox_httpd, не сделать ли такой пакет, чтобы он заодно конфигурил и запускал busybox_httpd? Это может облегчить жизнь некоторым пользователям.
P.S. Поправил первый пост. Убрал аттач, поставил ссылку на гугл.

angel_il
15-01-2009, 09:52
запуск busybox_httpd я попробую из родной веб странички сделать...

-=serg=-
15-01-2009, 20:43
Поставил последнюю версию. Обновление лога заработало на обоих вэб-серверах. С пробелами и русскими буквами всё равно не справляется, но самое неприятное, что скрипт тормозится на такой ссылке, получается, что isfilerror() корректно не обрабатывается.
Заметил особенность, в busybox_httpd наверху страницы пишется ошибка, а под lighttpd нет.

angel_il
15-01-2009, 20:46
Поставил последнюю версию. Обновление лога заработало на обоих вэб-серверах. С пробелами и русскими буквами всё равно не справляется, но самое неприятное, что скрипт тормозится на такой ссылке, получается, что isfilerror() корректно не обрабатывается.
Заметил особенность, в busybox_httpd наверху страницы пишется ошибка, а под lighttpd нет.

кривую ссылку можно получить для препарирования?

-=serg=-
15-01-2009, 21:23
Я экспериментирую на локальных ftp, надо попробовать найти что-нибудь в инете. Хотя 404 ошибка обрабатывается нормально, но и запись для неё отличается от остальных.

-=serg=-
15-01-2009, 23:04
Вот здесь www.shop.teanadin.ru/index.php?categoryID=5&show_all=yes есть много рисунков упаковки и у них в пути пробел, а иногда и "!". Скрипт отказывается штатно обрабатывать их. Его реакция зависит еще и от того как вводить ссылку. Порой он в принципе даже скачивает рисунок, но файл получается без расширения и остается в partial. Восклицательный знак при этом превращается в %.
На кнопку reload вы команду не повесели?
Вот еще например http://www.lanly.ru/upload/iblock/705/zuvg%20hwmi%203.jpg

angel_il
16-01-2009, 07:37
Вот здесь www.shop.teanadin.ru/index.php?categoryID=5&show_all=yes есть много рисунков упаковки и у них в пути пробел, а иногда и "!". Скрипт отказывается штатно обрабатывать их. Его реакция зависит еще и от того как вводить ссылку. Порой он в принципе даже скачивает рисунок, но файл получается без расширения и остается в partial. Восклицательный знак при этом превращается в %.
На кнопку reload вы команду не повесели?
Вот еще например http://www.lanly.ru/upload/iblock/705/zuvg%20hwmi%203.jpg

ok, домой приду поправлю, там не так страшно, в принципе ты можешь сам поменять кусок замены спецсимволов
вот тут происходит замена

url=`echo $url | sed -e 's/%3F/?/g' -e 's/%3D/=/g' -e 's/%26/\&/g' -e 's/ /_/g' -e 's/%3A/:/g' -e 's/%2F/\//g' -e 's/%7E/~/g' -e 's/+/ /'`

в файле dlengine.sh
для процента надо добавить что то типа sed -e 's/%25/\%/g' или sed -e 's/%25/%/g'
точно сейчас не скажу.
для восклицательного знака соответственно
sed -e 's/%21/!/g'

angel_il
16-01-2009, 07:47
вообще чтобы понять что на что менять достаточно вставить этот символ в строку добавления урла и нажать "add" в списке урлов "Download Queue:" появится строка типа
%21&loc_fname=
это я вставил знак "!" в урл, значит добавить надо правило конвертации
sed -e 's/%21/!/g'
если это спецсимвол используется sed для задания регулярного выражения значит его надо экранировать. добавляя перед символом обратный слэш.
sed -e 's/%21/\!/g'

символы которые нужно экранировать это например * ? } { ( ) \ / и др. можно найти в гугле или опытным путем.

-=serg=-
16-01-2009, 10:13
На практике постараюсь вечером попробовать, хотя у меня есть сомнения. Если правильно уловил суть, то sed поменяет в добавляемой ссылке %21 на !, что эквивалентно если я сделаю это руками, а такой вариант я пробовал.
Почитал умные мануалы про bash, вероятно надо еще добавить кавычки

url=`echo "$url" | sed -e 's/%3F/?/g' -e 's/%3D/=/g' -e 's/%26/\&/g' -e 's/ /_/g' -e 's/%3A/:/g' -e 's/%2F/\//g' -e 's/%7E/~/g' -e 's/+/ /'`

angel_il
16-01-2009, 10:49
На практике постараюсь вечером попробовать, хотя у меня есть сомнения.
зуб даю :)

Megarem
16-01-2009, 18:26
для процента надо добавить что то типа sed -e 's/%25/\%/g' или sed -e 's/%25/%/g'
точно сейчас не скажу.
для восклицательного знака соответственно
sed -e 's/%21/!/g'
Эээх, пора подключать тяжелую артиллерию:

ipkg install perl perl-uri
perl -e "use URI::Escape;print(uri_unescape(\"%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D00%B5%D0%B4%D0%B8% D1%82\"));"
Эта конструкция будет работать не только со всеми спецсимволами, но и с русскими буквами!
angel_il: еще небольшой патч веб-интерфейса, добавь условие, а то ошибка вываливается иногда:

elif [ "$post" = "daemon=Stop" ] && daemonrunning; then
kill "`cat $MAINPID`" 2>/dev/null
if [ -e $TASKPID ]; then
kill "`cat $TASKPID`" 2>/dev/null
fi

angel_il
16-01-2009, 19:23
Эээх, пора подключать тяжелую артиллерию:

ipkg install perl perl-uri
perl -e "use URI::Escape;print(uri_unescape(\"%D0%9C%D0%B8%D0%BA%D1%80%D0%BE%D00%B5%D0%B4%D0%B8% D1%82\"));"

м... как то стремно еще и перл подрубать, лучше седом, просто всех прописать потихоньку

Скрипт поправил. попозже выложу.

-=serg=-
16-01-2009, 22:27
зуб даю :)
ты знал, ты знал:D
действительно качает и с пробелами и со скобками и даже с русскими буквами:)

Last completed:
www.shop.teanadin.ru/products_pictures/%21firma_brazilsky%20samba_resize%20L.jpg -> %21firma_brazilsky%20samba_resize%20L.jpg
www.lanly.ru/upload/iblock/705/zuvg%20hwmi%203.jpg -> zuvg%20hwmi%203.jpg
www.shop.teanadin.ru/products_pictures/_cof_india%20resize.jpg -> _cof_india%20resize.jpg
http://users.homenetwork.ru/resize.php?src=./data/media/23/shiftcard3.jpg -> shiftcard3.jpg
www.shop.teanadin.ru/products_pictures/_cof_india%20resize.jpg -> resize.jpg
www.myphotoshop.ru/photo/albums/userpics/10021/normal_%D3%F0%EE%EA_Photoshop_-_%F4%EE%F2%EE%EC%EE%ED%F2%E0%E6.jpg -> normal_%D3%F0%EE%EA_Photoshop_-_%F4%EE%F2%EE%EC%EE%ED%F2%E0%E6.jpg

одна незадача, имена файлов получаются чудовищными:( я нашел способ бороться, надо написать имя файла в поле to file: но этот способ не работает для русских названий
можно как то с помощью sed добавить какое-нибудь правило для этого поля?

angel_il
17-01-2009, 10:55
ты знал, ты знал:D
действительно качает и с пробелами и со скобками и даже с русскими буквами:)

одна незадача, имена файлов получаются чудовищными:( я нашел способ бороться, надо написать имя файла в поле to file: но этот способ не работает для русских названий
можно как то с помощью sed добавить какое-нибудь правило для этого поля?

а как же "to file" я же для этого ее прикрутил
по ссылке "to file" надо сначала щелкруть

angel_il
17-01-2009, 11:12
можно как то с помощью sed добавить какое-нибудь правило для этого поля?

можно конечно :) getfilename.sh

angel_il
18-01-2009, 13:35
ты знал, ты знал:D
действительно качает и с пробелами и со скобками и даже с русскими буквами:)


Итоговую то строчку с sed-ом то выложи, чтобы ее в скрипт включить.

-=serg=-
19-01-2009, 13:47
Итоговую то строчку с sed-ом то выложи, чтобы ее в скрипт включить.
Конечно выложу, просто занят был и до конца ещё не сделал. Сегодня завтра закончу.
Возникли трудности с getfilename.sh, правила игнорируются и для поля "to file" они берутся из dlengine.sh:confused:

kRaB
19-01-2009, 21:59
Народ поправьте кривые ручки.
в файле указанном в QUEUEFILE одна ссылка:
ftp://ftp1.telecom.by/Media/StorageA/8mile.avi
При запуске руками выдает следующее:


Starting Download Engine... done.
: No such file or directorytmp/mnt/disc0_2/opt/ados/user/dl/partial/ftp://ftp1.telecom.by/Media/StorageA/8mile.avi

в настройках
BASEDIR=/tmp/mnt/disc0_2/opt/ados/user/dl/
PARTIALDIR=$BASEDIR"partial/"


и так на любую ссылку и с любыми папками указанными в настройках...
Где грабли искать?

angel_il
19-01-2009, 23:02
к ссылке надо прибавить &loc_fname=ИмяФайла
ИмяФайла можно оставить пустым а вот &loc_fname= должно присутствовать

angel_il
19-01-2009, 23:04
согласен что неочевидно, добавлю проверку на отсутствие этого параметра но пока сделано так, позже будет поправлено.

kRaB
20-01-2009, 10:50
к ссылке надо прибавить &loc_fname=ИмяФайла
ИмяФайла можно оставить пустым а вот &loc_fname= должно присутствовать

Ок помогло.
Но если &loc_fname= пустая строка, то такая ссылка
http://wl500g.info/attachment.php?attachmentid=4101&d=1231892199

выдает следующее


Файл скачанных ссылок
http://wl500g.info/attachment.php?attachmentid=4101&d=1231892199 -> attachment.php?attachmentid=4101&d=1231892199

А так все работает. Огромное спасибо.
З.Ы.: Перешел сюда с Ados, т.к. он работает не стабильно... из-за заблаговременного определения размера файла :)

-=serg=-
20-01-2009, 12:06
kRaB
Ты вводишь ссылку прямо в файл, минуя вэб-интерфейс?
Попробуй в вэб-интерфейсе втавить ссылку, кликнуть "to file", а потом add.

-=serg=-
20-01-2009, 19:51
Собственно примерно так:

url=`echo $url | sed -e 's/%3F/?/g' -e 's/%3D/=/g' -e 's/%20/ /g' -e 's/%3A/:/g' -e 's/%7E/~/g' -e 's/+/ /' -e 's/%25/%/g' -e 's/%28/\(/g' -e 's/%29/\)/g' -e 's/%2F/\//g' -e 's/%22/\"/g' -e 's/%D0%90/%C0/g' -e 's/%D0%B0/%E0/g' -e 's/%D0%91/%C1/g' -e 's/%D0%B1/%E1/g' -e 's/%D0%92/%C2/g' -e 's/%D0%B2/%E2/g' -e 's/%D0%93/%C3/g' -e 's/%D0%B3/%E3/g' -e 's/%D0%94/%C4/g' -e 's/%D0%B4/%E4/g' -e 's/%D0%95/%C5/g' -e 's/%D0%B5/%E5/g' -e 's/%D0%81/%A8/g' -e 's/%D1%91/%B8/g' -e 's/%D0%96/%C6/g' -e 's/%D0%B6/%E6/g' -e 's/%D0%97/%C7/g' -e 's/%D0%B7/%E7/g' -e 's/%D0%98/%C8/g' -e 's/%D0%B8/%E8/g' -e 's/%D0%99/%C9/g' -e 's/%D0%B9/%E9/g' -e 's/%D0%9A/%CA/g' -e 's/%D0%BA/%EA/g' -e 's/%D0%9B/%CB/g' -e 's/%D0%BB/%EB/g' -e 's/%D0%9C/%CC/g' -e 's/%D0%BC/%EC/g' -e 's/%D0%9D/%CD/g' -e 's/%D0%BD/%ED/g' -e 's/%D0%9E/%CE/g' -e 's/%D0%BE/%EE/g' -e 's/%D0%9F/%CF/g' -e 's/%D0%BF/%EF/g' -e 's/%D0%A0/%D0/g' -e 's/%D1%80/%F0/g' -e 's/%D0%A1/%D1/g' -e 's/%D1%81/%F1/g' -e 's/%D0%A2/%D2/g' -e 's/%D1%82/%F2/g' -e 's/%D0%A3/%D3/g' -e 's/%D1%83/%F3/g' -e 's/%D0%A4/%D4/g' -e 's/%D1%84/%F4/g' -e 's/%D0%A5/%D5/g' -e 's/%D1%85/%F5/g' -e 's/%D0%A6/%D6/g' -e 's/%D1%86/%F6/g' -e 's/%D0%A7/%D7/g' -e 's/%D1%87/%F7/g' -e 's/%D0%A8/%D8/g' -e 's/%D1%88/%F8/g' -e 's/%D0%A9/%D9/g' -e 's/%D1%89/%F9/g' -e 's/%D0%AA/%DA/g' -e 's/%D1%8A/%FA/g' -e 's/%D0%AB/%DB/g' -e 's/%D1%8B/%FB/g' -e 's/%D0%AC/%DC/g' -e 's/%D1%8C/%FC/g' -e 's/%D0%AD/%DD/g' -e 's/%D1%8D/%FD/g' -e 's/%D0%AE/%DE/g' -e 's/%D1%8E/%FE/g' -e 's/%D0%AF/%DF/g' -e 's/%D1%8F/%FF/g'`
Есть проблема с пробелами, если они в ссылке в виде %20 или сделать это руками, то всё ок. Если оставить пробел, то не качается нормально.
Как всё таки правильно добавить правила в getfilename.sh?

Извиняюсь, забыл удалить -e 's/%26/\&/g' от него один вред.

angel_il
20-01-2009, 20:42
ок, надо подумать...

kRaB
21-01-2009, 22:29
что-то у меня какая-то непруха...

В общем, проблема в том, что скачав все что нужно в такой файл он его в completed не переносит, а пытается заново качать... заново создает лог и не качает, ни следующий фал, ни заново. Ссылка в файл files.done не попадает. в files.error тоже....

все что успел выдрать из лога, пока он не перезатер:

--2009-01-21 23:10:54-- ftp://ftp1.telecom.by/Media/StorageD/video/Fly%20Me%20to%20the%20Moon.DVDRip.2008.avi
(try:20) => `/tmp/mnt/disc0_2/opt/ados/user/dl/partial/Fly_Me_to_the_Moon.DVDRip.2008.avi'
Connecting to ftp1.telecom.by|213.184.225.38|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /Media/StorageD/video ... done.
==> SIZE Fly Me to the Moon.DVDRip.2008.avi ... 1466540032
==> PASV ... done. ==> REST 1466540032 ... done.
==> RETR Fly Me to the Moon.DVDRip.2008.avi ... done.
Length: 1466540032 (1.4G), 0 (0) remaining

[ skipping 1432150K ]
1432150K ,,,,,,,,,, ,,,,,,,, 100% 0.00 =0s

2009-01-21 23:11:14 (0.00 B/s) - `/tmp/mnt/disc0_2/opt/ados/user/dl/partial/Fly_Me_to_the_Moon.DVDRip.2008.avi' saved [1466540032]
Что это может быть?

и еще
каким-то макаром, заполняя файл ссылок из под винды (notepad) в каждую ссылку внесся в конце строки знак "?" ну я ссылку добавил через webUI, но предыдущую проблему это не решило...

-=serg=-
22-01-2009, 12:25
kRaB
Понимаю, что читать лень, но всё же :rolleyes: http://wl500g.info/showpost.php?p=128596&postcount=121

angel_il
22-01-2009, 12:44
я пока апгрэйдил рабочую машину не имел возможности сделать новый пакет, как все донастрою выложу новую версию с более правильным парсингом урлов.

Vinner
16-02-2009, 12:39
Уважаемые гуру, нужен совет!
У меня пров предоставляет ftp и там много чего есть.. однако, практически все названия папок на русском.. Дайте совет, что можно сделать чтобы dlengine понимал ссылки типа _ftp://ftp.l2r.ru/films/!Не экранки (свежие)/Бэмби 1 и 2.2006/Bamby.avi это если через Total Commander, а если через IE получается так: _ftp://ftpkirov.l2r.ru/films/!%CD%E5%20%FD%EA%F0%E0%ED%EA%E8%20(%F1%E2%E5%E6%E8 %E5)/%C1%FD%EC%E1%E8%201%20%E8%202.2006/Bambi.avi

Весь мозг уже сломал с этими символами! Выручайте!
Будет спасибо от дочери!

Visionary
23-02-2009, 17:22
не получается качать hd фильмы. wget и axel не работают с серверами провайдера. axel говорит unsupported server. обе качалки показывают отрицательный размер файлов

axel скачивается в итоге мег 100 - 300 всего и переносит в uncompleted или в completed
wget при закачке 7 гигового файла скачал 11 и продолжал качать радостно заявляя о перевыполнении плана 140 %

файлы до ~2Гб качаются нормально

1. можно ли прикрутить curl, может с ним получится?
2. кто нибудь сталкивался с этим? как побороть?

mldonkey пробовал. тормозит качает со скоростью 5 кб макс. отжирает все ресурсы.
ados тормозит сам по себе. даже проверить работу curl на нем полностью не вышло.
screen + curl не катит - через некоторое время отваливается, т.к. разрывы часто, нужно чтоб кто нибудь за ним следил и перезапускал.
сам наваять не смогу, ибо только осваиваю линукс
может есть какие нибудь варианты?
один из серверов репортует что он glFTPd 2.01 Linux+TLS
второй - Pure-FTPd [privsep] [TLS]

Провайдер - PPPOE Казань Nextrim

angel_il
23-02-2009, 23:00
странно я образа 4 гиговые качаю без проблем, а какая FS?

Visionary
24-02-2009, 18:39
Wget 1.11.4
Axel version 1.0b (Linux)
файловая система ext3
fstab:

#device Mountpoint FStype Options Dump Pass#
/dev/discs/disc0/part1 none swap sw 0 0
/dev/discs/disc0/part2 /opt ext3 rw,noatime 1 1
/dev/discs/disc0/part3 /tmp/mnt/disc0_3 ext3 rw,noatime 1 1
rtorrent качает без проблем и бOльшие файлы

конечно то что проверка дисков при перезагрузке заканчивается сообщениями

Jan 1 03:01:11 e2fsck: opt: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
Jan 1 03:01:11 e2fsck: ^I(i.e., without -a or -p options)
Jan 1 03:01:12 e2fsck: dl: clean, 2165/77758464 files, 43390763/77746567 blocks (check after next mount)
Jan 1 03:01:12 kernel: kjournald starting. Commit interval 5 seconds
Jan 1 03:01:12 kernel: EXT3-fs warning: mounting fs with errors, running e2fsck is recommended
Jan 1 03:01:12 kernel: EXT3 FS 2.4-0.9.19, 19 August 2002 on sd(8,2), internal journal
Jan 1 03:01:12 kernel: EXT3-fs: mounted filesystem with ordered data mode.
Jan 1 03:01:12 kernel: kjournald starting. Commit interval 5 seconds
Jan 1 03:01:12 kernel: EXT3 FS 2.4-0.9.19, 19 August 2002 on sd(8,3), internal journal
Jan 1 03:01:12 kernel: EXT3-fs: mounted filesystem with ordered data mode.
тоже наводит на некоторые мысли, но скачивание не было возможно и при нормальном диске без ошибок.
поставил пока на сканирование без -p
проверил. нашел много ошибок и пофиксил. Результата не дало.
axel определяет 4.4 гиговый файл как 400 мег.
wget определяет правильно, но вместо 4.4 гига скачивает 4.7 и уходит в цикл.

Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/video1/_HD/Tropic.Thunder.BDRip ... done.
==> SIZE Tropic.Thunder.BDRip.720p.mkv ... 4695919574
==> PASV ... done. ==> REST 4785273440 ... done.
==> RETR Tropic.Thunder.BDRip.720p.mkv ...
Error in server response, closing control connection.
Retrying.

Постоянно делал ipkg update/upgrade
не помню, обновлялись ли качалки. Попробую найти более старые версии.

Visionary
28-02-2009, 12:30
прирутил curl. Криво конечно, по правилам пока не умею. Но работает. качает большие файлы без проблем.

couger
06-03-2009, 19:02
если отредактировать файл files.queue в винде, в конце строки, после "&loc_fname=" остается ^M что приводит к следующему глюку - все файлы скачиваются в файл с именем "♪".

Как это побороть?

Visionary
06-03-2009, 19:07
вообще наверное можно и алгоритмы править, но разумнее редактировать в редакторах которые понимают и могут сохранять формат Linux.
например http://pnotepad.googlecode.com/files/portable-pn209926.zip

Visionary
11-03-2009, 18:16
может кто нибудь знающий поможет прикрутить грамотно curl к этому скрипту? Не осилил.. :( данный вариант вроде качает нормально, но не переносит в готовые...
файлы не битые, но приходится постоянно за ним следить, вручную переносить и продолжать следующий файл.
По завершению застревает:

% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
.................................................. ..........................

curl: (8) Got a 421 ftp-server response when 220 was expected

curl: (3) malformed

angel_il
11-03-2009, 19:19
если отредактировать файл files.queue в винде, в конце строки, после "&loc_fname=" остается ^M что приводит к следующему глюку - все файлы скачиваются в файл с именем "♪".

Как это побороть?

редактировать в редакторе far, notepad++

Archim
27-03-2009, 09:06
Приветствую.
Скачал по ссылке в первом посте. Установил.
Т.к. путь для сохранения файлов у меня другой, соответственно подправил dlengine.conf. Кроме того web-интерфейс у меня тоже в другом месте - перенес папку /cgi-bin/ в корень web-сервера.
Запустилось. Web-интерфейс есть. Жаль, что не принимает из буфера список, но и так - лучше, чем ничего.
Сначала добавил пару ссылок через морду - скачала. Обрадовался. Подсунул ей файл files.queue (в UNIX'овском формате, каждая ссылка на отдельной строке) с >500 записями. Зациклилась на первой. Писала в терминал что-то вроде:
/путь/до/папки_закачки/http://адрес.до.файла: No such file or directory
Хорошо. Для проверки выбросил из файла всё, кроме двух строчек.
Теперь вообще не качает!
Пишет:

Initializing download: http://<URL>
File size: XXXXX bytes
И тишина...
Пробовал менять wget на axel и наоборот и перезапускать скрипт. Такая же ерунда.
Подскажите пожалуйста, где что подкрутить можно?

Megarem
28-03-2009, 09:17
Подскажите пожалуйста, где что подкрутить можно?
Ты неправильно создаешь файл queue. После подкрутки angel_il там ссылки нужно записывать в специальном формате. Добавь ссылку через веб, посмотри файл и все сразу станет понятно. Там еще нужно добавить имя файла, в которое все будет сохраняться (может быть пустым). Это конечно неправильно и надо скрипт подправить, чтобы правильно обрабатывать все ссылки, но руки никак не доходят.

usa22
17-04-2009, 12:04
Кто нибудь может для юзера более подробно разложить по полочкам пункт:

Установка
..............
Затем скачайте и установите пакет с Download Engine отсюда:
http://code.google.com/p/dlengine/downloads/list

Файлы скачал,а как их инсталировать ???
Заранее благодарен.

bormant
17-04-2009, 16:00
скачать: $ wget http://dlengine.googlecode.com/files/dlengine_1.2-1_mipsel.ipk
поставить: $ ipkg install ./dlengine_1.2-1_mipsel.ipk

pn00m
05-05-2009, 19:21
Ты неправильно создаешь файл queue. После подкрутки angel_il там ссылки нужно записывать в специальном формате. Добавь ссылку через веб, посмотри файл и все сразу станет понятно.

А можно куда-нибудь скинуть этот файл со ссылкой для образца?

ЗЫ: уже не надо, разобрался сам

Большое спасибо за скрипт!

Dayran
06-06-2009, 06:46
А можно как-нибудь сделать, что бы логи писались не каждые 50к, а пореже? а то неудобно просматривать. 0,5м или даже 1м было бы куда удобнее

Megarem
06-06-2009, 14:57
А можно как-нибудь сделать, что бы логи писались не каждые 50к, а пореже? а то неудобно просматривать. 0,5м или даже 1м было бы куда удобнее
Не знаю. Лог формирует сам wget, почитай доку по нему, мож че найдешь.

Dayran
24-06-2009, 18:39
Megarem, ещё раз спасибо за скрипт. Мне очень нравится, без всяких излишеств, только то, что нужно.
А теперь хочу задать несколько вопросов не совсем по теме(а может даже и совсем не по теме). Если мне понадобится, то могу ли я как-нибудь ограничить скорость скачивания? И ещё как выставить, что бы приоритет был в пользу компа? То есть, если я например начинаю на компьютере что-то качать и использую весь канал, то закачки на роутере должны практически стоять.

Megarem
25-06-2009, 17:20
Если мне понадобится, то могу ли я как-нибудь ограничить скорость скачивания? И ещё как выставить, что бы приоритет был в пользу компа?
Лично я просто выключаю скрипт\торренты, когда сижу в инете. Все качается, когда меня нет. В принципе лимит скорости можно зашить в скрипт, добавив в запуск вгета опцию --limit-rate. А если нужны приоритеты, то это надо копать в сторону шейперов (мой скрипт тут бесполезен).

Dayran
25-06-2009, 19:50
добавив в запуск вгета опцию --limit-rate
Можно про это поподробней?
Было бы здорово, если бы например «start» запускал скрипт без ограничения скорости, а допустим «lim» запускал с каким-то лимитом скорости.

Megarem
28-06-2009, 18:13
Можно про это поподробней?
Открываешь скрипт, ищешь там строчку запуска вгета и доавляешь еще один параметр.

Было бы здорово, если бы например «start» запускал скрипт без ограничения скорости, а допустим «lim» запускал с каким-то лимитом скорости.
Это надо дорабатывать скрипт.

lega4
14-07-2009, 20:00
Поставил, все хорошо, кроме одного: почему то после конца всех закачек сабж долбит последний файл, хоть в инет вроде и не ломится
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Transistor_stub.svg/32px-Transistor_stub.svg.png -> 32px-Transistor_stub.svg.png
А в командной строке выдает
cannot stat `/tmp/harddisk/downloads/partial/32px-Transistor_stub.svg.png': No such file or directory

В конце концов это безобразие заканчивается (Хз точно, может минуты 3), но неудобно же так...

belsky
04-09-2009, 11:30
я пока апгрэйдил рабочую машину не имел возможности сделать новый пакет, как все донастрою выложу новую версию с более правильным парсингом урлов.

Добрый день, angel_il
Спасибо вам и конечно автору Megarem за скрипт. Поставил, работает отлично. Единственное, что напрягает это проблема с пробелами и спецсимволами. Хотел бы спросить, планируете ли вы обновлять скрипт?

Если нет, то правильно ли я понял, что простая замена строки


url=`echo $url | sed -e 's/%3F/?/g' -e 's/%3D/=/g' -e 's/%26/\&/g' -e 's/ /_/g' -e 's/%3A/:/g' -e 's/%2F/\//g' -e 's/%7E/~/g' -e 's/+/ /'`

в файле dlengine.sh на строку предложенную -=serg=-


url=`echo $url | sed -e 's/%3F/?/g' -e 's/%3D/=/g' -e 's/%20/ /g' -e 's/%3A/:/g' -e 's/%7E/~/g' -e 's/+/ /' -e 's/%25/%/g' -e 's/%28/\(/g' -e 's/%29/\)/g' -e 's/%2F/\//g' -e 's/%22/\"/g' -e 's/%D0%90/%C0/g' -e 's/%D0%B0/%E0/g' -e 's/%D0%91/%C1/g' -e 's/%D0%B1/%E1/g' -e 's/%D0%92/%C2/g' -e 's/%D0%B2/%E2/g' -e 's/%D0%93/%C3/g' -e 's/%D0%B3/%E3/g' -e 's/%D0%94/%C4/g' -e 's/%D0%B4/%E4/g' -e 's/%D0%95/%C5/g' -e 's/%D0%B5/%E5/g' -e 's/%D0%81/%A8/g' -e 's/%D1%91/%B8/g' -e 's/%D0%96/%C6/g' -e 's/%D0%B6/%E6/g' -e 's/%D0%97/%C7/g' -e 's/%D0%B7/%E7/g' -e 's/%D0%98/%C8/g' -e 's/%D0%B8/%E8/g' -e 's/%D0%99/%C9/g' -e 's/%D0%B9/%E9/g' -e 's/%D0%9A/%CA/g' -e 's/%D0%BA/%EA/g' -e 's/%D0%9B/%CB/g' -e 's/%D0%BB/%EB/g' -e 's/%D0%9C/%CC/g' -e 's/%D0%BC/%EC/g' -e 's/%D0%9D/%CD/g' -e 's/%D0%BD/%ED/g' -e 's/%D0%9E/%CE/g' -e 's/%D0%BE/%EE/g' -e 's/%D0%9F/%CF/g' -e 's/%D0%BF/%EF/g' -e 's/%D0%A0/%D0/g' -e 's/%D1%80/%F0/g' -e 's/%D0%A1/%D1/g' -e 's/%D1%81/%F1/g' -e 's/%D0%A2/%D2/g' -e 's/%D1%82/%F2/g' -e 's/%D0%A3/%D3/g' -e 's/%D1%83/%F3/g' -e 's/%D0%A4/%D4/g' -e 's/%D1%84/%F4/g' -e 's/%D0%A5/%D5/g' -e 's/%D1%85/%F5/g' -e 's/%D0%A6/%D6/g' -e 's/%D1%86/%F6/g' -e 's/%D0%A7/%D7/g' -e 's/%D1%87/%F7/g' -e 's/%D0%A8/%D8/g' -e 's/%D1%88/%F8/g' -e 's/%D0%A9/%D9/g' -e 's/%D1%89/%F9/g' -e 's/%D0%AA/%DA/g' -e 's/%D1%8A/%FA/g' -e 's/%D0%AB/%DB/g' -e 's/%D1%8B/%FB/g' -e 's/%D0%AC/%DC/g' -e 's/%D1%8C/%FC/g' -e 's/%D0%AD/%DD/g' -e 's/%D1%8D/%FD/g' -e 's/%D0%AE/%DE/g' -e 's/%D1%8E/%FE/g' -e 's/%D0%AF/%DF/g' -e 's/%D1%8F/%FF/g'`

решает все проблемы со спецсимволами?

В любом случае, спасибо

belsky
04-09-2009, 15:50
Отвечая сам себе. Да, кажется работает :) По крайне мере съел у меня ссылку с %5B и %5D. Единственное, с чем столкнулся, пришлось расставить в новой командной строке символы переноса \ на конце каждой линии

Ещё раз спасибо

MrGalaxy
04-09-2009, 21:37
Как через веб-морду паузу сделать в закачке?

Megarem
05-09-2009, 12:13
Как через веб-морду паузу сделать в закачке?
А чем кнопка стоп не устраивает? Как вы себе представляете паузу?

MrGalaxy
05-09-2009, 18:46
А чем кнопка стоп не устраивает? Как вы себе представляете паузу?
ПАУЗА - приостановить, чтоб потом можно было докачать. Если нажать СТОП, это получится?

ЗЫ: спасибо за программу, она, в отличие от АДОС, работает.

Megarem
06-09-2009, 12:36
Если нажать СТОП, это получится?
Если сервер поддерживает докачку, то да.

belsky
07-09-2009, 11:45
И снова здравствуйте :)

Такая проблема. После корректировки в файле dlengine.sh стал обрабатывать ссылки с хитросимволами и даже качать. Только вот в итоге скачанные файлы получаются с нечитаемыми именами и без расширений, то есть выглядят как абракадабра. Если переименовать такие файлы руками, то avi-ки, например, прекрасно показываются. То есть дело только в имени под которым сохраняется файл. Проблема в том, что при скачивании например 30 avi-ек, процесс выяснения кто есть кто и ручного переименовывания весьма трудоёмок.

Кто-нибудь может подсказать что можно сделать с этим?

Serg0
07-09-2009, 12:16
belsky,
Может быть при постановке файла в очередь, вручную указать с каким именем он будет сохраняться ?
Тогда не придётся разбираться кто есть кто.

belsky
07-09-2009, 12:20
Serg0

пробовал. попробуйте, если есть желание, сами. вот например этот мультик
http://t.mcwees.spb.ru/directories/____%20________.%20________/%d0%94%d0%be%d0%b6%d0%b4%d1%8c%20%d1%81%d0%b2%d0%b 5%d1%80%d1%85%d1%83%20%d0%b2%d0%bd%d0%b8%d0%b7%20( 2007).avi

Serg0
07-09-2009, 12:34
belsky,
Если вы вручную указываете что сохранить в файл с именем например Dozhd_sverhu_vniz(2007).avi, разве он сохранится с другим именем?

belsky
07-09-2009, 12:39
Serg0

Ну не буду врать конкретно про этот файл. Файлы из этой папки я поставил на скачку как есть. Но вот например другой мульт ( http://t.mcwees.spb.ru/directories/Norman%20McLaren/Norman%20McLaren%20-%20C%27est%20l%27aviron%20(1943).mpg ) я пытался сохранить под другим именем, но всё равно не вышло. К сожалению попробовать сейчас снова не могу. Роутер дома, а я на работе.

Да и касаемо, первого варианта. Неужели единственный вариант переименовывать каждый файл вручную? То что это надо делать в начале скачивания, а не после не сильно то выручает :)

Megarem
07-09-2009, 17:38
скачанные файлы получаются с нечитаемыми именами
Может все дело просто в кодировке? Какая кодировка настроена на рутере и терминале?

belsky
09-09-2009, 20:39
Megarem

вы меня простите. но я только начинаю разбираться в Linux
как это выяснить? всё на что меня хватило набрать printenv LANG на роутере, респонд при этом пустой

belsky
10-09-2009, 18:58
.
Покажите вывод команды set.

Пожалуйста ...


[admin@wl500gpv2 root]$ set
HOME='/usr/local/root'
IFS='
'
LOGNAME='admin'
PATH='/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PPID='54'
PS1='[\u@\h \W]$ '
PS2='> '
PS4='+ '
PWD='/tmp/local/root'
SHELL='/bin/sh'
TERM='linux'
USER='admin'
_=']'


P.S. Кстати, к строке предложенной -=serg=- стоит добавить также:
-e 's/%2C/,/g' -e 's/%27/\'/g'

Megarem
13-09-2009, 13:10
Пожалуйста ...
Вот это должно там тоже быть:

[root@Router root]$ set
LANG='ru_RU.UTF-8'
LC_ALL='ru_RU.UTF-8'

Megarem
14-09-2009, 18:11
Сделал новую бета-версию скрипта (аттач в первом посте темы). Нужны подопытные кролики для тестирования ;) Что поменялось:
1. Самое главное, ради чего все и затевалось - поддержка плагинов для скачки с файлообменников. Работы ведутся совместно с Serg0. Пока в архиве только один плагин для рапиды, но вскоре будут еще.
2. Выкинута поддержка акселя. Он и так был весьма глюкав, да и кроме того, при скачке с обменников несколько потоков обычно и не поддерживаются. Вообщем ну его нахрен.
3. Постарался добавить кое-какие мелкие фиксы.
4. Добавил скрипт, запускающий встроенный в прошивку busybox_httpd. Веб-морда сразу будет доступна по адресу http://router:8080/cgi-bin/dlengine.sh Будет полезно для тех, у кого не стоит веб-сервера.
Установка проста: скачиваем архив, распаковываем, запускаем стартовые скрипты. В будущем я сделаю установочный пакет.

Dayran
15-09-2009, 00:19
Сделал новую бета-версию скрипта. Нужны подопытные кролики для тестирования ;) Что поменялось:
1. Самое главное, ради чего все и затевалось - поддержка плагинов для скачки с файлообменников. Работы ведутся совместно с Serg0. Пока в архиве только один плагин для рапиды, но вскоре будут еще.
2. Выкинута поддержка акселя. Он и так был весьма глюкав, да и кроме того, при скачке с обменников несколько потоков обычно и не поддерживаются. Вообщем ну его нахрен.
3. Постарался добавить кое-какие мелкие фиксы.
4. Добавил скрипт, запускающий встроенный в прошивку busybox_httpd. Веб-морда сразу будет доступна по адресу http://router:8080/cgi-bin/dlengine.sh Будет полезно для тех, у кого не стоит веб-сервера.
Установка проста: скачиваем архив, распаковываем, запускаем стартовые скрипты. В будущем я сделаю установочный пакет.

Megarem, молодец!!! Вечером обязательно потестирую.
1.Рапида всё-таки самый популярный файлообменик, так что начало уже неплохое.
2.Абсолютно согласен.
3.Можно поподробней?
4.Я так и не могу понять, для чего скрипту веб-морда? Закинуть ссылки в files.queue можно и через putty.

OlegaVB
15-09-2009, 07:18
Отлично попробовал - с рапиды качает! Спасибо. Причем настройки не менял, оставил старый dlengine.conf .

Megarem
15-09-2009, 07:47
3.Можно поподробней?
4.Я так и не могу понять, для чего скрипту веб-морда? Закинуть ссылки в files.queue можно и через putty.
3. Из крупного - вставил строку перекодировки, как предлагалось где-то в ветке. Исправил логику работы с &loc_fname= (теперь эта запись может присутствовать или отсутствовать в файле очереди - все варианты будут правильно отрабатываться). Ну и кое-что по мелочам. Основной кусок скрипта был практически полностью переписан, чтобы работать с плагинами.
4. Ну если не нужна - не пользуйся. Все-таки зайти на страничку в браузере и задать ссылку быстрее чем запускать путти, логиниться, запускать редактор, и т.д.

Dayran
15-09-2009, 13:30
Всё работает отлично!!! Megarem, ещё раз огромное спасибо за скрипт!!!

belsky
15-09-2009, 20:26
Megarem,
отличная новость. спасибо, что выкладываете новые версии

но мне, опять не везёт :) скачал, распаковал в opt, дал права
chmod +x /opt/share/www/cgi-bin/dlengine.sh
chmod +x /opt/etc/init.d/S50dlengine
chmod +x /opt/etc/init.d/S90busybox_httpd
chmod +x /tmp/mnt/disc1_1/files.done
chmod +x /tmp/mnt/disc1_1/files.error
chmod +x /tmp/mnt/disc1_1/files.queue
chmod +x /tmp/mnt/disc1_1/log

httpd запускается с помощью sh /opt/etc/init.d/S90busybox_httpd start, а вот S50dlengine выдаёт ошибку


[admin@wl500gpv2 cgi-bin]$ sh /opt/etc/init.d/S50dlengine start
/opt/etc/init.d/S50dlengine: /opt/var/lib/dlengine/utils: line 51: syntax error: bad for loop variable

Megarem
15-09-2009, 20:38
но мне, опять не везёт :)
Во первых, если распаковывать на рутере, то права на файлы сами поставятся как надо.
Во вторых, зачем вы набираете при запуске скрипта sh? Скрипт исполняемый, в нем прописано чем он запускается.
Ну и в третьих, под sh мой скрипт не заработает. Нужен полноценный bash (ipkg install bash)

belsky
15-09-2009, 21:40
Во первых, если распаковывать на рутере, то права на файлы сами поставятся как надо.
Во вторых, зачем вы набираете при запуске скрипта sh? Скрипт исполняемый, в нем прописано чем он запускается.
Ну и в третьих, под sh мой скрипт не заработает. Нужен полноценный bash (ipkg install bash)

Я просто в линуксе ещё ни в зуб ногой :( пока учусь
по поводу прав понял
bash поставил, проблема ушла. скрипт запустился и вроде как работает (скачал один файл). но вот ещё маленькая загвоздка (куда же без неё :) )

В логе даже если ничего не качаю постоянно обновляется статус. Причём какой-то странный. Например :


Last log events: (Refresh)

587450K ......... ...... ......... ...... .
757950K ............. ........ ............ 92% 26.0K 34m23s
705850K ......... 94% 33.3K 24m53s
724100K ..... .......... ......... .......... 79% 24.7K 89m46s
606300K ........... 97% 34.8K 12m49s
743800K ....... .............. 87% 34.4K 56m37s... .................. ........ 61% 23.5K 2h4m........ .............. ........... ............ ..
666150K .......... 98% 26.8K 5m32s
754800K ..........
467950K ...... 67% 76.9K 2h1m . .................... . ... ..
515100K ............... .......... ......



Ещё одна странность, когда ввожу ссылку и нажимаю "to file:", поле справа исчезает.

Подскажите, плиз, что я опять сделал не так?

belsky
15-09-2009, 21:56
Хээлп :)

Файл log растёт не по дням, а по часам :) За 15 минут - 0,5 мегабайта

всё тот же мусор

477700K ....... 0% 66.1K 2d57h....... .................. ....... . ..... .... ... 71% 34.7K 1h46m
547200K ................ .....
21400K ... 86% 47.7K 56m50s
658550K ...... ...... ........... ........ .................................. .......... .............. .................. 69% 62.4K 1h51m
530400K ............. .............. .... .... ........ ................. ......... ... ... ..... 88% 27.6K 47m26s
677400K ........ 83% 29.0K 67m3s... 73% 28.3K 99m13s
565150K ............. ................ 78% 49.9K 85m52s
600450K .............


по расчётам винт закончится через 30 часов :)

Причём лог обновляется и файл продолжает качаться даже если остановить демон кнопкой Stop через веб-морду. Из командной строки говорит тоже что не стартован
/opt/etc/init.d/S50dlengine stop
Shutting down Download Engine... not started.

Но скачивание идёт! Я чего-то не понимаю?

Megarem
16-09-2009, 08:05
Но скачивание идёт! Я чего-то не понимаю?
По симптомам одновременно работают несколько вгетов и пишут в один лог. Сделай "killall wget". А вот почему так произошло - я даже не знаю. вроде никто больше не жаловался на подобные проблемы.

Sashunya
16-09-2009, 09:15
Поставил 2.0 версию скрипта. Качает нормально. До этого пробовал DLQ. Веб интерфейс не включал. Есть одно но: качал с рапиды дрова на Реалтек, во время закачки происходит ежедневный разовый обрыв ВПН сессии, в результате недокачанный файл положился в completed. Увы в этот момент я за скриптом не следил, но по логам роутера похоже именно на такую ситуацию.

Megarem
16-09-2009, 10:29
в результате недокачанный файл положился в completed.
Есть подозрения, почему это случилось. В очереди было много файлов? Файлы с похожими именами были?

Sashunya
16-09-2009, 10:52
В очереди было 2 файла. Оба с рапиды. Один назывался типа vista_win7_R233.exe, а второй magix_part16.rar

Megarem
16-09-2009, 11:51
В очереди было 2 файла. Оба с рапиды. Один назывался типа vista_win7_R233.exe, а второй magix_part16.rar
Тогда хрен его знает. Но я все равно кое-что подправил на всякий случай. Аттач в первом посте. Заодно на пробу сделал ipk пакет.

belsky
16-09-2009, 22:05
Спасибо ещё раз. Поставил dlengine_2.0-1_mipsel.ipk, заказчки работают. Всё отлично. Осталась лишь одна маленькая затычка, , когда ввожу ссылку и нажимаю "to file:", поле справа куда раньше можно было вписать самому имя исчезает. Это у меня одного так? :) Может опять не хвататет какого-то пакета?

Megarem
17-09-2009, 07:51
когда ввожу ссылку и нажимаю "to file:", поле справа куда раньше можно было вписать самому имя исчезает.
Все может быть. Веб-интерфейс в свое время дорабатывал angel_il и я туда уже давно не лазил. Похоже вам нужно еще установить curl.
Обновил пакет в шапке. Добавил в зависимости curl и 3 новых плагина: depositfiles, vip-vile, hotfile (плагины by Serg0). Качаем, тестим, особенно интересуют тесты новых плагинов. Плагин vip-file поддерживает аутентификацию. Свой логин-пароль прописываем в dlengine.conf (пример как и что надо прописать есть в дефолтном конфиге внутри пакета).

Dayran
17-09-2009, 15:02
1.depositfiles работает нормально.
2.С vip-file не смог разобраться, прописал в dlengine.conf так:

AUTHEXP[2]="vip-file.com"
AUTHUSR[2]="пароль"
AUTHPAS[2]="пароль"

Так, как vip-file даёт только пароль, без логина, то пароль прописал в оба поля.(хотя пробовал и другие варианты). Но ничего таким образом не качается.

3.hotfile тоже не заработал у меня, так как там используется капча. Лог такой:

-- Step.2:
waiting 30 sec : Please wait 30 seconds
FAILED: required CAPTCHA

Megarem
17-09-2009, 17:44
Так, как vip-file даёт только пароль, без логина, то пароль прописал в оба поля.(хотя пробовал и другие варианты). Но ничего таким образом не качается
Можно лог на vip-file? Сейчас проверил на первом попавшемся файле - бесплатно качается, если задать пароль - говорит что пароль неправильный (правильного у меня нет). Что качается хотфайла, то это фича. Качаться будут только те файлы, на которых капчи нет.

igor77777
17-09-2009, 18:08
Что качается хотфайла, то это фича. Качаться будут только те файлы, на которых капчи нет.

Добавляйте закачки повторно.
Когда появился плагин для хотфайла для dql, у меня некоторые файл скачивались с первого раза, а некоторые только на 3-4 раз. Т.е. капчу они не всегда показывают.

Serg0
17-09-2009, 18:28
замечания по использованию плагинов vip-file.com и hotfile.com:

плагин для файлообменника vip-file.com
Чтобы скачивалось с использованием пароля, нужно записать этот пароль в файл /opt/etc/dlengine.conf
Логин не используется, поэтому его можно и не заполнять.
Например:


AUTHEXP[2]="vip-file.com"
AUTHUSR[2]=""
AUTHPAS[2]="PLIM1B052A4"

Если для vip-file.com пароль не задан, то скрипт будет пытаться скачивать файл без пароля если есть
ссылка "Или качайте очень медленно и бесплатно". Если этой ссылки нет (т.е. сервер не предложил
скачать бесплатно), то скрипт пытается самостоятельно составить такую ссылку и скачавает файл
как будто эта ссылка есть.
Но в режиме без пароля сервер отдаёт файл очень медленно.

плагин для файлообменника hotfile.com
hotfile.com для некоторых файлов показывает картинки(captcha),
поэтому скачиваются только те файлы, для которых картинки не показываются.

Serg0
17-09-2009, 18:43
Действительно, с vip-file по паролю не скачивается.
Как оказалось, у них немного поменялся формат последней страницы.

Подправил плагин. Новый файл vip-file.com.sh нужно положить в каталог /opt/var/lib/dlengine/plugins

[ вложение удалено: vip-file.com(2009-09-17).rar ]

Dayran
18-09-2009, 01:55
vip-file заработал. Единственная странность, при запуске скрипта, в консоли пишется такое:

mc/opt/var/lib/dlengine/plugins/vip-file.com.sh: line 6: local: can only be used in a function

Serg0
18-09-2009, 10:22
vip-file заработал. Единственная страннасть, при запуске скрипта, в консоли пишется такое:
mc/opt/var/lib/dlengine/plugins/vip-file.com.sh: line 6: local: can only be used in a function

Ошибку исправил, вот новый файл:

Dayran
18-09-2009, 14:09
Всё заработало без проблем. Молодцы ребята, спасибо вам!!

У меня только один вопрос по vip-file. Ссылки они выдают только на сутки, и если у меня качается какой-нибудь большой файл, который будет качаться несколько дней, то будет ли этот скрипт раз в сутки обновлять ссылки?

Serg0
18-09-2009, 14:45
Dayran,
Получение прямой ссылки для скачивания с файлообменников происходит непосредственно перед началом скачивания файла.
Например, если вы поставите в очередь две ссылки на скачивание с vip-file, и первый файл будет качаться два дня, то перед началом скачивания второго файла будет произведено получение прямой ссылки на этот второй файл.

Аналогично происходит при скачивании и с других файлообменников. Там прямые ссылки живут и того меньше, бывает что живут только 5 минут. Но это в общем-то не имеет значения, т.к. скачивание файла начинается сразу же после получения прямой ссылки.

Dayran
19-09-2009, 05:30
Я имел ввиду другое. Выданная ссылка действительна только 24 часа. И если файл будет качаться больше суток, то ссылку надо обновлять.

Serg0
19-09-2009, 12:15
Dayran,
Прямая ссылка используется в самом начале скачивания файла. И если в процессе скачивания файла, соединение с сервером не разрывается, то ссылка больше не используется, даже если файл будет качаться несколько дней. В этом случае файл успешно скачается.
Т.е. если соединение не разрывается, то прямую ссылку обновлять не надо.

Если же соединение с сервером разорвётся не докачав файл, то для повторного соединения прямая ссылка используется снова. К этому времени ссылка может оказаться уже нерабочей, и скачивание завершится с ошибкой. Исходная ссылка файла запишется в файл ошибок (files.error) и файл останется недокачанным.
Судя по описанию с сайта vip-file (вариант 3 (http://vip-file.com/tmpl/faq.php)) - так оно и получится, если соединение разорвётся после окончания времени жизни ссылки.
Докачать файл можно будет, если вручную снова поставить его ссылку в очередь.
Возможно это можно сделать автоматически, но пока скрипт такую ситуацию с файлообменниками не обрабатывает.

Megarem
19-09-2009, 17:03
Ошибку исправил, вот новый файл:
Собрал новую версию пакета. Переписал шапку. Можно считать бета-тестирование законченным.

joohny
19-09-2009, 20:20
Второй скрипт S90busybox_httpd запускает встроенный в прошивку busybox_httpd и обеспечивает веб-интерфейс скрипта (если у вас установлен свой http сервер, этот скрипт вам не нужен). Можно обойтись и без веб-интерфейса - через фтп или самбу добавлять новые закачки в QUEUEFILE (файл должен быть в формате UNIX!) и запускать/останавливать скрипт через телнет или ssh. Веб-интерфейс позволяет немного облегчить жизнь. Он доступен по адресу http://router:8080/cgi-bin/dlengine.sh

Прошивка от энтузиастов WL500gp-1.9.2.7-d-r473.trx, не повредит ли этот самый второй скрипт стандартную админку роутера?? Или просто все будет работать как работало, но появится на 8080 еще и админка?? Где можно выбирать порт и ip на котором он мог бы висеть??

joohny
19-09-2009, 22:25
[admin@basus root]$ ipkg install /opt/etc/my/dlengine_2.0-3_mipsel.ipk
ipkg: invalid magic

Вот такая вот ошибка, что делать?

OlegaVB
20-09-2009, 07:31
Прошивка от энтузиастов WL500gp-1.9.2.7-d-r473.trx, не повредит ли этот самый второй скрипт стандартную админку роутера?? Или просто все будет работать как работало, но появится на 8080 еще и админка?? Где можно выбирать порт и ip на котором он мог бы висеть??

Ничего не повредит - там же явный адрес http://router:8080/cgi-bin/dlengine.sh , который никто не использует.

Megarem
20-09-2009, 16:58
не повредит ли этот самый второй скрипт стандартную админку роутера?? Где можно выбирать порт и ip на котором он мог бы висеть??
Не повредит. Стартуется отдельный сервер, никак не связанный с админкой. Порт можно поменять внутри самого скрипта:

start() {
echo "Starting httpd:"
/usr/sbin/busybox_httpd -c /opt/etc/httpd.conf -p 8080 -h /opt/share/www
}

Protei
22-09-2009, 16:49
Правильно ли я понимаю, что если превышен временной лимит скачки, то процесс уходит в sleep на то время которое сообщил ему сервер, и чтобы на это время запустить пока другую закачку нужно убить этот процесс?
И еще нормально ли, что он к ссылке, если добавлять ее через веб-интерфейс прибавляет пустую переменную "loc_fname"?

Megarem
22-09-2009, 18:32
Правильно ли я понимаю, что если превышен временной лимит скачки, то процесс уходит в sleep на то время которое сообщил ему сервер, и чтобы на это время запустить пока другую закачку нужно убить этот процесс?
И еще нормально ли, что он к ссылке, если добавлять ее через веб-интерфейс прибавляет пустую переменную "loc_fname"?
1. Да. Возможно стоит добавить более сложную логику отработки таких ситуаций, но пока скрипт тупо ждет.
2. Да.

joohny
22-09-2009, 18:46
[admin@basus root]$ ipkg install /opt/etc/my/dlengine_2.0-3_mipsel.ipk
ipkg: invalid magic

Вот такая вот ошибка, что делать?

у меня вот что-то установить это дело не получилось! Что делать?

Sashunya
22-09-2009, 18:51
Возникает часто ошибка WGET Error 138. Качаю с рапиды

Megarem
22-09-2009, 20:37
Возникает часто ошибка WGET Error 138. Качаю с рапиды
Покажите весь лог.

Megarem
22-09-2009, 20:39
у меня вот что-то установить это дело не получилось! Что делать?
Похоже у вас какой-то неправильный ipkg. А если например дать команду

ipkg install bash
баш установится? Если нет - вам в другую тему, посвященную начальной настройке рутера.

joohny
22-09-2009, 21:05
Похоже у вас какой-то неправильный ipkg. А если например дать команду

ipkg install bash
баш установится? Если нет - вам в другую тему, посвященную начальной настройке рутера.

у меня с помощью ipkg установлены все приложения из подписи

ASUS wl-500gP with WL500gp-1.9.2.7-d-r473, asterisk, poptop, ether-wake, knockd
я думаю это судит о его работоспособности?
Делаю как написано:

Установка
Скачайте архив, прикрепленный к сообщению, распакуйте из него ipk пакет и установите на рутере:
Код:
ipkg install имя_пакета.ipk
При установке автоматически скачаются и установятся еще несколько необходимых для работы скрипта пакетов.

скачиваю zip по ссылке, распаковываю на компьютере, получается файл dlengine_2.0-3_mipsel, приходится вручную добавлять ".ipk" и перекидывать на роутер, дальше вы видите что выдает ipkg

Sashunya
23-09-2009, 05:34
Покажите весь лог.



===DLE=== Downloading http://rapidshare.com/files/262561101/Deadmau5_.rar
===DLE=== Invoking plugin rapidshare.com.sh
-- Step.1:
FAILED: wget.error=139


Причем до этого скачал 5 файлов, а на 6-м и до последнего выскочила ошибка.

З.Ы. В предыдущий раз была таки 138-я ошибка ))

Protei
23-09-2009, 08:47
1. Да. Возможно стоит добавить более сложную логику отработки таких ситуаций, но пока скрипт тупо ждет.
2. Да.
Да было бы неплохо это сделать, чтобы не терялось время на ожидание, когда есть возможность качать в это время другие файлы. И желательно, чтобы такое было возможно через веб-интерфейс, а то смысла в нем нет, если все-равно что-то приходится делать через шелл.
И возможно ли сделать несколько передач, чтобы качалось несколько файлов одновременно, а sleep допустим ставить только на тот процесс wget где требуется ожидание?
Спасибо!

Megarem
23-09-2009, 09:12
Да было бы неплохо это сделать, чтобы не терялось время на ожидание, когда есть возможность качать в это время другие файлы.
Сложность состоит в том, что в списке могут быть например файлы только из одного файлообменника, тогда переходить к следующему файлу бесполезно. Тут надо подумать над логикой отработки подобных ситуаций.

И возможно ли сделать несколько передач, чтобы качалось несколько файлов одновременно
А вот это я точно делать не буду.

Megarem
23-09-2009, 09:20
я думаю это судит о его работоспособности?
Да конечно. А что выдаст "ipkg --version"? Вообще сообщение говорит, что ipkg не нравится сам файл пакета. Покажите еще, что выдаст команда
"tar -tf dlengine_2.0-3_mipsel.ipk". Может как-то архив не так распаковывается? Например подозрительно, что вам приходится добавлять к файлу расширение ipk.

vectorm
23-09-2009, 10:07
Покажите еще, что выдаст команда
"tar -tf dlengine_2.0-3_mipsel.ipk". Может как-то архив не так распаковывается? Например подозрительно, что вам приходится добавлять к файлу расширение ipk.
Скорее всего, нужно распаковывать на роутере.

Protei
23-09-2009, 10:29
Нельзя ли еще сделать, чтобы по завершении всех закачек скрипт отрубался и не висел в памяти?

Serg0
23-09-2009, 10:35
Возникает часто ошибка WGET Error 138. Качаю с рапиды

> ===DLE=== Downloading http://rapidshare.com/files/262561101/Deadmau5_.rar
> ===DLE=== Invoking plugin rapidshare.com.sh
> -- Step.1:
> FAILED: wget.error=139

Похоже что wget получает сигналы:
- сигнал SIGBUS (http://ru.wikipedia.org/wiki/SIGBUS)(10) --> exit_code = 138 (128+10)
- сигнал SIGSEGV (http://ru.wikipedia.org/wiki/SIGSEGV)(11) --> exit_code = 139 (128+11)
Оба сигнала связаны с ошибкой при обращении к памяти. Может памяти не хватает?

Sashunya
23-09-2009, 12:32
Ну, памяти как у большинства 32мб и своп на 128 мб. Крутится lighttpd,rtorrent и этот скрипт. Причем замечено, что wget ни разу не вылетал при скачке файла, а только между скачками.

Вобщем буду разбираться.

joohny
23-09-2009, 18:04
Да конечно. А что выдаст "ipkg --version"? Вообще сообщение говорит, что ipkg не нравится сам файл пакета. Покажите еще, что выдаст команда
"tar -tf dlengine_2.0-3_mipsel.ipk". Может как-то архив не так распаковывается? Например подозрительно, что вам приходится добавлять к файлу расширение ipk.

вот что в консоли


[admin@basus my]$ ipkg --version
ipkg version 0.99.163
[admin@basus my]$ ipkg list | grep ipkg
ipkg-opt - 0.99.163-10 - The Itsy Package Manager
ipkg-web - 7-7 - A web frontend for ipkg
[admin@basus my]$ ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.
[admin@basus my]$ ipkg upgrade
Nothing to be done
Successfully terminated.
[admin@basus my]$

пробовал zip распаковать на роутере - что-то не получилось?? И как-то странно почему ссылка в zip, а не tar.gz, как оно привычнее для мира nix?
Если кому не сложно - можно последовательность команд, например от wget .... и до ipkg install ...

Все решилось, прям хрень какая-то, качаю c помощью IE, в архиве файл без .ipk, попробовал скачать DownloadMaster'ом, в архиве файл с .ipk !!!! Ох уж эти из МелкоМягких.....
как выяснилось... zip в zipe сделал IE

Megarem
23-09-2009, 18:08
Нельзя ли еще сделать, чтобы по завершении всех закачек скрипт отрубался и не висел в памяти?
Да можно конечно, сделаю на досуге.

EDIT: Скачай 2.0-4, и поставь в конфиге EXITEMPTYQUEUE=YES

Megarem
23-09-2009, 18:12
пробовал zip распаковать на роутере - что-то не получилось??
ipkg install unzip

joohny
23-09-2009, 18:23
ipkg install unzip

Именно так и делал, в своем сообщении ответил уже


Все решилось, прям хрень какая-то, качаю c помощью IE, в архиве файл без .ipk, попробовал скачать DownloadMaster'ом, в архиве файл с .ipk !!!! Ох уж эти из МелкоМягких.....
как выяснилось... zip в zipe сделал IE

joohny
23-09-2009, 21:53
Предлагаю добавить в шапку:

Установка:
1. Копируем ссылку на скачивание
2. Определяемся с папкой для закачки
3. Копируем оригинальное имя файла
4. Даем команду:
wget -O /opt/etc/my/dlengine_2.0-4_mipsel.zip http://wl500g.info/attachment.php?attachmentid=5448&d=1253725569
Распаковываем:
unzip /opt/etc/my/dlengine_2.0-4_mipsel.zip
Устанавливаем:
ipkg install /opt/etc/my/dlengine_2.0-4_mipsel.ipk

joohny
24-09-2009, 07:10
"Покой нам только снится!!"
Поставил скрипт, добавил список файлов с рапиды, оставил на ночь! Все почему-то так и осталось в папке partial, хотя много докаченных, судя по размеру! Полистал эту тему, видел, что не только у меня такая проблема, но решения найти не удалось, может покажите, куда глядеть, что писать?))

Protei
24-09-2009, 10:09
Да можно конечно, сделаю на досуге.

EDIT: Скачай 2.0-4, и поставь в конфиге EXITEMPTYQUEUE=YES

Поставил, все работает. Спасибо!

Megarem
24-09-2009, 10:18
"Все почему-то так и осталось в папке partial, хотя много докаченных, судя по размеру!
А из очереди файлы исчезли? И как обычно хотелось бы посмотреть на хоть какой-нибудь лог.

joohny
24-09-2009, 14:32
из очереди файлы исчезли, записались в error, только один записался в .done приложу все файлы архивом.

Megarem
24-09-2009, 15:10
из очереди файлы исчезли, записались в error, только один записался в .done приложу все файлы архивом.
Мне не нравится тот факт, что судя по логу, во время закачки файла плагин переодически опять активизируется. Значит так, запусти скачку файла с рапиды, потом покажи что выдадут команды

pidof wget
cat /var/run/dletask.pid

joohny
24-09-2009, 18:57
Попробовал все собрать в один файл
я туда несолько раз лог копировал - на промежуточных стадиях

Megarem
24-09-2009, 20:00
Starting Download Engine... grep: invalid option -- w
BusyBox v1.14.3 (2009-08-22 11:21:46 MSD) multi-call binary
Вот и проблема. Пакет grep установлен? Должен быть, так как в зависимостях он прописан.

joohny
24-09-2009, 20:06
Вот и проблема. Пакет grep установлен? Должен быть, так как в зависимостях он прописан.
Да, установлен!! и до этого был установлен(вроде он в прошивке идет), потому как часто им пользовался!

as3k
24-09-2009, 20:24
Странно, при открытии /cgi-bin/dlengine.sh - браузер предлагает скачивание файла, что не так?

Megarem
24-09-2009, 20:34
Да, установлен!! и до этого был установлен(вроде он в прошивке идет), потому как часто им пользовался!
Тот который идет в прошивке не годится, а судя по логу запускается именно он. в /opt/bin есть файл grep-grep и линк на него grep?

Megarem
24-09-2009, 20:37
Странно, при открытии /cgi-bin/dlengine.sh - браузер предлагает скачивание файла, что не так?
Вы можете посмотреть в своем браузере какой mime-type возвращает сервер на эту страничку? Потому что все должно быть нормально.

as3k
24-09-2009, 20:52
Вы можете посмотреть в своем браузере какой mime-type возвращает сервер на эту страничку? Потому что все должно быть нормально.

Эмм, а поподробнее ?

Пользуюсь последним ФФ, пробовал в хроме, та же история

as3k
24-09-2009, 21:03
А, все , по приычке юзал свой порт, указанный в конфиге хттп серва.

Serg0
28-09-2009, 08:14
Сделан новый плагин для файлообменника letitbit.net
Плагин умеет распознавать каптчу. Для работы плагина, нужно установить пакет libjpeg

Установка плагина:
- положить два файла из архива в каталог плагинов /opt/var/lib/dlengine/plugins
- установить пакет libjpeg

Protei
28-09-2009, 10:25
Сделан новый плагин для файлообменника letitbit.net
Плагин умеет распознавать каптчу. Для работы плагина, нужно установить пакет libjpeg

Установка плагина:
- положить два файла из архива в каталог плагинов /opt/var/lib/dlengine/plugins
- установить пакет libjpeg

Не работает, к сожалению! А было бы здорово! Вот лог:

===DLE=== Downloading http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.rar.html&loc_fname=
===DLE=== Invoking plugin letitbit.net.sh
-- Step.1:
captcha=f75b87
-- Step.2:
===DLE=== Direct link - http://r156.letitbit.net/download100/4569.4e4fdb4cb99f6e4be4ada19af_d40337zt1ghiwucj/1009695/letitbit.net/DR_5_16_ispr.rar
===DLE=== Filename - DR_5_16_ispr.rar
===DLE=== Starting wget
--2009-09-28 11:59:06-- http://r156.letitbit.net/download100/4569.4e4fdb4cb99f6e4be4ada19af_d40337zt1ghiwucj/1009695/letitbit.net/DR_5_16_ispr.rar
Resolving r156.letitbit.net... 94.103.84.38
Connecting to r156.letitbit.net|94.103.84.38|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2009-09-28 11:59:07 ERROR 404: Not Found.

Dayran
28-09-2009, 13:23
А у меня всё работает! Serg0, спасибо за продланную работу.

Protei
28-09-2009, 15:18
Другой, более маленький файл у меня скачался без проблем. Этот ни в какую не хочет. Возможно дело в размере или еще в чем-то.
Dayran
Попробуйте, пожалуйста, скачать файл по этой ссылке:
http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.rar.html

joohny
28-09-2009, 15:34
Тот который идет в прошивке не годится, а судя по логу запускается именно он. в /opt/bin есть файл grep-grep и линк на него grep?



[admin@basus root]$ ls -l /opt/bin |grep grep
lrwxrwxrwx 1 admin root 19 Sep 24 21:34 egrep -> /opt/bin/grep-egrep
lrwxrwxrwx 1 admin root 19 Sep 24 21:34 fgrep -> /opt/bin/grep-fgrep
lrwxrwxrwx 1 admin root 18 Sep 24 21:34 grep -> /opt/bin/grep-grep
-rwxr-xr-x 1 admin root 132484 Nov 4 2008 grep-egrep
-rwxr-xr-x 1 admin root 59076 Nov 4 2008 grep-fgrep
-rwxr-xr-x 1 admin root 137984 Nov 4 2008 grep-grep
-rwxr-xr-x 1 admin root 28532 Apr 13 21:43 pcregrep
-rwxr-xr-x 1 admin root 1381 Jan 24 2008 zgrep
-rwxr-xr-x 1 admin root 1188 Jan 25 2008 zipgrep


Может где-то жестко нада прописать нужный grep?

Dayran
28-09-2009, 15:40
Dayran
Попробуйте, пожалуйста, скачать файл по этой ссылке:
http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.rar.html

Попробовал -вот результат:

===DLE=== Downloading http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.rar.html
===DLE=== Invoking plugin letitbit.net.sh
-- Step.1:
captcha=c96e6a
-- Step.2:
===DLE=== Direct link - http://r3.vip-file.com/download100/4569.4e4fdb4cb99f6e4be4ada19af_0zf5ie9n4jpn735l/1009695/letitbit.net/DR_5_16_ispr.rar
===DLE=== Filename - DR_5_16_ispr.rar
===DLE=== Starting wget
--2009-09-28 20:23:15-- http://r3.vip-file.com/download100/4569.4e4fdb4cb99f6e4be4ada19af_0zf5ie9n4jpn735l/1009695/letitbit.net/DR_5_16_ispr.rar
Resolving r3.vip-file.com... 78.108.179.245
Connecting to r3.vip-file.com|78.108.179.245|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 549783867 (524M) [application/octet-stream]
Saving to: `/tmp/harddisk/downloads/partial/DR_5_16_ispr.rar'

0K .......... .......... .......... .......... .......... 0% 68.4K 2h10m
50K .......... .......... .......... .......... .......... 0% 113K 1h45m
100K .......... .......... .......... .......... .......... 0% 106K 98m10s
150K .......... .......... .......... .......... .......... 0% 116K 92m55s
200K .......... .......... .......... .......... .......... 0% 113K 90m9s
250K .......... .......... .......... .......... .......... 0% 104K 89m27s
300K .......... .......... .......... .......... .......... 0% 113K 87m58s
350K .......... .......... .......... .......... .......... 0% 67.5K 93m32s
400K .......... .......... .......... .......... .......... 0% 49.5K 1h43m
450K .......... .......... .......... .......... .......... 0% 67.2K 1h46m

OlegaVB
28-09-2009, 15:47
Другой, более маленький файл у меня скачался без проблем. Этот ни в какую не хочет. Возможно дело в размере или еще в чем-то.

Попробуйте, пожалуйста, скачать файл по этой ссылке:
http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.rar.html

Попробовал напрямую с сайта http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.rar.html

Запрашиваемая вами страница не существует!

Protei
28-09-2009, 16:12
OlegaVB
Ничего не понимаю. У меня через браузер все скачивается, а у Dayran и через скрипт нормально качается. Может на файлообменнике проблемы какие.
Dayran
А вы используете веб-интерфейс скрипта или только через шелл работаете?

OlegaVB
28-09-2009, 16:27
Protei Сейчас нормально через веб зашел.
И через Download Engine закачка пошла

===DLE=== Downloading http://letitbit.net/download/4569.4e4fdb4cb99f6e4be4ada19af/DR_5_16_ispr.$
===DLE=== Invoking plugin letitbit.net.sh
-- Step.1:
captcha=b3a6c6
-- Step.2:
===DLE=== Direct link - http://r3.vip-file.com/download100/4569.4e4fdb4cb99f6e4be4ada19af_r2b7l$
===DLE=== Filename - DR_5_16_ispr.rar
===DLE=== Starting wget
--2009-09-28 20:10:10-- http://r3.vip-file.com/download100/4569.4e4fdb4cb99f6e4be4ada19af_r2b7$
Resolving r3.vip-file.com... 78.108.179.245
Connecting to r3.vip-file.com|78.108.179.245|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 549783867 (524M) [application/octet-stream]
Saving to: `/opt/share/downloads/partial/DR_5_16_ispr.rar'

0K .......... .......... .......... .......... .......... 0% 48.5K 3h4m
50K .......... .......... .......... .......... .......... 0% 47.0K 3h7m
100K .......... .......... .......... .......... .......... 0% 59.4K 2h55m

Dayran
28-09-2009, 16:43
Dayran
А вы используете веб-интерфейс скрипта или только через шелл работаете?
Только через шелл

LnrMn
28-09-2009, 20:53
to Protei Было как у тебя 404 not found.
Вылечилось ipkg upgrade

Megarem
28-09-2009, 21:04
Может где-то жестко нада прописать нужный grep?
Очень странно, что запускается grep из прошивки, потому что в скрипте я прописываю переменную PATH. Покажите мне результаты

set | grep PATH
which grep
P.S. Собрал пакет с новым плагином. Как всегда аттач в первом посте.

joohny
28-09-2009, 22:29
Очень странно, что запускается grep из прошивки, потому что в скрипте я прописываю переменную PATH. Покажите мне результаты
Вот так вот:


[admin@basus root]$ set | grep PATH
PATH='/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
[admin@basus root]$ which grep
-sh: which: not found

Хотя вот (установил which)


[admin@basus root]$ which grep
/opt/bin/grep

Protei
29-09-2009, 09:01
to Protei Было как у тебя 404 not found.
Вылечилось ipkg upgrade
Да, мне тоже это помогло. Спасибо!

Serg0
29-09-2009, 10:56
плагин letitbit.net


Protei > 404 Not Found

Действительно, вчера сервер letitbit иногда выдавал ошибку "404 Not Found" при скачивании файла без ожидания положенных 60 секунд.

Сегодня попробовал на нескольких файлах - начинает скачивать сразу, ошибку не выдаёт.
Может быть это была какая-то проблема на letitbit ?

Надо понаблюдать, и если что, можно будет сделать стандартную задержку 60 секунд, которую обычно просит сервер.

Предполагаю что пропадание ошибки "404 Not Found" - не связано с "ipkg upgrade".

колбаскин
29-09-2009, 11:07
Поставил вроде качает! но роутер от одной загрузки видимо повесился и я теперь на него зайти не могу!

Причем випфайл не принял пароль! в логе написал пароль неверный
прямую ссылку с паролем випа принял и начал качать

Megarem
29-09-2009, 13:39
Вот так вот:
Попробуйте отредактировать файл /opt/var/lib/dlengine/utils и добавить после "PATH=всякиепути" строку с текстом

export PATH
Если это не поможет, то я вообще ничего не понимаю.

Alesot
29-09-2009, 18:24
Просмотрел всю тему, и, очень извиняюсь, если не заметил ответа на вопрос - может ли этот скрипт закачивать с FTP каталогами?
То есть указывать каталог и прочее, а он закачает все содержимое данного каталога рекурсивно.

Alexander K.
29-09-2009, 19:35
Подскажите, пожалуйста
можно ли Downland Engine скачивать по протоколу https?
У меня выдает ошибку.

joohny
29-09-2009, 19:56
))
У меня новое в консоли)))

[admin@basus root]$ mv: unrecognized option `--backup=numbered'
BusyBox v1.14.3 (2009-08-22 11:21:46 MSD) multi-call binary

Usage: mv [OPTION]... SOURCE DEST
or: mv [OPTION]... SOURCE... DIRECTORY

Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY

Options:
-f Don't prompt before overwriting
-i Interactive, prompt before overwrite


у меня прям косяк на косяке))

Megarem
29-09-2009, 21:05
Alesot: нет, не умеет. С этим можно справиться используя только один wget
Alexander. K: По идее должен. Что за ошибка? Если ошибка вгета, то надо установить пакет wget-ssl
joohny: Это не новое. Эта та же проблема путей, когда mv вызывается из прошивки, а не из /opt/bin. Прописывать "export PATH" пробовали?

joohny
30-09-2009, 06:44
joohny: Это не новое. Эта та же проблема путей, когда mv вызывается из прошивки, а не из /opt/bin. Прописывать "export PATH" пробовали?
Да, пробовал, после этого про grep вроде не появлялось!

Megarem
30-09-2009, 08:44
Да, пробовал, после этого про grep вроде не появлялось!
Это хорошо, скрипт поправил. Нашел неприятный глюк - в описании пакета зависимости были прописаны неправильно и нужные для работы скрипта зависимые пакеты могли не скачиваться. Вообщем скачай новый пакет и поставь его. Если он при установке потянет дополнительные пакеты - значит проблема была в этом. В частности должен установиться coreutils, в котором и находится правильная версия команды mv.

колбаскин
30-09-2009, 09:13
Я так понял только у меня скрипт убивает роутер наглухо?
1 закачка, 30 минут нормально и потом висяк...
зайти на роутер не могу!