0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonでTwitterのフォローbot作った。(今更)

Last updated at Posted at 2021-03-28

前提というか動機

私事ですが、勉強と趣味のゲームでフォロワーさん欲しいなと思ったのと、フォローbot作って、フォロワーさん増やして、ゲーム内のカスタムマッチ用の権限を貰おうという2つの魂胆からです。

BOTさんの機能

1.認証(ログイン)
2.キーワード検索
3.いいね
4.RT
5.フォロー

動作環境

macOS Big Sur ver11.0.1
Python 3.9
tweepy 3.10.0

実装準備

上記、動作環境に書いたtweepyをインストールしましょう。
やり方はターミナルを開いて、以下の通りです。

pip install tweepy

※pipに関しては、ここでは省略します。

その次に、Twitter APIを使用するためにTOKENを取得するのですが、以下のサイトでやり方があるので、割愛します。
また、APIを使用する際に、英語で申請理由を記載しなければならないのですが、google翻訳を使って書くか、google検索でサンプルを探すのが良いかと思います。

コーディング前の準備としては、これで終わりです。

コーディングと説明

では、早速コーディングしていきましょう。

最初は、APIを使う上でのKEYとTOKENの設定からです。
KEYとTOKENはTwitter APIの申請が受理されれば、Developerのページにて発行できるので、そこから取得してください。
コーティングすると以下の通りです。
変数に直接、KEYやTOKENを代入してあげれば問題ないですね。
(ぶっちゃけると、変数に入れなくて直接認証のfunctionに入れてもいいです。)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# tweepyの呼び出し
import tweepy

# Twitter APIのKEYとTOKENを変数にセット
API_KEY = '**************************'
API_SECRET = '**************************'
ACCESS_TOKEN = '**************************'
ACCESS_TOKEN_SECRET = '**************************'

# Twitter API認証
auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

次は今回、目玉でもある「キーワード検索」「いいね」「RT」「フォロー」のコーディングを一緒に見てみましょう。

# 認証情報を変数に格納
api = tweepy.API(auth)

# 検索用のキーワードを変数に格納
query = 'プログラミング'

# 上記のキーワードからツイートを検索する
# countは50件検索するという意味なので、ここの数値を変更すると検索件数が変わる
targets = api.search(q=query, count=50)

# 検索結果の50件から該当ツイートに対して、いいね・RT・フォローをしていく
for target in targets:

    # user.screen_nameはtwitterのID(@~~)を取得するもの
    screen_name = target.user.screen_name

    # idはツイートごとに振られているidを取得している
    # twitter.com/xxxxxxxx/status/137600217487xxxxxxx)の 13760000...のやつ
    tweet_id = target.id

    # ツイートのidからcreate_favoriteでいいねをしてあげられる
    api.create_favorite(tweet_id) 

    # ツイートのidからretweetでRTをしてあげられる
    api.retweet(tweet_id)

    # 最初に取得したscreen_nameからcreate_friendshipでフォローができる
    api.create_friendship(screen_name)

あとは、例外処理とかを考慮してあげると完成コードはこちら

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tweepy
import time

# Twitter APIのKEYとTOKENを変数にセット
API_KEY = '**************************'
API_SECRET = '**************************'
ACCESS_TOKEN = '**************************'
ACCESS_TOKEN_SECRET = '**************************'

# Twitter API認証
auth = tweepy.OAuthHandler(API_KEY, API_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

# 認証情報を変数に格納
api = tweepy.API(auth)

# 検索用のキーワードを変数に格納
query = 'プログラミング'

# 上記のキーワードからツイートを検索する
# countは50件検索するという意味なので、ここの数値を変更すると検索件数が変わる
targets = api.search(q=query, count=50)

# 検索結果の50件から該当ツイートに対して、いいね・RT・フォローをしていく
for target in targets:

    # user.screen_nameはtwitterのID(@~~)を取得するもの
    screen_name = target.user.screen_name

    # idはツイートごとに振られているidを取得している
    # twitter.com/xxxxxxxx/status/137600217487xxxxxxx)の 13760000...のやつ
    tweet_id = target.id

    print('@' + screen_name + 'を処理中...')

    for i in range(3): #RateLimitにかかったら3回までリトライ
        try:
            # ツイートのidからcreate_favoriteでいいねをしてあげられる
            api.create_favorite(tweet_id) 
            print('いいね成功')
            
            # ツイートのidからretweetでRTをしてあげられる
            api.retweet(tweet_id)
            print('RT成功')
            
            # 最初に取得したscreen_nameからcreate_friendshipでフォローができる
            api.crea te_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

最後に

記事を読んでいただき、ありがとうございます。
久々に記事を書いたので、至らない点やわからない点があれば質問してください。
できる限りお答えできるように致します。
それでは。

0
1
1

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?