ミニプログラム

興味があるTwitterユーザーを自動フォローするプログラム

twitter-follow

Twitterを指定ワードで検索して表示されたユーザーを自動フォローするプログラムです。

ここでは「#Python」というハッシュタグで検索して表示されたユーザーを自動フォローするコードになっています。

事前準備

Twitter APIを利用するプログラムです。実行の前に以下のページ等を参考にTwitter Developerに登録するなどAPIを利用する準備をしておいてください。また、ツイートの検索だけでなくフォローもAPIを通じて行うので、アプリのアクセスレベルは「Read and write」以上にしておく必要があります。

また今回は、TweepyというtwitterをPythonで扱う際に便利なライブラリを利用しています。

pip install tweepy

によりインストールしておきましょう。

ソースコード

import time
import tweepy

CK = '取得したキーを入れる' # Consumer API key
CKS = '取得したキーを入れる' # Consumer API Secret key
AT = '取得したキーを入れる' # Access token
ATS = '取得したキーを入れる' # Access token secret

auth = tweepy.OAuthHandler(CK, CKS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)

query = "#Python"
results = api.search(q=query, count=100)

for result in results:
    screen_name = result.user.screen_name
    print('@' + screen_name + 'をフォロー処理中...')
    for i in range(3): #RateLimitにかかったら3回までリトライ
        try:
            api.create_friendship(screen_name)
            print('フォローに成功しました')
        except tweepy.RateLimitError as e:
            print(e)
            time.sleep(15 * 60) #15分待機
        except tweepy.TweepError as e:
            print(e)
            break
        else:
            time.sleep(5)
            break

コードの解説

1~2行目でライブラリのインポート、4~7行目でAPIの各種キーを代入しています。

9~11行目は、認証関連の処理を行うtweepyでの決まった書き方です。この後、変数apiに代入したAPIインスタンスをもとに各種メソッドを実行していくことになります。

13行目で検索ワードを変数queryに代入、

14行目は、tweepyのメソッドAPI.search()により検索ワードをqueryとしてツイートを100件(最大値)検索、結果を変数resultsに代入しています。

16行目以降でfor文により一つ一つのツイートについて展開・処理していきます。

17,18行目は、user.screen_nameによりツイートしたユーザーのスクリーンネームを取得、代入、print文により表示しています。

19行目はtry~except文でexcept節にひっかかったときにリトライ処理を行うための行です。twitter APIには利用制限(Rate Limit)があり、後に制限を受けたときの待機処理を入れていますが、制限にひっかかってしまうとtry節がスキップされてしまうので、ここで2重ループにすることによりtry節を再実行できます。

20行目以降でtry~exceptによりエラー処理を行います。

21行目は、tweepyのメソッドAPI.create_friendship()によりフォロー、成功した場合は29行目のelse節に飛び5秒待機後ループを終了させます。成功時は19行目のリトライ処理が必要ないので、ここでbreak文を挿入してください。なお、この5秒待機の処理はTwitter側の負荷軽減のために入れています。ある程度の待機処理を入れないとAPIの利用制限(RateLimitError)とは別のエラー(26行目のexcept節が実行)により制限されてしまうことがあります。

23行目のexcept節は制限を受けたときの15分待機の処理を書きます。Twitter APIには24時間ごとの利用制限と15分ごとの利用制限があるため、ここでは15*60で15分となっています。

26行目はその他のエラーが発生したときの処理を書いています。APIの制限以外の何らかの理由によりフォローできなかった場合は、リトライしても成功する可能性が低いと思われるので、スキップのためにbreakによりループを抜けて次のツイートの処理に移ります。

タイトルとURLをコピーしました