From 543e8a2d5608a142cb04ca0443a61d21b53d2da6 Mon Sep 17 00:00:00 2001 From: Ralf Ertzinger Date: Sun, 18 Aug 2013 21:48:37 +0200 Subject: [PATCH] MyVideo: Fix grabber --- videosite/MyVideoGrabber.pm | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/videosite/MyVideoGrabber.pm b/videosite/MyVideoGrabber.pm index 7be3806..c2685b7 100644 --- a/videosite/MyVideoGrabber.pm +++ b/videosite/MyVideoGrabber.pm @@ -8,7 +8,7 @@ package videosite::MyVideoGrabber; use videosite::GrabberBase; @ISA = qw(videosite::GrabberBase); -use HTML::Parser; +use HTML::TokeParser; use Data::Dumper; use strict; @@ -17,6 +17,8 @@ sub new { my $class = shift; my $self = $class->SUPER::new( NAME => 'myvideo', + _SELFTESTURL => 'http://www.myvideo.de/watch/9191174/Battle_Worlds_Kronos_Alpha_Version_ausprobiert', + _SELFTESTTITLE => 'Battle Worlds: Kronos - Alpha-Version ausprobiert', PATTERNS => ['(http://(?:[-a-zA-Z0-9_.]+\.)*myvideo.de/watch/(\d+))'], @_, ); @@ -30,10 +32,8 @@ sub _parse { my $pattern = shift; my $content; my $metadata = {}; - my $p = HTML::Parser->new(api_version => 3); - my @accum; - my @text; - my $e; + my $p; + my $t; $url =~ m|$pattern|; $url = $1; @@ -50,32 +50,18 @@ sub _parse { return undef; } - $p->handler(start => \@accum, "tagname, attr"); - $p->report_tags(qw(meta link)); - $p->utf8_mode(1); - $p->parse($content); - - # Look for the title in the meta tags - foreach $e (@accum) { - if ('meta' eq $e->[0]) { - if ('title' eq $e->[1]->{'name'}) { - $metadata->{'TITLE'} = $e->[1]->{'content'}; - $metadata->{'TITLE'} =~ s/\s+Video\s+-\s+\S+\s+-\s+MyVideo$//; - $self->debug("Found title: %s", $metadata->{'TITLE'}); - last; + $p = HTML::TokeParser->new(\$content); + while ($t = $p->get_tag('meta', 'link')) { + if ('meta' eq $t->[0]) { + if (exists($t->[1]->{property}) and ($t->[1]->{property} eq 'og:title')) { + $metadata->{'TITLE'} = $t->[1]->{content}; } - } - } - - # Look for the download URL - foreach $e (@accum) { - if ('link' eq $e->[0]) { - if (exists($e->[1]->{'rel'}) and ('image_src' eq $e->[1]->{'rel'})) { - $metadata->{'DLURL'} = $e->[1]->{'href'}; + } elsif ('link' eq $t->[0]) { + if (exists($t->[1]->{rel}) and ($t->[1]->{rel} eq 'image_src')) { + $metadata->{'DLURL'} = $t->[1]->{'href'}; $metadata->{'DLURL'} =~ s,thumbs/[^/]*$,,; $metadata->{'DLURL'} .= $metadata->{'ID'} . ".flv"; $self->debug("Found URL: %s", $metadata->{'DLURL'}); - last; } } } -- 1.8.3.1