use warnings;
use parent qw/Class::Accessor::Fast/;
-our $VERSION = '0.004';
+our $VERSION = 0.005;
-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};
}
+ $self->{imdb_id} = $self->{imdbid} if $self->{imdbid};
$self
}
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>.
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2015 by Marius Gavrilescu
+Copyright (C) 2015-2016 by Marius Gavrilescu
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.20.2 or,