package WWW::Offliberty;
-use 5.014;
+use 5.008009;
use strict;
use warnings;
use parent qw/Exporter/;
-our $VERSION = '0.002';
+our $VERSION = '1.000002';
our @EXPORT_OK = qw/off/;
+use constant OFF_URL => 'http://offliberty.com/off03.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/off54.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/);
}
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
=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,