Loading

ブログ - d3pipes で facebook の rss を

d3pipes で facebook の rss を

カテゴリ : 
Customize/Hackメモ » お決まりのパターン
執筆 : 
masa 2014/5/6

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形式の更新情報を取得
を参照

  • トラックバック (0)
  • 閲覧 (3588)