WWW::Opentracker::Stats::Mode::TPBS::Bencode - WWW::Opentracker::Stats::Mode::TPBS::Bencode documentation


WWW-Opentracker-Stats documentation Contained in the WWW-Opentracker-Stats distribution.

Index


Code Index:

NAME

Top

WWW::Opentracker::Stats::Mode::TPBS::Bencode

DESCRIPTION

Top

Decodes the bencoded TPBS statistics from Opentracker.

METHODS

Top

decode_stats

 Args: $class, $payload

Returns a HASHREF of the decoded stats structure.

The structure looks something like this:

 $VAR1 => {
    files => {
       INFOHASH => {
           incomplete  => 2,
           downloaded  => 52,
           complete    => 71,
       },
       INFOHASH => ...
    }
 }

SEE ALSO

Top

Bit::Vector, Convert::Bencode

AUTHOR

Top

Knut-Olav Hoven, <knutolav@gmail.com>

COPYRIGHT AND LICENSE

Top


WWW-Opentracker-Stats documentation Contained in the WWW-Opentracker-Stats distribution.
package WWW::Opentracker::Stats::Mode::TPBS::Bencode;

use strict;
use warnings;

use Bit::Vector;
use Convert::Bencode qw(bencode bdecode);


sub decode_stats {
    my ($class, $payload) = @_;

    return {} unless $payload;

    my $t = bdecode($payload);

    $t->{'files'} = {} unless defined $t->{'files'};

    my @replace = keys %{$t->{'files'}};
    
    for my $key (@replace) {
        my $value   = delete $t->{'files'}->{$key};
        my $bin     = unpack('B*', $key);
    
        my $v = Bit::Vector->new_Bin(160, $bin);
        my $hex = $v->to_Hex;
    
        $t->{'files'}->{$hex} = $value;
    }

    return $t;
}


1;