X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FSevenloadGrabber.pm;h=4d3482f2ae8b5112988cd837201181788038907c;hb=4a4e5ce9968bd9614054d8ac2b90f28ea9584963;hp=4076014f5eb17bb91b2e2716ec39c2a4cbf3300e;hpb=2044d5ff60e639a2eafbeed3a70224564e94c84c;p=videosite.git diff --git a/videosite/SevenloadGrabber.pm b/videosite/SevenloadGrabber.pm index 4076014..4d3482f 100644 --- a/videosite/SevenloadGrabber.pm +++ b/videosite/SevenloadGrabber.pm @@ -3,12 +3,11 @@ # # Grabber for sevenload.com/de -package SevenloadGrabber; +package videosite::SevenloadGrabber; -use GrabberBase; -@ISA = qw(GrabberBase); +use videosite::GrabberBase; +@ISA = qw(videosite::GrabberBase); -use LWP::Simple qw(!get); use XML::Simple; use Data::Dumper; @@ -19,7 +18,9 @@ sub new { my $self = $class->SUPER::new(); $self->{'NAME'} = 'sevenload'; - $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*sevenload.com/videos/([^/]+)(?:/.*)*)']; + $self->{_SELFTESTURL} = 'http://de.sevenload.com/videos/uqDvKzh-vilogo-TV-Spot'; + $self->{_SELFTESTTITLE} = 'vilogo TV-Spot'; + $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*sevenload.com/videos/(\w+?)-.*)']; bless($self, $class); $self->_prepare_parameters(); @@ -42,23 +43,28 @@ sub _parse { $metadata->{'URL'} = $url; $metadata->{'ID'} = $2; $metadata->{'TYPE'} = 'video'; - $metadata->{'SOURCE'} = 'sevenload'; + $metadata->{'SOURCE'} = $self->{'NAME'}; $metadata->{'TITLE'} = undef; $metadata->{'DLURL'} = undef; # Get the XML file containing the video metadata - unless(defined($content = LWP::Simple::get(sprintf('http://api.sevenload.com/api/player/id/%s', $2)))) { + unless(defined($content = $self->simple_get(sprintf('http://flash.sevenload.com/player?itemId=%s', $2)))) { $self->error('Could not download XML metadata'); return undef; } - unless(defined($t = $p->XMLin($content))) { + unless(defined($t = $p->XMLin($content, KeepRoot => 1))) { $self->error('Could not parse XML metadata'); return undef; } - $metadata->{'DLURL'} = $t->{'item'}->{'video'}->{'url'}; - $metadata->{'TITLE'} = $t->{'item'}->{'title'}; + # Loop through the video streams + foreach(@{$t->{'playerconfig'}->{'playlists'}->{'playlist'}->{'items'}->{'item'}->{'videos'}->{'video'}->{'streams'}->{'stream'}}) { + if ($_->{'quality'} eq 'high') { + $metadata->{'DLURL'} = $_->{'locations'}->{'location'}->{'content'}; + } + } + $metadata->{'TITLE'} = $t->{'playerconfig'}->{'playlists'}->{'playlist'}->{'items'}->{'item'}->{'title'}; unless(defined($metadata->{'DLURL'}) && defined($metadata->{'TITLE'})) { $self->error('Could not extract download URL and title');