-package GrabberBase;
-use Base;
-@ISA = qw(Base);
+# (c) 2007 by Ralf Ertzinger <ralf@camperquake.de>
+# licensed under GNU GPL v2
+
+package videosite::GrabberBase;
+use videosite::Base;
+use MIME::Base64;
+use Data::Dumper;
+@ISA = qw(videosite::Base);
use strict;
sub new {
my $class = shift;
- my $self = {
+ my $self = $class->SUPER::new(
NAME => 'FlashGrab',
TYPE => 'grabber',
PATTERNS => [],
- };
+ @_,
+ );
return bless($self, $class);
}
my $self = shift;
my $url = shift;
my $pattern;
+ my $res;
+
+ return undef unless $self->_getval('enabled');
foreach $pattern (@{$self->{'PATTERNS'}}) {
$self->debug("Matching %s against %s", $pattern, $url);
if ($url =~ m|$pattern|) {
$self->debug("Match");
- return $self->_parse($url, $pattern);
+ foreach ($self->connectors()) {
+ $self->debug("Using connector %s", $_->{'name'});
+ $self->selectconn($_);
+ $res = $self->_parse($url, $pattern);
+ if (defined($res)) {
+ $res->{'CONNECTOR'} = $_;
+ last;
+ }
+ }
+ if (defined($res)) {
+ if (defined($self->_cached_ua())) {
+ $res->{COOKIES} = encode_base64("#LWP-Cookies-1.0\n" . $self->_cached_ua()->cookie_jar->as_string(), "");
+ }
+ }
+
+ return wantarray?($res, $pattern):$res;
}
}
return undef;
}
+sub enable {
+ my $self = shift;
+
+ $self->debug('Enabling %s grabber', $self->{'NAME'});
+ $self->setval('enabled', '1');
+}
+
+sub disable {
+ my $self = shift;
+
+ $self->debug('Disabling %s grabber', $self->{'NAME'});
+ $self->setval('enabled', '0');
+}
+
sub _parse {
my $self = shift;
my $url = shift;
return undef;
}
+sub _selftest {
+ my $self = shift;
+ my $info;
+
+ unless(exists($self->{_SELFTESTURL}) and exists($self->{_SELFTESTTITLE})) {
+ return 0;
+ }
+
+ unless(defined($info = $self->get($self->{_SELFTESTURL}))) {
+ $self->error("Could not get information from %s", $self->{_SELFTESTURL});
+ return undef;
+ }
+
+ unless($info->{TITLE} eq $self->{_SELFTESTTITLE}) {
+ $self->error("Title from info does not equal expected result (%s != %s)", $info->{TITLE}, $self->{_SELFTESTTITLE});
+ return undef;
+ }
+
+ return 1;
+}
+
1;