SVN: toys/fun/rsget.pl
sparky
sparky at pld-linux.org
Fri Jan 9 00:14:23 CET 2009
Author: sparky
Date: Fri Jan 9 00:14:22 2009
New Revision: 10059
Modified:
toys/fun/rsget.pl
Log:
- limit number of retries caused by unknown problems (e.g. page defign changes)
- fix NL to also work with the alternative page design
Modified: toys/fun/rsget.pl
==============================================================================
--- toys/fun/rsget.pl (original)
+++ toys/fun/rsget.pl Fri Jan 9 00:14:22 2009
@@ -227,7 +227,7 @@
if ( $err ) {
my $error = $curl->errbuf;
$obj->print( "error: $err" );
- $obj->stage1();
+ $obj->problem();
return undef;
}
@@ -383,7 +383,7 @@
@_,
url => $url,
id => $id,
- try => 10,
+ try => 0,
line => $line,
net => $net,
netname => "[$net] $fn: ",
@@ -464,6 +464,25 @@
$self->finish( $msg );
}
+sub start
+{
+ my $self = shift;
+ return $self->stage1();
+}
+
+sub problem
+{
+ my $self = shift;
+ my $var = shift;
+ my $msg = "";
+ $msg = " (undefined var: $var)" if $var;
+ if ( ++$self->{try} < 8 ) {
+ return $self->wait( 2 ** $self->{try}, \&start, "unknown problem$msg, waiting" );
+ } else {
+ return $self->error( "unknown problem$msg, aborting" );
+ }
+}
+
# }}}
package Get::RapidShare; # {{{
@@ -504,14 +523,8 @@
return $self->wait( $1 * 60, \&stage1, "servers overloaded, waiting" );
} elsif ( $body =~ /form id="ff" action="(.*?)"/m ) {
$link = $1;
- $self->{s2problems} = 0;
} else {
- if ( $self->{s2problems} ) {
- return $self->error( "unknown problem" );
- } else {
- $self->{s2problems} = 1;
- return $self->wait( 5 * 60, \&stage1, "unknown problems, retrying in" );
- }
+ return $self->problem( "link" );
}
$self->curl( $link, \&stage3, post => 'dl.start=Free' );
@@ -532,7 +545,7 @@
return $self->wait( $m * 60 + 10, \&stage1, "free limit reached, waiting" );
}
unless ( $body =~ /var c=([0-9]+);/m ) {
- return $self->stage1();
+ return $self->problem( "var c=" );
}
my $wait = $1;
@@ -591,12 +604,15 @@
if ( $body =~ /Sorry, we don't host the requested file/ ) {
return $self->error( "file not found" );
}
- my ($link) = ($body =~ /"(.*?captcha=1)"/);
+ if ( $body =~ /We will prepare your download/ ) {
+ return $self->wait( 60, \&stage1 );
+ }
+ my ($link) = ($body =~ /href="(.*?captcha=1)"/);
unless ( defined $link ) {
if ($body =~ /MAINTENANCE/ ) {
return $self->wait( 10 * 60, \&stage1, "server maintenence, will try in" );
}
- return $self->stage1();
+ return $self->problem( "link" );
}
$link =~ s/&/&/g;
@@ -625,7 +641,7 @@
if ( $body =~ m/$search/ ) {
$self->{$name} = $1;
} else {
- return $self->stage1()
+ return $self->problem( $name )
}
}
@@ -672,24 +688,13 @@
return $self->wait( $1 / 100, \&stage1, "free limit reached, waiting" );
}
unless ( $body =~ /please wait .*countdown\(([0-9]+),/ ) {
- if ( $self->{s6problems} ) {
- return $self->error( "unknown problem" );
- } else {
- $self->{s6problems} = 1;
- return $self->wait( 5 * 60, \&stage1, "unknown problem, retrying in" );
- }
+ return $self->problem( "countdown" );
}
my $wait = $1 / 100 + 1;
unless ( $body =~ m#<a class="Orange_Link" href="(.*?)"#) {
- if ( $self->{s6problems} ) {
- return $self->error( "unknown problem" );
- } else {
- $self->{s6problems} = 1;
- return $self->wait( 5 * 60, \&stage1, "unknown problem, retrying in" );
- }
+ return $self->problem( "Orange_Link" );
}
$self->{file_url} = $1;
- $self->{s6problems} = 0;
$self->wait( $wait, \&stage7, "starting in" );
}
@@ -978,7 +983,7 @@
if ( $body =~ m/$search/ ) {
$self->{$name} = $1;
} else {
- return $self->stage1()
+ return $self->problem( $name )
}
}
@@ -1020,7 +1025,7 @@
if ( $body =~ m/$search/ ) {
$self->{$name} = $1;
} else {
- return $self->stage1()
+ return $self->problem( $name )
}
}
More information about the pld-cvs-commit
mailing list