在 Plurk 看到一些內容、連結, 想要先收藏起來, 最快的方式就是點 "喜歡"(Like), 但是 Plurk 的 "喜歡" 只能在自己的河道上點, 若是透過 RSS 看, 點過去的頁面都是那句話的 網頁連結頁, 想要標註起來的話, 需要回自己的河道, 然後想辦法 拉到 & 找到 那句話, 再點選加入"喜歡"~ (話說, Plurk 的河道要拉到幾天前的話, 非常困難阿~)
有這個困擾的人似乎不只有我, 但是又不想寫個程式, 讓人輸入自己的帳號、密碼、連結, 幫他做登入 & 加入 "喜歡" 的動作 (安全性問題).
於是最好的解法就是用 JavaScript Bookmarklet 的方法來達成, 所以著手研究看看該怎麼送資料.
-
想直接取用此 Bookmarklet 的, 可直接將此連結
Plurk Like
, 拉到瀏覽器 Toolbar 即可使用.(目前只能於 Plurk 單一連結頁面使用)
Plurk 加入 "喜歡" 流程
- Plurk 在點選"喜歡"
- 會用 Ajax 發送 POST 到 "http://www.plurk.com/Favorite/set", 並帶 favorite=true、plurk_id、token 參數進去.
- 接收回傳 JSON: {"plurk_id": xxx, "favorite": true} 就是成功寫入.
- 所以只要找到 plurk_id 和 token 即可.
Plurk 的 plurk_id 和 token 取法
- 假設 Plurk 的單一網頁連結: http://www.plurk.com/p/4rdwhs
- plurk_id: 是 4rdwhs, 這個 plurk_id 是 36進位轉換的, 所以用 36進位即可轉回 API 所要的值, 4rdwhs 會轉成 287862976.
- token: 則從網頁裡面的 id="login_link" 來抓取.
Plurk 加入 "喜歡" Bookmarklet
於是寫出加入 "喜歡" 的 Bookmarklet, 此程式於 AJAX POST 沒有特別處理 ActiveXObject, 所以 IE 應該是不會動. (Firefox、Chrome 都測過可以正常執行.)
javascript:(function(){
var p = document.location.toString().split('/'); //var pid = document.location.toString().match(/\/[\d|\w]*$/).toString().replace('/', '');
var pid36 = p[p.length - 1]; // plurk id 36
var pid = parseInt(pid36,36); // plurk id
var l=document.getElementById('login_link').toString();
var t=l.match('token=.*').toString().replace('token=',''); // token
var pdata = 'favorite=true&plurk_id=' + pid + '&token=' + t;
var req = new XMLHttpRequest();
req.open('POST', 'http://www.plurk.com/Favorites/set', true);
req.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
req.send(pdata);
})();
於是壓縮成一行, 將此行加 <a> 連結, 就可以產生 Bookmarklet:
Plurk Like
使用方式
- 將此
Plurk Like
加到 我的最愛, 或瀏覽器 Toolbar. - 於 Plurk 單一網頁時, 點選即會自動加入自己 Plurk 的 "喜歡" 中. (不會秀出任何加入完成的訊息).
- 若有 Bug 或者改良的更好的版本, 還請回報讓小弟更新. 🙂
你好,我加了你的語法到google chrome快捷書籤裡使用發現:
到對方河道>點進單一plurk頁面>選書籤加喜歡>沒成功
在自己的河道>點進單一plurk頁面>選書籤加喜歡>成功
結論:似乎還是要在自己的河道裡才能使用喜歡功能…?
還是我的步驟有哪裡使用錯誤了?
謝謝
我猜可能要有在追蹤才可以加入"喜歡".
我之前加都是直接點 單一plurk頁面(因為我都是看 RSS), 然後就加入了.
然後這些 單一plurk頁面, 我都有加入追蹤.
不知道是否是這個問題? (把對方河道加入追蹤就好了?)
不好意思,後來好像有成功了:
當下按書籤加喜歡後,該單一頁面沒有出現愛心(喜歡)符號,重回對方主河道看該噗也依然沒有變化,回自己河道看該噗才會看見出現愛心符號…所以也就是說這語法大概需要點反應時間這樣?
抱歉,打擾了&謝謝你的語法!^^
喔喔, ok ok 🙂
愛心符號是只有自己河道才會出現的, 我之前測法都是加入後, 直接進自己的"喜歡"去看, 能用就好囉~ 🙂
我覺得應該不是需要"反應時間", 而是因為 plurk 是一直去跟 server 要資料(號稱 comet), 但是新的資料並不會即時送進來, 整頁 reload 就會看到了~ 🙂
很好,很方便
你好,不好意思,透過搜尋來到了這裡OAO
那、那個啊,用這個方法有些噗也沒辦法加入喜歡呢
有點困擾,能請問一下是有什麼限制嗎?謝謝
好像不是 朋友或追蹤 的噗, 就不能加入喜歡.
(就是在你河道上沒有的噗, 不能加入喜歡)
是追蹤的噗啊,在自己的河道上滑到以前那個噗的日期卻沒有,
在那個人的頁面才找得到,
有些可以加,有些加不起來OAO
加不起來的那些, 可以找的出.... 是哪類的嗎?
因為我自己試的是都可以加入, 但是規則是 Plurk 訂的, 所以我需要知道是 Plurk 的規則加不進去(這個我也沒辦法), 還是是程式問題. Orz..