2007年5月3日木曜日

むりやりRSS配信環境を整備

本流サイト(ぼや記)は、Blogが登場する前のいわゆる「テキストサイト」という呼び方が一般的だった頃からやっているので、RSS配信なんてとてもじゃないけど出来ない。
これは不親切だ!というわけで、RSS配信できるように考えてみました。考えてみたところで、結局は自分のサイトの情報をXMLにするしかないので、とりあえず手っ取り早くExcel VBAで日記ファイルを読み込んでサマライズしてXMLに吐き出すことに。
RSS2.0の仕様を調べ、実際にgooブログで配信されているXMLのフォーマットを確認。自身の日記ファイル(HTML)は、フリーのツール(日々日記)を使って作っているので、日付やタイトルの抜き出しは簡単。あとは整形して出力すれば終わり・・・かと思いきゃ。
文字コード。Excel VBAで出力したファイルはShift_JISで作成されるけど、XMLはUTF-8にしなきゃいけない。
でもとりあえずこれも引数で文字コード指定すりゃいいんだろう?と思いきゃ、これが単純にはいかなかった…。
結局、参照設定を追加(Microsoft ActiveX Data Objects 2.5以降ならOK)してADODB.Streamオブジェクトを使うことにしました。
既に書いたコードを直すのは面倒なので、Shift_JISで出力したファイルを読み込んで文字列変数にすべて突っ込み、それをADODB.Streamオブジェクトでコード変換して書き出すことに。ただの個人ツールなんでリソースのことなんて考えません。

Dim stm as ADODB.Stream

Set stm = new ADODB.Stream
With stm
.Open
.Type = adTypeText
.CharSet = "UTF-8"
.WriteText strBuff 'ファイル内容をすべて突っ込んだ文字列変数
.SaveToFile "index.xml"
.Close
End With

Set stm = Nothing

こんな感じで簡単にUTF-8に変換できました。
まぁおかげでながーーーい一行のXMLになっちゃいましたが・・・(^^;)

とりあえず、日記を書いたらこのExcel VBAを走らせて、FTPでまとめてアップ。という運用。
あー、めんどくさい。

3 件のコメント:

匿名 さんのコメント...

ひょっとしてXML宣言にエンコード指定したら良かったかもしれぬよ。

Takamitsu Kashiwa さんのコメント...

あ…。そうか…。
雛形ファイルでわざわざUTF-8にエンコード指定してた。
ワイがアホやった…!

まぁおかげで文字コードの変換方法がわかったからヨシとしよう(超前向き)。

当ブログ初コメント&ご教示ありがとぅ!

匿名 さんのコメント...

どーいたしまして。
VBAをそんなに使いこなしたことは無いから僕も勉強になったのだ。