From: Ralf Ertzinger Date: Sun, 3 Feb 2008 17:00:15 +0000 (+0100) Subject: - Add the ability to enable/disable selected grabber modules X-Git-Url: https://git.camperquake.de/gitweb.cgi?p=videosite.git;a=commitdiff_plain;h=adceba895caf73c393ada4d8582bae825b0afdc7 - Add the ability to enable/disable selected grabber modules --- diff --git a/videosite.pl b/videosite.pl index 58e4c96..20b5e9d 100644 --- a/videosite.pl +++ b/videosite.pl @@ -120,9 +120,39 @@ sub cmd_set { write_irssi(undef, 'No such module'); } + +sub cmd_enable { + my $target = shift; + my $p; + + foreach $p (@grabbers) { + if ($p->{'NAME'} eq $target) { + $p->enable(); + return; + } + } + write_irssi(undef, 'No such module'); +} + + +sub cmd_disable { + my $target = shift; + my $p; + + foreach $p (@grabbers) { + if ($p->{'NAME'} eq $target) { + $p->disable(); + return; + } + } + write_irssi(undef, 'No such module'); +} + + sub cmd_show { my $target = shift; my $p; + my $e; if (defined($target)) { foreach $p (@getters, @grabbers) { @@ -133,14 +163,15 @@ sub cmd_show { } write_irssi(undef, 'No such module'); } else { - write_irssi(undef, 'Loaded grabbers:'); + write_irssi(undef, 'Loaded grabbers (* denotes enabled modules):'); foreach $p (@grabbers) { - write_irssi(undef, ' ' . $p->{'NAME'}); + $e = $p->_getval('enabled'); + write_irssi(undef, ' %s%s', $p->{'NAME'}, $e?'*':''); }; write_irssi(undef, 'Loaded getters:'); foreach $p (@getters) { - write_irssi(undef, ' ' . $p->{'NAME'}); + write_irssi(undef, ' %s', $p->{'NAME'}); }; } } @@ -165,6 +196,8 @@ Supported commands: show [modulename]: Show loaded modules, or the current parameters of a module set modulename parameter value: set a module parameter to a new value getter [modulename]: display or set the getter to use + enable [modulename]: enable the usage of this module (grabbers only) + disable [modulename]: disable the usage of this module (grabbers only) debug: enable debugging messages nodebug: disable debugging messages EOT @@ -299,6 +332,12 @@ sub cmdhandler { } elsif ($params[0] eq 'getter') { shift(@params); cmd_getter(@params); + } elsif ($params[0] eq 'enable') { + shift(@params); + cmd_enable(@params); + } elsif ($params[0] eq 'disable') { + shift(@params); + cmd_disable(@params); } elsif ($params[0] eq 'debug') { $debug = 1; foreach (@grabbers, @getters) { diff --git a/videosite/Base.pm b/videosite/Base.pm index efcce5b..51b091c 100644 --- a/videosite/Base.pm +++ b/videosite/Base.pm @@ -55,7 +55,7 @@ sub _prepare_parameters { my $self = shift; my $p; - $self->{'_CONFIG'} = {'option' => {}}; + $self->{'_CONFIG'} = {'option' => {'enabled' => {'content' => '1'}}}; foreach $p (keys(%{$self->{'_PARAMS'}})) { $self->{'_CONFIG'}->{'option'}->{$p}->{'content'} = $self->{'_PARAMS'}->{$p}->[0]; diff --git a/videosite/GrabberBase.pm b/videosite/GrabberBase.pm index 45fe489..a838925 100644 --- a/videosite/GrabberBase.pm +++ b/videosite/GrabberBase.pm @@ -22,6 +22,8 @@ sub get($$) { my $url = shift; my $pattern; + return undef unless $self->_getval('enabled'); + foreach $pattern (@{$self->{'PATTERNS'}}) { $self->debug("Matching %s against %s", $pattern, $url); if ($url =~ m|$pattern|) { @@ -33,6 +35,20 @@ sub get($$) { 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;