From: Ralf Ertzinger Date: Sun, 4 May 2008 11:13:29 +0000 (+0200) Subject: - Add video quality parameter for GoogleVideo X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=commitdiff_plain;h=459af70cec834289606d6856346a661178a7866d;p=videosite.git - Add video quality parameter for GoogleVideo --- diff --git a/videosite/GoogleGrabber.pm b/videosite/GoogleGrabber.pm index 5bfc61f..442a872 100644 --- a/videosite/GoogleGrabber.pm +++ b/videosite/GoogleGrabber.pm @@ -20,6 +20,7 @@ sub new { $self->{'NAME'} = 'google'; $self->{'PATTERNS'} = ['(http://video\.google\.com/videoplay\?docid=([-\d]+))']; + $self->{'_PARAMS'} = {'QUALITY' => ['normal', 'Quality of the video to download. normal = standard resolution flash video, h264 = high resolution MPEG4 video']}; bless($self, $class); $self->_prepare_parameters(); @@ -35,6 +36,7 @@ sub _parse { my $metadata = {}; my $p; my $e; + my $qualty = $self->_getval('QUALITY'); $url =~ m|$pattern|; $url = $1; @@ -59,10 +61,21 @@ sub _parse { $metadata->{'TITLE'} =~ s/\s?- Google Video$//s; } - while ($e = $p->get_tag('a')) { - if ((exists($e->[1]{'id'})) and ('ipoddownloadlink' eq $e->[1]{'id'})) { - $metadata->{'DLURL'} = $e->[1]{'href'}; - last; + if ($quality eq 'h264') { + while ($e = $p->get_tag('a')) { + if ((exists($e->[1]{'id'})) and ('ipoddownloadlink' eq $e->[1]{'id'})) { + $metadata->{'DLURL'} = $e->[1]{'href'}; + last; + } + } + } else { + while ($e = $p->get_tag('script')) { + if ($p->get_text() =~ m|googleplayer\.swf\?\\46videoUrl\\75(.+?)\\46|s) { + my $u = $1; + $u =~ s/%(..)/chr(hex($1))/ge; + $metadata->{'DLURL'} = $u; + last; + } } }