From: Christian Garbs Date: Sun, 28 Dec 2008 11:28:22 +0000 (+0100) Subject: refactor download_list X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=xmlrtorrent.git;a=commitdiff_plain;h=04b77099c1d5e26a81651245b5949dee2c8e6bf6 refactor download_list keep RPC stuff out of main --- diff --git a/xmlrtorrent.pl b/xmlrtorrent.pl index 32d3b13..7d9e290 100644 --- a/xmlrtorrent.pl +++ b/xmlrtorrent.pl @@ -121,35 +121,6 @@ sub write_debug { } } -# This is shamelessly stolen from pythons urlgrabber -sub format_number { - my $number = shift; - my $SI = shift || 0; - my @symbols = ('', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'); - my $step = $SI?1000:1024; - my $thresh = 999; - my $depth = 0; - my $max_depth = $#symbols; - my $format; - - while (($number > $thresh) and ($depth < $max_depth)) { - $depth += 1; - $number /= $step; - } - - if ($number =~ /^[+-]?\d+$/) { - # Integer. - $format = '%i%s'; - } elsif ($number < 9.95) { - $format = '%.1f%s'; - } else { - $format = '%.0f%s'; - } - return sprintf($format, $number, $symbols[$depth]); -} - - - sub check_for_link { my ($signal,$parammessage,$paramchannel,$paramnick,$paramserver) = @_; my $server = $signal->[$paramserver]; @@ -255,13 +226,12 @@ sub cmd_remote { } else { foreach (@{$rqueue}) { write_irssi(' %s%s: %sB/%sB done (%d%%), %sB/s up, %sB/s down', - $_->[5]->value()?'*':' ', - $_->[0]->value(), - format_number($_->[2]->value()), - format_number($_->[1]->value()), - ($_->[2]->value()*100)/$_->[1]->value(), - format_number($_->[3]->value()), - format_number($_->[4]->value())); + $_->{'ACTIVE'}?'*':' ', + $_->{'NAME'}, + $_->{'BYTES_DONE'}, + $_->{'SIZE_BYTES'}, + $_->{'UP_RATE'}, + $_->{'DOWN_RATE'}); } } } diff --git a/xmlrtorrent.pm b/xmlrtorrent.pm index d50d5ac..12ec405 100644 --- a/xmlrtorrent.pm +++ b/xmlrtorrent.pm @@ -10,6 +10,35 @@ sub new { return bless($self, $class); } +# This is shamelessly stolen from pythons urlgrabber +sub _format_number { + my $number = shift; + my $SI = shift || 0; + my @symbols = ('', 'k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'); + my $step = $SI?1000:1024; + my $thresh = 999; + my $depth = 0; + my $max_depth = $#symbols; + my $format; + + while (($number > $thresh) and ($depth < $max_depth)) { + $depth += 1; + $number /= $step; + } + + if ($number =~ /^[+-]?\d+$/) { + # Integer. + $format = '%i%s'; + } elsif ($number < 9.95) { + $format = '%.1f%s'; + } else { + $format = '%.0f%s'; + } + return sprintf($format, $number, $symbols[$depth]); +} + + + sub load_start { my $self = shift; my $talker = shift; @@ -52,7 +81,20 @@ sub download_list { return undef; } - return $res->value(); + my @ret = (); + foreach (@{$res->value()}) { + push @ret, + { + 'NAME' => $_->[0]->value(), + 'SIZE_BYTES' => _format_number($_->[1]->value()), + 'BYTES_DONE' => _format_number($_->[2]->value()), + 'UP_RATE' => _format_number($_->[3]->value()), + 'DOWN_RATES' => _format_number($_->[4]->value()), + 'ACTIVE' => $_->[5]->value(), + }; + } + + return \@ret; } sub errstr {