not a number

安安
  • About
  • Publications
  • Archive
  • feeds

Posts match “ api ” tag:

about 7 years ago

誰來晚餐?印出 facebook 活動賓客名單

上禮拜辦了一個活動,完全用 facebook 的活動 (event)功能邀請賓客;活動前一天我想要印出賓客清單,才發現 facebook 居然沒有把賓客名單匯出成 .csv 的功能..... 我記得以前有啊?

這種時候就只好動用 facebook 強大的 opengraph API了。opengraph 的 EDGE 除了可以是一個人,一個fan page之外,也可以是一個活動。

取得 event 相關資訊前,要在申請 access token 前額外要求要 event 的權限:

話不多說,來看 code:

list_attendees.rb
# encoding=utf-8 

require 'open-uri'
require 'json'

event_id = '1609895432567499'
token = STDIN.read

url = 'https://graph.facebook.com/v2.3/' \
+ event_id + '/attending/?limit=250'
url = url + '&access_token=' + token

json = open(url)
data_hash = JSON.parse(json.read)

data_hash["data"].each do |datum|
    puts datum["name"]
end

執行

ruby list_attendees.rb < token > guests.csv

即可

其中 < token 是利用 standard input 將我放在另一個檔案的 token 吃進來; > guests.csv 就是把列印出來的內容存到csv檔裡面。

同場加映

  • 今晚誰作東?印出 facebook 社團成員並亂數編號
  • ruby
  • facebook
  • OpenGraph
  • api
  • June 25, 2015 23:09
  • Permalink
  • Comments
 
about 7 years ago

今晚誰作東?印出 facebook 社團成員並亂數編號

繼上一篇印出 facebook 活動賓客名單,同場加映一下,這次我們把 EDGE 由活動換成社團,印出全部社團成員,並且隨機排列,給他們一個亂數編號。

原先我的想法是按照賓客的長度創照一個連續自然數陣列,再利用 ruby 內建的 shuffle 洗牌,但是這樣名單印出來就是亂的。例如:

nums = 1..16
nums = nums.to_a.shuffle

後來想到一個更簡單的做法,就是直接把成員名單的順序打亂就好。實作如下:

list_members.rb
# encoding=utf-8 

require 'open-uri'
require 'json'

group_id = '67226335296474'
token = STDIN.read

url = 'https://graph.facebook.com/v2.3/' \
+ group_id + '/members/?fields=name&limit=250'
url = url + '&access_token=' + token

json = open(url)

data_hash = JSON.parse(json.read)

nums = 1..data_hash["data"].size

data = data_hash["data"].shuffle

for t in nums
    datum = data[t-1]
    puts t.to_s + "\t" + datum["name"]
end

執行

ruby get_members.rb < token

其中 token 放有你的 access token。

如此就會印出洗牌過的成員名單,並加上一個照順序印出的編號了。

  • ruby
  • facebook
  • OpenGraph
  • api
  • June 25, 2015 23:22
  • Permalink
  • Comments
 

Copyright © 2013 leeneil . Powered by Logdown.
Based on work at subtlepatterns.com.