X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FWimpGrabber.pm;h=cffc02ca8ee63838266dc31c2f74cf43467888f1;hb=89e8775f8f880bd14731e4501d13a3d63fe5fcb5;hp=8d377669ca27a6a9422bd3bd134f611d5d2f7df3;hpb=9192d1f7f89c812cb4b267942c6a08e9d154ab24;p=videosite.git diff --git a/videosite/WimpGrabber.pm b/videosite/WimpGrabber.pm index 8d37766..cffc02c 100644 --- a/videosite/WimpGrabber.pm +++ b/videosite/WimpGrabber.pm @@ -8,7 +8,7 @@ package videosite::WimpGrabber; use videosite::GrabberBase; @ISA = qw(videosite::GrabberBase); -use LWP::Simple qw(!get); +use MIME::Base64; use HTML::Parser; use Data::Dumper; @@ -16,16 +16,15 @@ use strict; sub new { my $class = shift; - my $self = $class->SUPER::new(); - - $self->{'NAME'} = 'wimp'; - $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*wimp.com/([^/]+)/?)']; - - bless($self, $class); - - $self->_prepare_parameters(); - - return $self; + my $self = $class->SUPER::new( + NAME => 'wimp', + _SELFTESTURL => 'http://www.wimp.com/insanebuilding/', + _SELFTESTTITLE => 'Insane building.', + PATTERNS => ['(http://(?:[-a-zA-Z0-9_.]+\.)*wimp.com/([^/]+)/?)'], + @_, + ); + + return bless($self, $class); } sub _parse { @@ -49,7 +48,7 @@ sub _parse { $metadata->{'TITLE'} = undef; $metadata->{'DLURL'} = undef; - unless(defined($content = LWP::Simple::get(sprintf('http://www.wimp.com/%s', $2)))) { + unless(defined($content = $self->simple_get(sprintf('http://www.wimp.com/%s', $2)))) { $self->error('Could not download %s', $url); return undef; } @@ -62,7 +61,7 @@ sub _parse { # Look for the title in the meta tags foreach $e (@accum) { - if ('meta' eq $e->[0]) { + if ('meta' eq $e->[0] and exists($e->[1]->{'name'})) { if ('description' eq $e->[1]->{'name'}) { $metadata->{'TITLE'} = $e->[1]->{'content'}; last; @@ -71,9 +70,18 @@ sub _parse { } # Look for the download URL + # This is obfuscated a little bit. foreach $e (@text) { - if ($e->[0] =~ m|\.addVariable\("file",\s*"([^\x22]+)"\)|) { - $metadata->{'DLURL'} = $1; + if ($e->[0] =~ m|var googleCode = '([^\x27]+)'|) { + my $c = $1; + + $self->debug("Found obfuscated code: %s", $c); + my $d = decode_base64($c); + $self->debug("Decoded to: %s", $d); + + if ($d =~ m|\.addVariable\("file",\s*"([^\x22]+)"\)|) { + $metadata->{'DLURL'} = $1; + } } }