2017-07-30 20 views
-1

こんにちは私はTwitter APIとNode.JSを使ってTwitterボットを作っています。私は、ボットがjavascriptオブジェクト内のすべてのフォロワーとその機能の一部を返すようにしたい。何かのように:Twitter API with node.js、フォロワーのリストを取得

{[ 'ID'、 '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のドキュメントを見て、あなたが効率的にも(カンマで区切られたユーザIDと要求あたり100ユーザーまで)

をmutlipleユーザーオブジェクトを要求するためにGET users/lookupを使用する必要があり、私はあなたがすべてと呼ばれる独自のコールバックが欲しいと仮定します要求が完了したら、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); 
}) 
関連する問題