517020850a82aa33b2d098ddf4466573ac2ae7e4
1 package WebService
::Strike
::Torrent
;
6 use parent qw
/Class::Accessor::Fast/;
8 our $VERSION = '0.003';
10 use Date
::Parse qw
/str2time/;
11 use JSON
::MaybeXS qw
/decode_json/;
13 use WebService
::Strike
;
15 __PACKAGE__
->mk_ro_accessors(qw
/torrent_hash torrent_title torrent_category sub_category seeds leeches file_count size upload_date uploader_username file_info file_names file_lengths magnet_uri/);
18 *hash
= *torrent_hash
;
19 *title
= *torrent_title
;
20 *category
= *torrent_category
;
23 *uploader
= *uploader_username
;
25 *lengths
= *file_lengths
;
26 *magnet
= *magnet_uri
;
30 my ($self, @args) = @_;
31 $self = $self->SUPER::new
(@args);
32 $self->{torrent_hash
} = uc $self->hash;
33 $self->{upload_date
} = str2time
$self->date, 'UTC';
34 if ($self->file_info) {
35 $self->{file_names
} = $self->file_info->{file_names
};
36 $self->{file_lengths
} = $self->file_info->{file_lengths
};
42 my ($self, $file) = @_;
43 my $url = $WebService::Strike
::BASE_URL
. '/download/?hash=' . $self->hash;
44 my $ht = WebService
::Strike
::_ht
(); ## no critic (ProtectPrivate)
45 my $response = $ht->get($url);
46 return unless $response->{success
};
47 $response = decode_json
$response->{content
};
48 $url = $response->{message
};
51 $response = $ht->mirror($url, $file);
52 return $response->{success
}
54 $response = $ht->get($url);
55 return $response->{success
} && $response->{content
}
61 return $self->{description
} if $self->{description
};
62 my $url = $WebService::Strike
::BASE_URL
. '/descriptions/?hash=' . $self->hash;
63 my $ht = WebService
::Strike
::_ht
(); ## no critic (ProtectPrivate)
64 my $response = $ht->get($url);
65 return unless $response->{success
};
66 $self->{description
} = decode_base64
$response->{content
}
76 WebService::Strike::Torrent - Class representing information about a torrent
80 use WebService::Strike;
81 my $t = strike 'B425907E5755031BDA4A8D1B6DCCACA97DA14C04';
82 say $t->hash; # B425907E5755031BDA4A8D1B6DCCACA97DA14C04
83 say $t->title; # Arch Linux 2015.01.01 (x86/x64)
84 say $t->category; # Applications
85 say $t->sub_category; # '' (empty string)
89 say $t->size; # 615514112
90 say $t->date; # 1420502400
91 say $t->uploader; # The_Doctor-
92 say @{$t->names}; # archlinux-2015.01.01-dual.iso
93 say @{$t->lengths}; # 615514112
94 say $t->magnet; # magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch%20Linux%202015.01.01%20%28x86%2Fx64%29
95 my $tor = $t->torrent; # $torrent contains the torrent file contents
96 $t->torrent('x.torrent'); # Download torrent file to x.torrent
97 say $t->description; # <HTML fragment describing Arch Linux>
101 WebService::Strike::Torrent is a class that represents information
108 =item B<hash>, B<torrent_hash>
110 The info_hash of the torrent.
112 =item B<title>, B<torrent_title>
114 The title of the torrent.
116 =item B<category>, B<torrent_category>
118 The category of the torrent.
120 =item B<sub_category>
122 The subcategory of the torrent.
126 The number of seeders.
130 The number of leechers.
132 =item B<count>, B<file_count>
134 The number of files contained in the torrent.
138 The total size of the files in the torrent in bytes.
140 =item B<date>, B<upload_date>
142 Unix timestamp when the torrent was uploaded, with precision of one day.
144 =item B<uploader>, B<uploader_username>
146 Username of the user who uploaded the torrent.
150 Arrayref of paths of files in the torrent.
152 =item B<file_lengths>
154 Arrayref of lengths of files in the torrent, in bytes.
156 =item B<magnet>, B<magnet_uri>
158 Magnet link for the torrent.
160 =item B<torrent>([I<$filename>])
162 Downloads the torrent from Strike. With no arguments, returns the
163 contents of the torrent file. With an argument, stores the torrent in
166 Both forms return a true value for success and false for failure.
170 The description of the torrent. This method sends an extra request to
171 Strike. Successful responses are cached.
177 L<WebService::Strike>, L<https://getstrike.net/api/>
181 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
183 =head1 COPYRIGHT AND LICENSE
185 Copyright (C) 2015 by Marius Gavrilescu
187 This library is free software; you can redistribute it and/or modify
188 it under the same terms as Perl itself, either Perl version 5.20.2 or,
189 at your option, any later version of Perl 5 you may have available.
This page took 0.02904 seconds and 3 git commands to generate.