- Check for existance of hash key before using
[videosite.git] / videosite.pl
index fe94079..3ae1e83 100644 (file)
@@ -72,6 +72,7 @@ sub check_for_link {
     my $message = ($parammessage == -1) ? '' : $signal->[$parammessage];
     my $g;
     my $m;
+    my $p;
 
 
     my $witem;
@@ -88,7 +89,8 @@ sub check_for_link {
 
     # Offer the message to all Grabbers in turn
     foreach $g (@grabbers) {
-        if (defined($m = $g->get($message))) {
+        ($m, $p) = $g->get($message);
+        while (defined($m)) {
             write_debug($witem, 'Metadata: %s', Dumper($m));
             if ('download' eq ($conf->{'videosite'}->{'mode'})) {
                 write_irssi($witem, '%%R>>> %%NSaving %%Y%s%%N %%G%s', $m->{'SOURCE'}, $m->{'TITLE'});
@@ -100,6 +102,12 @@ sub check_for_link {
             } else {
                 write_irssi($witem, '%%R>>> Invalid operation mode');
             }
+
+            # Remove the matched part from the message and try again (there may be
+            # more!)
+            $message =~ s/$p//;
+
+            ($m, $p) = $g->get($message);
         }
     }
 }
@@ -294,6 +302,7 @@ sub ploader {
         write_debug(undef, "found $g->{'TYPE'} $g->{'NAME'}");
         if ($type eq $g->{'TYPE'}) {
             push(@g, $g);
+            $g->setio(sub {Irssi::print(shift)});
         } else {
             write_irssi(undef, '%s has wrong type (got %s, expected %s)', $p, $g->{'TYPE'}, $type);
             delete($INC{$p});