前提というか動機
私事ですが、勉強と趣味のゲームでフォロワーさん欲しいなと思ったのと、フォロー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
最後に
記事を読んでいただき、ありがとうございます。
久々に記事を書いたので、至らない点やわからない点があれば質問してください。
できる限りお答えできるように致します。
それでは。