X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FSnotrGrabber.pm;h=87b7a102bb629a071a5ab10b8bbe2fafac6371bb;hb=HEAD;hp=f5acf3d78337a9648b7b8317a9f505e22efc29ec;hpb=30f552e063c63e7b8452f239910e490cd37580cb;p=videosite.git diff --git a/videosite/SnotrGrabber.pm b/videosite/SnotrGrabber.pm index f5acf3d..87b7a10 100644 --- a/videosite/SnotrGrabber.pm +++ b/videosite/SnotrGrabber.pm @@ -3,28 +3,27 @@ # # Grabber for snotr.com -package SnotrGrabber; +package videosite::SnotrGrabber; -use GrabberBase; -@ISA = qw(GrabberBase); +use videosite::GrabberBase; +@ISA = qw(videosite::GrabberBase); -use LWP::Simple qw(!get); -use HTML::Parser; +use videosite::HTMLHelper; use Data::Dumper; use strict; sub new { my $class = shift; - my $self = $class->SUPER::new(); - - $self->{'NAME'} = 'snotr'; - $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*snotr\.com/video/(\d+))']; - - bless($self, $class); - $self->_prepare_parameters(); - - return $self; + my $self = $class->SUPER::new( + NAME => 'snotr', + _SELFTESTURL => 'http://www.snotr.com/video/1836', + _SELFTESTTITLE => 'Brilliant thief', + PATTERNS => ['(http://(?:[-a-zA-Z0-9_.]+\.)*snotr\.com/video/(\d+))'], + @_, + ); + + return bless($self, $class); } sub _parse { @@ -33,9 +32,8 @@ sub _parse { my $pattern = shift; my $content; my $metadata = {}; - my $p; - my $t; - my @accum; + my $p = videosite::HTMLHelper->new(); + my $n; $url =~ m|$pattern|; $url = $1; @@ -48,26 +46,14 @@ sub _parse { $metadata->{'DLURL'} = undef; # Get the HTML file containing the title - unless(defined($content = LWP::Simple::get(sprintf('http://www.snotr.com/video/%s', $2)))) { + unless(defined($p->load(sprintf('http://www.snotr.com/video/%s', $2)))) { $self->error('Could not download HTML'); return undef; } - $p = HTML::Parser->new(api_version => 3); - - $p->handler(start => \@accum, "tagname, attr"); - $p->report_tags(qw(meta)); - $p->utf8_mode(1); - $p->parse($content); - - # Look for the title in the meta tags - foreach $t (@accum) { - if ('meta' eq $t->[0]) { - if (exists($t->[1]->{'name'}) and ('title' eq $t->[1]->{'name'})) { - $metadata->{'TITLE'} = $t->[1]->{'content'}; - last; - } - } + $n = $p->findnodes('meta[@property="og:title"]'); + if (defined($n)) { + $metadata->{'TITLE'} = $n->{'content'}; } # The actual video URL is insultingly simple.