X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FGoogleGrabber.pm;h=442a872c1217531d8055913a8e6eadc9dedac4b6;hb=459af70cec834289606d6856346a661178a7866d;hp=5bfc61f256fa81397ab462cdb642b84a6bb8a6fa;hpb=74d40b19f656fb5731cbf258321dbc3c19c48a03;p=videosite.git 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; + } } }