SimplePieでRSS解析してみた
GoogleReader廃止を受けて
廃止宣言がされて、他のRSSアプリケーションを触ってはみたが、なんかあまりしっくりこないというか。
Evernote連携とか共有機能とかそういうのいらない。
どうせだから自分用のRSSアプリを作ってみようと。
RSSを良い感じに解析する
phpでRSS解析というと、MagpieRSSというライブラリが有名どころらしい。
Atom、RSS2.0対応。
このように使う。
<?php require_once 'rss_fetch.inc'; $rss = fetch_rss($url); foreach ($rss->items as $item) { echo $item['title'].PHP_EOL; echo $item['link'].PHP_EOL; }
しかし、$urlがRSSとして無効なアドレスであっても、良い感じのエラー処理が行われない。
例えばGoogleReaderでは登録URLとして、http://b.hatena.ne.jp(はてブ)のトップページのURLを指定すると、自動的にページを解析してホットエントリーのRSSを登録してくれる。これがMagpieRSSではできない。
つまりRSSのURLをベタ打ちしか処理してくれないのだ。
これは困った、と探し出したのがSimplePieというやつ。
SimplePieを使ってみる
SimplePie: Super-fast, easy-to-use, RSS and Atom feed parsing in PHP.
SimplePieはなにより前述のページ解析をしてRSSアドレス抽出ということをしてくれる。
使い方はこんな感じ。
<?php require_once 'SimplePie.compiled.php'; $rss = new SimplePie(); $rss->set_cache_location('/cache'); $rss->set_cache_duration(1800); $rss->set_feed_url($url); $rss->init(); foreach ($rss->get_items() as $item) { echo $item->get_title().PHP_EOL; echo $item->get_link().PHP_EOL; }
set_feed_urlメソッドで解析するページを指定して、initメソッドでRSS解析を行う。
$urlにhttp://b.hatena.ne.jpなどを指定してもいい感じに解析をしてくれるから便利。
set_cache_*メソッドはキャッシュの設定を指定する。
$urlは事前にアクセス無効なアドレスかどうかは事前にバリデートしてから使うのがいいと思う。
Enjoy!