From: Ralf Ertzinger Date: Sat, 11 Feb 2012 17:18:31 +0000 (+0100) Subject: Redtube: Fix grabber X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=videosite.git;a=commitdiff_plain;h=70ef81ffd5838c68a6d229b1c66fee5462bccb23 Redtube: Fix grabber --- diff --git a/videosite/RedTubeGrabber.pm b/videosite/RedTubeGrabber.pm index 4e05dfd..ef757cc 100644 --- a/videosite/RedTubeGrabber.pm +++ b/videosite/RedTubeGrabber.pm @@ -75,6 +75,7 @@ sub _parse { my $metadata = {}; my $p; my $r; + my $tag; my $dir; my $hash; @@ -99,18 +100,28 @@ sub _parse { $p = HTML::TokeParser->new(\$content); # Look for the title - if ($p->get_tag('title')) { - my $t = $p->get_text(); - if ($t =~ /\xa0RedTube - /) { + while ($tag = $p->get_tag('title', 'script')) { + if ('title' eq $tag->[0]) { + my $t = $p->get_text(); $metadata->{'TITLE'} = $t; - $metadata->{'TITLE'} =~ s/\xa0RedTube - //; - } - } + $metadata->{'TITLE'} =~ s/ \| Redtube.*//; + } elsif ('script' eq $tag->[0]) { + my $t = $p->get_text(); + + if ($t =~ m|so\.addParam\("flashvars","([^\x22]+)"|) { + my %h; - # Redtube uses a selfmade hash system to create the filename - ($dir, $hash) = mkfilename($metadata->{'ID'}); + $self->debug("Found flashvars: %s", $1); + %h = map { $self->decode_hexurl($_) } split(/[&=]/, $1); - $metadata->{'DLURL'} = sprintf('http://dl.redtube.com/_videos_t4vn23s9jc5498tgj49icfj4678/%s/%s.flv', $dir, $hash); + $self->debug("Decoded flashvars: %s", Dumper(\%h)); + + if (exists($h{mp4_url})) { + $metadata->{'DLURL'} = $h{mp4_url}; + } + } + } + } unless(defined($metadata->{'DLURL'}) && defined($metadata->{'TITLE'})) { $self->error('Could not extract download URL and title');