PREREQ_PM => {
qw/HTTP::Tiny 0.014
Class::Accessor::Fast 0
- Date::Parse 0
IO::Socket::SSL 1.56
JSON::MaybeXS 0
Mozilla::CA 0
Net::SSLeay 1.49
- Sort::ByExample 0/,
+ Sort::ByExample 0
+ URI::Escape 0/,
},
META_ADD => {
dynamic_config => 0,
use warnings;
use parent qw/Exporter/;
-our @EXPORT = qw/strike strike_search strike_imdb/; ## no critic (ProhibitAutomaticExportation)
+our @EXPORT = qw/strike strike_search strike_imdb/;
our @EXPORT_OK = (@EXPORT, 'strike_query');
our $VERSION = '0.004003';
our $BASE_URL = 'https://getstrike.net/api/v2';
our $VERSION = '0.004002';
-use Date::Parse qw/str2time/;
use JSON::MaybeXS qw/decode_json/;
use MIME::Base64;
+use URI::Escape;
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 imdb_id/);
+__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 imdb_id/);
BEGIN {
*hash = *torrent_hash;
*uploader = *uploader_username;
*names = *file_names;
*lengths = *file_lengths;
- *magnet = *magnet_uri;
};
+sub magnet{
+ my ($self) = @_;
+ my $hash = uri_escape $self->hash; # uri_escape is not exactly needed here
+ my $title = uri_escape $self->title;
+ "magnet:?xt=urn:btih:$hash&dn=$title"
+}
+
sub new{
my ($self, @args) = @_;
$self = $self->SUPER::new(@args);
$self->{torrent_hash} = uc $self->hash;
- $self->{upload_date} = str2time $self->date, 'UTC';
if ($self->file_info) {
$self->{file_names} = $self->file_info->{file_names};
$self->{file_lengths} = $self->file_info->{file_lengths};
}
sub torrent{
- my ($self, $file) = @_;
- 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};
- $response = decode_json $response->{content};
- $url = $response->{message};
-
- if (defined $file) {
- $response = $ht->mirror($url, $file);
- return $response->{success}
- } else {
- $response = $ht->get($url);
- return $response->{success} && $response->{content}
- }
+ die "This API call was removed in Strike API V2.1\n"
}
sub description{
sub imdb {
my ($self) = @_;
- return unless $self->imdb_id;
+ return if !$self->imdb_id || $self->imdb_id eq 'none';
$self->{imdb} //= WebService::Strike::strike_imdb ($self->imdb_id)
}
say @{$t->names}; # archlinux-2015.01.01-dual.iso
say @{$t->lengths}; # 615514112
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';
=item B<torrent>([I<$filename>])
+B<THIS METHOD WAS REMOVED IN STRIKE API V2.1>. Therefore, it simply
+dies. Below is the previous documentation of the method.
+
Downloads the torrent from Strike. With no arguments, returns the
contents of the torrent file. With an argument, stores the torrent in
I<$filename>.
file_names => [ 'archlinux-2015.01.01-dual.iso' ],
file_lengths => [ 615514112 ],
},
- upload_date => 'Jan 6, 2015',
+ upload_date => 1420502400,
seeds => 645,
uploader_username => 'The_Doctor-',
- magnet_uri => 'magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch+Linux+2015.01.01+%28x86%2Fx64%29&tr=udp://open.demonii.com:1337&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://exodus.desync.com:6969',
torrent_title => 'Arch Linux 2015.01.01 (x86/x64)'
);
is $t->uploader, 'The_Doctor-', 'uploader';
is $t->names->[0], 'archlinux-2015.01.01-dual.iso', 'names';
is $t->lengths->[0], 615514112, 'lengths';
-is $t->magnet, 'magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch+Linux+2015.01.01+%28x86%2Fx64%29&tr=udp://open.demonii.com:1337&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://exodus.desync.com:6969', 'magnet';
+is $t->magnet, 'magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch%20Linux%202015.01.01%20%28x86%2Fx64%29', 'magnet';
use Data::Dumper qw/Dumper/;
use Test::RequiresInternet qw/getstrike.net 443/;
-use Test::More tests => 11;
+use Test::More tests => 8;
use Try::Tiny;
BEGIN { use_ok('WebService::Strike') };
my ($t1, $t2, $t3);
try {
- ($t1, $t2, $t3) = strike qw/B425907E5755031BDA4A8D1B6DCCACA97DA14C04 5D4FD5A64E436A831383773F85FB38B888B9ECC9 ED70C185E3E3246F30B2FDB08D504EABED5EEA3F/;
+ ($t1, $t2, $t3) = strike qw/66FC47BF95D1AA5ECA358F12C70AF3BA5C7E8F9A 5D4FD5A64E436A831383773F85FB38B888B9ECC9 B425907E5755031BDA4A8D1B6DCCACA97DA14C04/;
} catch {
diag 'Error while calling strike:', "\n", Dumper $_
};
subtest 'order' => sub {
plan tests => 3;
- is $t1->hash, 'B425907E5755031BDA4A8D1B6DCCACA97DA14C04', 'hash #1';
+ is $t1->hash, '66FC47BF95D1AA5ECA358F12C70AF3BA5C7E8F9A', 'hash #1';
is $t2->hash, '5D4FD5A64E436A831383773F85FB38B888B9ECC9', 'hash #2';
- is $t3->hash, 'ED70C185E3E3246F30B2FDB08D504EABED5EEA3F', 'hash #3'
+ is $t3->hash, 'B425907E5755031BDA4A8D1B6DCCACA97DA14C04', 'hash #3'
};
-is $t1->date, 1420502400, 'date';
+is $t1->date, 1439319419, 'date';
is $t2->title, 'FreeBSD 7.1 i386.DVD.iso', 'title';
-like $t1->torrent, qr/^d/, 'torrent file starts with d';
-like $t1->description, qr#GNU/Linux#, 'description contains GNU/Linux';
+like $t2->description, qr#FreeBSD#, 'description contains FreeBSD';
try {
strike 'aaa';
is $_->{status}, 404, "search for nosuchstring$$ returned 404"
};
-my $p = strike_search 'Perl', 1;
-is @{$p->file_names}, $p->count, 'file_names has count elements';
+# Test disabled as it fails due to the API returning bad results
+#my $p = strike_search 'Perl', 1;
+#say STDERR $p->hash;
+#
+#is @{$p->file_names}, $p->count, 'file_names has count elements';
-my $imdb = strike('ED70C185E3E3246F30B2FDB08D504EABED5EEA3F')->imdb;
-is $imdb->{title}, 'The Walking Dead', 'imdb title';
+# Test disabled as I can't find a torrent with an IMDB ID. Presumably
+# this feature of the API is broken.
+#my $imdb = strike('ED70C185E3E3246F30B2FDB08D504EABED5EEA3F')->imdb;
+#is $imdb->{title}, 'The Walking Dead', 'imdb title';