- Match multiple URLs per line
authorRalf Ertzinger <sun@ryoko.camperquake.de>
Thu, 10 Apr 2008 19:42:44 +0000 (21:42 +0200)
committerRalf Ertzinger <sun@ryoko.camperquake.de>
Thu, 10 Apr 2008 19:42:44 +0000 (21:42 +0200)
videosite.pl
videosite/GrabberBase.pm

index 678cd32..c970e98 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,7 +102,12 @@ 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//;
+
+            ($m, $p) = $g->get($message);
         }
     }
 }
index a838925..eec5a33 100644 (file)
@@ -28,7 +28,7 @@ sub get($$) {
         $self->debug("Matching %s against %s", $pattern, $url);
         if ($url =~ m|$pattern|) {
             $self->debug("Match");
-            return $self->_parse($url, $pattern);
+            return $self->_parse($url, $pattern), $pattern;
         }
     }