懂得運用 API 之後,可以做出多種 Widget、附加工具或系統,例如之前提過的 Karma Trends、@fortelin 的 Plink 跟 Plaink 等等。其中一種有趣應用是寫出能自動發出 plurk 的工具,俗稱 robot。其意為一個坐在電腦前的機器人,能代替真人發文聊天。在我的 Plurk 朋友清單當中,最早寫出這玩意兒的是 @Faryne。之後 @yongwei 跟我都各寫了一支出來。
要機器人發訊息很容易,問題是訊息內容要輸入什麼。如果每一則訊息都是人力去指定的,那麼機器人就失去其作用,不如本人自己坐下來敲鍵盤。@Faryne 想到第一個主意:讓他的機器人進行自動報時。很不幸地,這個點子不被市場(?)接受。大家顯然不太喜歡每個整點都看到他出來跳香蕉舞。在一片要將他取消好友的威脅之下,@Faryne 的機器人黯然退場。
愛看新聞的 @yongwei 想到第二個主意:RSS 新聞播報器。基於 @yongwei 的個人喜好,這支機器人廿四小時會抓不同的 news feed 回來發佈。目前他(指機器人)共有四十幾位朋友與三十幾位粉絲,收視率不錯。唯一的缺憾是觀眾無法自行決定哪些新聞要看、哪些不看。比方說像 SQL Server Central 和 ASP.NET 就不是人人嚥得下去。
我則打了最安全的一張牌:氣象預報。每天一早先上中央氣象局 把當日北中南各取一地的氣溫與降雨機率預測值抓回來,重新組合成一則訊息之後發出去。後來追加農民曆的功能,包含喜財神方位與當日沖煞,趣味性大於實用性。截至目前為止,反應還不惡。而且有些朋友似乎挺樂於逗弄機器人,因為它不能回嘴。(汗)
完成機器人之後,有個實驗就容易做了。我註冊一個全新的帳號,先填妥各種個人資訊與上傳大頭照,karma 很快就超過 10。接著讓機器人每天定時發出一則 plurk,不交朋友也不回應。
在這樣的狀況下約經過一個月,機器人的 karma 就到達 40。意即對於一個低用量的用戶,要越過可以修改暱稱或標題的門檻,其實是容易的。
另一個常見對機器人的期待也和 karma 有關。許多人都覺得,擁有機器人之後,就可以輕輕鬆鬆增加 karma,即使一段時間不上線,karma 也不致暴跌,甚至還會上升。這個說法其實對也不對。要說明這一點,必須先簡單介紹一下 Plurk 計算 karma 的週期原則:
Karma 每四個小時結算一次(註:4 的整倍數點,即四點、八點、十二點……)。一天廿四小時包含六個結算點,理想上每個區間都有發出 plurk 的話,Karma 會穩定上升。但是人總要睡覺,而合理的睡眠時間是八小時,因此一天只要發出四則 plurk 即可保持只升不降。從前面機器人的例子可以知道,這個“四則”的門檻是上限而非下限。Karma 低於 40 的人,一天只需要一則。Karma 更高的人,每一次扣點抵掉一至二則 plurk(不考慮獲得 response 的情形),所以每天必須發足二至三則。達到涅槃之後當然就更不用說了,四則 plurk 都必須發齊,否則很快會跌回 80 以下。
低 karma 的人復原很快,所以會擔心 karma 的人,通常意味著數值已經有一定水準。高 karma 需要高 plurk 量來維持,但是靠機器人發大量的 plurk,朋友跟粉絲們看了不會煩嗎?或者直接這麼問:有什麼內容是天天定時發四次,而且大家都知道不是你本人,還能忍受著不將你 unfollow 甚至從朋友清單中移除的呢?別忘了,被朋友 unfollow 或移除,都是會扣 karma 的。屆時,賺 karma 的目的沒達成,反倒先扣了一堆。
註一:@gorimaru 也有一支專挑四整倍數點發噗的機器人,噗文內容一律是:「Karma Control(全自動)」。看了他 10/22 之前的河道,我只能猜想日本人的忍受力真強。
註二:Plurk 在 9/13~9/17 之間調整了數次 Karma 計算公式。最終版的公式對於短暫 plurk 間斷已不會太過敏感。簡單來說,使用者不用再擔心前述每四小時要發一次 plurk 的規則。即使中間有漏發,也只會先進入正負零的狀態。必須要閒置夠長時間,才會開始調降。
註三:Plurk 在 11/12 將 user profile page 的網址由「http://www.plurk.com/user/(userid)」縮短為「http://www.plurk.com/(userid)」。這個動作造成大量 Greasemonkey User Script 失靈,Plurk Perl API 掛點。前者必須靠那些 User Script 的原作者自行更新,後者我個人做了修正。修改部份如下:
--- Plurk.pm.0.02 2008-07-10 07:46:06.000000000 +0800
+++ Plurk.pm.fix 2008-11-14 17:03:59.000000000 +0800
@@ -251,8 +251,21 @@
croak "Login for $name failed, no cookie returned"
unless $ok;
- $self->_path_for( home => $resp->header( 'Location' )
- || "/user/$name" );
+# * 2008/11/12 modified by @Sorry
+# Plurk alters 'http://www.plurk.com/user/(userid)'
+# to 'http://www.plurk.com/(userid)'
+ if($resp->header('Location') =~ /^http:\/\/[^\/]+(\/.*)$/)
+ {
+ $self->_path_for(home => $1);
+ }
+ elsif($resp->header('Location') =~ /^\/.*$/)
+ {
+ $self->_path_for(home => $resp->header('Location'));
+ }
+ else
+ {
+ $self->_path_for(home => "/$name");
+ }
$self->_parse_user_home;
$self->state( 'login' );
廣告:按 這裡 可以註冊 Plurk 帳號,順便讓我賺個推薦數吧。:D