]>
Commit | Line | Data |
---|---|---|
1 | package WWW::Offliberty; | |
2 | ||
3 | use 5.008009; | |
4 | use strict; | |
5 | use warnings; | |
6 | use parent qw/Exporter/; | |
7 | our $VERSION = '1.000005'; | |
8 | our @EXPORT_OK = qw/off/; | |
9 | ||
10 | our $OFF_URL = 'http://offliberty.com/off03.php'; | |
11 | ||
12 | use HTML::TreeBuilder; | |
13 | use HTTP::Tiny; | |
14 | ||
15 | our $http = HTTP::Tiny->new(agent => "WWW-Offliberty/$VERSION ", default_headers => {Referer => 'http://offliberty.com/'}); | |
16 | ||
17 | sub off{ | |
18 | my ($url, @params) = @_; | |
19 | my $ret = $http->post_form($OFF_URL, {track => $url, @params}); | |
20 | die $ret->{reason} unless $ret->{success}; ## no critic (RequireCarping) | |
21 | my $root = HTML::TreeBuilder->new_from_content($ret->{content}); | |
22 | map { $_->attr('href') } $root->look_down(qw/_tag a class download/); | |
23 | } | |
24 | ||
25 | 1; | |
26 | __END__ | |
27 | ||
28 | =head1 NAME | |
29 | ||
30 | WWW::Offliberty - interface to offliberty.com download service | |
31 | ||
32 | =head1 SYNOPSIS | |
33 | ||
34 | use WWW::Offliberty qw/off/; | |
35 | my @links = off 'http://youtube.com/watch?v=something', video_file => 1; | |
36 | ||
37 | =head1 DESCRIPTION | |
38 | ||
39 | WWW::Offliberty is a simple interface to the offliberty.com download service. | |
40 | ||
41 | The module exports (on request) a single function, B<off>(I<url>, | |
42 | [I<parameter> => value, ...]). It takes a URL and an optional list of | |
43 | parameters (key/value pairs). It returns a list of download links. An | |
44 | empty list is returned if the Offliberty service returns no URLs (for | |
45 | example if Offliberty encounters an error or the URL is invalid). Dies | |
46 | if unable to contact Offliberty (for example if there is no internet | |
47 | connection or a firewall blocks the connection). | |
48 | ||
49 | The supported services and parameters are undocumented. From empirical | |
50 | testing, when requesting a YouTube URL the service will return an | |
51 | audio-only URL when called with no parameters, and two URLs | |
52 | (audio-only and audio/video) when called with the parameter | |
53 | B<video_file> set to B<1>. In contrast, Vimeo URLs with no parameters | |
54 | return both audio-only and audio/video variants. | |
55 | ||
56 | Note: The URL of the service sometimes changes, which breaks this | |
57 | module. If you notice this, please report a bug on RT. While the bug | |
58 | is being fixed, you can override the URL locally by doing: | |
59 | ||
60 | $WWW::Offliberty:OFF_URL = 'http://offliberty.com/correct_url.php'; | |
61 | ||
62 | before calling off. | |
63 | ||
64 | =head1 SEE ALSO | |
65 | ||
66 | L<http://offliberty.com> | |
67 | ||
68 | =head1 AUTHOR | |
69 | ||
70 | Marius Gavrilescu, E<lt>marius@ieval.roE<gt> | |
71 | ||
72 | =head1 COPYRIGHT AND LICENSE | |
73 | ||
74 | Copyright (C) 2013-2017 by Marius Gavrilescu | |
75 | ||
76 | This library is free software; you can redistribute it and/or modify | |
77 | it under the same terms as Perl itself, either Perl version 5.18.1 or, | |
78 | at your option, any later version of Perl 5 you may have available. | |
79 | ||
80 | ||
81 | =cut |