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ってどうやればいいのかずっと分からなかったんだよなー。