2016-06-14 19 views
1

我需要存儲少數用戶的跟隨者的跟隨者。推特followers/ids給出了id列表,而不是id_str。我將api返回的整個id列表存儲在一個列表中。然後爲每個ID我找到追隨者列表。無論何時我使用大型ID來查找其追隨者列表,我都會收到錯誤Error: Sorry, that page does not exist。我試圖將ID轉換爲字符串,但仍然存在錯誤。我肯定錯過了什麼。我正在使用twit(https://github.com/ttezel/twit)庫。任何幫助將不勝感激。如何在節點JS中存儲較大的twitter個人資料ID

這裏是我收集少數用戶的追隨者列表的腳本。

// store in mongoDB 
var storeUserFollowerList = function (screenName, followerList) { 
twitter_profile.update ({ screen_name : screenName }, { 
     follower_list : followerList 
} , function (err, doc) { 
    if (err) { 
     console.log (err); 
     console.log (' Error while updating '); 
    } else { 
     console.log ('Successfull updation '); 
     //console.log (followerList); 
    } 
}); 
} 
var storeUserFollowerList = function (screenName, followerList) { 
twitter_profile.update ({ screen_name : screenName }, { 
     follower_list : followerList 
} , function (err, doc) { 
    if (err) { 
     console.log (err); 
     console.log (' Error while updating '); 
    } else { 
     console.log ('Successfull updation '); 
     //console.log (followerList); 
    } 
}); 
} 

var getUserFollowerList = function (screenName, nextCursor, callback) { 
twits.get ('followers/ids', { screen_name : screenName, 
             cursor : nextCursor }, 
         function (err, data, response) { 
    //console.log (data); 
    if (err) { 
     console.log (err + ' for ' + screenName); 
    } else { 
     callback (screenName, data['ids']); 
     //console.log (data['ids']) 
     if(data["next_cursor_str"] != "0") { 
      getUserFollowerList (screenName, data["next_cursor_str"], callback); 
     } 
    } 
}); 
} 

var getUsers = function (callback) { 
screenNames.forEach (function (screenName) { 
    /* 
    By default, an API endpoint that supports cursoring will assume 
    -1 was passed as cursor if you do not provide one 
    */ 
    callback (screenName, "-1", storeUserFollowerList); 
}); 
} 

這是我如何得到這些追隨者

var getFollowerListOfFollowers = function(followerList, i) { 
// if current follower is not in db then search for its follower list and update db 
twitter_profile.find ({ id : followerList[i] }, function (err, dbData) { 
    if (err) { 
     console.log (err); 
    } else { 
     if (dbData.length > 0) { 
       console.log (' we have this user ... ignore '); 
       getFollowerListOfFollowers (followerList, ++i); 
     } else { 
      get_follower_list (' ' + followerList[i], enter_in_db); 
      getFollowerListOfFollowers (followerList, ++i); 
     } 
    } 
}); 
} 

var getFollowerOfFollowers = function() { 
screenNames.forEach (function (screenName) { 
    twitter_profile.find ({ screen_name : screenName }, 
             function (err, dbData) { 
     if (err) { 
      console.log (err); 
     } else { 
      if (dbData.length > 0) { 
       // get follower list for each follower of this user 
       getFollowerListOfFollowers (dbData[0]['follower_list'], 0); 
       //console.log (dbData[0]['follower_list']); 
      } else { 
       console.log (' Data not found in DB '); 
      } 
     } 
    }); 
}); 
} 

最後

var enterInDB = function (id, followerList) { 
new twitter_profile ({ 
    _id: id, 
    id:  id, 
    follower_list: followerList 
}).save (function (err, doc) { 
    if (err) { 
     console.log (err); 
    } else { 
     console.log (' -----------Entered Profile into database------------- '); 
    } 
}); 
} 

var getFollowerList = function (id, callback) { 
twits.get ('followers/ids', { id : id }, function (err, data, response) { 
    //console.log (data); 
    if (err) { 
     console.log (err + ' for ' + id); 
    } else { 
     callback (id, ""+data['ids']); 
     //console.log (data['ids']) 
    } 
}); 
} 

得到錯誤的ID,如730292604265435100的跟蹤器列表,702941284181237800

+0

你能提供你的代碼,這導致了樣品ID的詳細信息錯誤?你會以更快的速度得到答案;) – KRONWALLED

+0

@KRONWALLED right!添加 ! –

回答

2

對不起,回答晚了。我的一天很忙。

我試圖通過Twitter API控制檯查找這些ID,並得到了你提到的相同結果。

在嘗試了這些ID的各種API方法後(每個人都失敗了),我決定在Twitter上查找個人資料。

這也失敗了。所以我尋找了一個隨機配置文件,只有一個追隨者,但在這個id範圍內只有一個追隨者。

我找到了!他有一個ID爲728920217020158000的追隨者。如果你通過api查看這個id,你會看到沒有結果,因爲id是無效的。

我注意到id_str字段顯示了另一個id。如果你通過api查找id 728920217020157955,你會發現他的個人資料。

因此,您必須告訴twit也會將字符串化的ID返回給您。

我沒有安裝twit現在,所以你可以這樣

twits.get ('followers/ids', { id : id, stringify_ids : true } 
    //console.log (data); 
    if (err) { 
     console.log (err + ' for ' + id); 
    } else { 
     callback (id, ""+data['ids']); 
     //console.log (data['ids']) 
    } 
}); 

嘗試一下有關這個端點訪問Twitter API Reference

+0

謝謝你!你是一個拯救生命的人:)!愚蠢的我不讀的文件壽! –

相關問題