[SCM] Video extraction utility for YouTube, Google Video and other video sites (Debian packaging) branch, master, updated. upstream/2.1.7-214-g6762190

legatvs legatvs at gmail.com
Wed Apr 1 14:44:57 UTC 2009


The following commit has been merged in the master branch:
commit 89e285a74591a7c3b02f0f521b56d6095318686f
Author: legatvs <legatvs at gmail.com>
Date:   Sat Mar 14 17:15:06 2009 +0200

    Change progressbar to cclive lookalike.

diff --git a/clive b/clive
index e718914..80f3432 100755
--- a/clive
+++ b/clive
@@ -43,7 +43,6 @@ use Encode;
 
 use constant VERSION             => "2.1.7";
 use constant MBDIV               => 0x100000;
-use constant BP_REFRESH_INTERVAL => 0.2;
 use constant SHOWFMT_DEFAULT     => qq/%D: "%t" | %mMB/;
 
 # Non-essential modules: set flags indicating availability
@@ -845,7 +844,7 @@ sub dot_update {
     my ($clientp, $dltotal, $dlnow, $ultotal, $ulnow) = @_;
 
     my ($percent, $elapsed, $rate, $eta) =
-        calc_progress($dlnow, $dltotal, 1);
+        calc_progress($dlnow, $dltotal);
 
     return 0
         if $elapsed < 1.0;
@@ -906,7 +905,9 @@ sub dot_print_row_stats {
     printf "%s%s", $last ? "=":" ", $eta;
 }
 
-sub bar_init { # A lazy man's progressbar
+use constant DEFAULT_TERM_WIDTH => 80;
+
+sub bar_init {
     my ($initial, $total) = @_;
 
     $total = $initial
@@ -914,62 +915,79 @@ sub bar_init { # A lazy man's progressbar
 
     $bp{initial} = $initial; # bytes dl previously
     $bp{total}   = $total;   # expected bytes
-
-    $bp{last_update} = 0;
-
-    bar_update(-1, $total, 0);
+    $bp{width}   = DEFAULT_TERM_WIDTH-1;
+    $bp{started} = time;
+    $bp{lastupd} = 0;
+    $bp{done}    = 0;
 }
 
-sub bar_update { # See no bar, hear no bar, speak no bar.
-    my ($clientp, $dltotal, $dlnow, $ultotal, $ulnow, $done) = @_;
+use constant REFRESH_INTERVAL => 0.2;
 
-    my $elapsed = time - $time_started;
+sub bar_update {
+    my ($clientp, $total, $now, $ultotal, $ulnow) = @_;
+
+    my $tnow        = time;
+    my $elapsed     = $tnow - $bp{started};
+    my $force_update= 0;
 
-    if ( !$done ) {
+    if (!$bp{done}) {
         return 0
-            if ( $elapsed - $bp{last_update} < BP_REFRESH_INTERVAL);
+            if ( ($elapsed - $bp{lastupd}) < REFRESH_INTERVAL
+                && !$force_update)
     } else {
-        $dlnow = $bp{total};
+        $now = $bp{total};
     }
 
-    $bp{last_update} = $elapsed;
+    $bp{lastupd} = $elapsed;
+    my $size = $bp{initial} + $now;
 
-    my $size = $bp{initial} + $dlnow;
-    my $bar = "";
+    my $fname_len = 32;
+    if ($bp{width} > DEFAULT_TERM_WIDTH) {
+        $fname_len += $bp{width} - DEFAULT_TERM_WIDTH;
+    }
+    my $buffer = substr(basename($curr_fpath), 0, $fname_len);
 
     my $percent = 0;
-    if ( $bp{total} > 0 ) {
+    if ($bp{total} > 0) {
+        my $_size = !$bp{done} ? $size:$now;
         $percent = 100.0 * $size / $bp{total};
-        if ( $percent < 100 ) {
-            $bar .= sprintf("%2d%% ",$percent);
+        if ($percent < 100) {
+            $buffer .= sprintf("  %2d%% ", $percent);
         } else {
-            $bar .= "100%";
+            $buffer .= sprintf("  100%%");
         }
+        $buffer .= sprintf("  %4.1fM / %4.1fM",
+            $_size/MBDIV, $bp{total}/MBDIV);
     }
 
-    if ( !$done ) {
-        my ($percent_, $elapsed_, $rate, $eta) = 
-            calc_progress($dlnow, $dltotal, 1);
-
-        my %rate = normalize_rate($rate);
-
-        $bar .= sprintf(" | %8.2fMB ", $size/MBDIV);
-        $bar .= sprintf(" | %8.2f%s/s",$rate{rate},$rate{units});
-        $bar .= sprintf(" | ETA %-8s", $eta);
-        $percent = $percent_;
+    my $rate = $elapsed ? ($now/$elapsed):0;
+    my $tmp  = "";
+    if ($rate > 0) {
+        my $eta;
+        if (!$bp{done}) {
+            my $left = ($total-$now)/$rate;
+            $eta = time2str($left);
+        } else {
+            $eta = time2str($elapsed);
+        }
+        my ($unit,$_rate) = get_units($rate);
+        $tmp = sprintf("  %4.1f%s  %6s", $_rate, $unit, $eta);
     } else {
-        $bar .= sprintf(" | %6.2fMB ",$dlnow/MBDIV);
-        $bar .= sprintf(" | %8.2f%s/s",0,"K");
-        $bar .= sprintf(" | ETA %-8s","0s");
+        $tmp = "  --.-K/s  --:--";
     }
 
-    $bp{count} = $dlnow;
-    print "\r".$bar;
+    # pad to max. width leaving enough space for rate+eta
+    my $pad = $bp{width} - length($tmp) - length($buffer);
+    $buffer .= sprintf("%${pad}s"," ");
+    $buffer .= $tmp; # append rate+eta
+
+    printf("\r%s",$buffer);
+    $bp{count} = $now;
 
     return $percent;
 }
 
-sub bar_finish { # Never again.
+sub bar_finish {
     return if $opts{quiet};
 
     if ( $bp{total} > 0
@@ -977,11 +995,12 @@ sub bar_finish { # Never again.
         $bp{total} = $bp{initial} + $bp{count};
     }
 
-    bar_update(-1,-1,-1,-1,-1, 1);
+    $bp{done} = 1;
+    bar_update(-1,-1,-1,-1,-1);
 }
 
 sub calc_progress {
-    my ($dlnow, $dltotal, $condensed, $elapsed) = @_;
+    my ($dlnow, $dltotal, $elapsed) = @_;
 
     my $percent = 0;
 
@@ -999,34 +1018,47 @@ sub calc_progress {
 
     if ( $rate > 0 ) {
         my $left = ( $dltotal - $dlnow ) / $rate;
-        $eta     = time2str($left, $condensed);
+        $eta     = time2str($left);
     }
 
     return ($percent, $elapsed, $rate, $eta);
 }
 
 sub time2str {
-    my ($secs, $condensed) = @_;
-
-    my $space =
-        $condensed ? ""
-                   : " ";
+    my ($secs) = @_;
 
     my $str;
     if ( $secs < 100 ) {
         $str = sprintf("%ds", $secs);
     } elsif ( $secs < 100 * 60 ) {
-        $str = sprintf("%dm%s%ds", $secs / 60, $space, $secs % 60);
+        $str = sprintf("%dm%ds", $secs / 60, $secs % 60);
     } elsif ( $secs < 48 * 3600) {
-        $str = sprintf("%dh%s%dm", $secs / 3600, $space, ($secs / 60) % 60);
+        $str = sprintf("%dh%dm", $secs / 3600, ($secs / 60) % 60);
     } elsif ( $secs < 100 * 86400) {
-        $str = sprintf("%dd%s%dh", $secs / 86400, $space, ($secs / 3600) % 60);
+        $str = sprintf("%dd%dh", $secs / 86400, ($secs / 3600) % 60);
     } else {
         $str = sprintf("%dd", $secs / 86400);
     }
     return $str;
 }
 
+sub get_units {
+    my ($rate) = @_;
+    my @units = qw|K/s M/s G/s|;
+
+    my $i = 0;
+    if ($rate < 1024*1024) {
+        $rate /= 1024;
+    } elsif ($rate < 1024*1024) {
+        $rate /= 1024*1024;
+        $i = 1;
+    } elsif ($rate < 1024*1024*1024) {
+        $rate /= 1024*1024*1024;
+        $i = 2;
+    }
+    return ($units[$i],$rate);
+}
+
 sub normalize_rate {
     my $rate = shift;
 

-- 
Video extraction utility for YouTube, Google Video and other video sites (Debian packaging)



More information about the Pkg-perl-cvs-commits mailing list