RSS始めました

ブログ系のコンテンツ管理ツールは使っていないのだが、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 ""; }

// {
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, ".*
");
str_title = substr($0, pos, RLENGTH);
gsub(/<[^>]*>/, "", str_title);

pos = match($0, "
");
str_desc = substr($0, pos+4);
gsub(/<[^>]*>/, "", str_desc);

printf "\t\n", base_url;
printf "\t\t%s\n", str_date;
printf "\t\t%s %s\n", str_hiduke, str_title;
printf "\t\t%s\n", link_url;
printf "\t\t%s\n", str_desc;
print "\t
";
}
個別記事に直接ジャンプさせる事はできないが、結構イイ感じ。

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