ブログ系のコンテンツ管理ツールは使っていないのだが、HTMLから力業でRSS(RDF Site Summary)を生成する。
html2rss1.awkというawkスクリプトを作ってみた
#!/usr/local/bin/gawk -f個別記事に直接ジャンプさせる事はできないが、結構イイ感じ。
# html2rss1.awk:
BEGIN {
reg_date="[ 0-9]*月[ 0-9]*日";
y = 2005;
base_url="http://www.bravotouring.com/~yano/";
link_url=base_url;
}
END { print "</rdf:RDF>"; }
/<!--/,/-->/ {
next
}
$0 ~ reg_date {
pos = match($0, reg_date);
str_hiduke = substr($0, pos, RLENGTH);
pos = match(str_hiduke, /[0-9]*月/);
m = substr(str_hiduke, pos, RLENGTH-2);
pos = match(str_hiduke, /[0-9]*日/);
d = substr(str_hiduke, pos, RLENGTH-2);
str_date = sprintf("%04d-%02d-%02d", y, m, d);
}
/SubTitle/ {
pos = match($0, "<SPAN CLASS=\"SubTitle\">.*<BR>");
str_title = substr($0, pos, RLENGTH);
gsub(/<[^>]*>/, "", str_title);
pos = match($0, "<BR>");
str_desc = substr($0, pos+4);
gsub(/<[^>]*>/, "", str_desc);
printf "\t<item rdf:about=\"%s\">\n", base_url;
printf "\t\t<dc:date>%s</dc:date>\n", str_date;
printf "\t\t<title>%s %s</title>\n", str_hiduke, str_title;
printf "\t\t<link>%s</link>\n", link_url;
printf "\t\t<description>%s</description>\n", str_desc;
print "\t</item>";
}
makerss.cronで毎日生成しなおすように。
#!/bin/sh
#
cd ~yano
TARGET_HTML=public_html/index.html
RSS_HEAD=public_html/info/rss.head
RDF_FILE=public_html/info/rss.rdf
if [ ! -f $RDF_FILE ] || [ $TARGET_HTML -nt $RDF_FILE ];
then
(cat $RSS_HEAD;\
nkf -w $TARGET_HTML | awk -f ./bin/html2rss1.awk \
) > $RDF_FILE
chown yano:owner $RDF_FILE
fi