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画像+テキストっていう形式に決まっててテスト向きなので。
(携帯から更新されてるんでしょう)