ツイッターで自動検索して自動ファボするスクリプト
こちら、Node.jsでTwitter検索から100件を超えるツイートを取得したいを参考に改造しました。@ryo-aさんありがとうございます。
var twitter = require('twitter');
//変更すべき設定
var 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: 10, max_id: nextResultsMaxIdArg }, (error, searchData, response) => {
for (item in searchData.statuses) {
let tweet = searchData.statuses[item];
console.log('@' + tweet.user.screen_name+' : '+tweet.text);
// ここからファボするスクリプト
let param = ({id: tweet.id_str})
client.post('favorites/create', param, (err, response) => {
if(err) {
console.log(err[0].message);
} else {
console.log('■ いいねしました!')
const username = response.user.screen_name;
const favoritedTweetId = response.id_str;
console.log(`■ Favorited: https://twitter.com/${username}/status/${favoritedTweetId}`);
}
});
// ここまで
}
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;
}
});
}
maxIdというのがなんのためにあるのか、なぜそれをsearchTweet()の属性に入れてるのかわからない。おそらくcount数に達したら終わりにするよう利用しているみたいです。誰か教えてください
### 追記 #### 注意

つづく
### つづき どうやらこのエラーのようだ。 Error: HTTP Error: 429 Too Many Requests コンソールを眺めてエラーが出始めたらすぐにCtrl+Cで止めるが良い。あんまり出しているとペナルティがあるかどうかわからない。
”API v1.1で、リソースごとに決められたアプリケーションの速度制限を使い果たしたためにリクエストが処理できなかった場合に返されます。API v1.1 の速度制限を参照してください。”
Twitter 開発者 ドキュメント日本語訳
WebAPIを設計するうえでの利用制限(Rate Limit)について調べた