X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FWimpGrabber.pm;h=e9b14ff5de56b145458e317e7bff2401b1ee835a;hb=b6283fc76d8dedc75b56fa37a3a9254db0c0c1b2;hp=8d377669ca27a6a9422bd3bd134f611d5d2f7df3;hpb=269604a96f3edab3ed911d7a6931eef58c834560;p=videosite.git diff --git a/videosite/WimpGrabber.pm b/videosite/WimpGrabber.pm index 8d37766..e9b14ff 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; @@ -19,6 +19,8 @@ sub new { my $self = $class->SUPER::new(); $self->{'NAME'} = 'wimp'; + $self->{_SELFTESTURL} = 'http://www.wimp.com/insanebuilding/'; + $self->{_SELFTESTTITLE} = 'Insane building.'; $self->{'PATTERNS'} = ['(http://(?:[-a-zA-Z0-9_.]+\.)*wimp.com/([^/]+)/?)']; bless($self, $class); @@ -49,7 +51,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 +64,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 +73,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; + } } }