其實一開始只是想研究msn plus script,但是後來想到之前有一隻script是把個人狀態留言同步傳送給twitter,那我乾脆來個逆向操作,把twitter 的最新留言餵給我的訊息。
今天測試的時候一開始要先研究他的觸發事件,於是我設計了各種觸發的事件,但是對應的動作都是"對美瑜說hi"。例如假設事件是"使用者登入",那我只要登入就會對美瑜丟一個訊息"hi"。我反覆測試各種事件,玩的不亦樂乎,但後果是...差點被她封鎖= =|||
後來一切都搞定後,又寫了一個自動猜拳程式,其實是判斷對方出甚麼,再給予適當的回應。非常簡單的程式,虛擬碼如下。
當收到訊息時(訊息) { if(訊息=="剪刀") { 回應("石頭"); } else if(訊息=="石頭") { 回應("布"); } else if(訊息=="布") { 回應("剪刀"); } }
於是我又找美瑜來測試,每次都贏(廢話),我想她快被我搞瘋了吧。再過幾天就要教師檢定的人還是少惹為妙。
沒關係,我還有法寶可以玩,那就是我一開始說的Twitter!趕快去爬twitter的API,發現也是非常簡單的協定,現在所謂的網路的Open API幾乎都是XML的協定傳送而已。
function Twitter(Username, Password, id) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttp.open("GET", "http://twitter.com/statuses/user_timeline/"+id+".xml", false, Username, Password);
xmlHttp.send("count=1");
var xmlDoc=xmlHttp.responseText;
xmlMailParser = new ActiveXObject("Microsoft.XMLDOM"); xmlMailParser.async="false" xmlMailParser.loadXML(xmlDoc);
var feed = xmlMailParser.documentElement;
return feed.getElementsByTagName("text")[0].text;
}
短短的幾句,就能夠把Twitter最新的一則訊息的文字取出來。再配合"Timer"設定每五分鐘執行一次,並把結果餵給個人狀態就可以囉。
其實對於這種網路提供的API真的很喜歡,因為使用簡單,而且它提供我與伺服器互動的管道,可以自己寫程式自動化處理一些瑣事。其實寫這篇的時候就想到了一個點子:msn 的blog更新時不是會有小星星嗎?但是其他的blog使用者怎麼把最新的一篇文章顯示給msn的朋友知道(不要說手動改,這樣會抹煞寫這些程式的意義)?我想到用Google Feed API+Messenger Plus! Live scripting就可以完成,看是要放最新一篇的標題還是摘要都可以。
個人認為,這些API的妙用就在於"結合"各種服務,以達到更多的效益。