Author: sparky
Date: Sun Dec 28 15:19:49 2008
New Revision: 10042

Modified:
   toys/fun/rsget.pl
Log:
- added download ETA, support "file not found"


Modified: toys/fun/rsget.pl
==============================================================================
--- toys/fun/rsget.pl   (original)
+++ toys/fun/rsget.pl   Sun Dec 28 15:19:49 2008
@@ -33,16 +33,20 @@
        print $file $chunk;
 
        my $size = "$self->{got} / $self->{total}";
+       my $eta = "";
+       my $time = time;
        if ( int $self->{total} > 0 ) {
-               $size .= sprintf " [%.2f%%]", $self->{got} * 100 / 
$self->{total}
+               $size .= sprintf " [%.2f%%]", $self->{got} * 100 / 
$self->{total};
+               if ( $time > $self->{start} ) {
+                       my $tleft = ($self->{total} - $self->{got}) / 
$self->{got} * ($time - $self->{start});
+                       $eta = sprintf "%2d:%.2d", $tleft / 60, $tleft % 60;
+               }
        }
        my $speed = "???";
-       my $time = time;
-       if ( $time > $self->{start} ) {
-               $speed = sprintf "%.2f", $self->{got} / ($time - 
$self->{start}) / 1024;
-       }
+       $speed = sprintf "%.2f", $self->{got} / ($time - $self->{start}) / 1024
+               if $time > $self->{start};
 
-       print "\r$self->{fn}: $size; ${speed}KB/s   ";
+       print "\r$self->{fn}: $size; ${speed}KB/s $eta  ";
 
        return $len;
 }
@@ -110,7 +114,7 @@
 rsget_restart:
        $try -= 1;
        if ( $try <= 0 ) {
-               return undef;
+               return "problems";
        }
 
        print "\r[RS] $fn: (re)starting...         ";
@@ -118,6 +122,10 @@
        unless ( $body ) {
                goto rsget_restart;
        }
+       if ( $body =~ /The file could not be found\.  Please check the download 
link\./m ) {
+               print "\r[RS] $fn: file not found    \n";
+               return "file not found";
+       }
        $body =~ /form id="ff" action="(.*?)"/m;
        my $link = $1;
 
@@ -151,7 +159,7 @@
        curl( $link, post => 'mirror=on', file => $fn, net => '[RS] ' );
        print "DONE!\n";
 
-       return $fn;
+       return "DONE";
 }
 
 my $get_list = shift @ARGV || 'get.list';
@@ -173,7 +181,8 @@
                if ( $line =~ m/^\s*(http:\/\/rapidshare\.com\/.*?)\s*$/ ) {
                        $get_url = $1;
                        if ( exists $gotlist{$get_url} ) {
-                               push @newlist, "# " . $line;
+                               chomp $line;
+                               push @newlist, "# " . $line . " " . 
$gotlist{$get_url} . "\n";
                        } else {
                                $get_func = \&rsget;
                                push @newlist, $get_url . "\n";
@@ -193,8 +202,8 @@
        }
 
        if ( $get_url and $get_func ) {
-               if ( my $file = &$get_func( $get_url ) ) {
-                       $gotlist{$get_url} = $file;
+               if ( my $reason = &$get_func( $get_url ) ) {
+                       $gotlist{$get_url} = $reason;
                }
        } else {
                print "\rwaiting for urls";
_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to