[記錄] 用 php + Plurk API 2.0 寫噗浪抽獎程式

[紀錄] Apple iOS 開發者 Certificates 更新相關
圖片來源:pakutasoフリー素材

找不到適合的照片,就這張吧XD

起因是這個噗,最終結果是噗浪抽獎小程式

好,講完。沒有啦,上面那是結果,現在是要記錄我用了什麼跟心路歷程(?)

ami 大大那個噗上面是利用 javascript 解析網頁內容,然後不需要寫成程式不用有空間可以放,只要有 Chrome 就可以達到(Chrome 的開發者人員模式真的可以做很多事情XD)。

缺點就在於每次要抽獎,如果人數太多就得多花時間,還是稍微有些不方便。

因為寫成網頁我只會用 php ,所以本來想說用這個概念,來把這些寫成網頁程式方便使用(雖然我沒辦過抽獎XD)但後來發現噗浪載留言的方式以我自學爛爛的 php 爬不了網頁內容,雖然後續的篩選tag取得名字方式順利寫好,但最終只寫了「需要從開發者工具複製整個網頁內容,然後貼上後一鍵完成抽獎」的半成品。

於是我就想放棄了。 >A< 

後來浩剛大大提到他在研究 Plurk API 2.0 ,以前研究過一次的我,開心的向大大請教了一些之後,決定全部都用 API 把資料擷取回來再做處理。

使用的工具及參考

使用到的 API Function

Plurk API 的 test console 真的很好用,因為可以測試所有的 function,包含帶入的參數,所以可以先在上面測試哪些是有用的。我就列出我有用到的 function。

/APP/Timeline/getPlurk

  • 可以取得單一噗的資料,帶入的參數是 plurk_id
  • plurk_id 並不是網頁後面帶的資料,需要先使用 base32 decode 之後才是真實的 id(數字)
  • 帶回來的資料主要是主噗的內容,可以取得 [“plurk”] [“favorers”] (喜歡)[“replurkers”](轉噗)
  • [“favorers”] (喜歡)、[“replurkers”](轉噗)記錄的都是使用者的編號(非帳號)
  • 還可以取得噗主資料:[“user”],這就帶有帳號跟暱稱資料

/APP/Responses/getById

  • 可以取得單一噗的所有回應,帶入的參數是 plurk_id
  • plurk_id 並不是網頁後面帶的資料,需要先使用 base32 decode 之後才是真實的 id(數字)
  • 帶回來的資料是所有的回應內容,包含發回應的使用者帳號、編號、暱稱

/APP/Profile/getPublicProfile

  • 可以取得使用者資料,帶入的參數是 user_id
  • [“favorers”] (喜歡)[“replurkers”](轉噗)的資料就是 user_id 
  • 可以取得使用者帳號、編號、暱稱

程式流程構想

本來我以為取得回來跟使用者相關的都是完整資料(就是有使用者帳號、編號、暱稱),但實際測試下,發現並不是!只有噗的回應可以直接取得,其他的都只是使用者編號。

但抽獎結果必須要有誰得獎,貼回噗浪才有用,但編號貼回去也是不能辨識,所以還是得去重新抓資料回來。

一開始是想最後抽獎的時候已經有完整資料,這樣抽完可以組顯示資料。但後來發現不對,喜歡跟轉噗要是人數多,先抓資料就會花上好幾分鐘,所以最後決定都先取得使用者編號陣列,然後抽完之後再去比對,至少要抽的個數不會幾十嘛!(吧!?)

所以最終的作法:

  1. 先解析輸入的網址,取得 plurk_id
  2. 根據勾選來源(留言、喜歡、轉噗)取得資料,去掉重複的,還有去掉噗主編號,產生被抽清單
  3. 根據輸入的抽選個數,用 php 取亂數(rand)取出結果
  4. 再從結果去擷取帳號的資料提供顯示跟複製的內容
  5. 大功告成!

 

每次寫完程式,再來寫怎麼弄的過程都覺得很簡單沒什麼,但實際的測試跟調整都花了不少力氣,重點是在試誤的過程真的不少。但寫完真的很有成就感,不管是書評網或是現在這個,能動能有成果都覺得開心。

歷史上的今天

guest
0 Comments
Inline Feedbacks
View all comments