こちらの python3 のプログラムを Node.js で書いてみました。
Facebook の Graph API で リアクションを取得
get_reactions.js
# ! /usr/bin/node
//
// get_reactions.js
//
// Feb/20/2018
//
// ----------------------------------------------------------------
// [4]:
function get_fb_proc(access_token,id_in)
{
var dict_aa = new Object ()
console.error("*** get_fb_base_proc *** start ***")
const url = "https://graph.facebook.com/v2.12/"
const fields = 'id,name,created_time'
const url_target = url + id_in + "?fields=" + fields + "&access_token=" + access_token
var Client = require('node-rest-client').Client
var client = new Client()
client.get(url_target,function (data, response) {
dict_aa = JSON.parse(data.toString('utf8'))
console.log(dict_aa)
get_fb_reactions_proc(access_token,id_in,dict_aa)
console.error("*** get_fb_base_proc *** end ***")
})
}
// ----------------------------------------------------------------
// [4-8]:
function get_fb_reactions_proc(access_token,id_in,dict_aa)
{
console.error("*** get_fb_reactions_proc *** start ***")
const url_aa = "https://graph.facebook.com/v2.12/" + id_in + "/reactions"
const fields = 'name,username,link,profile_type,type'
const limit = 1000
const url_target = url_aa + "?fields=" + fields + "&limit=" + limit + "&access_token=" + access_token
var Client = require('node-rest-client').Client
var client = new Client()
client.get(url_target,function (data, response) {
const dict_bb = JSON.parse(data.toString('utf8'))
// console.log(dict_bb)
console.error("length = " + dict_bb['data'].length)
dict_aa['data'] = dict_bb['data']
reactions_analize_proc(dict_aa)
console.error("*** get_fb_reactions_proc *** end ***")
})
console.error("*** get_fb_reactions_proc *** end ***")
}
// ----------------------------------------------------------------
// [4-8-6]:
function reactions_analize_proc(dict_aa)
{
var nn_haha = 0
var nn_like = 0
var nn_love = 0
var nn_wow = 0
var nn_others = 0
//
for (var it in dict_aa['data'])
{
const unit = dict_aa.data[it]
switch(unit['type'])
{
case "LIKE":
nn_like += 1
break
case "LOVE":
nn_love += 1
break
case "WOW":
nn_wow += 1
break
case "HAHA":
nn_haha += 1
break
default:
nn_others += 1
}
}
//
console.error("\tnn_like = " + nn_like)
console.error("\tnn_love = " + nn_love)
console.error("\tnn_wow = " + nn_wow)
console.error("\tnn_haha = " + nn_haha)
console.error("\tnn_others = " + nn_others)
}
// ----------------------------------------------------------------
console.error("*** get_reactions.js *** start ***")
//
const id_in = process.argv[2]
console.error("\tid = " + id_in)
//
access_token="FG4EFFBgb938BAO2ouOc1235pjXC8YgsXZBYRnZB8nNvwZCP7dJDTXq7pRrZCVXDX4rmH9hvEZCUj8ZA2ihBlMKMoVWWwzaaRzI8tqA6zCAhgZB12idZCYxIxXNmC112GypCJlnsGdUgLLwAYp0PAQinfL3J123f6or2JYj65bt0QSp1umNabcfg"
//
try
{
get_fb_proc(access_token,id_in)
}
catch (error)
{
console.error("*** error *** in convert_proc ***")
console.error("id_in = " + id_in)
console.error(error)
}
//
console.error("*** get_reactions.js *** end ***")
// ----------------------------------------------------------------
実行方法
./get_reactions.js '投稿のID'