我建立一個應用程序下載鳴叫的具體數量。我使用的server.js node.js
和express()
。如何client.get從Twitter API使用Node.js的迭代,並表達
我創建了一個潰敗app.get('/api/tweets'...)
將數據從Twitter的API保存。如果我返回200條推文,我的代碼運行良好。但是,如果我想要300多個,res.send(data)
只返回幾個。
我創建了一個基於我的代碼用Python編寫的,它返回由Twitter API(3200)允許所有的鳴叫我的代碼:
allTweets = []
statuses = t.statuses.user_timeline(screen_name = 'user', count=100, include_rts=False)
allTweets.extend(statuses)
oldest = allTweets[-1]['id'] - 1
while len(statuses) > 0:
statuses = t.statuses.user_timeline(screen_name = 'user', count=100, max_id=oldest, include_rts=False)
allTweets.extend(statuses)
oldest = allTweets[-1]['id'] - 1
基於這一思路,我在這JavaScript
代碼寫在server.js :
app.get('/api/tweets', function (req, res) {
var standardCount = 200;
var params = {
screen_name: 'user',
count: standardCount,
include_rts: false
};
var statuses = client.get('statuses/user_timeline', params, function getTweets(error, data) {
if (error) {
console.log(error)
}
var tweets = data;
var oldest = parseInt((tweets.slice(-1)[0].id_str) - 1);
// This attempt works fine using if
if (0 < data.length) {
params = {
screen_name: 'user',
count: standardCount,
max_id: oldest,
include_rts: false
}
client.get('statuses/user_timeline', params, function getTweets(error, data) {
if (error) {
console.log(error);
}
tweets = tweets.concat(data);
oldest = parseInt((tweets.slice(-1)[0].id_str) - 1);
return res.send(tweets.slice(0, 500)));
});
}
});
});
我第一次嘗試是while (0 < data.length)
,但它並沒有返回任何結果。我改變了它的if (0 < data.length)
,但它僅返回幾鳴叫。我想:
do {
// download tweets
}
while (0 < data.length)
...有沒有成功。
什麼是使用Twitter的API來下載超過200個鳴叫迭代client.get
的最佳方式?
我不明白,你可以更新'standardCount'是以外的任何其他在'client.get 200 –
@ExplosionPills'count'參數(狀態/ user_timeline)'指定要嘗試和檢索的Tweets數量,每個不同的請求最多不超過200個。 – estebanpdl