這篇文章說明如何用 Plurk API 2.0 自己寫一個噗浪機器人
(本文同步發表於 噗浪官方部落格)
噗浪大部分的機器人仍然使用 Plurk 1.0 撰寫,甚至有一部分機器人使用的是非官方的 API,這篇文章將簡介如何使用 Plurk API 2.0 OAuth 的方式開發機器人程式,同時,這個範例也使用 Plurk Realtime API (Comet Push) 的方式來追蹤時間軸,避免給伺服器帶來過多的負擔
由於 Plurk API 2.0 使用 OAuth 方式,所以啟動機器人之前,您必須先獲得以下四個參數
- App Key
- App Secret
- Access Token
- Access Token Secret
獲得 App Key 及 App Secret 的方式很簡單,首先先註冊一個新的噗浪帳號用來跑這個機器人,然後登入新帳號後,開啟以下這個連結:
http://www.plurk.com/PlurkApp/
按下「註冊新的應用服務」,填寫關於你的程式的資料,其中 OAuth callback 保持空白即可
註冊完畢後就可以看到你的應用程式列表
然後按下「編輯」這個按鈕,就可以看到以下畫面:
這邊我們就可以得到 App Key 以及 App Secret 了
接下來要進行 OAuth 的授權驗證來取得 Access Token 及 Access Token Secret
按下「測試工具」來開啟 OAuth 的 Test Console
首先按下「Get Request Token」來取得暫時的 Request Token,
接下來按下「Open Authorization URL」來開啟授權頁面:
按下「是,我要授權」後,會得到一個認證碼:
把這個六位數的認證碼記下來,然後回到 Test Console,
按下「Get Access Token」,這時會提示您輸入認證碼
把您剛剛記下來的數字填進去,按下「確定」後,
就可以得到永久有效的 Access Token 及 Access Token Secret 了
然後你就可以開始寫程式了,下面是一個用 Python 寫的噗浪機器人,
把其中 APP_KEY, APP_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET 置換掉即可
這個程式需要使用到 plurk-oauth 這個 Python library,
請把 plurk_oauth/ 這個目錄下的檔案下載回來跟你的程式放在一起就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | #!/usr/bin/python # -*- coding:utf-8 -*- import re import json import urllib2 from PlurkAPI import PlurkAPI plurk = PlurkAPI('APP_KEY', 'APP_SECRET') plurk.authorize('ACCEESS_TOKEN', 'ACCESS_TOKEN_SECRET') comet = plurk.callAPI('/APP/Realtime/getUserChannel') comet_channel = comet.get('comet_server') + "&new_offset=%d" jsonp_re = re.compile('CometChannel.scriptCallback\((.+)\);\s*'); new_offset = -1 while True: plurk.callAPI('/APP/Alerts/addAllAsFriends') req = urllib2.urlopen(comet_channel % new_offset, timeout=80) rawdata = req.read() match = jsonp_re.match(rawdata) if match: rawdata = match.group(1) data = json.loads(rawdata) new_offset = data.get('new_offset', -1) msgs = data.get('data') if not msgs: continue for msg in msgs: if msg.get('type') == 'new_plurk': pid = msg.get('plurk_id') content = msg.get('content_raw') if content.find("hello") != -1: plurk.callAPI('/APP/Responses/responseAdd', {'plurk_id': pid, 'content': 'world', 'qualifier': ':' }) |
執行方式:
# python my-robot.py
這個範例程式作的事情很簡單,就是一個無窮迴圈,首先每次都會先接受所有成為朋友的請求,然後看看有沒有新的噗,如果有新的噗,而且內容有 ‘hello’ 字串的話,就會自動回覆一個 ‘world’ 字串
提醒大家,噗浪並不反對機器人的存在,但使用這個範例程式請注意以下幾點:
- 建議使用新的帳號,不要用原有的帳號
- 機器人請勿主動去加網友為朋友
- 機器人請勿去關注(追蹤)任何其他網友
- 請勿自動回覆未成為機器人的朋友所發的噗
- 請勿張貼廣告訊息
- 請注意回覆頻率,以不過度干擾使用者的方式為原則