如何在Node JS中存储大的twitter profile ID
我需要存储less数用户的追随者的追随者。 Twitter的followers/ids
给出了一个id
列表,而不是id_str
。 我将api返回的整个id列表存储在一个列表中。 然后为每个ID我find追随者名单。 每当我使用大IDfind他们的追随者名单,我得到错误Error: Sorry, that page does not exist
。 我试图将ID转换成string,但仍然错误仍然存在。 我肯定错过了什么。 我正在使用twit( https://github.com/ttezel/twit )库。 任何帮助将不胜感激。
这里是我收集less数用户的追随者列表的脚本。
// 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'] ) } }); }
获取730292604265435100
ID的错误
抱歉回复晚了。 我的一天很忙。
我试图通过Twitter API控制台查找这些ID,并得到了你提到的相同的结果。
在尝试了这些ID的各种API方法后(每个人都失败了),我决定在Twitter上查找个人资料。
这也失败了。 所以我寻找了一个随机的configuration文件,只有一个追随者,而在这个id范围内只有一个追随者。
我find了一个! 他有一个ID为728920217020158000
的追随者。 如果你通过api查看这个id,你会看到没有结果,因为id是无效的。
我注意到,id_str字段显示了另一个ID。 如果你通过api查找id 728920217020157955
,你会发现他的个人资料。
所以你必须告诉twit
把string的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参考