]>
Commit | Line | Data |
---|---|---|
d38d03ff | 1 | --- clive-2.1.2/clive~ 2009-01-01 13:04:20.000000000 +0000 |
2 | +++ clive-2.1.2/clive 2009-01-01 13:13:24.000000000 +0000 | |
4aadb41e ER |
3 | @@ -84,6 +84,7 @@ |
4 | IsBreak => qr|\Qbreak.com\E|i, | |
5 | IsLastfm => qr|\Qlast.fm\E|i, | |
6 | IsLiveleak => qr|\Qliveleak.com\E|i, | |
2ea9560c | 7 | + IsDelfi => qr|\Q.delfi.\E|i, |
d38d03ff | 8 | IsEvisor => qr|\Qevisor.tv\E|i, |
4aadb41e ER |
9 | #IsMetacafe => qr|\Qmetacafe.com\E|i, |
10 | ); | |
d38d03ff | 11 | @@ -331,6 +332,8 @@ |
4aadb41e ER |
12 | ($xurl, $id, $title) = handle_break($response_ref); |
13 | } elsif ( $url =~ /$re_hosts{IsLiveleak}/ ) { | |
14 | ($xurl, $id) = handle_liveleak($response_ref, $response_fh); | |
15 | + } elsif ( $url =~ /$re_hosts{IsDelfi}/ ) { | |
d38d03ff | 16 | + ($xurl, $id) = handle_delfi($response_ref, $response_fh); |
17 | } elsif ( $url =~ /$re_hosts{IsEvisor}/ ) { | |
18 | ($xurl, $id) = handle_evisor($response_ref); | |
4aadb41e | 19 | } |
d38d03ff | 20 | @@ -863,6 +866,63 @@ |
4aadb41e ER |
21 | return ($xurl, $id); |
22 | } | |
23 | ||
24 | +sub handle_delfi { | |
d38d03ff | 25 | + my ($response_ref, $response_fh) = @_; |
4aadb41e | 26 | + |
d38d03ff | 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 ER |
39 | + |
40 | + my ($xurl, $id); | |
d38d03ff | 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 | + |
d38d03ff | 46 | + if ($videobox_url) { |
47 | + $id = $1 if $videobox_url =~ m{/([^/]+)\.flv$}; | |
4aadb41e ER |
48 | + $xurl = $videobox_url; |
49 | + | |
50 | + } elsif ($video_url) { | |
d38d03ff | 51 | + $xurl = uri_unescape($video_url); |
52 | + $id = $1 if $xurl =~ m{^\S+://[^/]+/v/(.+?)\.flv}; | |
4aadb41e | 53 | + |
d38d03ff | 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 | + |
d38d03ff | 58 | + my $page = ""; |
59 | + open my $fh, ">", \$page; | |
4aadb41e | 60 | + |
d38d03ff | 61 | + # Disable: header |
62 | + $curl->setopt(CURLOPT_HEADER, 0); | |
63 | + $curl->setopt(CURLOPT_URL, $url); | |
64 | + $curl->setopt(CURLOPT_WRITEDATA, $fh); | |
4aadb41e | 65 | + |
d38d03ff | 66 | + my $rc = $curl->perform; |
67 | + close $fh; | |
4aadb41e | 68 | + |
d38d03ff | 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 | + |
d38d03ff | 79 | + return ($xurl, $id); |
4aadb41e | 80 | +} |
4aadb41e ER |
81 | |
82 | # Subroutines: Progress | |
83 | # NOTE: the 'dot' progress copies much from wget. |