X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FCollegeHumorGrabber.pm;h=bbf54a688aac683fab225aca387df9641d98a041;hb=4f73c0b48954f5f4f30ee96779ecaa3fca847305;hp=b25043cd61841f2987601aae09b478b86f74ca5e;hpb=7f8669fc619a87e496066fb6f92f3df127e985c5;p=videosite.git diff --git a/videosite/CollegeHumorGrabber.pm b/videosite/CollegeHumorGrabber.pm index b25043c..bbf54a6 100644 --- a/videosite/CollegeHumorGrabber.pm +++ b/videosite/CollegeHumorGrabber.pm @@ -3,14 +3,14 @@ # (c) 2007 by Ralf Ertzinger # licensed under GNU GPL v2 -package CollegeHumorGrabber; +package videosite::CollegeHumorGrabber; -use GrabberBase; -@ISA = qw(GrabberBase); +use videosite::GrabberBase; +@ISA = qw(videosite::GrabberBase); +use videosite::HTMLHelper; use LWP::Simple qw(!get); use XML::Simple; -use HTML::Parser; use Data::Dumper; use strict; @@ -64,24 +64,15 @@ sub _parse { # The XML does not contain the full title of the video, for # reasons possibly known to some jerk at CollegeHumor. # So we'll have to parse the actual HTML, too. - unless(defined($content = LWP::Simple::get(sprintf('http://www.collegehumor.com/video:%s', $2)))) { + $p = videosite::HTMLHelper->new(); + unless(defined($content = $p->load(sprintf('http://www.collegehumor.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'}; - } - } + + $t = $p->findnodes('h1[@id="item_title"]'); + if (defined($t)) { + $metadata->{'TITLE'} = $t->{'_content'}->[0]; } unless(defined($metadata->{'DLURL'}) && defined($metadata->{'TITLE'})) {