google gadgetのコンテスト
iGoogleガジェットコンテストですかー。ガジェットだからなんとなくお気楽に作れるっぽいですなー。
そんなわけで、仕事はそこそこに切り上げて、ガジェット開発ってどんな感じなのかちょっと調べてみた。
イマドキのjavascriptにはそれほど詳しくないのだけど、リファレンスとかサンプル見ながら試してみた数時間。
で、いろいろツギハギして作ってみたtwitter publictimelineビューワー(なんと大げさな。。。)
・twitterのpublic timelineをJSON変換で取ってきて表示する
・minimessageモジュールのcreateTimerMessage(指定時間が経つと消える)を使ってちょっと動きをつけてみた
・実はスクラッチパッドでしか試してない(http://www.google.com/apis/gadgets/gs.html#Scratchpad)
※googleのJSON変換でキャッシュされると最新のフィードが取れないのでURLを時間で変化させている。あまり良い方法じゃないと思う。10秒毎とかに切り捨てるようにしないとなあ、、、まあ、とりあえず出しておく。。。
<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Twit of a minutes" height="100"> <Require feature="minimessage"/> </ModulePrefs> <Content type="html"> <![CDATA[ <script language="JavaScript"> //var prefs = new _IG_Prefs(__MODULE_ID__); var showdate = false; var summary = false; // todo: use userprefs... var entries = 20; var dismiss_interval = 5; // init var msg = new _IG_MiniMessage(__MODULE_ID__); var loading_message = msg.createStaticMessage("loading"); // feed handle function feed_handle (){ msg.dismissMessage(loading_message) loading_message = msg.createStaticMessage("loading"); nowDate = new Date(); _IG_FetchFeedAsJSON("http://twitter.com/statuses/public_timeline.atom?" + nowDate.getTime(), function(feed) { if (feed == null){ alert("no data."); return; } msg.dismissMessage(loading_message); loading_message = msg.createStaticMessage(feed.Title); if (feed.Entry) { for (var i = feed.Entry.length - 1; i >= 0; i-- ) { var date = new Date((feed.Entry[i].Date) * 1000); msg.createTimerMessage (date.toLocaleTimeString() + " " + feed.Entry[i].Title, dismiss_interval * ( feed.Entry.length - i )); } } setTimeout ( 'feed_handle()', entries * dismiss_interval * 1000 ); }, entries, summary ); } feed_handle (); </script> ]]> </Content> </Module>
あ、feed_handleの外にあるloading_messageって、、、ひどいなあ。あとで直そ。。。
さっさと寝よ。