error on removed video
[videosite.git] / videosite.pl
index 2e361b0..58e4c96 100644 (file)
@@ -1,6 +1,6 @@
 # autodownload flash videos
 #
-# (c) 2007 by Ralf Ertzinger <ralf@camperquake.de>
+# (c) 2007-2008 by Ralf Ertzinger <ralf@camperquake.de>
 # licensed under GNU GPL v2
 #
 # Based on youtube.pl by Christian Garbs <mitch@cgarbs.de>
@@ -42,6 +42,8 @@ sub write_irssi {
     my $witem = shift;
     my @text = @_;
 
+    $text[0] = 'videosite: ' . $text[0];
+
     if (defined $witem) {
         $witem->print(sprintf(shift(@text), @text), MSGLEVEL_CLIENTCRAP);
     } else {
@@ -50,12 +52,6 @@ sub write_irssi {
 
 }
 
-sub write_verbose {
-    if (Irssi::settings_get_bool('youtube_verbose')) {
-        write_irssi(shift, @_);
-    }
-}
-
 sub write_debug {
     if ($debug) {
         write_irssi(shift, @_);
@@ -79,13 +75,14 @@ sub check_for_link {
     }
 
     # Look if we should ignore this line
-    if ($message =~ m|/nosave|) {
+    if ($message =~ m,(?:\s|^)/nosave(?:\s|$),) {
         return;
     }
 
     # 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 +93,16 @@ sub check_for_link {
 
 sub cmd_save {
 
-    open(CONF, '>'.$conffile);
-    print CONF XML::Simple::XMLout($conf, KeepRoot => 1, KeyAttr => ['module', '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, 'Could not save config to %s: %s', ($conffile, $@));
+    } else {
+        write_irssi(undef, 'configuration saved to %s', $conffile);
+    }
 }
 
 sub cmd_set {
@@ -154,7 +158,16 @@ sub cmd_help {
         }
         write_irssi(undef, 'No such module');
     } else {
-        write_irssi(undef, "Supported commands:\n save: Save the current configuration\n help [modulename]: Display this help, or module specific help\n show [modulename]: Show loaded modules, or the current parameters of a module\n set modulename parameter value: set a module parameter to a new value\n getter [modulename]: display or set the getter to use");
+        write_irssi(undef, <<'EOT');
+Supported commands:
+ save: Save the current configuration
+ help [modulename]: Display this help, or module specific help
+ 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
+ debug: enable debugging messages
+ nodebug: disable debugging messages
+EOT
     }
 }
 
@@ -231,7 +244,7 @@ sub init_videosite {
 
     my $p;
 
-    unless(-r $conffile && defined($conf = XML::Simple::XMLin($conffile, ForceArray => ['config', 'option'], KeepRoot => 1, KeyAttr => ['module', 'key']))) {
+    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' => '' }};
@@ -262,6 +275,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);
 }