- Add operation mode setting (download or display)
[videosite.git] / videosite.pl
index fabc23a..fe94079 100644 (file)
@@ -21,6 +21,12 @@ my $conf;
 my $conffile = File::Spec->catfile(Irssi::get_irssi_dir(), 'videosite.xml');
 my $plugindir = File::Spec->catfile(Irssi::get_irssi_dir(), 'scripts', 'videosite');
 
+my $PARAMS = {
+    'getter' => '',
+    'mode' => 'download'
+};
+
+
 # activate debug here
 my $debug = 0;
 
@@ -84,9 +90,15 @@ sub check_for_link {
     foreach $g (@grabbers) {
         if (defined($m = $g->get($message))) {
             write_debug($witem, 'Metadata: %s', Dumper($m));
-            write_irssi($witem, '%%R>>> %%NSaving %%Y%s%%N %%G%s', $m->{'SOURCE'}, $m->{'TITLE'});
-            unless($getter->get($m)) {
-                write_irssi($witem, '%%R>>> FAILED');
+            if ('download' eq ($conf->{'videosite'}->{'mode'})) {
+                write_irssi($witem, '%%R>>> %%NSaving %%Y%s%%N %%G%s', $m->{'SOURCE'}, $m->{'TITLE'});
+                unless($getter->get($m)) {
+                    write_irssi($witem, '%%R>>> FAILED');
+                }
+            } elsif ('display' eq ($conf->{'videosite'}->{'mode'})) {
+                write_irssi($witem, '%%M>>> %%NSaw %%Y%s%%N %%G%s', $m->{'SOURCE'}, $m->{'TITLE'});
+            } else {
+                write_irssi($witem, '%%R>>> Invalid operation mode');
             }
         }
     }
@@ -200,6 +212,7 @@ Supported commands:
  enable [modulename]: enable the usage of this module (grabbers only)
  disable [modulename]: disable the usage of this module (grabbers only)
  reload: reload all modules (this is somewhat experimental)
+ mode [modename]: display or set the operation mode (download/display)
  debug: enable debugging messages
  nodebug: disable debugging messages
 EOT
@@ -224,6 +237,21 @@ sub cmd_getter {
     }
 }
 
+sub cmd_mode {
+    my $mode = shift;
+
+    if (defined($mode)) {
+        $mode = lc($mode);
+        if (('download' eq $mode) or ('display' eq $mode)) {
+            $conf->{'videosite'}->{'mode'} = $mode;
+        } else {
+            write_irssi(undef, 'Invalid mode: %s', $mode);
+        }
+    } else {
+        write_irssi(undef, 'Current mode: %s', $conf->{'videosite'}->{'mode'});
+    }
+}
+
 
 # save on unload
 sub sig_command_script_unload {
@@ -300,7 +328,12 @@ sub init_videosite {
     unless(-r $conffile && defined($conf = XML::Simple::XMLin($conffile, ForceArray => ['config', 'option'], KeepRoot => 1, KeyAttr => {'config' => 'module', 'option' => 'key'}))) {
         # No config, start with an empty one
         write_debug(undef, 'No config found, using defaults');
-        $conf = { 'videosite' => { 'getter' => '' }};
+        $conf = { 'videosite' => { }};
+    }
+    foreach (keys(%{$PARAMS})) {
+        unless (exists($conf->{'videosite'}->{$_})) {
+            $conf->{'videosite'}->{$_} = $PARAMS->{$_};
+        }
     }
 
     _load_modules($plugindir);
@@ -363,6 +396,9 @@ sub cmdhandler {
         cmd_disable(@params);
     } elsif ($params[0] eq 'reload') {
         init_videosite(0);
+    } elsif ($params[0] eq 'mode') {
+        shift(@params);
+        cmd_mode(@params);
     } elsif ($params[0] eq 'debug') {
         $debug = 1;
         foreach (@grabbers, @getters) {