X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite%2FWimpGrabber.pm;h=cffc02ca8ee63838266dc31c2f74cf43467888f1;hb=0d9312d5cb6c5f0c3e8338e74a28e009fe0f7446;hp=83599a63c2623eeea94461d3d7c9d0a796ddec71;hpb=717cceda344e9bebb0f0d000a4905bd755c3a1a2;p=videosite.git diff --git a/videosite/WimpGrabber.pm b/videosite/WimpGrabber.pm index 83599a6..cffc02c 100644 --- a/videosite/WimpGrabber.pm +++ b/videosite/WimpGrabber.pm @@ -8,25 +8,23 @@ package videosite::WimpGrabber; use videosite::GrabberBase; @ISA = qw(videosite::GrabberBase); -use LWP::Simple qw(!get); +use MIME::Base64; use HTML::Parser; -use videosite::JSArrayParser; use Data::Dumper; 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 { @@ -50,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; } @@ -63,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; @@ -72,25 +70,17 @@ sub _parse { } # Look for the download URL + # This is obfuscated a little bit. foreach $e (@text) { - if ($e->[0] =~ m|\.setup\((.*)\);$|) { - my $jsp; - my $r; - - $self->debug("Found JSON: %s", $1); - $jsp = videosite::JSArrayParser->new(); - $self->debug("Using %s to parse", ref($jsp)); - $r = $jsp->parse($1); - - unless(defined($r)) { - $self->error("Found information hash, but could not parse"); - return undef; - } + if ($e->[0] =~ m|var googleCode = '([^\x27]+)'|) { + my $c = $1; - $self->debug("Parsed information: %s", Dumper($r)); + $self->debug("Found obfuscated code: %s", $c); + my $d = decode_base64($c); + $self->debug("Decoded to: %s", $d); - if (exists($r->{'file'})) { - $metadata->{'DLURL'} = $r->{'file'}; + if ($d =~ m|\.addVariable\("file",\s*"([^\x22]+)"\)|) { + $metadata->{'DLURL'} = $1; } } }