X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FSnotrGrabber.pm;h=1f56838cd8616c96303fde5377f69595ffbc4759;hb=77303721994d561545a7a6457de9377292f7710f;hp=f5acf3d78337a9648b7b8317a9f505e22efc29ec;hpb=30f552e063c63e7b8452f239910e490cd37580cb;p=videosite.git diff --git a/videosite/SnotrGrabber.pm b/videosite/SnotrGrabber.pm index f5acf3d..1f56838 100644 --- a/videosite/SnotrGrabber.pm +++ b/videosite/SnotrGrabber.pm @@ -3,13 +3,12 @@ # # 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; @@ -33,9 +32,8 @@ sub _parse { my $pattern = shift; my $content; my $metadata = {}; - my $p; - my $t; - my @accum; + my $p = 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[@name="title"]'); + if (defined($n)) { + $metadata->{'TITLE'} = $n->{'content'}; } # The actual video URL is insultingly simple.