Я создаю приложение для загрузки определенного количества твитов. Я использую node.js
и express()
в server.js.Как выполнить итерацию client.get из API Twitter с помощью node.js и express
Я создал маршрут app.get('/api/tweets'...)
, чтобы сохранить данные из API Twitter. Мой код работает хорошо, если я верну 200 твитов. Однако, если мне нужно больше 300 или около того, res.send(data)
возвращает только несколько.
Я создал свой код, основанный на моем коде, написанном в Python, который возвращает все твиты разрешенные Twitter API (3.200):
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)
... с неудобством.
Каков наилучший способ итерации client.get
с использованием API Twitter для загрузки более 200 твитов?
Я не вижу, где вы можете обновить 'standardCount' быть ничем иным, чем 200. –
@ExplosionPills' параметра count' в 'client.get (статусы/user_timeline) 'задает количество твитов, которые нужно попытаться получить, и не более 200 на отдельный запрос. – estebanpdl