# (c) 2007 by Ralf Ertzinger # 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 = $class->SUPER::new( NAME => 'FlashGrab', TYPE => 'grabber', PATTERNS => [], @_, ); return bless($self, $class); } sub get($$) { 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"); 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;