SVN: toys/fun/rsget.pl
sparky
sparky at pld-linux.org
Tue Jan 6 16:10:51 CET 2009
Author: sparky
Date: Tue Jan 6 16:10:51 2009
New Revision: 10052
Modified:
toys/fun/rsget.pl
Log:
- added odsiebie.com
Modified: toys/fun/rsget.pl
==============================================================================
--- toys/fun/rsget.pl (original)
+++ toys/fun/rsget.pl Tue Jan 6 16:10:51 2009
@@ -56,7 +56,7 @@
$move = "\033[" . $steps . "B";
}
my $tl = length $text;
- substr $text, 15, $tl - $columns + 18, '...'
+ substr $text, 15, $tl - $columns + 3, '...'
if $tl > $columns;
print $move . "\r\033[K" . $text;
@@ -157,8 +157,7 @@
if ( $opts{cookies} ) {
$curl->setopt( CURLOPT_COOKIEJAR, $opts{cookies} );
- $curl->setopt( CURLOPT_COOKIEFILE, $opts{cookies} )
- if -r $opts{cookies};
+ $curl->setopt( CURLOPT_COOKIEFILE, $opts{cookies} );
}
$curl->setopt( CURLOPT_HEADERFUNCTION, \&body_scalar );
$curl->setopt( CURLOPT_WRITEHEADER, \$ecurl->{head} );
@@ -169,6 +168,7 @@
$curl->setopt( CURLOPT_REFERER, $opts{referer} )
if $opts{referer};
$curl->setopt( CURLOPT_ENCODING, 'gzip,deflate' );
+ $curl->setopt( CURLOPT_CONNECTTIMEOUT, 20 );
if ( $opts{post} ) {
my $post = $opts{post};
@@ -216,7 +216,9 @@
if ( $obj->{curl_next} ) {
my $func = $obj->{curl_next};
- my $body = $ecurl->{file} ? "DONE" : $ecurl->{body};
+ my $body = $ecurl->{file}
+ ? "DONE $ecurl->{file_name} $ecurl->{size_got} / $ecurl->{size_total}"
+ : $ecurl->{body};
my $eurl = $curl->getinfo( CURLINFO_EFFECTIVE_URL );
&$func( $obj, $body, $eurl );
@@ -271,10 +273,13 @@
my $size_total = $ecurl->{size_total};
my $time_diff = time() - $ecurl->{time_start};
+ $time_diff = 1 unless $time_diff;
my $eta = main::s2string( $time_diff );
my $speed = sprintf "%.2f", $size_total / ( $time_diff * 1024 );
- return "DONE $size_total; ${speed}KB/s $eta";
+ my @l = localtime;
+ my $date = sprintf "%d-%.2d-%.2d %2d:%.2d:%.2d", $l[5] + 1900, $l[4] + 1, @l[(3,2,1,0)];
+ return "DONE $size_total; ${speed}KB/s $eta @ $date";
}
@@ -324,18 +329,27 @@
# }}}
package Get; # {{{
-my $slots = 1;
my %running;
sub makenew
{
my $net = shift;
my $class = shift;
my $url = shift;
+ my $slots = 1;
+ if ( $_[0] eq "slots" ) {
+ shift;
+ $slots = shift;
+ }
return {} if $gotlist{ $url };
$running{ $net } = {} unless exists $running{ $net };
my $rn = $running{ $net };
return {} if $slots <= scalar keys %$rn;
+ foreach my $id ( keys %$rn ) {
+ if ( $rn->{ $id }->{url} eq $url ) {
+ return {};
+ }
+ }
my $id = 1;
++$id while exists $rn->{ $id };
@@ -437,7 +451,7 @@
my $proto = shift;
my $class = ref $proto || $proto;
my $url = shift;
- Get::makenew( "RS", $class, $url, @_ );
+ Get::makenew( "RS", $class, $url );
}
sub stage1
@@ -453,15 +467,24 @@
my ($self, $body, $url) = @_;
$self->print("starting......");
+ my $link;
if ( $body =~ /The file could not be found\. Please check the download link\./m ) {
return $self->error( "file not found" );
- }
- if ( $body =~ /Unfortunately you will have to wait ([0-9]+) minutes,/m ) {
+ } elsif ( $body =~ /file has been removed from the server\./m ) {
+ return $self->error( "file removed" );
+ } elsif ( $body =~ /Unfortunately you will have to wait ([0-9]+) minutes,/m ) {
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->stage1()
- unless $body =~ /form id="ff" action="(.*?)"/m;
- my $link = $1;
$self->curl( $link, \&stage3, post => 'dl.start=Free', referer => $url );
@@ -521,7 +544,6 @@
unlink $cookie if -e $cookie;
Get::makenew( "NL", $class, $url, cookie => $cookie );
-
}
sub stage1
@@ -815,6 +837,58 @@
}
# }}}
+package Get::OdSiebie; # {{{
+
+BEGIN {
+ our @ISA;
+ @ISA = qw(Get);
+}
+
+my $oscookie = 0;
+sub new
+{
+ my $proto = shift;
+ my $class = ref $proto || $proto;
+ my $url = shift;
+
+ ++$oscookie;
+ my $cookie = ".os.$oscookie.txt";
+ unlink $cookie if -e $cookie;
+
+ Get::makenew( "OS", $class, $url, slots => 16, cookie => $cookie );
+}
+
+sub stage1
+{
+ my $self = shift;
+
+ my $url = $self->{url};
+ $url =~ s#/pokaz/#/pobierz/#;
+
+ $self->print("starting...");
+ $self->curl( $url, \&stage2, cookies => $self->{cookie} );
+}
+
+sub stage2
+{
+ my ($self, $body, $url) = @_;
+
+ my $furl = $url;
+ $furl =~ s#/pobierz/#/download/#;
+ $self->{file_url} = $furl;
+
+ $self->print("downloading");
+
+ $self->download( referer => $url, cookies => $self->{cookie} );
+}
+
+sub DESTROY
+{
+ my $self = shift;
+ unlink $self->{cookie};
+}
+
+# }}}
package main;
my $get_list = shift @ARGV || 'get.list';
@@ -824,7 +898,8 @@
my $listmtime = 0;
sub readlist
{
- my $mtime = (stat $get_list)[9];
+ return unless -r $get_list;
+ my $mtime = (stat _)[9];
return unless $checklist or $mtime != $listmtime;
my @newlist;
@@ -841,11 +916,14 @@
} elsif ( $line =~ m#^\s*(http://netload\.in/datei.*?)\s*$# ) { #){# vimbug
$url = $1;
new Get::NetLoad( $1 );
+ } elsif ( $line =~ m#^\s*(http://odsiebie.com/(pokaz|pobierz)/.*?)\s*$# ) { #){# vimbug
+ $url = $1;
+ new Get::OdSiebie( $1 );
}
if ( $url ) {
if ( exists $gotlist{$url} ) {
- push @newlist, "# " . $gotlist{$url} . ": " . $line;
+ push @newlist, "# " . $gotlist{$url} . ":\n# " . $line;
} else {
push @newlist, $url . "\n";
}
More information about the pld-cvs-commit
mailing list