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 {
$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;
}
# 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;
}
# 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;
}
}
}