X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite.pl;h=f21f6ee9b2ebcf62a4a94bda3d8829e2ff052044;hb=459af70cec834289606d6856346a661178a7866d;hp=678cd328bb392e40ced630f7c0bb15d5ce8a6346;hpb=2d2e221e693c0a1794a064c3ba5fffce828f310c;p=videosite.git diff --git a/videosite.pl b/videosite.pl index 678cd32..f21f6ee 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; @@ -86,9 +87,12 @@ sub check_for_link { 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'}); @@ -100,7 +104,13 @@ sub check_for_link { } 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); } } } @@ -295,6 +305,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});