LINUX.ORG.RU

[bash] помогите доработать скрипт для wget

 


0

0

На нашем файлопомойнике все выкладывается в архивах

Сперва получается ссылка вида http://arkhangelsk.data.cod.ru/16044785456

Затем перейдя по ссылке получаем линк на скачку. Короче ГЕМОРОИЩЕ!!!

Программы для скачки есть только для венды но под вайном все архивы битые

Всвязи с этим кто-то сочинил скрипт:

#!/bin/sh for i in `cat links`; do curl `echo $i` -d submit=1|grep files|sed -r s/h.+=\"// |sed -r s/\".+//|sed -r s/.+T//|xargs wget -c;done

Он берет ссылки из файла "links", куда они были аккуратно сохранены

Все вроде работает и можно теперь облегченно вздохнуть, но выглядит это ужасно. Да и ручной работы все равно много.

Подкиньте каких нибудь идей

★★★★★

Вопрос в догонку. Есть список ссылок, уже сформированный grep'ом по маске grep http://arkhangelsk.data.cod.ru/...........

kiykontsert.part2.rar" - http://arkhangelsk.data.cod.ru/15981608752 - 14.01.2009 21:45

"01Bashlachev1.rar" - http://arkhangelsk.data.cod.ru/15988752176 - 14.01.2009 23:31

"02Bashlachev2.rar" - http://arkhangelsk.data.cod.ru/15990456112 - 14.01.2009 23:50

"03Bashlachev3.rar" - http://arkhangelsk.data.cod.ru/15992749872 - 15.01.2009 00:15

Как из этого списка выудить чистые ссылки http://arkhangelsk.data.cod.ru/15992749872

bioreactor ★★★★★
() автор топика

Не вполне понял задачу, но первое, что в глаза бросается: можно заменить

|grep files|sed -r s/h.+=\"// |sed -r s/\".+//|sed -r s/.+T//

на

sed -r '/files/ s/h.+=\"// ; /files/ s/\".+// ; /files/ s/.+T//'

Читабельнее (немного) и работать должно быстрее.

Плюс, по ссылке сказали, что сервис не доступен извне

dexpl ★★★★★
()
Ответ на: комментарий от dexpl

Это ресурс для адсл щиков северо-запада АВАНГАРД

Внешне недоступен

bioreactor ★★★★★
() автор топика
Ответ на: комментарий от bioreactor

Теперь нарастим сервиса

Отказываемся от файла links

Требуется чтоб скрипт спрашивал ссылки. Ему скармливается скопированный с сайта текст с сылками, далее (awk '{ print $3 }' новый\ файл |grep http://arkhangelsk.data.cod.ru/...........) обрабатывает его до удобного вида.

Как реализовать запрос ввода ссылок в баше?

bioreactor ★★★★★
() автор топика
Ответ на: комментарий от dGhost

О! спасибо огромное.

А то в сети только какие то обрезки находил

bioreactor ★★★★★
() автор топика

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

#!/usr/bin/perl
use strict;
use Socket;
use constant TCP => 6;
use constant HTTP => 80;

open(F, $ARGV[0]) or die "Can't open download list!";
while(<F>) {
        if(/http:\/\/\w+.data.cod.ru\/\d+/) {
                wget(getlink($&));
        }
}
close(F);
exit(0);

sub getlink
{
        my $target = shift;
        return 0 if $target eq '';
        my ($null, $null, $host, $query) = split(/\//, $target);
        my $saddr = sockaddr_in(HTTP, (gethostbyname($host))[4]);
        socket(SOCK, PF_INET, SOCK_STREAM, TCP) or return 0;
        connect(SOCK, $saddr) or return 0;
        send (SOCK, "GET /$query HTTP/1.1\nHost: $host\n\n", 0);
        my $link = '';
        my $filename = '';
        while($_ = <SOCK>) {
                if(/<li>файл: <b title=".*">(.*)<\/b>/) {
                        $filename = $1;
                }
                if(/http:\/\/files.\w+.data.cod.ru\/\?[\w%]+/) {
                        $link = $&;
                        last;
                }
        }
        close SOCK;
        return ($link, $filename);
}

sub wget
{
        my ($link, $filename) = @_;
        system "wget -cO '$filename' $link";
}

Deleted
()
Ответ на: комментарий от YesSSS

Благодарю всех за помощь

В итоге получилось вот это:


#!/bin/sh
# Powered by biorereactor & LOR

mv /tmp/nwlinks /tmp/nwlinks.bak #данные предыдущего сеанса сохраняются в файле nwlinks.bak

echo Вы хотите запустить предыдущий сеанс? \(y/n\)
read ZAPROS
while [ "$ZAPROS" = y ]
do
	mv /tmp/nwlinks.bak /tmp/nwlinks
done

echo Введите ссылки в редакторе "nano"
nano /tmp/nwlinks #Если вы используете иной текстовый редактор в своей системе, то замените "nano" на свой текстовый редактор
for i in `awk '{ print $3 }' /tmp/nwlinks |grep http://arkhangelsk.data.cod.ru/...........`;
do
	curl `echo $i` -d submit=1 | grep files | sed -r '/files/ s/h.+="// ; /files/ s/".+// ; /files/ s/.+T//' | xargs wget -c;
done

bioreactor ★★★★★
() автор топика
Ответ на: комментарий от bioreactor

Вот сдам сессию доделаю до взрослого вида, прикручу перезакачку, очередь закачек ну и что-нибудь еще. А пока прыгаю от счастья

bioreactor ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.