]>
iEval git - webservice-strike.git/blob - Strike/Torrent.pm
1 package WebService
::Strike
::Torrent
;
6 use parent qw
/Class::Accessor::Fast/;
8 our $VERSION = '0.004';
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 imdb_id/);
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
. '/torrents/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
. '/torrents/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
}
71 return unless $self->imdb_id;
72 $self->{imdb
} //= WebService
::Strike
::strike_imdb
($self->imdb_id)
82 WebService::Strike::Torrent - Class representing information about a torrent
86 use WebService::Strike;
87 my $t = strike 'B425907E5755031BDA4A8D1B6DCCACA97DA14C04';
88 say $t->hash; # B425907E5755031BDA4A8D1B6DCCACA97DA14C04
89 say $t->title; # Arch Linux 2015.01.01 (x86/x64)
90 say $t->category; # Applications
91 say $t->sub_category; # '' (empty string)
95 say $t->size; # 615514112
96 say $t->date; # 1420502400
97 say $t->uploader; # The_Doctor-
98 say @{$t->names}; # archlinux-2015.01.01-dual.iso
99 say @{$t->lengths}; # 615514112
100 say $t->magnet; # magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch%20Linux%202015.01.01%20%28x86%2Fx64%29
101 my $tor = $t->torrent; # $torrent contains the torrent file contents
102 $t->torrent('x.torrent'); # Download torrent file to x.torrent
103 say $t->description; # <HTML fragment describing Arch Linux>
105 $t = strike 'ED70C185E3E3246F30B2FDB08D504EABED5EEA3F';
106 say $t->title; # The Walking Dead S04E15 HDTV x264-2HD
107 say $t->imdb_id; # tt1520211
109 say $i->{title}, ' (', $i->{year}, ')'; # The Walking Dead (2010)
110 say $i->{genre}; # Drama, Horror, Thriller
114 WebService::Strike::Torrent is a class that represents information
121 =item B<hash>, B<torrent_hash>
123 The info_hash of the torrent.
125 =item B<title>, B<torrent_title>
127 The title of the torrent.
129 =item B<category>, B<torrent_category>
131 The category of the torrent.
133 =item B<sub_category>
135 The subcategory of the torrent.
139 The number of seeders.
143 The number of leechers.
145 =item B<count>, B<file_count>
147 The number of files contained in the torrent.
151 The total size of the files in the torrent in bytes.
153 =item B<date>, B<upload_date>
155 Unix timestamp when the torrent was uploaded, with precision of one day.
157 =item B<uploader>, B<uploader_username>
159 Username of the user who uploaded the torrent.
163 Arrayref of paths of files in the torrent.
165 =item B<file_lengths>
167 Arrayref of lengths of files in the torrent, in bytes.
169 =item B<magnet>, B<magnet_uri>
171 Magnet link for the torrent.
173 =item B<torrent>([I<$filename>])
175 Downloads the torrent from Strike. With no arguments, returns the
176 contents of the torrent file. With an argument, stores the torrent in
179 Both forms return a true value for success and false for failure.
183 The description of the torrent. This method sends an extra request to
184 Strike. Successful responses are cached.
188 The IMDB ID of the torrent, or undef if the torrent has no associated
193 Calls B<strike_imdb> from L<WebService::Strike> on B<imdb_id>. Caches
194 the response. Returns undef if the torrent has no associated IMDB ID.
200 L<WebService::Strike>, L<https://getstrike.net/api/>
204 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
206 =head1 COPYRIGHT AND LICENSE
208 Copyright (C) 2015 by Marius Gavrilescu
210 This library is free software; you can redistribute it and/or modify
211 it under the same terms as Perl itself, either Perl version 5.20.2 or,
212 at your option, any later version of Perl 5 you may have available.
This page took 0.061769 seconds and 4 git commands to generate.