#!/usr/local/bin/perl
use Jcode;
#### page defines
$SOURCE = 'osakana.html';
$DEST = 'index.rdf';
$start_mark = '';
$match_pattern = '
';
$ref_pattern = '(\d\d\d\d)(\d\d).#(\d+)-(\d+)';
$block_pattern = 'blockquote';
$charactercode = 'EUC-JP'; # Shift_JIS, ISO-2022-JP, EUC-JP
my $publisher = 'your name';
my $creator = 'mail address';
my $pageuri = 'http://chinmai.net/~osakana/diary/';
my $pagebase = $pageuri;
my $pagedescription = 'description';
my $pagetitle = 'pagetitle';
my $copyright = 'Copyright (c) 2004 your name';
my $max_items = 10;
my $content_length = 512;
#### top page time
my ($sec, $min, $hour, $mday, $mon, $year) = localtime($mtime = (stat $SOURCE)[9]);
$year += 1900;
$mon++;
$dcdate = sprintf("$year-%02d-%02dT%02d:%02d:%02d+09:00", $mon, $mday, $hour, $min, $sec);
my $rdfhead = <
$pagetitle
$pageuri
$pagedescription
ja-jp
$copyright
$dcdate
$publisher
$creator
diary
RDFHEAD
;
open(OUT, ">" . $DEST);
print OUT jcode($rdfhead)->utf8;
&get_items();
my $idx = 0;
foreach (reverse sort @targets) {
print OUT jcode(qq| \n|)->utf8;
last if (++$idx == $max_items);
}
print OUT " \n";
print OUT " \n";
print OUT " \n";
$idx = 0;
foreach (reverse sort @targets) {
my $itemblock = <-
$caption{$_}
$_
$description{$_}
$dcdate{$_}
$subject{$_}
ITEM
;
print OUT jcode($itemblock)->utf8;
last if (++$idx == $max_items);
}
print OUT "\n";
close(OUT);
utime $mtime, $mtime, $DEST;
exit;
############################################################
sub get_items {
open(FD, $SOURCE);
while () {
last if (/$start_mark/);
}
$/ = "$block_pattern>";
while () {
$_ = jcode($_)->euc if ($charactercode ne 'EUC-JP');
if (m|$match_pattern|io) {
my ($ref, $caption) = ($1, $2);
$ref =~ m/$ref_pattern/io;
my ($lyear, $lmon, $lmday, $time) = ($1, $2, $3, $4);
$dcdate = sprintf("$lyear-%02d-%02dT00:00:%02d+09:00", $lmon, $lmday, $time);
my $desc = $_;
$desc =~ s/\n//g;
$desc =~ s|^.*<$block_pattern>(.*)$|$1|g;
$desc =~ s|_| |g;
$desc =~ s/\s+/ /g;
$desc =~ s/<[^>]+>//g;
if (length($desc) > $content_length) {
$desc = substr($desc, 0, $content_length);
while ($desc =~ /\x8F$/ or $desc =~ tr/\x8E\xA1-\xFE// % 2) {
chop($desc);
}
$desc .= "...";
}
my $targetURI = "$pagebase$ref";
push(targets, $targetURI);
$caption{$targetURI} = $caption;
$description{$targetURI} = $desc;
$dcdate{$targetURI} = $dcdate;
$subject{$targetURI} = 'diary';
}
}
close(FD);
}