my $message = ($parammessage == -1) ? '' : $signal->[$parammessage];
my $g;
my $m;
+ my $p;
my $witem;
return;
}
+ study($message);
+
# 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'});
} else {
write_irssi($witem, '%%R>>> Invalid operation mode');
}
- last;
+
+ # Remove the matched part from the message and try again (there may be
+ # more!)
+ $message =~ s/$p//;
+ study($message);
+
+ ($m, $p) = $g->get($message);
}
}
}
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});