« RSS Reader | メイン | Sleipnir のソースコードが盗まれる »

2004年11月17日

RSS の解析

RSS Reader を作っているのは、自明となりつつあるのですが、実は、モジュールとか全然使ってないんですよね。

use strict;
use IO::Socket;
use IO::Select;
use Unicode::Japanese;

の4種類だけ宣言して使っています。以前は、グローバル変数バリバリ使っていて、素人丸出しだったわけですが、最近は strict を宣言して、きれいなコードを書けるように努めています。つーか、大学でC言語を始めたので、どうしても変数の引渡しとかがね。日本語処理は jcode.pl をずっと使ってきたのですが、最近は UTF-8 を扱う機会が増えた関係上、軽いとか噂の Unicode::Japanese を使っています。携帯の絵文字にも対応しているらしい。

で、本題なわけですが、当然 RSS も自前の正規表現のようなもので解析しているのですが、どうもバージョン間互換がいまいち分からない。最初は RSS 1.0 にだけ対応すればいいかなぁ。とか思っていたのですが、 今日の井原RSS 2.0 が登録されたあたりからおかしなことになってきたので、ちゃんと RSS 2.0 にも登録対応させることにした。結局は、自前のサブルーチンでパースしているのだけれども。

【RSS DATA】
URL(link)
タイトル(title)
内容・概要(description)

【ITEM DATA】
URL(link)
タイトル(title)
内容・概要(content:encoded / description / dc:description)
カテゴリー(dc:subject / category)
日付(dc:date / pubDate)

RSS 0.9 1.0 2.0 をまとめてパースすると、以上のような感じになると思うのだけれどもどうだろう。カッコ内の要素は、左側の方が優先度が高いです。左側が存在すれば右側はチェックしない。みたいな。もちろん、存在しない場合もあります。

description は、要約だと思っていたら エキサイトブログ が、全文を吐き出すという快挙を行っていたので、それだったら、表示する側で文字数制限を行うかなぁ。ということで、取れるだけ取得するように仕様変更。なので content:encoded の方が優先度が高いわけです。 dc:date と pubDate は、書式が違うようでこれまた面倒。

さて、自画自賛で申し訳ないが RSS Reader は便利だということに気がついた。この類は、自分で作ったやつしかまともに使ったこと無いので、比較が出来ずに申し訳ないが、とっても便利。はてなアンテナから RSS を吐き出すものは、全て移した。

ということは、私が巡回している blog には、開発中の RSS Reader のアドレスが残るわけで。それを見て登録していただいている方もちらほら。正式な公開はしていないので、リンクは避けていただきたいですが、登録して使っていただく分には、問題ないですし、感想を自身の blog に書いていただくのも全く問題ありません。

まずは、最低限の機能ということで、自身の登録内容を変更できるようにしなくては。

2004年11月17日 19:29 | Development

トラックバック

このリストは、次のエントリーを参照しています: RSS の解析:

» 新RSSリーダーをお試し from MyRSS.jp 管理人 Blog
Ceekz Logs に  登録して使っていただく分には問題ないですし、感想を自身の blog に書いていただくのも全く問題ありません。 ということで、さっそく登録&感想。 なかなかサクサク動くのですが、bloglines に慣れているせいか、細かいところがいろいろと気になります。... [続きを読む]

トラックバック時刻: 2004年11月17日 23:18

コメント

若干気になったのですが、XMLの構文解析はちゃんとやってます?

投稿者 uda : 2004年11月19日 09:52

>> uda さん
RSSパースが目的なので、そこまで厳密にやってないです。

投稿者 ceekz : 2004年11月19日 18:22

RSSはXML名前空間を使っているので、名前空間の処理に特に気をつけてくださいね。思わぬところで非互換問題に発展するかもしれません。

投稿者 uda : 2004年11月21日 01:08