2008/11/16

Plurk - API,Robot,兼談 Karma

  對於懂一點程式的重度使用者來說,API 是讓服務更好玩的必備工具。然而或許因為 Plurk 本身還在頻繁修改的階段,它遲遲沒有公佈官方的 API。這其實不太影響網路上的高手們。基於 Plurk 是一個大量應用 AJAX/JSON 的網站,其傳輸參數與內容很早就被分析出來,並包裝成多種不同語言的 API,以非官方的型態發行。目前已公開的 API 有 PHPPerlC#Python 等版本。

  懂得運用 API 之後,可以做出多種 Widget、附加工具或系統,例如之前提過的 Karma Trends@fortelinPlinkPlaink 等等。其中一種有趣應用是寫出能自動發出 plurk 的工具,俗稱 robot。其意為一個坐在電腦前的機器人,能代替真人發文聊天。在我的 Plurk 朋友清單當中,最早寫出這玩意兒的是 @Faryne。之後 @yongwei 跟我都各寫了一支出來。

  要機器人發訊息很容易,問題是訊息內容要輸入什麼。如果每一則訊息都是人力去指定的,那麼機器人就失去其作用,不如本人自己坐下來敲鍵盤。@Faryne 想到第一個主意:讓他的機器人進行自動報時。很不幸地,這個點子不被市場(?)接受。大家顯然不太喜歡每個整點都看到他出來跳香蕉舞。在一片要將他取消好友的威脅之下,@Faryne 的機器人黯然退場。

  愛看新聞的 @yongwei 想到第二個主意:RSS 新聞播報器。基於 @yongwei 的個人喜好,這支機器人廿四小時會抓不同的 news feed 回來發佈。目前他(指機器人)共有四十幾位朋友與三十幾位粉絲,收視率不錯。唯一的缺憾是觀眾無法自行決定哪些新聞要看、哪些不看。比方說像 SQL Server CentralASP.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
© 年年歲歲花相似
Maira Gall