Twitter APIの search/tweets
では1回あたり(=1ページあたり)100件までしか取得できませんが、search_metadata
オブジェクト内のnext_results
を含めたクエリでもう一度リクエストを投げれば次のページも取得できます。
要するに再帰で回してあげればOKというわけです。
ここではtwitter を使いますが、その他のライブラリを使う場合でも似たような実装をすれば良いと思います。
const twitter = require('twitter');
const client = new twitter({
//取得したものを入れてください
consumer_key: "******************",
consumer_secret: "******************",
access_token_key: "******************",
access_token_secret: "******************",
});
searchTweet('ねこです よろしくおねがいします');
function searchTweet(queryArg, nextResultsMaxIdArg = null) {
client.get('search/tweets', { q: queryArg, count: 100, max_id: nextResultsMaxIdArg }, (error, searchData, response) => {
for (item in searchData.statuses) {
let tweet = searchData.statuses[item];
console.log('@' + tweet.user.screen_name+' : '+tweet.text); //実際に使う場合はここでファイルへ書き出しなどといった処理を行うことになると思います
}
if (searchData.search_metadata == undefined) {
console.log('---- Complete (no metadata) ----');
return 0;
}
else if (searchData.search_metadata.next_results) {
let maxId = searchData.search_metadata.next_results.match(/\?max_id=(\d*)/);
if (maxId[1] == null) {
return 0;
}
console.log('---- next:' + maxId[1] + ' ----');
searchTweet(queryArg, maxId[1]);
}
else {
console.log('---- Complete ----');
return 0;
}
});
}
Twitter APIはツイートや投稿者名だけなどではなく、様々な情報を返してくれます。(投稿者のフォロワー数など)
公式ドキュメントから使えそうな要素を見つけてみるのも楽しいと思います。