ん~、たいしたことをやっているわけではないけど、ちょっと試行錯誤もしたから、公開しておきますわ。
メインの用途は、こっちのサイトで掲示板の投稿状況をある程度動的に知らせたい、という要求から出たものです。
必要なもの:
- Movable TypeなどのCMS
- (SS)C-BOARD
- RSS形式で投稿情報を出力できる掲示板スクリプトだったので。管理機能がWebインターフェースを持っているのも、ポイント高し。
- バージョンは、3.5.4を利用中。
- RNA
- RSSベースのアンテナ
- バージョンは、1.9.2。
とりあえず、(SS)C-BOARDとRNAのインストールとか使い方などは、省略。
で、
- MovableTypeのテンプレートにRNAで指定されるJavaScriptを埋め込んで、RNAで取得したサイトの更新状況を表示できるようにする。
- 自作スクリプトを定期的に実行。
- http://www.example.com/cgi-bin/c-board.cgi?cmd=rssにアクセスして、掲示板の更新状況を、rdf形式ファイルに保存。
- rdfファイルの文字コードをnkfで変換。
- 日付のフォーマットを一部変更。
- RNAにpingして、rdfファイルを取り込み。
- Blogにアクセスすると、掲示板の更新状況がわかる。
という感じで、動かしています。
実際には余分なことやってる可能性はありますけどね。
自作スクリプトは、LWP:Simpleを使っているので、こんな感じ。実際に使うのであればURLとかディレクトリとかは、適宜読み替えてください。
#!/bin/sh
/usr/bin/perl -MLWP::Simple -e 'getprint "http://www.example.com/cgi-bin/BBS/c-board.cgi?cmd=rss";' > $WORK_DIR/index.rdf
/usr/bin/perl -pi.bak -e 's/Shift_JIS/UTF-8/g;s/\([A-Za-z]*\)\s/T/g' $WORK_DIR/index.rdf
/bin/rm $WORK_DIR/*.bak
あとは、このスクリプトと/usr/bin/perl -MLWP::Simple -e 'getprint "http://www.example.com/cgi-bin/rna/rna-ping.cgi";'
てなコマンドをcronで定期実行させれば、OK。
RNAにpingを打つのは上のスクリプトの中に書いておいてもいいね。
あと、(SS)C-BOARDのcmd/rss.plをそのまま使うと、RNA側に正しくBBSへの投稿時間が引き渡されないので、手を入れてあります。
--- /home/soukaku/c-board354.orig/cmd/rss.pl 2003-06-17 12:00:00.000000000 +0900
+++ cmd/rss.pl 2004-10-20 16:47:57.000000000 +0900
@@ -40,16 +40,20 @@
if ($CNF::view{'page'}{'rss'}{'mode'}) {
print <<"__XML__";
<item>
- <title>$MSG{'subject'} by $MSG{'name'} -$MSG{'date'}-</title>
+ <title>$MSG{'subject'}</title>
<link>$CNF::place{'this'}{'url'}?cmd=one;no=$MSG{'no'};id=$::FORM{'id'}</link>
+ <dc:creator>$MSG{'name'}</dc:creator>
+ <dc:date>$MSG{'date'}+09:00</dc:date>
</item>
__XML__
}
else {
print <<"__XML__";
<item>
- <title>$MSG{'subject'} by $MSG{'name'} -$MSG{'date'}-</title>
+ <title>$MSG{'subject'}</title>
<link>$CNF::place{'this'}{'url'}?cmd=ntr;tree=$MSG{'no'};id=$::FORM{'id'}</link>
+ <dc:creator>$MSG{'name'}</dc:creator>
+ <dc:date>$MSG{'date'}+09:00</dc:date>
</item>
__XML__
}
cmb/rss.plも、もう少し手を入れる部分があると思うんだけど、cmd/psn.plに手を入れれば投稿と同時にrdfファイル生成→RNAにpingまで出来そうなのは判ってるんだけどね~。
コメントする