Twitter API を Python で扱う時に便利なのが Tweepy という Twitter API をラッピングしたライブラリです。
この Tweepy を使い特定のキーワードを含むツイートにいいねする方法を解説します。
- 特定のキーワードを含むツイートにいいねする Python コード
- 解説 1. 事前準備|Tweepy の ACCESS TOKEN、SECRET KEY をセット
- 解説 3. 初期パラメータセット|Tweepy で「いいね」するための設定値
- 解説 4. メイン処理|Tweepy で「いいね(favorite)」処理実行
- Tweepy で特定のキーワードを含むツイートにいいねする Python コード のまとめ
リンク
特定のキーワードを含むツイートにいいねする Python コード
import tweepy import time import random CONSUMER_KEY="XXXXXXXXXX" CONSUMER_SECRET="XXXXXXXXXX" ACCESS_TOKEN="XXXXXXXXXX" ACCESS_SECERET="XXXXXXXXXX" # consumer 第一引数に(consumer key) 第二引数に(consumer secret) # auth = tweepy.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET) # ACCESS_TOKEN_KEY 第一引数に(Access token) 第二引数に(Access token secret) # auth.set_access_token(ACCESS_TOKEN,ACCESS_SECERET) # wait_on_rate_limit = レート制限が補充されるのを自動的に待つかどうか # # wait_on_rate_limit_notify = Tweepyがレート制限の補充を待っているときに通知を出力するかどうか # api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True) # screen name (@name)を取得 my_name = api.me() my_screen_name = my_name.screen_name # 取得したいキーワード # search_list = ['AAAAA', 'BBBBB'] # ツイート数10件 # tweet_count = 10 #自動フォローと判定されにくいようにフォロー間隔 sleep をダンダム値とする random_min_time = 4 #sleepでとり得る最小値 random_max_time = 15 #sleepでとり得る最大値 def main(): for search in search_list: liked_count = 0 #いいねカウンター print(my_screen_name,': ','------------------------------') print(my_screen_name,': ','Searching... {}' .format(search)) # サーチ結果を格納 # search_result = api.search(q=search, count=tweet_count) for tweet in search_result: tweet_id = tweet.id user_name = tweet.user._json['name'] user_screen_name = tweet.user._json['screen_name'] tweet_status = api.get_status(tweet_id) tweet_favorite_status = tweet_status.favorited check_status = 'False' tweet_favorite_status_01 = str(tweet_favorite_status) if tweet_favorite_status_01 == check_status: try: api.create_favorite(id=tweet_id) # いいねの処理 except tweepy.TweepError as e: print(e.reason) except StopIteration: continue tweet_status = api.get_status(tweet_id) tweet_favorite_status = tweet_status.favorited print(my_screen_name,': ',user_name,'(',user_screen_name,")","いいねしました(STATUS =",tweet_favorite_status,")") liked_count += 1 sleep_random_time = random.randint(random_min_time,random_max_time) print(my_screen_name,': ',' 次のいいねまで' ,sleep_random_time,'秒待ちます') time.sleep(sleep_random_time) else: print(my_screen_name,': ',user_name,'(',user_screen_name,')','はいいね済み(',tweet_favorite_status,')なのでスキップしました') print(my_screen_name,": ","search =",search,"で",liked_count,"人いいねしました。終了します。") main()
解説 1. 事前準備|Tweepy の ACCESS TOKEN、SECRET KEY をセット
import tweepy import time import datetime import random CONSUMER_KEY="XXXXXXXXXX" CONSUMER_SECRET="XXXXXXXXXX" ACCESS_TOKEN="XXXXXXXXXX" ACCESS_SECERET="XXXXXXXXXX" auth = tweepy.OAuthHandler(CONSUMER_KEY,CONSUMER_SECRET) auth.set_access_token(ACCESS_TOKEN,ACCESS_SECERET) api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)
- 必要なライブラリの読み込みを行います。
コード | 意味 |
---|---|
import tweepy | Tweepy を読み込む |
import time | いいねの間隔を設定する sleep で利用する |
import random | sleep 間隔をランダム秒にするために利用する |
- Twitter Develpers サイトで取得したトークンやキーをセットします。
コード | 意味 |
---|---|
CONSUMER_KEY="XXXXXXXXXX" | 自分の CONSUMER_KEY をセット |
CONSUMER_SECRET="XXXXXXXXXX" | 自分のCONSUMER_SECRET をセット |
ACCESS_TOKEN="XXXXXXXXXX" | 自分の ACCESS_TOKEN をセット |
ACCESS_SECERET="XXXXXXXXXX" | 自分の ACCESS_SECERET をセット |
- Tweepy コマンド定義
コード | 意味 |
---|---|
wait_on_rate_limit | レート制限が補充されるのを自動的に待つかどうか |
wait_on_rate_limit_notify | Tweepyがレート制限の補充を待っているときに通知を出力するかどうか |
解説 3. 初期パラメータセット|Tweepy で「いいね」するための設定値
- screen name (@name)を取得
my_name = api.me() my_screen_name = my_name.screen_name
- 取得したいキーワードをセット(AAAAAとBBBBBという2つのキーワードに「いいね」する)
search_list = ['AAAAA', 'BBBBB']
- 1 キーワード毎の取得ツイート数
tweet_count = 10
- 自動フォローと判定されにくいようにフォロー間隔 sleep をダンダム値とする
random_min_time = 4 #sleepでとり得る最小値 random_max_time = 15 #sleepでとり得る最大値
解説 4. メイン処理|Tweepy で「いいね(favorite)」処理実行
- api.search() で特定のキーワード、設定した数、のツイートを取得し、search_result へ格納する
for search in search_list: liked_count = 0 #いいねカウンター # サーチ結果を格納 # search_result = api.search(q=search, count=tweet_count)
- search_result からツイートを 1 つ取り出し、tweet へ格納。ツイート毎の情報を取得する。
for tweet in search_result: tweet_id = tweet.id #ツイートIDを取得 user_name = tweet.user._json['name'] #ユーザ名を取得 user_screen_name = tweet.user._json['screen_name'] #スクリーン名(@aaa)を取得
- 「いいね」していない場合だけ「いいね」をするための判定
tweet_status = api.get_status(tweet_id) # ツイートIDからツイートステータスを取得 tweet_favorite_status = tweet_status.favorited # ツイートのいいね状態を取得 check_status = 'False' # いいね判定値をセット tweet_favorite_status_01 = str(tweet_favorite_status) # 文字列へ変換 if tweet_favorite_status_01 == check_status: # False ステータスなら
- 「いいね」処理とエラーハンドリング
try: api.create_favorite(id=tweet_id) except tweepy.TweepError as e: print(e.reason) except StopIteration: continue
- 「いいね」コマンド実行後のステータス確認と「いいね」カウンターアップ
tweet_status = api.get_status(tweet_id)
tweet_favorite_status = tweet_status.favorited
liked_count += 1
- なるべくスパム判定されないために「いいね」と「いいね」の間にランダムスリープを入れます
sleep_random_time = random.randint(random_min_time,random_max_time) time.sleep(sleep_random_time)
Tweepy で特定のキーワードを含むツイートにいいねする Python コード のまとめ
Python Tweepy を利用して「いいね」を大量に行うときは、
- アカウント凍結リスク
- スパム判定
に気をつけましょう。
すでに「いいね」しているにもかかわらず「いいね」コマンドを実行したり、短時間で「いいね」を大量につけたり、1 日に 500 件以上「いいね」しようとすると、以下のように Twitter API エラーメッセージが返ってきます。
{'code': 283, 'message': "This request looks like it might be automated. To protect our users from spam and other malicious activity, we can't complete this action right now. Please try again later."}
フォロワー数が 2,000 人を超えると凍結しにくくなりますが、Twitter 社側もユーザ保護のために「いいね」を無条件で行うスパムに対しては、どんどん厳しい処置をしてきます。
なので、最初は Python Tweepy のプログラミングを試すアカウントを作って運用してみることをおすすめします。
間違ってもメインアカウントでいきなり始めると、凍結された時に悲劇ですので。。。(体験者は語る・・・)
リンク