X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite.pl;h=3ae1e83fdfe0fd03a82e0475f37226af3a10a5ce;hb=bd9a8a86176b546d3336587a8f28f9c25299f5f6;hp=fe94079491b189285675eb4177f9465600b530e0;hpb=9cfabbf047871e6671aca65e9313cb4f2ce23124;p=videosite.git diff --git a/videosite.pl b/videosite.pl index fe94079..3ae1e83 100644 --- a/videosite.pl +++ b/videosite.pl @@ -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});