Hi,

attached is a patch (based on dailystrips-1.0.28-11) that implements
this functionality.

It introduces an additional keyword "altpattern". This is a regular
expression whose match (the part in parentheses) is written to the
HTML file generated by dailystrips. "altpattern" only works for strips
of type "search" right now, since dailystrips downloads the comic's
webpage only in that case.

This is the xkcd definition I use to extract the tooltip text:

    strip xkcd
       name xkcd
       homepage http://xkcd.com/
       type search
       baseurl http://imgs.xkcd.com
       searchpage http://xkcd.com/
       searchpattern <img src="http://imgs.xkcd.com(/comics/.+?\.(png|jpg))"
       altpattern <img src="http://imgs.xkcd.com/comics/.+?"; title="(.+?)"
       provides latest
    end

Wolfgang
--- dailystrips~	2013-05-04 14:21:49.309233266 +0200
+++ dailystrips	2013-05-04 14:44:49.149175238 +0200
@@ -531,7 +531,7 @@
 	if ($options{'stripnav'}) {
 		print "<font face=\"helvetica\">Strips:</font><br>\n";
 		for (@strips) {
-			my ($strip, $name) = (split(/;/, $_))[0,1];
+			my ($strip, $name) = $$_[0,1];
 			print "<a href=\"#$strip\">$name</A>&nbsp;&nbsp;";
 		}
 		print "\n<br><br>";
@@ -550,12 +550,12 @@
 }
 
 for (@strips) {
-	my ($strip, $name, $homepage, $img_addr, $referer, $prefetch, $artist) = split(/;/, $_);
+	my ($strip, $name, $homepage, $img_addr, $referer, $prefetch, $artist, $alt) = @$_;
 	my ($img_line, $local_name, $local_name_dir, $local_name_file, $local_name_ext, $image, $ext,
 	   $local_name_yesterday, $local_name_yesterday_dir, $local_name_yesterday_file, $local_name_yesterday_ext);
 	
 	if ($options{'verbose'} and $options{'local'}) {
-		warn "Downloading strip file for " . lc((split(/;/, $_))[0]) . "\n";
+		warn "Downloading strip file for " . lc($strip) . "\n";
 	}
 	
 	if ($img_addr =~ "^unavail") {
@@ -791,6 +791,11 @@
 	</tr>
 	<tr>
 		<td>
+			$alt
+		</td>
+	</tr>
+	<tr>
+		<td>
 			$img_line
 			<p>&nbsp;</p>
 		</td>
@@ -896,7 +901,7 @@
 
 sub get_strip {
 	my ($strip) = @_;
-	my ($page, $addr);
+	my ($page, $addr, $alt, @row);
 	
 	if ($options{'date'} and $defs{$strip}{'provides'} eq "latest") {
 		if ($options{'verbose'}) {
@@ -940,6 +945,9 @@
 					$addr = $defs{$strip}{'baseurl'} . $match . $defs{$strip}{'urlsuffix'};
 				}
 			}
+
+                        $page =~ /$defs{$strip}{'altpattern'}/si;
+                        $alt = ${1};
 		}
 		
 	} elsif ($defs{$strip}{'type'} eq "generate") {
@@ -947,8 +955,9 @@
 	}
 	
 	unless ($addr =~ /^(https?:\/\/|unavail)/io) { $addr = "http://"; . $addr }
-	
-	push(@strips,"$strip;$defs{$strip}{'name'};$defs{$strip}{'homepage'};$addr;$defs{$strip}{'referer'};$defs{$strip}{'prefetch'};$defs{$strip}{'artist'}");
+
+        @row = ($strip, $defs{$strip}{'name'}, $defs{$strip}{'homepage'}, $addr, $defs{$strip}{'referer'}, $defs{$strip}{'prefetch'}, $defs{$strip}{'artist'}, $alt);
+	push(@strips, \@row);
 }
 
 sub get_defs {
@@ -1230,6 +1239,10 @@
 			{
 				$defs{$strip}{'searchpattern'} = $1;
 			}
+			elsif (/^altpattern\s+(.+)$/i)
+			{
+				$defs{$strip}{'altpattern'} = $1;
+			}
 			elsif (/^matchpart\s+(.+)$/i)
 			{
 				unless ($1 =~ /^(\d+)$/) {

Attachment: signature.asc
Description: Digital signature

Reply via email to