]>
Commit | Line | Data |
---|---|---|
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. |