]>
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.004002';
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
};
38 $self->{imdb_id
} = $self->{imdbid
} if $self->{imdbid
};
43 my ($self, $file) = @_;
44 my $url = $WebService::Strike
::BASE_URL
. '/torrents/download/?hash=' . $self->hash;
45 my $ht = WebService
::Strike
::_ht
(); ## no critic (ProtectPrivate)
46 my $response = $ht->get($url);
47 return unless $response->{success
};
48 $response = decode_json
$response->{content
};
49 $url = $response->{message
};
52 $response = $ht->mirror($url, $file);
53 return $response->{success
}
55 $response = $ht->get($url);
56 return $response->{success
} && $response->{content
}
62 return $self->{description
} if $self->{description
};
63 my $url = $WebService::Strike
::BASE_URL
. '/torrents/descriptions/?hash=' . $self->hash;
64 my $ht = WebService
::Strike
::_ht
(); ## no critic (ProtectPrivate)
65 my $response = $ht->get($url);
66 return unless $response->{success
};
67 $self->{description
} = decode_base64
$response->{content
}
72 return unless $self->imdb_id;
73 $self->{imdb
} //= WebService
::Strike
::strike_imdb
($self->imdb_id)
83 WebService::Strike::Torrent - Class representing information about a torrent
87 use WebService::Strike;
88 my $t = strike 'B425907E5755031BDA4A8D1B6DCCACA97DA14C04';
89 say $t->hash; # B425907E5755031BDA4A8D1B6DCCACA97DA14C04
90 say $t->title; # Arch Linux 2015.01.01 (x86/x64)
91 say $t->category; # Applications
92 say $t->sub_category; # '' (empty string)
96 say $t->size; # 615514112
97 say $t->date; # 1420502400
98 say $t->uploader; # The_Doctor-
99 say @{$t->names}; # archlinux-2015.01.01-dual.iso
100 say @{$t->lengths}; # 615514112
101 say $t->magnet; # magnet:?xt=urn:btih:B425907E5755031BDA4A8D1B6DCCACA97DA14C04&dn=Arch%20Linux%202015.01.01%20%28x86%2Fx64%29
102 my $tor = $t->torrent; # $torrent contains the torrent file contents
103 $t->torrent('x.torrent'); # Download torrent file to x.torrent
104 say $t->description; # <HTML fragment describing Arch Linux>
106 $t = strike 'ED70C185E3E3246F30B2FDB08D504EABED5EEA3F';
107 say $t->title; # The Walking Dead S04E15 HDTV x264-2HD
108 say $t->imdb_id; # tt1520211
110 say $i->{title}, ' (', $i->{year}, ')'; # The Walking Dead (2010)
111 say $i->{genre}; # Drama, Horror, Thriller
115 WebService::Strike::Torrent is a class that represents information
122 =item B<hash>, B<torrent_hash>
124 The info_hash of the torrent.
126 =item B<title>, B<torrent_title>
128 The title of the torrent.
130 =item B<category>, B<torrent_category>
132 The category of the torrent.
134 =item B<sub_category>
136 The subcategory of the torrent.
140 The number of seeders.
144 The number of leechers.
146 =item B<count>, B<file_count>
148 The number of files contained in the torrent.
152 The total size of the files in the torrent in bytes.
154 =item B<date>, B<upload_date>
156 Unix timestamp when the torrent was uploaded, with precision of one day.
158 =item B<uploader>, B<uploader_username>
160 Username of the user who uploaded the torrent.
164 Arrayref of paths of files in the torrent.
166 =item B<file_lengths>
168 Arrayref of lengths of files in the torrent, in bytes.
170 =item B<magnet>, B<magnet_uri>
172 Magnet link for the torrent.
174 =item B<torrent>([I<$filename>])
176 Downloads the torrent from Strike. With no arguments, returns the
177 contents of the torrent file. With an argument, stores the torrent in
180 Both forms return a true value for success and false for failure.
184 The description of the torrent. This method sends an extra request to
185 Strike. Successful responses are cached.
189 The IMDB ID of the torrent, or undef if the torrent has no associated
194 Calls B<strike_imdb> from L<WebService::Strike> on B<imdb_id>. Caches
195 the response. Returns undef if the torrent has no associated IMDB ID.
201 L<WebService::Strike>, L<https://getstrike.net/api/>
205 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
207 =head1 COPYRIGHT AND LICENSE
209 Copyright (C) 2015 by Marius Gavrilescu
211 This library is free software; you can redistribute it and/or modify
212 it under the same terms as Perl itself, either Perl version 5.20.2 or,
213 at your option, any later version of Perl 5 you may have available.
This page took 0.062979 seconds and 4 git commands to generate.