- Add the ability to enable/disable selected grabber modules
authorRalf Ertzinger <sun@ryoko.camperquake.de>
Sun, 3 Feb 2008 17:00:15 +0000 (18:00 +0100)
committerRalf Ertzinger <sun@ryoko.camperquake.de>
Sun, 3 Feb 2008 17:00:15 +0000 (18:00 +0100)
videosite.pl
videosite/Base.pm
videosite/GrabberBase.pm

index 58e4c96..20b5e9d 100644 (file)
@@ -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) {
index efcce5b..51b091c 100644 (file)
@@ -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];
index 45fe489..a838925 100644 (file)
@@ -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;