Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » rapidshare - качаем из шела

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

dimats

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Эта тема кое где упоминается вскользь, но найти ее нереально...
решил вынести отдельно....
 
 
В общем что делать если есть шел и надо туда качать с рапидшары ?
 
есть решения !
например здесь :
http://relf.livejournal.com/69652.html
 
 

Код:
 
#!/usr/bin/perl
print("RapidShare downloader 2.2 (c) 2005,06 by RElf\n");
 
my $tries = 20;       # maximum number of tries per file
my $minsize = 20000;  # files of smaller size considered "bad"
 
my $fake_agent = "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)";
 
# wget executable name
my $wget = "wget";
# wget options: set up proxy or fake agent or both or whatever...
#$wget .= " -e http_proxy=192.168.0.1:80 --proxy";
$wget .= " -U \"$fake_agent\"";
 
my $tempfile1 = "rapidl1.tmp";
my $tempfile2 = "rapidl2.tmp";
$| = 1;
 
if($#ARGV<0) {
    print("Usage: rapidl.pl [-p <proxy>] {<url> | -i <file> | -r <url>}\n");
    exit;
}
 
my $all;
for(my $i=0;$i<=$#ARGV;++$i) {
    if($ARGV[$i] eq "-p") {
        $wget.=" -e http_proxy=$ARGV[++$i] --proxy";
    }
    elsif($ARGV[$i] eq "-r") {
        $all=`$wget -O - $ARGV[++$i]`;
    }
    elsif($ARGV[$i] eq "-i") {
        open(UL,$ARGV[++$i]) or die("Cannot open URL list!");
        $/ = undef;
        $all=<UL>;
        close(UL);
    }
    elsif($i==$#ARGV) {
        $all=$ARGV[$i];
    }
    else {
        print("Unrecognized option.\n");
        exit;
    }
}
 
my @failed;
while($all=~ /(http:\/\/(www.)?rapidshare.de\/files\/.*?)(["\n\s]|$)/gs) {
    my $url = $1;
    if(hardGet($url)) { push(@failed,$url); }
    print($url,"\n");
}
print("FAILED URLS: ",scalar(@failed),"\n");
foreach (@failed) { print($_,"\n"); }
exit;
 
sub hardGet {
    my ($url) = @_;
    my $t = 1;
    my $rc;
    do {
        print("Try:",$t,": ",$url,"\n");
        $rc = rapidGet($url);
        print("RETURN: ",$rc,"\n");
        if($rc==50005) {
            if( /wait (\d*) minutes/ ) {
                for(my $m=$1;$m;$m--) {
                    print("\rWaiting $m minutes... ");
                    sleep(60);
                }
                print("\rWaiting $1 minutes completed!\n");
                $rc = 1;
                $t--;
            }
            elsif( /try again later/ ) {
                print("Suggested to try again.\n");
                $rc = 1;
            }
            elsif( /Your IP-address (.*) is already downloading/ ) {
                print("Your IP $1 is already downloading something.\n");
                $rc = 1;
            }
            else { print("Please check manually!\n"); }
        }
        if($rc>=50000) {
            print("CRITICAL ERROR. Giving up.\n");
            return $rc;
        }
        else {
            print("Cooling down...\n"); sleep 60;
        }
    } while($t++<$tries && $rc);
    if($rc) { print("FAILED:",$rc,": ",$url,"\n"); }
    return $rc;
}
 
sub rapidGet {
    my ($url) = @_;
 
    # parse url
    if( $url!~ /rapidshare.de(.*)$/ ) { return 50000; }
    my $location=$1;
    if( $location!~ /\/([^\/]*?)(.html)?$/ ) { return 50001; }
    my $filename=$1;
 
    # click [Free] button and process the second page
    $_=`$wget http://rapidshare.de/ -O - --post-data="uri=$location&dl.start=Free" --referer=$url`;
    if($?) { return 10000+$?; }
    my $sec;
    if( /var c = (\d+);/) { $sec=$1; } else { $sec=90; }
    if( ! /unescape\(\'(.*)\'\)/ ) { return 50005; }
    $_=urlDecode($1);
    if( ! /action=\"(.*)\" method/ ) { return 50002; }
    my $link=$1;
    if( ! /type=\"text\" name=\"(.*?)\"/ ) { return 50003; }
    my $codeword=$1;
    if( ! /src=\"(.*png)\"\>/ ) { return 50004; }
    my $png=$1;
 
    print("Waiting ".$sec."+5 seconds for the ticket...\n");
    sleep($sec+5);
 
    # get and recognize the code
    `$wget $png --referer=http://rapidshare.de/ -O $tempfile1`;
    if($?) { return 20000+$?; }
    my $code = OCR($tempfile1);
    unlink($tempfile1);
 
    # get the file
    `$wget "$link?$codeword=$code" -O "$filename" --referer=http://rapidshare.de/`;
    if($?) { return 30000+$?; }
    my $size = -s $filename;
    if($size<$minsize) { return 40000; }
    return 0;
}
 
sub urlDecode {
    my ($string) = @_;
    $string =~ tr/+/ /;
    $string =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    return $string;
}
 
sub OCR {
 
$_ = `convert $_[0] -compress none pnm:-`;
my @pnm = split;
my $n = $pnm[1];
my $m = $pnm[2];
splice(@pnm,0,4);
 
my @clr; $#clr = $m;
for(my $i=0;$i<$m;$i++) {
    $clr[$i] = [];
    for(my $j=0;$j<$n;$j++) {
        my @rgb = splice(@pnm, 0, 3);
        $clr[$i]->[$j] = ($rgb[0]<<16) + ($rgb[1]<<8) + $rgb[2];
    }
}
 
my $white = $clr[0]->[0];
 
# detecting other colors and sort them according to average x value
my %S; my %E; my %D;
for(my $i=0;$i<$m;$i++) {
    for(my $j=0;$j<$n;$j++) {
        my $k = $clr[$i]->[$j];
        if( $k != $white) {
            if(!exists($S{$k})) { $S{$k}=0 }
            if(!exists($E{$k})) { $E{$k}=0 }
            if(!exists($D{$k})) { $D{$k}=0 }
            $S{$k}++;
            $E{$k} += $j;
            $D{$k} += $j*$j;
        }
    }
}
 
foreach my $key (keys %E) {
    $E{$key} /= $S{$key};                               # average
    $D{$key} /= $S{$key}; $D{$key} -= $E{$key}**2;      # dispersion
}
 
my $TOPCOL = 5;
my @c;
foreach my $key (keys %D) {
    if($D{$key}>200) {
        if($S{$key}>200) {
            #print("OOPS! Picture has 2 colors!\n");
            push(@c,$key);
            $TOPCOL = 3;
        }
        delete($S{$key});
        delete($E{$key});
        delete($D{$key});
    }
}
 
# leave 5 most represented colors
my %C = reverse %S;
my @k = sort {$a<=>$b} keys %C;
my $t = $k[-$TOPCOL];
foreach my $key (keys %S) {
    if($S{$key}<$t) {
        delete($S{$key});
        delete($E{$key});
        delete($D{$key});
    }
}
 
%C = reverse %E;
foreach my $key (sort {$a<=>$b} keys %C) {
    push(@c,$C{$key});
}
if($TOPCOL==3) { push(@c,$c[0]); }
 
# creating separate BW images for each letter
my @L1; my @L2; my @L3;
$#L1=$m; $#L2=$m; $#L3=$m;
for(my $i=0;$i<$m;$i++) {
    $L1[$i] = [];
    $L2[$i] = [];
    $L3[$i] = [];
    for(my $j=0;$j<$n;$j++) {
        $L1[$i]->[$j] = $white;
        $L2[$i]->[$j] = $white;
        $L3[$i]->[$j] = $white;
        my $k = $clr[$i]->[$j];
        if($j<$n/2) { if($k==$c[0] || $k==$c[1]) { $L1[$i]->[$j]=0 } }
        if($k==@c[1] || $k==$c[2] || $k==$c[3]) { $L2[$i]->[$j]=0 }
        if($j>$n/2) { if($k==$c[3] || $k==$c[4]) { $L3[$i]->[$j]=0 } }
    }
}
 
return recog(\@L1) . recog(\@L2) . recog(\@L3);
}
 
sub recog {
    my ($a) = @_;
    my $m = scalar(@$a);
    my $n = scalar(@{$a->[0]});
    my $white = $a->[0]->[0];
    my @L;
    # clean and smooth the image
    for(my $i=0;$i<$m;$i++) {
        $L[$i] = [];
        for(my $j=0;$j<$n;$j++) {
            my $k = 0;
            $L[$i]->[$j] = $a->[$i]->[$j];
            if($i>0) {
                if($j>0 && $a->[$i-1]->[$j-1]==0) { $k++ }
                if($a->[$i-1]->[$j]==0) { $k++ }
                if($j+1<$n && $a->[$i-1]->[$j+1]==0) { $k++ }
            }
            if($j>0 && $a->[$i]->[$j-1]==0) { $k++ }
            if($j+1<$n && $a->[$i]->[$j+1]==0) { $k++ }
            if($i+1<$m) {
                if($j>0 && $a->[$i+1]->[$j-1]==0) { $k++ }
                if($a->[$i+1]->[$j]==0) { $k++ }
                if($j+1<$n && $a->[$i+1]->[$j+1]==0) { $k++ }
            }
            if($k>4) { $L[$i]->[$j] = 0 }
            if($k<4) { $L[$i]->[$j] = $white }
        }
    }
 
    # save the image
    open(OUTF, "> $tempfile2") or die "Couldn't write to $tempfile2\n";
    print OUTF ("P3\n");
    print OUTF ($n," ",$m," 255\n");
    for(my $i=0;$i<$m;$i++) {
        for(my $j=0;$j<$n;$j++) {
            my $k = $L[$i]->[$j];
            print OUTF ($k>>16," ",($k>>8)&0xFF," ",$k&0xFF," ");
        }
        print OUTF ("\n");
    }
    close(OUTF);
 
    my $code = hardOCR($tempfile2);
    unlink($tempfile2);
    return $code;
}
 
sub hardOCR {
    my ($image) = @_;
    my $deg  = 4;
 
    $_ = `convert $image -type grayscale pgm:- | gocr -`;
    s/[\s|\n]//g;
    my @c = split(//,$_);
 
    do {
        if(/_/) {
            $_ = `convert $image -rotate $deg -type grayscale pgm:- | gocr -`;
            s/[\s|\n]//g;
            split(//,$_);
            for(my $i=0;$i<@c && $i<@_;$i++) {
              if($c[$i]eq'_') { $c[$i] = $_[$i]; }
            }
        }
        $_ = join('',@c);
        $deg = -$deg;
    } until($deg>0);
 
    s/[\s|_]//g;
    return $_;
}
 
 

Не забудьте проставить Imagemagik, gocr, wget только.
 
 
у меня работает все это работает!
 
 
И еще есть:
http://www.freebyte.hut2.ru/p?p=11
GSSR - качалка с шаринг серверов на PHP, вроде бы тоже умеет автоматически распознавать коды на рапидшаре, поддерживает несколько других подобных сервисов.
 

Всего записей: 204 | Зарегистр. 20-11-2004 | Отправлено: 18:00 27-03-2006
Dolphin



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо, действительно долго искал, сегодня буду опробовать дома.

Всего записей: 720 | Зарегистр. 14-01-2002 | Отправлено: 17:39 19-04-2006
sergiigray



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть еще решения?

Всего записей: 130 | Зарегистр. 26-01-2003 | Отправлено: 13:51 26-06-2007
Pawo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Есть такая прога, называется Universal Share Downloader. Качает с RapidShare.de, MyTempDir.com, qFile.de, WebFile.ru, MegaUpload и т.д.
Тема по ней

Всего записей: 1105 | Зарегистр. 05-05-2007 | Отправлено: 22:43 26-06-2007 | Исправлено: Pawo, 22:46 26-06-2007
sergiigray



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Спасибо большое, но наскольо мне известно данный софт не робит по линуксом...

Всего записей: 130 | Зарегистр. 26-01-2003 | Отправлено: 08:54 27-06-2007
RElf

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обновил свой скрипт.
Теперь он может качать файлы пачками с rapidshare.com (не .de!) в автоматическом режиме.
Живет там же: http://relf.livejournal.com/69652.html

Всего записей: 438 | Зарегистр. 15-12-2005 | Отправлено: 01:07 30-06-2007
faust688



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите прогу для винды , которая может качать 1 и тот же фаил до уср*чки ????
 
без моего участия//

Всего записей: 4 | Зарегистр. 24-08-2008 | Отправлено: 04:47 24-08-2008
Shpindler



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Подскажите прогу для винды , которая может качать 1 и тот же фаил до уср*чки ????
 
без моего участия//

 
Это для накрутки счетчика на рапиде?
Дык можно тот же USD настроить чтобы по кругу гонял.

Всего записей: 1260 | Зарегистр. 24-07-2001 | Отправлено: 14:51 13-02-2009
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Программы » rapidshare - качаем из шела


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru