X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FWimpGrabber.pm;h=cffc02ca8ee63838266dc31c2f74cf43467888f1;hb=1bc44dd403d1b6430a94adf9c6050d396bd89463;hp=cda5a95f68a34c6127178b3241dc7ef74238751b;hpb=9396ce0df3267455cafa462ed2289769fae03676;p=videosite.git diff --git a/videosite/WimpGrabber.pm b/videosite/WimpGrabber.pm index cda5a95..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|\.setup\(.*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; + } } }