LoginSignup
0
2

More than 3 years have passed since last update.

ツイッターで自動検索して自動ファボするスクリプト

Last updated at Posted at 2019-07-13

ツイッターで自動検索して自動ファボするスクリプト

こちら、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数に達したら終わりにするよう利用しているみたいです。誰か教えてください:bow_tone1:


追記

注意:warning:

このスクリプトをささやかに使用していたら、ファボするコードのところ、console.log(err[0].messageでエラーが出るようになった。エラー内容を調査したいがもしかしたらツイッター側のしかけ(機能ロック)されたのかもしれない。これ以上流すとアカBANされそうで非常にヨロシクないので諦めて別の方法を探すことにする。



つづく


つづき

どうやらこのエラーのようだ。
Error: HTTP Error: 429 Too Many Requests
コンソールを眺めてエラーが出始めたらすぐにCtrl+Cで止めるが良い。あんまり出しているとペナルティがあるかどうかわからない。

”API v1.1で、リソースごとに決められたアプリケーションの速度制限を使い果たしたためにリクエストが処理できなかった場合に返されます。API v1.1 の速度制限を参照してください。”
Twitter 開発者 ドキュメント日本語訳
WebAPIを設計するうえでの利用制限(Rate Limit)について調べた

0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2