Plurk.com API 2.0


公式

API 文件解讀

公式API 非官方文件(好讀版)


Google Apps Script 專用的參考指引

參考案例

GO lang

Ruby


有登入授權的


更完整的案例

  • 實現了透過用戶的噗浪帳號登入程式方面的應用。

  • 常見的噗浪API應用,只控自己噗浪帳號。但他這個有用到用戶的噗浪帳號


其他案例,包含特別注意事項

  • 此案例採用 Python + Heroku 部屬。

  • 當 Plurk 帳號被官方視為 Bot 帳號,會無法在噗內進行內文張貼URL

    • 此限制可以透過官方認證帳號或購買噗幣突破

    • 所以最好還是另開一個帳號專門用 API,
      避免哪天誤判個人號功能被限縮。


非官方API


その他

解決問題

Plurk 單噗網址與 API 用的 plurk_id 互相轉換
沒現成的解決方案,以下內容是我自己寫的 JavaScript function

有用到正則運算式 跟 JavaScript 簡寫
簡寫可參考:

  • URL → plurk_id

//JavaScript(Google Apps Script 可用)
var plurk_URL = 'https://www.plurk.com/p/pbx4sL';
var p = plurk_URL.replace(/.*plurk\.com\/p\/(.*)/gi,'$1'); //'pbx4sL';
var plurk_id = parseInt(p, 36); //= plurk_id = parseInt('pbx4sL', 36);
console.log(plurk_id);

得 plurk_id = 1531676037
會發現這樣轉換,是參考下面這邊:

//這段目前 2023/07/23(日)實測已經沒有效果,
//但他把 plurk_id 轉換的規則,仍然有效。所以取用。
javascript: (function() {
var p = document.location.toString().split('/');
var pid36 = p[p.length - 1];
var pid = parseInt(pid36, 36);
var l = document.getElementById('login_link').toString();
var t = l.match('token=.*').toString().replace('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);
})();

https://blog.longwin.com.tw/2010/04/plurk-link-add-like-function-2010/

逆向運算,plurk_id → URL。
有 API 可以用的 plurk_id,轉回噗浪網址:

//JavaScript(Google Apps Script 可用)
var plurk_id = 1531676037;
var p = plurk_id.toString(36);
console.log(p); //pbx4sl
var plurk_URL = 'https://plurk.com/p/' + p;
console.log(plurk_URL);

寫成 JavaScript function

  • URL → plurk_id

//JavaScript(Google Apps Script 可用)
function get_plurk_id(plurk_URL = 'https://plurk.com/p/pbxxxx'){
    return /.*plurk\.com\/p\/(.*)/gi.test(plurk_URL) ? (parseInt(plurk_URL.replace(/.*plurk\.com\/p\/(.*)/gi,'$1'),36)) : '' ;
}

console.log(get_plurk_id('https://plurk.com/p/pbxxxx'));
  • plurk_id → URL

function get_plurk_URL(plurk_id = 1531676037){
    return (typeof plurk_id == 'number') ? 'https://plurk.com/p/' + plurk_id.toString(36) : '';
}
console.log(get_plurk_URL(1531676037));
  • 以上兩者合併自動辨識輸入是 URL 還是 plurk_id,自動輸出另一種:

//JavaScript(Google Apps Script 可用)

function get_plurk_target(URLorPLURK_ID){
    var output = /.*plurk\.com\/p\/(.*)/gi.test(URLorPLURK_ID) ? (parseInt(URLorPLURK_ID.replace(/.*plurk\.com\/p\/(.*)/gi,'$1'),36)) : '' ;
    if(output ==''){
        output = (typeof URLorPLURK_ID == 'number') ? 'https://plurk.com/p/' + URLorPLURK_ID.toString(36) : '';
    }
    return output;
}

console.log(get_plurk_target(1531676037)); // = 'https://plurk.com/p/pbx4sl'
console.log(get_plurk_target('https://plurk.com/p/pbx4sl')); // = 1531676037

未解之謎

  • 官方 API 文件都沒提到的

/APP/Timeline/setPorn
  • 參數 plurk_id、porn

  • 雖然這個 API 文件沒寫到,但發噗的時候也可以送 porn = 1,
    讓發出去的這則噗 18禁。

    • 至於 /APP/Timeline/setPorn 看起來像是事後修改的功能,
      可能要有噗幣?
      我用沒噗幣的帳號測,/APP/Timeline/setPorn 都不成功。

この記事が気に入ったらサポートをしてみませんか?