YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-05-07 (火)


[一語一絵/IT系]

RSS始めました / 2005-06-23 (木)

ブログ系のコンテンツ管理ツールは使っていないのだが、HTMLから力業で[External]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