]>
Commit | Line | Data |
---|---|---|
4aadb41e ER |
1 | --- clive-2.1.0/clive 2008-12-11 20:19:25.263179888 +0200 |
2 | +++ clive-2.1.0-delfi/clive 2008-12-11 23:03:43.000000000 +0200 | |
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, |
4aadb41e ER |
8 | #IsMetacafe => qr|\Qmetacafe.com\E|i, |
9 | ); | |
10 | ||
11 | @@ -303,6 +304,8 @@ | |
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}/ ) { | |
16 | + ($xurl, $id) = handle_delfi($response_ref, $response_fh); | |
17 | } | |
18 | # elsif ( $url =~ /$re_hosts{IsMetacafe}/ ) { | |
19 | # ($xurl, $id) = handle_metacafe($response_ref); | |
20 | @@ -712,6 +715,64 @@ | |
21 | return ($xurl, $id); | |
22 | } | |
23 | ||
24 | +sub handle_delfi { | |
25 | + my ($response_ref, $response_fh) = @_; | |
26 | + | |
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/Uu4gF58g/ | |
37 | + GrabVideoURL => qr|\.addVariable\('file',\s*'([^']+)'|, | |
38 | + ); | |
39 | + | |
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}/; | |
45 | + | |
46 | + if ($videobox_url) { | |
47 | + $id = $1 if $xurl =~ m{/([^/]+)\.flv$}; | |
48 | + $xurl = $videobox_url; | |
49 | + | |
50 | + } elsif ($video_url) { | |
51 | + $xurl = uri_unescape($video_url); | |
52 | + $id = $1 if $xurl =~ m{^\S+://[^/]+/v/(.+?)\.flv}; | |
53 | + | |
54 | + } elsif ($video_salt and $video_site) { | |
55 | + my $url = $video_site . '/video/' . $video_salt . '/'; | |
56 | + print "done.\nfetch page ..." unless $opts{quiet}; | |
57 | + | |
58 | + my $page = ""; | |
59 | + open my $fh, ">", \$page; | |
60 | + | |
61 | + # Disable: header | |
62 | + $curl->setopt(CURLOPT_HEADER, 0); | |
63 | + $curl->setopt(CURLOPT_URL, $url); | |
64 | + $curl->setopt(CURLOPT_WRITEDATA, $fh); | |
65 | + | |
66 | + my $rc = $curl->perform; | |
67 | + close $fh; | |
68 | + | |
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 | + } | |
78 | + | |
79 | + return ($xurl, $id); | |
80 | +} | |
81 | + | |
82 | ||
83 | # Subroutines: Progress | |
84 | # NOTE: the 'dot' progress copies much from wget. |