2008/12/30(火) Google AJAX Feed API再び

いろいろいじって、一つのフィードを表示するのは以下のようにした。これは映画フォーラムのRSSを3つ取得して表示する。BLOG dot USK dot CCを参考に書き換えた。YOUR KEY HEREには取得したGoogle AJAX Feed APIキーを書く。

<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR_KEY_HERE"></script>
<script type="text/javascript">
<!--
google.load("feeds", "1");
function initialize() {
var feedControl = new google.feeds.FeedControl();
var feed = new google.feeds.Feed("http://forum.cinema1987.org/modules/d3forum/index.php?page=rss&forum_id=1&odr=1");
feed.setNumEntries(3);
feed.load(function(result) {
if (!result.error) {
var container = document.getElementById("google-rss");
var text = "";
for (var i = 0; i < result.feed.entries.length; i++) {
var entry = result.feed.entries[i];
var dd = new Date(entry.publishedDate);
var yearNum = dd.getFullYear();
var date = yearNum + "年" + (dd.getMonth() + 1) + "月" + dd.getDate() + "日 " + dd.getHours() + "時" + dd.getMinutes() + "分";
text += "<dt>「" + "<a href=" + entry.link + ">" + entry.title + "</a>」(" + date + ")</dt><dd>" + entry.contentSnippet + "...</dd>" ;
}
container.innerHTML = "<dl>" + text + "</dl>" ;
}
});
}
google.setOnLoadCallback(initialize);
// -->
</script>

表示したい所に<div id="google-rss">Loading...</div>と書けばOK。複数のフィードを扱うにはfeedControlを使う。

<script type="text/javascript" src="http://www.google.com/jsapi?key=YOUR_KEY_HERE"><
/script>
<script type="text/javascript">
<!--
google.load("feeds", "1");
function initialize() {
var feedControl = new google.feeds.FeedControl();
feedControl.addFeed("http://cinema1987.org/diary/index.rdf", "映画とネットのDIARY");
feedControl.addFeed("http://forum.cinema1987.org/modules/d3forum/index.php?page=rss&forum_id=1&odr=1", "映画フォーラム");
feedControl.addFeed("http://cinema1987.org/rss/index.rdf", "シネマ1987online"); feedControl.setNumEntries(3);
feedControl.draw(document.getElementById("feedControl"));
}
google.setOnLoadCallback(initialize);
// -->
</script>

表示には <div id="feedControl">Loading...</div>と書く。

しかし、これだと、なぜか日付が1カ月ずれる。これはGoogle側の不具合だろう。他のサイトでもずれている。そのうち直るのだろうか。スクリプトはこちらの方が簡単だが、その分、カスタマイズはあまりできないようだ。

このほか、参考になるサイトはGoogle AJAX Feed API入門など。

2008/12/29(月) XOOPSテーマ変更

 久しぶりに変更してみた。BCOOL THEMEのテーマを使わせてもらった。タイトルロゴの背景がグラデーションなので、これに合わせてGIFファイルを作るのが面倒だったりする。テーマフォルダの中にロゴのベースとなるGIFファイルは入っているのだが、今使用しているロゴが気に入っているので変えたくない。しかも自宅のノートパソコンにはなんとGIFを編集するソフトが入っていなかった(いや、ペイントやPhotoshop Elementsはあるんですけど)ので、背景の色を変更してしのぐ。それでも少し変だが、仕方がない。そのうち、赴任先のパソコンでちゃんとしたものを作ろう。

 XOOPSのテーマはtableを使っているのが多いが、このテーマはCSSでデザインしてある。ページの表示速度が少し速く感じるのはそのためか。IEで見ると、表示が少し変になる部分があった。XOOPSのバージョンを表示するフッターの所でコピーライトの記号が化けている。元々、XOOPSのバージョンなどは表示しない方が良いので削除した。

 ついでにこの日記のテーマも変更した。

2008/12/28(日)Google AJAX Feed API

 RSSを読み込んで、HTMLファイルにJavaScriptで表示するAPI。掲示板のログをトップページに表示したくて方法を探し、これにたどりついた。普通のJavaScriptでは他のサーバーにアクセスすることはできないが、Googleがそれを肩代わりしてくれる。便利なAPIだが、カスタマイズするにはそれなりのJavaScriptの知識は必要になる。

 Google AJAX Feed API - Dynamic Feed Controlを利用すれば、ページタイトルだけでコードを得ることができるが、うちの掲示板のRSSを入れても出て来ませんね。マイナーだから。というか、XOOPSのRSSは静的ファイルではないので、難しいのかもしれない。

 とりあえず、いろんなサイトを参考にしながら作った。RSSファイルはUTF-8なので、ページ自体もUTF-8で作らないと、文字化けが起こる。ちょうどトップページをXHTMLに書き換えようとと思っていたので、これは良かった。

 あと、会員のブログのRSSも一覧表示するようにした。これはGoogleリーダーで共有アイテムにすれば、簡単。困るのはRSSの中にPRが含めれているのがあること。これはGoogleリーダーでは排除できないようだ。

2008/12/23(火) RSS作成CGI

 現在、ホームページのRSS作成に使っているのはCGIなのだが、これは手作業で作成したHTMLファイルをRSS1.0形式に変換するもの。手作業でタグ打つのがけっこう面倒になったりする。で、作成ソフトをVectorあたりで探した。RSS WriterとかRSS POSTとか。どちらもこれで十分と思わせる機能がある。RDFファイルを読み込めるRSS POSTの方が使いやすそうだ。

 問題は現在、パソコン2台で作業しているので、片方でRSSを作ると、もう片方のRSSと不整合になること。でも考えてみたら、FTPでダウンロードしてRSS POSTで読み込めば、問題はないのだった。まあサーバー上で動いた方がFTPの手間も要らないし、便利ではある。

 そう思って、とりあえずCGIで作ってみることにした。HTMLファイルでタイトルとURLと要約を入力するフォームを書いて、それを受け取って中間ファイルに加工・保存するCGI。この中間ファイルを読み込んで、RSS形式に変換するCGIは以前、Infomakerが公開していたスクリプトに手を入れればいい。久しぶりにPerlにさわったら、最初からつまずく。Jcode.pmの使い方から調べる羽目になった。3時間ほど格闘してようやくできたけれど、とても人様にお見せできるようなスクリプトではない。でも自分で使う分にはこれで十分。

 書いていて思ったのはこういう公開しないプログラムをプログラマーやSEはけっこう書いているのではないかということ。公開すれば、フリーソフトとはいってもそれなりのサポートが必要になるからだ。特定環境で動くプログラムは難しくないが、いろいろな環境を想定してプログラムを書くとなると、けっこう面倒だったりする。

2008/12/21(日)「ジャンパー」

 テレポーテーション能力を持つジャンパーたちとそれを抹殺しようとするパラディンという組織との戦いを描く。評判メタメタの作品だったが、DVDで見る分には腹は立たない。1時間28分という短さで、アクションだけでつないだ感じ。話に奥行きがないのが致命的だ。

 パラディンとジャンパーたちの戦いは何千年も続いているというよくある設定(「ナイト・ウォッチ」とか「アンダーワールド」とか)。しかし、それをうまく生かしていない。ジャンパーたちが銀行から金を盗むので、パラディンの方が善玉に見える。主人公が盗む金を悪の組織のものにするとかの工夫があれば、もっとましなものになっていたかもしれない。

 スティーブン・グールドの原作はジュブナイルとのこと。これを「バットマン・ビギンズ」のデヴィッド・S・ゴイヤーらが脚本化、「ボーン・アイデンティティー」のダグ・リーマンが監督した。原作とは随分変わっているらしいが、アクションしか知らないリーマンの才能のなさがこの程度の出来に終わった原因か。テレポートする際のVFXは良いのに惜しい。

 主演はヘイデン・クリステンセン。「リトル・ダンサー」のジェイミー・ベルもジャンパー役で出ている。このほか、主人公の母親役でダイアン・レイン、パラディンの凄腕の殺し屋にサミュエル・L・ジャクソン。