Загрузка файлов из интернета
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 149
- ОС: Linux
Загрузка файлов из интернета
Есть такая задача.
Как с помощью shell можно автоматизировать процесс загрузки файлов с интернета.
Так чтобы на сервере поставить загрузку на ночь и до утра забыть?
Для примера возьмем сайт http://film.psihov.net.ua/
Скажем, необходимо скачать пару серий сериала Chack
http://film.psihov.net.ua/?action=fullcard&id=3388
На веб странице представлены ссылки для загрузки серий,
которые можно загрузить с помощь, скажем, firefox.
Следить за загрузкой серий и щелкать лишний раз,
при необходимости загрузки следующей серии, трата лишнего времени.
Как бы этот процесс автоматизировать?
В firefox можно получить ссылку для загрузки серии( или очередного фильма)
ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e01.avi
Каждая следующая ссылка для сериала изменяется номером названия файла для загрузки
(для каждого фильма своя сылка)
// ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e01.avi
// ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e02.avi
// ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e03.avi
...................................
Вариант в консоли
firefox ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e01.avi
требует подтверждения загрузки. А ставить галочку в настройках на автоматическую
загрузку аналогичных файлов не очень хочется, так как при случайном нажатии, при просмотре для выбора,
будет грузить не то что необходимо.
К тому же при повторении для следующей серии
firefox ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e02.avi
............
будет открываться еще одно окно firefox
Как бы решить такую задачу?
Возможно управление firefox с командной строки?
Как с помощью shell можно автоматизировать процесс загрузки файлов с интернета.
Так чтобы на сервере поставить загрузку на ночь и до утра забыть?
Для примера возьмем сайт http://film.psihov.net.ua/
Скажем, необходимо скачать пару серий сериала Chack
http://film.psihov.net.ua/?action=fullcard&id=3388
На веб странице представлены ссылки для загрузки серий,
которые можно загрузить с помощь, скажем, firefox.
Следить за загрузкой серий и щелкать лишний раз,
при необходимости загрузки следующей серии, трата лишнего времени.
Как бы этот процесс автоматизировать?
В firefox можно получить ссылку для загрузки серии( или очередного фильма)
ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e01.avi
Каждая следующая ссылка для сериала изменяется номером названия файла для загрузки
(для каждого фильма своя сылка)
// ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e01.avi
// ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e02.avi
// ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e03.avi
...................................
Вариант в консоли
firefox ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e01.avi
требует подтверждения загрузки. А ставить галочку в настройках на автоматическую
загрузку аналогичных файлов не очень хочется, так как при случайном нажатии, при просмотре для выбора,
будет грузить не то что необходимо.
К тому же при повторении для следующей серии
firefox ftp://series:series@ftp3.psihov.net.ua/Ch...huck_s02e02.avi
............
будет открываться еще одно окно firefox
Как бы решить такую задачу?
Возможно управление firefox с командной строки?
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
-
- Модератор
- Сообщения: 4823
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: Загрузка файлов из интернета
Код: Выделить всё
for i in `seq 10`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
при желании скрипт можно довести до того, что он сам и ссылки будет со страницы парсить.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
SLEDopit писал(а): ↑06.02.2010 17:11Код: Выделить всё
for i in `seq 10`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
Код: Выделить всё
seq -w 10 | xargs -i wget 'ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e{}.avi'
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
Спасибо!
А как определить каталог,
в который будут сохранятся файлы загрузки?
При назначении задания на загрузку,
можно прописать куда необходимо производить сохранение файлов загрузки?

А как определить каталог,
в который будут сохранятся файлы загрузки?
При назначении задания на загрузку,
можно прописать куда необходимо производить сохранение файлов загрузки?
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
В текущий. Используйте cd.
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
То есть, сначала определить каталог cd /..... , а потом запустить команду на загрузку.
/////////////////////
А как на счет многозадачности.
Так, чтобы работал kppp и шла загрузка, по завершении которой kppp бы выключился
Такой ведь вариант не пройдет
Код: Выделить всё
cd /library/ 0100 Видео/1200 Сериалы/Chuck/01;
kppp -c IT
for i in `seq 10`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done;
kppp -k -q;
halt
kppp ведь в процессе выполнения.
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑06.02.2010 19:04Так, чтобы работал kppp и шла загрузка, по завершении которой kppp бы выключился
Оу. А что, kppp ещё кто-то пользуется?
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
/dev/random писал(а): ↑06.02.2010 19:09nilpointer писал(а): ↑06.02.2010 19:04Так, чтобы работал kppp и шла загрузка, по завершении которой kppp бы выключился
Оу. А что, kppp ещё кто-то пользуется?
Я могу подключить интернет только через kppp, USB 3G modem CDMA
А есть вариант kppp под консоль, если не будет KDE
если сервер будет без рабочего стола
Сервер дома, для личных нужд.
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
pppd. wvdial. Куча всего. А ещё большинство дистрибутивов позволяют настраивать соединение системными средствами, и поднимать/опускать его через ifup/ifdown или аналогичные команды.
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
А как в этом варианте?
kppp запускается и в режиме исполнения, занимая окно командной строки.
Как паралельно запустить исполнение загрузки, по завершении которой бы
исполнение программы kppp завершилось.
Код: Выделить всё
kppp -c IT;
for i in `seq 10`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done;
kppp -k -q;
kppp запускается и в режиме исполнения, занимая окно командной строки.
Как паралельно запустить исполнение загрузки, по завершении которой бы
исполнение программы kppp завершилось.
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑06.02.2010 19:28А как в этом варианте?
Код: Выделить всё
kppp -c IT; for i in `seq 10`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done; kppp -k -q;
kppp запускается и в режиме исполнения, занимая окно командной строки.
Как паралельно запустить исполнение загрузки, по завершении которой бы
исполнение программы kppp завершилось.
kppp -c IT &
Это запуск в фоне. А затем подождать несколько секунд, пока подключится сеть. Например, так:
until ping -c 2 yandex.ru; do sleep 5; done
-
- Сообщения: 1923
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑06.02.2010 19:04А как на счет многозадачности.
Так, чтобы работал kppp и шла загрузка, по завершении которой kppp бы выключился
1) какое отношение многозадачность имеет к загрузке?
1) кто мешает включить DOD?
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
SLEDopit писал(а): ↑06.02.2010 17:11где 10 - количество серийКод: Выделить всё
for i in `seq 10`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
при желании скрипт можно довести до того, что он сам и ссылки будет со страницы парсить.
А если необходимо скажем с 12 по 16 серии, то как можно организовать цикл?
И можно ли делать цикл в цикле?
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑07.02.2010 01:07А если необходимо скажем с 12 по 16 серии, то как можно организовать цикл?
seq 12 16, остальное так же.
Да.
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
Правильно ли будет?
Код: Выделить всё
for (( i=12; a <= 16; i++)) do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑07.02.2010 01:17Код: Выделить всё
for (( i=12; a <= 16; i++)) do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
Почти. После "))" ставится ";" или перевод строки.
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
Тоесть правильно
А двойные дужки обязательны, или я тоже перестарался.
Вернее я нашел один с примеров и подумал что подойдет.
Код: Выделить всё
for (( i=12; a <= 16; i++)); do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
А двойные дужки обязательны, или я тоже перестарался.
Вернее я нашел один с примеров и подумал что подойдет.
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
Да, правильно.
Да, обязательно.
Да, обязательно.
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
И последнее к этой теме
правильно ли
правильно ли
Код: Выделить всё
for (( i=1; a <= 3; i++)); do for (( j=1; a <= 10; j++)); do
wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s0$(printf '%0.2d' $i)e$(printf '%0.2d' $j).avi;
done; done
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑07.02.2010 01:39И последнее к этой теме
правильно ли
Код: Выделить всё
for (( i=1; a <= 3; i++)); do for (( j=1; a <= 10; j++)); do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s0$(printf '%0.2d' $i)e$(printf '%0.2d' $j).avi; done; done
Да. Кстати, для проверки можно было заменить wget на echo и запустить.
-
- Сообщения: 229
- ОС: Windows Vista
Re: Загрузка файлов из интернета
Я конечно далек от мысли...(с)
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
Одну вещь в этой конструкции я все же не понял.
Chuck%5CChuck_s02e01.avi
Chuck%5CChuck_s02e11.avi
Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi
Как определяется когда i<10 добавлять спереди 0 и
если i>=10 нет? По какому принципу?
Код: Выделить всё
for (( i=1; a <= 12; i++)); do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
Chuck%5CChuck_s02e01.avi
Chuck%5CChuck_s02e11.avi
Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi
Как определяется когда i<10 добавлять спереди 0 и
если i>=10 нет? По какому принципу?
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
Re: Загрузка файлов из интернета
printf %0.2d
смысл тот же, что и в сишном printf: 2 символа, дополнять слева нулями. Подробности в любой книге по C или man 3 printf
смысл тот же, что и в сишном printf: 2 символа, дополнять слева нулями. Подробности в любой книге по C или man 3 printf
Спасибо сказали:
-
- Сообщения: 149
- ОС: Linux
Re: Загрузка файлов из интернета
Возможно ли с помощью wget загружать файлы с интернета используя список файлов, который сохранен в простом файле текстового формата?
Например файл list такого содержания:
...
ftp://movies:movies@ftp2.psihov.net.ua/Mortal%20Kombat.avi
ftp://movies:movies@ftp2.psihov.net.ua/Mortal_Combat_2.avi
ftp://movies:movies@ftp4.psihov.net.ua/Sniper.avi
ftp://movies:movies@ftp4.psihov.net.ua/Hottabych.avi
ftp://movies:movies@ftp4.psihov.net.ua/Armageddon.avi
ftp://movies:movies@ftp4.psihov.net.ua/Below.avi
...
Как задать команду в командной строке, при условии что файл list
уже подготовлен и находится в активном каталоге,
в который будут сохранятся скачиваемые файлы.
Например файл list такого содержания:
...
ftp://movies:movies@ftp2.psihov.net.ua/Mortal%20Kombat.avi
ftp://movies:movies@ftp2.psihov.net.ua/Mortal_Combat_2.avi
ftp://movies:movies@ftp4.psihov.net.ua/Sniper.avi
ftp://movies:movies@ftp4.psihov.net.ua/Hottabych.avi
ftp://movies:movies@ftp4.psihov.net.ua/Armageddon.avi
ftp://movies:movies@ftp4.psihov.net.ua/Below.avi
...
Как задать команду в командной строке, при условии что файл list
уже подготовлен и находится в активном каталоге,
в который будут сохранятся скачиваемые файлы.
-
- Администратор
- Сообщения: 5404
- ОС: Gentoo
-
- Сообщения: 246
- ОС: Solaris, Debian, Ubuntu
Re: Загрузка файлов из интернета
nilpointer писал(а): ↑07.02.2010 11:23Одну вещь в этой конструкции я все же не понял.
Код: Выделить всё
for (( i=1; a <= 12; i++)); do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi;done
Chuck%5CChuck_s02e01.avi
Chuck%5CChuck_s02e11.avi
Chuck%5CChuck_s02e$(printf '%0.2d' $i).avi
Как определяется когда i<10 добавлять спереди 0 и
если i>=10 нет? По какому принципу?
На мой взгляд здесь проще было бы так сделать:
Код: Выделить всё
for i in `seq -w 1 12`; do wget ftp://series:series@ftp3.psihov.net.ua/Chuck%5CChuck_s02e$i.avi; done
Команда 'seq -w' как раз и дополняет числа нулями спереди:
Код: Выделить всё
# echo `seq -w 1 12`
01 02 03 04 05 06 07 08 09 10 11 12