May 5, 2009

feed-tagcloud-appengine: フィードからタグクラウドを生成するためのAppEngineアプリ

フィードからタグクラウドを生成するためのGoogle App Engineアプリを作りました。

http://feed-tagcloud.appspot.com/json?url=feed_url

のようにフィードURLを指定してGETすると、

{"Movie":1,"JR":1,"Livedoor":1,"Book":1,"cat":3,"TV":1,"NHK":1,
"subversion":1,"Automobiles":1,"Train":1,"Baseball":2,"MovableType":6,
"sancha":5,"Buzz":1,"Microsoft":3,"Macintosh":3,"Google":6,"Office":3,
"Money":1,"Dragons":2,"API":1,"Hatena":5,"Blogger":7,"FeedBurner":3,
"AppEngine":5}

のように、フィードの各エントリのタグ情報を集計して、JSON形式で出力します。あとは適当なJavaScriptコードを書いてレンダリングするだけです。フィードは一時間キャッシュします。試していませんが、AtomでもRSSでもいけるはずです。あ、タグやカテゴリーが付与されていないフィードを食わせても意味ありません。

ここからが本題。

何のためにこれを作ったかというと、フィードからタグクラウドを生成するGoogleガジェットを実現するためです。

Add to Google

上のリンクをクリックすると、下のように確認画面が表示されます。

「Googleに追加」してやると、iGoogle上にタグクラウドを表示できます。

デフォルトでこのブログのタグクラウドが表示され(てしまい)ますが、設定を変更すれば、フィードURLやソート順、フォントサイズなどが設定できます。

このガジェットは(正直iGoogleに追加してもあんまり意味はなくて)このページの右サイドバーに表示されているように、Bloggerのサイドバーなどで使うと便利なガジェットです。というか、そのために作りました。

Bloggerの「ガジェットを追加」画面で「独自に追加」という項目を選択してください。

「http://feed-tagcloud.appspot.com/」というURLを入力して「追加」すれば使えます。

細かい設定はiGoogleの場合と同様に変更できます。

タイトル
タイトルを入力します。
高さ
ガジェットの高さをピクセルで指定します。デフォルトで200ですが、タグの数に応じて適当に変更しましょう。
Feed URL
フィードのURLを指定します。blogspotでホスティングしている場合「http://blog-name.blogspot.com/feeds/posts/default」というURLになるはずです。「http://blog-name.blogspot.com/feeds/posts/default&orderby=published&max-results=100&redirect=false」などとオプションを付けてやると最近100件のポストを対象にすることができます。オプションについての詳しい情報はDeveloper's Guide: Protocol - Blogger Data API - Google Codeを参照。
Tag base URL
タグの表示ページのベースURLを指定します。blogspotなら「http://blog-name.blogspot.com/search/label/」などと指定します。MTなら「http://blog.example.com/mt/mt-search.cgi?blog_id=X&tag=」などと指定すればOK。
Order By
「Tag name」を指定するとタグ名の昇順、「Count」を指定するとタグの頻度の降順で表示します。
Algorithm
フォントサイズの計算方法を指定します。「Linear」を指定すると頻度から線形補完し、「Logarithmic」を指定すると対数補完します。
Link Color, Background Color
リンクの色、背景色を指定します。
Min font size, Max font size
タグ表示の最小フォントサイズ、最大フォントサイズをptで指定します。

実はほとんど同じ機能を提供するガジェット(Sachin's Tech Place: Dynamic Label Cloud Gadget)が既にあります。Bloggerユーザでは、こちらを利用している方が結構多いかもしれません。ただし、IE8でエラーになって表示できない、最新のgadgets.* APIを使っていない、好きなようにカスタマイズできないなど、いくつか不都合な点があります。

feed-tagcloud-appengineは、IE8でも問題なく表示でき、gadgets.* APIを使っており(そのせいでGadgets Directoryに登録できないのですけど)、タグクラウドのソートができます。また、JSONのインタフェースが切ってあるので、それを利用してカスタマイズしたガジェットを作ったり、ガジェット以外から利用したりすることもできます。

ソースコードは例によってGoogle Codeに上げてあります。

feed-tagcloud-appengine - Google Code

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com