« 彼女と言語 | main | 速報プラットフォームとしてのtwitter »

Google AJAX Feed API

javascriptでrssの内容を読み込めないかみたいな話があり、xml parserライブラリあたりかなあと思ってjkl-parsexmlってのを見つけ、適当なスクリプトを組んでみたんだけど、よく考えたらXMLHttpRequestじゃクロスドメインで情報が読めないので、目的に沿わない。
なので表題のGAFAの出番。

GAFAはGoogleが提供するAPIで、Googleのサーバをプロキシとしてフィード情報を取得出来る云々。
サインアップすると即サンプルコードが出てくる親切っぷり。
さて、サンプルではフィードがdigg(なぜ?笑)なので、pologに書き換え、さっき穴の空く程眺めたatom.xmlのツリー構造に従って、entry.titleじゃなくてentry.contentを取得する様にする。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Google AJAX Feed API - Simple Example</title>
    <script type="text/javascript" src="http://www.google.com/jsapi?key=hogehoge"></script>
    <script type="text/javascript">
 
    google.load("feeds", "1");
 
    function initialize() {
      var feed = new google.feeds.Feed("http://polog.org/atom.xml");
      feed.load(function(result) {
        if (!result.error) {
          var container = document.getElementById("feed");
          for (var i = 0; i < result.feed.entries.length; i++) {
            var entry = result.feed.entries[i];
            var div = document.createElement("div");
            div.appendChild(document.createTextNode(entry.content));
            container.appendChild(div);
          }
        }
      });
    }
    google.setOnLoadCallback(initialize);
 
    </script>
  </head>
  <body>
    <div id="feed"></div>
  </body>
</html>

と、document.createTextNode(entry.content)のせいで本文のタグが全部エスケープ?されているっぽいのでinnerHTMLを使う様に書き換える。
div.innerHTML = entry.content;

なるほどー。
このサンプルコードでinnerHTMLを使っていないのは、このへん見ると書いてある通りの理由らしいが、まあそこは目的次第と言う話。手軽でいいね、GAFA。
javascriptに関してはぶちスライム以下のペーペーな僕ですが、FireBugとobj.toSource()覚えたら結構楽になりました。オブジェクトのdumpってどうやればいいのかずっと分からなかったんだよなー。

トラックバック

このエントリーのトラックバックURL:
http://polog.org/mt-tb.cgi/380

コメントを投稿

Powered by
Movable Type 3.34