]> git.pld-linux.org Git - packages/clive.git/blame - clive-delfi.patch
- rediffed patches. works
[packages/clive.git] / clive-delfi.patch
CommitLineData
67a1036f
ER
1--- clive-2.1.3/clive~ 2009-01-20 13:48:45.000000000 +0200
2+++ clive-2.1.3/clive 2009-01-20 13:49:36.000000000 +0200
3@@ -85,6 +85,7 @@
4aadb41e
ER
4 IsLastfm => qr|\Qlast.fm\E|i,
5 IsLiveleak => qr|\Qliveleak.com\E|i,
d38d03ff 6 IsEvisor => qr|\Qevisor.tv\E|i,
67a1036f 7+ IsDelfi => qr|\Q.delfi.\E|i,
4aadb41e
ER
8 #IsMetacafe => qr|\Qmetacafe.com\E|i,
9 );
67a1036f
ER
10
11@@ -333,6 +334,8 @@
4aadb41e 12 ($xurl, $id) = handle_liveleak($response_ref, $response_fh);
d38d03ff 13 } elsif ( $url =~ /$re_hosts{IsEvisor}/ ) {
14 ($xurl, $id) = handle_evisor($response_ref);
67a1036f
ER
15+ } elsif ( $url =~ /$re_hosts{IsDelfi}/ ) {
16+ ($xurl, $id) = handle_delfi($response_ref, $response_fh);
4aadb41e 17 }
67a1036f
ER
18 # elsif ( $url =~ /$re_hosts{IsMetacafe}/ ) {
19 # ($xurl, $id) = handle_metacafe($response_ref);
20@@ -712,6 +715,64 @@
4aadb41e
ER
21 return ($xurl, $id);
22 }
23
24+sub handle_delfi {
67a1036f 25+ my ($response_ref, $response_fh) = @_;
4aadb41e 26+
67a1036f
ER
27+ my %re = (
28+ # videobox
29+ # http://www.delfi.ee/news/paevauudised/paevavideo/article.php?id=15218215
30+ GrabVideoboxURL => qr|flv_url:\s*'(.*?)'|,
31+ # videoproject embed
32+ # http://www.delfi.ee/news/paevauudised/paevavideo/article.php?id=18759038
33+ GrabVideoSalt => qr|_delfiVideoSalt\s*=\s*"([^"]+)";|,
34+ GrabVideoSite => qr|src="(\S+://[^/]+)/js/embed.js"|,
35+ # videoproject
36+ # http://video.delfi.ee/video/CzurzqNz/
37+ GrabVideoURL => qr|\.addVariable\('file',\s*'([^']+)'|,
38+ );
4aadb41e 39+
67a1036f
ER
40+ my ($xurl, $id);
41+ my $videobox_url = $1 if $$response_ref =~ /$re{GrabVideoboxURL}/;
42+ my $video_salt = $1 if $$response_ref =~ /$re{GrabVideoSalt}/;
43+ my $video_site = $1 if $$response_ref =~ /$re{GrabVideoSite}/;
44+ my $video_url = $1 if $$response_ref =~ /$re{GrabVideoURL}/;
4aadb41e 45+
67a1036f
ER
46+ if ($videobox_url) {
47+ $id = $1 if $videobox_url =~ m{/([^/]+)\.flv$};
48+ $xurl = $videobox_url;
4aadb41e 49+
67a1036f
ER
50+ } elsif ($video_url) {
51+ $xurl = uri_unescape($video_url);
52+ $id = $1 if $xurl =~ m{^\S+://[^/]+/v/(.+?)\.flv};
4aadb41e 53+
67a1036f
ER
54+ } elsif ($video_salt and $video_site) {
55+ my $url = $video_site . '/video/' . $video_salt . '/';
56+ print "done.\nfetch page ..." unless $opts{quiet};
4aadb41e 57+
67a1036f
ER
58+ my $page = "";
59+ open my $fh, ">", \$page;
4aadb41e 60+
67a1036f
ER
61+ # Disable: header
62+ $curl->setopt(CURLOPT_HEADER, 0);
63+ $curl->setopt(CURLOPT_URL, $url);
64+ $curl->setopt(CURLOPT_WRITEDATA, $fh);
4aadb41e 65+
67a1036f
ER
66+ my $rc = $curl->perform;
67+ close $fh;
4aadb41e 68+
67a1036f
ER
69+ if ($rc == 0) {
70+ # recurse
71+ ($xurl, $id) = handle_delfi(\$page);
72+ } else {
73+ print STDERR "\nerror: " . $curl->strerror($rc) . " (http/$rc)\n";
74+ }
75+ } else {
76+ print STDERR "error: url not found\n";
77+ }
4aadb41e 78+
67a1036f 79+ return ($xurl, $id);
4aadb41e 80+}
67a1036f 81+
4aadb41e
ER
82
83 # Subroutines: Progress
84 # NOTE: the 'dot' progress copies much from wget.
This page took 0.088019 seconds and 4 git commands to generate.