F.Ko-Jiの「一秒後は未来」ではウェブやSEO、API、RSSといった技術的ネタから、ちょっとした豆知識や梅酒、エンタメ系まで様々な情報を不定期にお届けしています。

F.Ko-Jiの「一秒後は未来」 > プログラミング > PHP5でBloglinesの特定フォルダにあるフィードリストを取得するメモ

PHP5でBloglinesの特定フォルダにあるフィードリストを取得するメモ

  • B!
スポンサード リンク

たとえばブログのサイドバーやガジェットなどにお気に入りのブログのリストをランダムに表示させたい場合に、Bloglinesで購読しているフィードで特定フォルダに入っているものを自動的に取得してくれば管理もしやすい。

レンタルサーバを乗り換えてPHP5系になったのでSimpleXMLが使えるじゃないかということで、Bloglinesの配信APIから取得した自分の登録フィードリストをSimpleXMLでパースして特定フォルダ内のフィードリストを取得してみた。

ポイントは、レスポンスのOPMLをmb_convert_encodingを使ってUTF-8からUTF-8へ一度変換しないとSimpleXMLでエラーになってしまうということと、SimpleXMLではXPathで簡単に特定要素を抽出できるというところです。

以下のサンプルコード内で使っている定数は別途定義してください。

<?php
/**
 * Bloglinesから特定フォルダを取得
 */
require_once("HTTP/Request.php");
require_once("Cache/Lite.php");

/* Bloglines配信API */
$url = "http://rpc.bloglines.com/listsubs";

/* use Cache_Lite */
$options = array(
 'cacheDir' => CACHE_DIR,
 'lifeTime' => 86400,
 'pearErrorMode' => CACHE_LITE_ERROR_DIE,
);
$cache = new Cache_Lite($options);
/* 古いキャッシュの削除 */
$cache->clean(false, "old");

/* キャッシュ取得 */
$body = $cache->get($url);

/* キャッシュが取得できなかったら */
if (!$body) {
    /* HTTP_Request */
    $req =& new HTTP_Request($url);
    /* Basic認証 */
    $req->setBasicAuth(YOUR_BLOGLINES_ID, YOUR_BLOGLINES_PASSWORD);
    $response = $req->sendRequest();
    if (PEAR::isError($response)) {
        exit;
    }
    $status = $req->getResponseCode();
    if ($status == 200) {
        /* UTF-8からUTF-8へ変換しないとエラーになる */
        $body = mb_convert_encoding($req->getResponseBody(), "UTF-8", "UTF-8");
        /* キャッシュを保存 */
        $cache->save($body, $url);
    } else {
        exit;
    }
}

/* SimpleXMLElementクラス生成 */
$opml = new SimpleXMLElement($body);

/* SimpleXMLはXPathで要素を取得できる */
foreach ($opml->xpath("//outline") as $outline) {
    if ($outline["title"] != "* favorite *") {
        /* フォルダ名が"* favorite *"でなければスキップ */
        continue;
    }
    /* 該当フォルダの子要素"outline"を取得 */
    foreach ($outline->xpath("./outline") as $feed) {
        /* タイトルを出力 */
        echo $feed["title"] . "<br />";
    }
    break;
}

?>

実行結果を見る


その他のメモ

generated by 関連エントリーリストジェネレータ

[2010-01-12] RSS フィードの URL が変わりました。お手数ですが RSS リーダーへの再登録をお願いします。
Subscribe with livedoor Reader Add to Google Subscribe with Fastladder My Yahoo!に追加 Bloglinesで閲読登録 はてなRSSに追加 エキサイトリーダーに登録


コメントを投稿

(承認されるまでコメントは表示されません。)

RSS / プログラミング

English version

前のエントリー: « 総務の森の「はっけん!面白制度」が面白い
次のエントリー: アメブロの全文RSSフィードはrss20.xmlだが気づかれていないことが多い »

トラックバック

このエントリーのトラックバックURL:

タイトル:

URL:

リンク用HTMLタグ:

Agile Media Network

AMN Partner Blog

広告掲載について

東京ナイロンガールズ
最近の注目記事
持っているガジェット
powered by Gadget Party
最近のつぶやき
えもにゅ

↑ 気持ち記録サービス「えもにゅ」です

このブログの読者になる

F.Ko-Jiの「一秒後は未来」 - RSSフィード

クマでもわかるこのブログの便利な更新チェック方法

DailyFeed

あわせて読みたいブログパーツ

フィードメーター - F.Ko-Jiの「一秒後は未来」

月別アーカイブ


<< March 2010
SuMoTuWeThFrSa
 123456
78910111213
14151617181920
21222324252627
28293031 
人気エントリー
TopHatenar
携帯からのアクセスは
QRコード
http://mob.fkoji.com/