]> iEval git - www-offliberty.git/blobdiff - lib/WWW/Offliberty.pm
Fix perlcritic complaints
[www-offliberty.git] / lib / WWW / Offliberty.pm
index f770208c40fab40c79af17d1eb7ac9b1163a402c..f14c0d8f1d18916e9a24b1eafcad7547153e185a 100644 (file)
@@ -1,21 +1,24 @@
 package WWW::Offliberty;
 
-use 5.014;
+use 5.008009;
 use strict;
 use warnings;
 use parent qw/Exporter/;
-our $VERSION = '0.001';
+our $VERSION = '1.000001';
 our @EXPORT_OK = qw/off/;
 
+use constant OFF_URL => 'http://offliberty.com/off02.php';
+
 use HTML::TreeBuilder;
-use LWP::UserAgent;
+use HTTP::Tiny;
 
-my $ua = LWP::UserAgent->new;
+our $http = HTTP::Tiny->new(agent => "WWW-Offliberty/$VERSION ", default_headers => {Referer => 'http://offliberty.com/'});
 
 sub off{
        my ($url, @params) = @_;
-       my $content = $ua->post("http://offliberty.com/off.php", {track => $url, @params})->decoded_content;
-       my $root = HTML::TreeBuilder->new_from_content($content);
+       my $ret = $http->post_form(OFF_URL, {track => $url, @params});
+       die $ret->{reason} unless $ret->{success}; ## no critic (RequireCarping)
+       my $root = HTML::TreeBuilder->new_from_content($ret->{content});
        map { $_->attr('href') } $root->look_down(qw/_tag a class download/);
 }
 
@@ -35,9 +38,20 @@ WWW::Offliberty - interface to offliberty.com download service
 
 WWW::Offliberty is a simple interface to the offliberty.com download service.
 
-It exports a single function: B<off>(I<url>, [I<argument> => value...]).
-This function  that returns a list of download links,
-as returned by the service.
+The module exports (on request) a single function, B<off>(I<url>,
+[I<parameter> => value, ...]). It takes a URL and an optional list of
+parameters (key/value pairs). It returns a list of download links. An
+empty list is returned if the Offliberty service returns no URLs (for
+example if Offliberty encounters an error or the URL is invalid). Dies
+if unable to contact Offliberty (for example if there is no internet
+connection or a firewall blocks the connection).
+
+The supported services and parameters are undocumented. From empirical
+testing, when requesting a YouTube URL the service will return an
+audio-only URL when called with no parameters, and two URLs
+(audio-only and audio/video) when called with the parameter
+B<video_file> set to B<1>. In contrast, Vimeo URLs with no parameters
+return both audio-only and audio/video variants.
 
 =head1 SEE ALSO
 
@@ -49,7 +63,7 @@ Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (C) 2013 by Marius Gavrilescu
+Copyright (C) 2013-2015 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.18.1 or,
This page took 0.025526 seconds and 4 git commands to generate.