2017-07-30 104 views
-1

您好我目前正在Twitter推特与Twitter API和Node.JS.我想让机器人将所有的追随者和他们的一些功能都归还给一个javascript对象。喜欢的东西:Twitter API与node.js,获取关注者列表

{[ '身份证', 'SCREEN_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​​文档,但我遇到一些理解它的麻烦。如果有人能够帮助那会很好。

谢谢

+0

你在nbFollowers什么? –

+0

我的追随者人数@AbhishekRanjan – Mowso

回答

0

最有可能的,你得到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); 
}) 
相关问题