#!/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/); } $/ = ""; 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); }