LoginSignup
2
0

More than 5 years have passed since last update.

Facebook の Graph API で リアクションを取得 (Node.js)

Posted at

こちらの 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'
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0