over 7 years ago
繼上一篇印出 facebook 活動賓客名單,同場加映一下,這次我們把 EDGE 由活動換成社團,印出全部社團成員,並且隨機排列,給他們一個亂數編號。
原先我的想法是按照賓客的長度創照一個連續自然數陣列,再利用 ruby 內建的 shuffle
洗牌,但是這樣名單印出來就是亂的。例如:
nums = 1..16
nums = nums.to_a.shuffle
後來想到一個更簡單的做法,就是直接把成員名單的順序打亂就好。實作如下:
# 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。
如此就會印出洗牌過的成員名單,並加上一個照順序印出的編號了。