June 01, 2003

RssRolling

[ ウェブログに関すること ]

Netry: BlogCast を見ていて便利だなあと思い、何か作ってみようと思い立って RssRolling というもの(勝手に命名)を作ってみました。

rssrolling_button.png

この RssRolling の巡回先は BlogRolling と同期しています。BlogRolling に自分が登録しているサイトの一覧が RSS で取得できるので、それを元に巡回してすべてのエントリをミックスした上で新着順並に替えます。

僕が SharpReader などの RSS リーダーで巡回する先は BlogRolling に登録しているサイトとほとんど共通しているのですが、それなら今回作るツールも登録する手間を省くために BlogRolling と同期してしまえばいいじゃないかという発想の元、作ってみました。

RssRolling は Perl で書いています。処理の流れとしては、

  1. LWP::Simple で BlogRolling.com から RSS を取得
  2. XML::RSS でパースして URL リストを抽出
  3. LWP::UserAgent で各サイトから index.rdf を取得
  4. XML::RSS でパースして item 要素をメモリに展開
  5. すべての item を新着順に並び替える
  6. HTML::Template で HTML ファイルに出力

となっています。このスクリプトを cron にかけて一定間隔で巡回するという仕組みです。1 と 3 で LWP::Simple, LWP::UserAgent を使い分けているのは、RSS に認証がかかっていても取ってこれるようにしたためです。実はこの RssRolling は数日前に作ったものを叩き台にしていて、そのとき巡回していたサイトには Basic 認証をかけていたのでそのままにしてあります。

既知の問題がいくつかあります。

  1. RSS ファイルを index.rdf で決めうちにしてしまっている。
  2. encoding が iso-8859-1 の RSS が化けてしまう。(解決)
  3. HTMLテンプレートに日本語を記述すると(UTF-8でも)化けてしまう。(解決)
  4. non well-formed な RSS は parse できないため巡回対象から外れる。

などです。1 に関しては、BrogRolling から取得できる URL が RDF ファイルのものではなく HTML ファイルの URL になってしまうのでそうしています。2 や 3 は原因不明です。

あとは毎回全サイトにリクエストを出してしまうので、トラフィックや負荷が心配だということもあります。前回の実行結果をテンポラリに吐いておいて比較するなどして、リクエスト本数を極力減らしたりした方がいいのかもしれないのですが、複雑になりそうなので手をつけていません。(BlogRollingのRSSで更新日付が分かるので、それを利用すればできそうなのですが。)

まったくの若輩プログラマなので、スクリプトの中身はかなりいけてない可能性大です。

perl (+ いくつかの CPAN モジュール)と cron が動作する環境であれば動くと思うので問題を解決してドキュメントなどを添えたのち、公開できればと思っています。要望があればですけど。(笑)

Perl はほぼ独学ということもあって自分の書いたプログラムにあまり自身がないのと、ソースをフリーで公開した経験がないのでかなりチャレンジングなんですが何事も経験ということでがんばってみます。

Posted by naoya at June 1, 2003 03:48 AM | トラックバック (1)  b_entry.gif
トラックバック [1件]
TrackBack URL: http://mt.bloghackers.net/mt/suck-tbspams.cgi/143
RssRolling via E-Mail
Excerpt: RssRollingのRSSファイルからdescriptionやら更新時刻も含め、定期的にまとめてメールで受信できるようにしてみたり。
Weblog: HAIL 2 U !! - Weblog
Tracked: October 5, 2003 12:55 AM
コメント [2件]

こんにちは。

なかなか面白そうですね。
自分のお好みのサイトリストでBlogcastのようなものを
作りたいという人はいると思いますので、
公開していただけると助かります。

期待しています。

[1] Posted by: kengo at June 1, 2003 12:17 PM [返信]

公開に向けて少しずつ作っています。それぞれの
エントリの時間の突合せの部分などの部分に多少
曖昧さが残ってしまっていて、今はその辺をやってます。

早速要望があったので、がんばります。(笑)

[2] Posted by: naoya at June 2, 2003 01:14 AM [返信]