X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=blobdiff_plain;f=videosite.pl;h=f21f6ee9b2ebcf62a4a94bda3d8829e2ff052044;hb=0f99e523db38c4fec0abdbdf18f8173d44587a94;hp=fe94079491b189285675eb4177f9465600b530e0;hpb=9cfabbf047871e6671aca65e9313cb4f2ce23124;p=videosite.git diff --git a/videosite.pl b/videosite.pl index fe94079..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,6 +104,13 @@ 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//; + study($message); + + ($m, $p) = $g->get($message); } } } @@ -294,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});