ブログ - d3pipes で facebook の rss を
facebook の RSS を取得して d3pipes で表示したかった。
RSS の取得については検索して見つけることができたが、若干問題が...
問題は主にタイトルについて...
facebook にはタイトルという概念がないので、タイトル部分には本文の先頭部分が設定されている。
しかし、これが長い...
さらには文字化けしてしまう。
<title><![CDATA[ ... ]]></title>
<link></link>
<description><![CDATA[...]]></description>
title 部分はHTMLエンティティとして &#x でエンコードされている。
このため HTML表示許可にしないと、そのまま表示されてしまう。
d3pipes による解決
d3pipes には 「誤ったHTMLエンティティのデコード」というジョイントがある。
これは html_entity_decode をしてくれるらしい。
これを使えばうまくいくのでは?と思ったのだが、うまくいかない。
カスタムジョイントによる解決
「誤ったHTMLエンティティのデコード」は joints/reassign/D3pipesReassignHtmlentitydecode.class.php である。
これを開いてみると以下のように書かれている。
$entry['headline'] = html_entity_decode( @$entry['headline'], EN_QUOTES);
PHP5.3.3未満ではデフォルトのエンコーディングがISO-8859-1 であるためと考え、エンコーディング指定をしてみるとばっちり動作してくれた!
これに気分を良くして、ついでに facebook 用のジョイントにしてみることに...
D3pipesReassignHtmlentitydecode.class.php を元にして、下記のような修正を加え、D3pipesReassignFacebookrss.class.php として保存。
(クラス名も D3pipesReassignFacebookrss に変更!)
$headlines = explode("\n", html_entity_decode( @$entry['headline'], EN_QUOTES, "UTF-8"), 2);
$entry['headline'] = $headlines[0];
これで本文の1行目だけを headline に設定することができた!
満足
[追記]
その後、facebook の仕様が変わり rss を取得できなくなってしまった。
graph API を使った json データからの取得については
d3pipes で facebook の json形式の更新情報を取得
を参照