- Add video quality parameter for GoogleVideo
authorRalf Ertzinger <sun@lain.camperquake.de>
Sun, 4 May 2008 11:13:29 +0000 (13:13 +0200)
committerRalf Ertzinger <sun@lain.camperquake.de>
Sun, 4 May 2008 11:13:29 +0000 (13:13 +0200)
videosite/GoogleGrabber.pm

index 5bfc61f..442a872 100644 (file)
@@ -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;
+            }
         }
     }