【メモ】 lastRssがdc:dateを扱えなかったので、MagpieRSSも。

RSSのJavaScript化 | ぞうさんちv3
また、lastRSS.phpはRSS 0.9,1.0,2.0対応と書かれてはいるが、ベースは0.9系で2.0がベストのようだ。RSS 1.0だとpubDateではなく、dc:dateなのでパースできんらしい。
それと、Atomにも対応していない。

いや、もしかすると最新版では対応してるのかもしれないんだけど、
今持ってるバージョン(0.9.1)のソースを見る限り対応していなかった。
dc:creatorは取得してるんだけどね。


別にソースを書き直しても良かったんだけど、
あんまり時間を割けなかったので、代わりにMagpieRSSを使ってみた。

Magpie RSS – PHP RSS Parser

以前、ブログパーツ的なものを作ろうとして使ったとき、
どうも動作が遅くて断念した思い出があるんだけど、
今回はバックグラウンドで1時間に1回程度しか動かないのでまぁいいやという感じで。



日本語の簡単な解説はこちらで。

MagpieRSS – PHP で使える RSS パーサー。



日本語が文字化けする件については、このあたりを参考に。

7:3 blog : 【PHP】MagpieRSSで日本語の文字化けを避けるには
MagpieRSS ていう、PHP で RSS をパースするライブラリについてです。
このライブラリ、最新バージョン(2007/05/07現在で0.72)をそのまま使うと日本語が文字化けしてしまいます。
ところがこの問題、実はrss_fetch.inc の357行目を ISO-8859-1 から UTF-8 に変えるだけで解決します。



キャッシュに関しては解説ページコメント欄によると、

2005-05-16 (Mon) 11:39:06 nko? : キャッシュを入れるディレクトリの指定がうまくいかない。。rss_cache.incのvar $BASE_CACHEを設定しても反映されん。
2005-05-16 (Mon) 11:45:03 nko? : ソース読んでったら、MAGPIE_CACHE_DIRを呼び込む側で指定するnoga
2005-05-16 (Mon) 11:49:42 nko? : 失礼。ソース読んでったら、キャッシュのディレクトリ/寿命の設定はrss_cache.incの$BASE_CACHEや$MAX_AGEを変更するのではなく、MAGPIE_CACHE_DIRとMAGPIE_CACHE_AGEをdefineしてやればいいみたいだね。


と言うわけで、実装例としてはこんな感じ。

eternalheart.com: MagpieRSSで他サイトのエントリーを表示
define('MAGPIE_CACHE_ON', true); // 取得するRSSをcacheするかしないかfalseだとしない
define('MAGPIE_CACHE_DIR', '(magpieRSSのパス)/magpie/cache'); // cacheディレクトリ
define('MAGPIE_CACHE_AGE', 3600); // Magpieのcacheの寿命



以上、とりあえずメモ。

どっち使うかは気分次第で。