use strict;
use warnings;
require LWP::Simple;
+require HTTP::Date;
require URI::Escape;
$|=1;
$BASE=$ARGV[0];
}
+# Somehow Perl modules started reencoding windows-1250 -> utf-8.
+
if ($ENV{"GATEWAY_INTERFACE"}) {
+ my $future=HTTP::Date::time2str(2000000000);
+ my $past =HTTP::Date::time2str(1000000000);
print <<"EOH";
-Content-type: text/html; charset=windows-1250
+Content-type: text/html; charset=utf-8
+Cache-Control: public
+Expires: $future
+Last-Modified: $past
EOH
}
print <<"EOH";
<html><head>
<title>iDNES foto@{[ (!$BASE ? "" : ": $BASE") ]}</title>
-<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head><body>
<form action="idnes-foto" method="get">
<input type="text" name="url" size="50" value="$BASE">
<input type="submit">
</form>
EOH
-$BASE=~m{^http://\w+\Q.idnes.cz/foto.asp?\E(?:r=\w+&c=\w+|c=\w+&r=\w+)$} or $BASE="";
+$BASE=~m{^http://\w+\Q.idnes.cz/foto.asp?\E(?:r=[-_\w]+&c=[-_\w]+|c=[-_\w]+&r=[-_\w]+)$} or $BASE="";
if ($BASE) {
my $pageno=1;
my %seen;
my $pageurl=$BASE.'&strana='.$pageno;
my $page=LWP::Simple::get($pageurl) or die $pageurl;
my $did=0;
- while ($page=~m{<img src="(http://(?:\Qi.idnes.cz\E/\d{2}/\d{3}|\Qimgs.idnes.cz\E/\w+))(/midi)?/([-\w]+.jpg)" }gi) {
+ while ($page=~m{<img src="http://(?:\Qi.idnes.cz\E/\d{2}/\d{3}|\Qimgs.idnes.cz\E/\w+)(?:/\w+)?/([-.\w]+.jpg)" }gi) {
$did=1;
- my($start,$mid,$base)=($1,$2,$3);
+ my($base)=($1);
last PAGES if $seen{$base}++;
- # FIXME: Sometimes "/maxi" does not exist.
- $mid&&="/maxi";
- $base=~s/_1M.JPG$/_V.JPG/;
- my $maxi=$start.($mid||"")."/".$base;
+ my $infourl=$BASE.'&styl=zoom&foto='.$base;
+ my $info=LWP::Simple::get($infourl) or die $infourl;
+ $info=~m{<img\s+id="fotka"\s+src="([^<>"]+)" }is
+ or die "No image found: $infourl";
+ my $img_src=$1;
print <<"EOH";
<hr>
-<img src="$maxi" border="0">
+<img src="$img_src" border="0">
EOH
- my $infourl=$BASE.'&styl=zoom&foto='.$base;
- my $info=LWP::Simple::get($infourl) or die $infourl;
- $info=~m{<p>[^<]*</p>} or die "No text found: $infourl";
- my $p_text=$&;
- print <<"EOH" if !$seen_p_text{$p_text}++;
-$p_text
+ my $hit;
+ for my $text (
+ $info=~m{<span>(.*?)</span>}s,
+ $info=~m{<p>([^<>]*)</p>},
+ $info=~m{<div class="text"><!--google_ad_section_start--><h4>([^<>]*)</h4><p>([^<>]*)<!--google_ad_section_end--></p><p>Autor:\s+(.*?)(?:, <a target="_blank" href="http://www.idnes.cz">iDNES.cz</a>)?</p></div>}s,
+ ) {
+ next if !$text;
+ $text=~s/^\s+//s;
+ $text=~s/\s+$//s;
+ next if !$text;
+ $hit++;
+ print <<"EOH" if !$seen_p_text{$text}++;
+<p>$text</p>
EOH
+ }
+ warn "No text found: $infourl" if !$hit;
}
die $pageurl if !$did;
$pageno++;