DIY RSSをきちんと作り直し中。

RSSを配信していないサイトや、満足なRSSを配信していないサイトについて、
勝手にRSSを作っちゃうって言う自分サービスを1年くらい前からやってるんだけど、
なにぶん、『俺だけだから負荷とかどうでもいいじゃんね』とか言って作ったので、
もの凄いテキトーな作り。

今はないけど、一番最初のモデルはRSSリーダーが読みに行くタイミングで、
更新チェックするなんて言う乱暴な作りになってたりとか。
(→ なぜなら読んでるのは自分だけで、RSSリーダーは自鯖にインストールされた
FreshReaderで更新チェックは1時間1回と決まってたから)


それもあんまりだなーと思ったので現在作り直し中。


プログラムはクローリング部分とRSS発行部分とで構成。

RSS部分はごく単純で、DBから取得したデータをテンプレートに沿って書き出すだけ。
PHPで書かれている都合上テンプレートはSmartyでキャッシュを利用。
(といっても、利用者はほぼ僕だけなのであんまり意味無い)

クローリング部分は1時間に1回の巡回。
共有部分に各サイト毎にカスタマイズされた部分が載っていて、
サイトによっては画像をローカルに保存。


問題は…このサイト毎の設定ってやつがなかなか簡略化できないってこと。

新しいサイトを取得しようとすると、
まずそのHTMLタグの解析から始めなくちゃならなくて、それが結構面倒。
場合によっては画像だけの場合もあるし、画像が複数の場合もあるし、
出来る限りパーツを組み合わせれば出来るようにしてるけど、
結局は1つずつ手作りにならざるを得ない感じ。

サービスとは言い難いなぁ、これでは。

理想は、はてなアンテナみたいなやつで、
さらにできればパーツを選んでいくだけでできあがりのRSSがプレビューできて、
パーツもプラグイン的に追加できる…とかだとサービスといえるんだと思うんだけど。
今のままだとただの趣味。



あと、クローリングの方も問題があって、
巡回リストのどこかで遅延が発生すると、全体に影響が出る。

一応、似非APIみたいなのを作って、更新用プログラムからそれを叩いてるけど、
(更新完了でstatus=OKを含むXMLが返る)
処理が不安定で、サイト更新後何時間も反映されなかったりとか。
処理毎にタイムアウトを設定すべきなのかしら。



もう少し、というか、まだかなり改良が必要。
(ぶっちゃけて言うと、ちゃんとサーバサイドで動かせば良いんだろうけどね)




なにはともあれ、RSSの出力テストサンプルはこんな感じ。

サンプル:平野綾さんの綾魂日記を画像付きで配信。

RSS1.0: http://www.nobodyplace.com/diy/rss/1.0/ah.xml
RSS2.0: http://www.nobodyplace.com/diy/rss/2.0/ah.xml
atom: http://www.nobodyplace.com/diy/atom/ah.xml

なんで平野綾さんかっていうと、好きとかそういうことじゃなくて、
エントリが1画像+テキストっていう形式に決まっててテスト向きなので。
(携帯から更新されてるんでしょう)