save config on global irssi /save
[videosite.git] / videosite.pl
index 847e627..c987a26 100644 (file)
@@ -86,6 +86,7 @@ sub check_for_link {
     # Offer the message to all Grabbers in turn
     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');
@@ -96,9 +97,16 @@ sub check_for_link {
 
 sub cmd_save {
 
-    open(CONF, '>'.$conffile);
-    print CONF XML::Simple::XMLout($conf, KeepRoot => 1, KeyAttr => {'config' => 'module', 'option' => 'key'});
-    close(CONF);
+    eval {
+        open(CONF, '>'.$conffile) or die 'Could not open config file';
+        print CONF XML::Simple::XMLout($conf, KeepRoot => 1, KeyAttr => {'config' => 'module', 'option' => 'key'});
+        close(CONF);
+    };
+    if ($@) {
+        write_irssi(undef, 'videosite: Could not save config: %s', $@);
+    } else {
+        write_irssi(undef, 'videosite: Saved config');
+    }
 }
 
 sub cmd_set {
@@ -271,6 +279,8 @@ sub init_videosite {
 
     Irssi::signal_add_first('command script load', 'sig_command_script_unload');
     Irssi::signal_add_first('command script unload', 'sig_command_script_unload');
+    Irssi::signal_add('setup saved', 'cmd_save');
+
 
     Irssi::command_bind('videosite' => \&cmdhandler);
 }