]> git.pld-linux.org Git - packages/clive.git/blob - clive-delfi.patch
- better video for video.delfi.ee :D
[packages/clive.git] / clive-delfi.patch
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,
7 +    IsDelfi     => qr|\Q.delfi.\E|i,
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/CzurzqNz/
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.
This page took 0.12993 seconds and 3 git commands to generate.