簡體   English   中英

Twitter API 和 node.js,獲取粉絲列表

[英]Twitter API with node.js, get a list of followers

您好,我目前正在使用 Twitter 機器人和 Twitter API 和 Node.JS。 我希望機器人在 javascript object 中返回我的所有關注者和他們的一些功能。類似於:

{['id', 'screen_name', 'name', 'screen_name', 'followers_count', 'friends_count']}

RN 我的代碼是:

var Twitter = new TwitterPackage(config);


var options = 
              {
                screen_name: 'mowsolicious',
              };

Twitter.get('followers/ids', options,  function (err, data) {    // returns a list of ids
  var nbFollowers = data.ids.length
  var id = []
  console.log(nbFollowers)                                       // how many followers I have
  for (i=0 ; i <= nbFollowers ; i++) {
    ids = data.ids
    var id = ids[i]
    Twitter.get('users/show/' + id, function(err, data)  {    
      console.log(id + " - " + data.name + " - " + data.screen_name + " - " + data.followers_count + " - " + data.friends_count)
    })
  }
})

我很確定我的方法出了什么問題(更准確地說,當我將Twitter.get放入循環中時)並且它在控制台中返回了一堆未定義。

我嘗試使用 API 文檔,但在理解它時遇到了一些麻煩。 如果有人可以提供幫助,那就太好了。

謝謝

最有可能的是,您undefined是因為未找到用戶:

[ { code: 50, message: 'User not found.' } ]

檢查err變量會解決這個問題。 但是查看GET followers/id文檔,您應該使用GET users/lookup來有效地請求多個用戶對象(每個請求最多 100 個用戶,用戶 ID 以逗號分隔)

此外,我假設您希望在所有請求完成時調用一個唯一的回調,使用Promises將解決這個問題:

var res_array = [];

function getUserInfo(id_list) {
    return Twitter.get('users/lookup', {
            "user_id": id_list
        }).then(function(data) {
            res_array.push(data);
        })
        .catch(function(error) {
            throw error;
        })
}

Twitter.get('followers/ids', function(err, data) {

    if (err) {
        console.log(err);
        return;
    }

    console.log("total followers : " + data.ids.length);

    var requestNum = Math.floor(data.ids.length / 100);
    var remainder = data.ids.length % 100;

    var promises_arr = [];

    for (var i = 0; i < requestNum; i++) {
        promises_arr.push(getUserInfo(data.ids.slice(i * 100, i * 100 + 100).join(",")));
    }
    if (remainder != 0) {
        promises_arr.push(getUserInfo(data.ids.slice(requestNum * 100, requestNum * 100 + 100).join(",")));
    }

    Promise.all(promises_arr)
        .then(function() {
            for (var i in res_array) {
                for (var j in res_array[i]) {
                    var user = res_array[i][j];
                    console.log(user.id + " - " +
                        user.name + " - " +
                        user.screen_name + " - " +
                        user.followers_count + " - " +
                        user.friends_count)
                }
            }
        })
        .catch(console.error);
})

關注者列表可以通過superface sdk獲取,可以參考下面的例子試試

npm install @superfaceai/one-sdk
npx @superfaceai/cli install social-media/followers

 const { SuperfaceClient } = require('@superfaceai/one-sdk'); const sdk = new SuperfaceClient(); async function run() { // Load the installed profile const profile = await sdk.getProfile('social-media/followers'); // Use the profile const result = await profile.getUseCase('GetFollowers').perform({ profileId: '429238130' }); return result.unwrap(); } run();

這很好用


import fetch from 'node-fetch'

async function getFollowers(username) {

  const response = await fetch(`https://api.twitter.com/1.1/followers/list.json?screen_name=${username}`, {
    headers: {
      Authorization: `Bearer ${<yourbearertoken>}`
    }
  });

  // Parse the response as JSON
  const data = await response.json();
  return data.users;
}

const followers = await getFollowers("<username>");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM