use warnings;
use parent qw/Class::Accessor::Fast/;
-our $VERSION = '0.002';
+our $VERSION = '0.004001';
use Date::Parse qw/str2time/;
use JSON::MaybeXS qw/decode_json/;
+use MIME::Base64;
use WebService::Strike;
-__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/);
+__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/);
BEGIN {
*hash = *torrent_hash;
sub torrent{
my ($self, $file) = @_;
- my $url = $WebService::Strike::BASE_URL . '/download/?hash=' . $self->hash;
+ my $url = $WebService::Strike::BASE_URL . '/torrents/download/?hash=' . $self->hash;
my $ht = WebService::Strike::_ht(); ## no critic (ProtectPrivate)
my $response = $ht->get($url);
return unless $response->{success};
}
}
+sub description{
+ my ($self) = @_;
+ return $self->{description} if $self->{description};
+ my $url = $WebService::Strike::BASE_URL . '/torrents/descriptions/?hash=' . $self->hash;
+ my $ht = WebService::Strike::_ht(); ## no critic (ProtectPrivate)
+ my $response = $ht->get($url);
+ return unless $response->{success};
+ $self->{description} = decode_base64 $response->{content}
+}
+
+sub imdb {
+ my ($self) = @_;
+ return unless $self->imdb_id;
+ $self->{imdb} //= WebService::Strike::strike_imdb ($self->imdb_id)
+}
+
1;
__END__
say $t->magnet; # magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch%20Linux%202015.01.01%20%28x86%2Fx64%29
my $tor = $t->torrent; # $torrent contains the torrent file contents
$t->torrent('x.torrent'); # Download torrent file to x.torrent
+ say $t->description; # <HTML fragment describing Arch Linux>
+
+ $t = strike 'ED70C185E3E3246F30B2FDB08D504EABED5EEA3F';
+ say $t->title; # The Walking Dead S04E15 HDTV x264-2HD
+ say $t->imdb_id; # tt1520211
+ my $i = $t->imdb;
+ say $i->{title}, ' (', $i->{year}, ')'; # The Walking Dead (2010)
+ say $i->{genre}; # Drama, Horror, Thriller
=head1 DESCRIPTION
Both forms return a true value for success and false for failure.
+=item B<description>
+
+The description of the torrent. This method sends an extra request to
+Strike. Successful responses are cached.
+
+=item B<imdb_id>
+
+The IMDB ID of the torrent, or undef if the torrent has no associated
+IMDB ID.
+
+=item B<imdb>
+
+Calls B<strike_imdb> from L<WebService::Strike> on B<imdb_id>. Caches
+the response. Returns undef if the torrent has no associated IMDB ID.
+
=back
=head1 SEE ALSO
-L<WebService::Strike>, L<http://getstrike.net/api/>
+L<WebService::Strike>, L<https://getstrike.net/api/>
=head1 AUTHOR