2009年3月3日 星期二

[噗浪] jPlurk - Plurk Unofficial API in Java

今天弄出 jPlurk API 了!(更新:更改網址到新版 jPlurk)
總覺得最近好像突然多了很多人在 Plurk
連某宅神都不肝寂寞,變身成16歲的小女生來欺騙善良大眾。
但是 Plurk 到現在都一直沒開放 API 供人使用。
這樣的社群網站竟然沒 API ,有點令人覺得奇妙~

前陣子看到 XDite 的 Karma代練計畫
就一直蠢蠢欲動、躍躍欲試,感覺像寫 Bot
我最愛寫自動練功機器人了!
以前玩 OLG 寫了不少外掛 XD

但是因為實驗室太忙就無限期耽擱…

沒想到不久前真有人做出Karma代練網頁來了。
嗯~沒錯!只是惡搞網頁。
不過這激起了我的救肝心,決定拯救世人(咦?)

總之…
陽春版的 jPlurk API 就這樣上線了~
(更新:文件為舊版)

至於 Karma 代練計畫
因為實驗室常常突然出現神秘的急事、以及畢業壓力
嗯~那就慢慢醞釀…慢慢地醞釀…醞釀…醞醞醞………

另外,XDite 也有寫 API in Ruby
應該滿快就會有有趣的服務出現,讓我們拭目以待 XD


什麼?沒有教學?
AccountModel usr = new AccountModel("唉低", "怕死我");
MessageModel msg = new MessageModel();
msg.setQualifier("needs");
msg.setContent("jPlurk's Love!");
msg.setNo_comments(0);
if( MessageSender.sendMessage(usr, msg) )
System.out.println("Send Message Done!");
else
System.out.println("Send Message Error!");

這樣應該就可以跑了!
當然,要加上需要的 Library 才會動,網頁上都有寫。

最後來一張用 TimeTask 弄出雙人連發的測試踩線圖。
雙人連發的測試踩線圖


Plurk 相關小作品
Plurk 程式開發專用主題 - NetBeans Theme
PushLURK - Push to Plurk 迅速把網頁推上噗浪客
jPlurk - Plurk Unofficial API in Java
jPlurk v2 beta - Plurk Official API in Java

如果不嫌棄的話,歡迎給我一些意見 :P

 

25 則留言:

tangblack 提到...

ID PASSWORD 很搞笑 XD

Askeing 提到...

謝謝~
大家開心就好 :P

downhuey 提到...

想問一下有沒有可以從plurk上面抓對話下來的API

Askeing 提到...

是可以抓到對話、也可以做到回噗、擷取好友…etc。

但目前因為小弟七月前論文要生出來。
所以處於「知道怎樣做、沒時間做」的情況 O_Q

有什麼新的大進度,
會回應本篇、或發文章告知。

laohuyatzi 提到...

妳好:

無意參觀到此,我想知道這個api是怎麼做出來的 可否簡易的解說一下呢?

Askeing 提到...

您可以參考這個網頁
http://askeing.twbbs.org/jPlurk/

雖然不是目前最新的 JavaDoc
不過大致上就是parse網頁而已 ^^

Robert 提到...

感覺接收message的JSON格式會比較難處理,我看了這邊C#版本=>
就是在接收訊息的時候掛掉,但是現在還不知道怎麼改…請問您有解法嗎??

Askeing 提到...

To Robert:
Java 有 lib 可以專門處理 json,但是我不是很熟悉就是了。 C# 應該也有類似的功能,如果沒有可能可以用 reg exp 去解析。

firestoke 提到...

有關Java JSON的Library可以試試這個:
http://json-lib.sourceforge.net/

最近因為要試相關的Social Network API應用,搜尋「plurk java」這兩個關鍵字,你寫的這個Library連結是排第一名,所以才找到這裡。加油啊! 有空可以再多加一些新Feature :)

firestoke 提到...

對了,我去下載時,只有看到.jar檔跟document。目前是沒開放Source Code下載嗎? 8-) 如果可以將Source Code放在Google Code上分享,讓大家可以一起改就更好了~~ :)

Askeing 提到...

To: firestoke:

JSON 的 Library 我是直接用 json.org公佈的 java 檔抓回來編譯的。
有機會改天會試試看 json-lib,謝謝您提供資訊 ^^

jPlurk目前仍在開發中,
Code 還不停的在更動,
所以還沒釋出 Source Code。
因為我即將畢業,
準備論文及口試搞得焦頭爛額,
所以目前由 qrtt1 獨挑大樑繼續開發。<(_ _)>

畢業之後就會繼續盡量補齊功能。
屆時會再發佈消息。

Robert 提到...

To Askeing:

之前的C#版,我硬改了他C#裡JsonParser的控制,總覺得很笨…但是還是能用了…只是改到WM上之後,接收&Parse訊息的速度整個慢到不行…

P.S 我沒嘗試過一般的json lib來接plurk的訊息,聽說不是一般的json,真的是這樣嗎??晚點來試一下json-lib,也許android上面的plurk也是這樣弄出來的~

firestoke 提到...

hi~ 今天測試時發現,
MessageSender.sendMessage(usr, msg)
發送訊息時,常常會回傳false。但是目前看不到source code,所以也無從查起錯誤原因...

似乎跟發送次數太頻繁有關,只是我的猜測
我在jPlurk Google Code上發了這條issue :)

Askeing 提到...

To firestoke:

應該是 cookie 的問題?
這問題後來有解掉的樣子~
不過我太久沒有更新code了 O_Oa
最近q大正在弄json的部份,完成之後應該會更新上去 :P

Askeing

dbai 提到...

為何現在無法下載lib呢?是Google出問題還是source有問題?

Askeing 提到...

To dbai:

Jar 跟 Java Doc 是放在 PushLURK 主機上,主機因為畢業所以搬走了,還沒找到一個地方放置,所以目前無法連上。

Askeing

firestoke 提到...
作者已經移除這則留言。
Aska 提到...

我剛剛下載jar,與commons-httpclient-3.1,(4.x的好像不行),還有commons-codec-1.4.jar,依你的範例code 執行後 ,出現以下錯誤,會是哪方面的問題?

java.lang.NumberFormatException: For input string: "/m/"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.valueOf(Integer.java:553)
at tw.idv.askeing.jPlurk.UIDGetter$1.processResult(UIDGetter.java:60)
at tw.idv.askeing.jPlurk.net.HttpTemplate.execute(HttpTemplate.java:55)
at tw.idv.askeing.jPlurk.UIDGetter.getUID(UIDGetter.java:45)
at tw.idv.askeing.jPlurk.MessageSender.sendMessage(MessageSender.java:38)

Aska 提到...

以下是程式內容~麻煩囉 :)
AccountModel usr = new AccountModel("帳", "密");
MessageModel msg = new MessageModel();
msg.setQualifier(Qualifier.IS);
msg.setContent("test post from java program");
msg.setNoComments(0);
if( MessageSender.sendMessage(usr, msg) ){
System.out.println("Send Message Done!");
}else{
System.out.println("Send Message Error!");
}

Aska 提到...

我找到方法了,您的api 還需要再
usr.setUID(你的uid);
才有辦法正確的送出~
我是透過別人寫好的api 去查到uid 的,不知道您這一版的有無此功能?

Askeing 提到...

To Aska,

舊版 jPlurk 無法正確解析目前的 Plurk 網頁。
(因為官方網頁有改動過。)
請連往新版 jPlurk 網址下載新版本。

BR,
Askeing

chih.0812 提到...

請問我下載的是 1.1
但範例程式中卻連 AccountModel 都找不到
只有 Account 物件,是不是版本不對,有更改過?

chih.0812 提到...

剛剛發現,真的是版本的問題
另外有一個是叫 jplurk.jar 檔,沒有日期的,這個就行了

不過有個問題,因為我公司在內網,必須透過 proxy 出去
但我沒 source code 可以修改 httpclient 送出之前,先設定 setProxy
請問這部份,在 jPlurk API 有考慮到嗎? 有函式可以呼叫嗎?

Askeing 提到...

1.1 版已經改為 Account 了。
Proxy的部份,會列到清單裡面。
感謝您的意見 ^^

firestoke 提到...
作者已經移除這則留言。