Twitterのフォロー&RTキャンペーンに自動参加してみたくなったのでpython+tweepyコードでやってみた
気になるアカウントをフォローしてリストインのコードをパクったら、こっちも出来るんじゃ無いか?とやってみた。
このネタはあっちこっちで転がっているようで、同じ事を考えている人が多いようだ。
まあそう言うわけでやってみる。
Twitterでいろんな情報を集めたいので、自動フォローとリストインをpython+tweepyコードをパクってみた – happyman web
import tweepy
import time
# API情報(API1.1)を記入
consumer_key=' '
consumer_secret=' '
ACCESS_TOKEN=' '
ACCESS_TOKEN_SECRET=' '
#API V1.1認証
auth = tweepy.OAuthHandler("consumer_key","consumer_secret")
auth.set_access_token("ACCESS_TOKEN","ACCESS_TOKEN_SECRET")
api = tweepy.API(auth)
#検索したいキーワードをいれる。もしくははORにしてやれば良いみたい。
query = " をRTとか 色々考えて入れる。フィルターもした方が良さそう。"
#CRONで定期的に動かすのでバン対策にカウント少なめにした。
#検索方法は新しいもの(recent)、人気なもの(popular)と混在型(mixed)があるらしい。
results = api.search_tweets(q=query,result_type='mixed',count=10)
#実行
for result in results:
#検索結果でユーザーを抽出
screen_name = result.user.screen_name
print('@' + screen_name + 'をフォロー処理中...')
for i in range(3): #RateLimitにかかったら3回までリトライ
try:
if result.lang == 'ja': #日本語ユーザーかどうかフィルタリング
api.create_friendship(screen_name=screen_name) #フォローする
api.add_list_member(screen_name=screen_name,list_id="リスト番号") #リストにそのツイートのユーザ名を追加する
print('@' + screen_name + 'さんのフォローに成功しました。')
try:
api.retweet(tweet_id) #リツイートしてやる
except
Exception as e: print(e)
else:
print('@' + screen_name + 'さんは日本語アカウントではありません。')
except tweepy.TweepError as e: #エラーはこっちで処理(この辺の理解がまだできてない)
if e.reason == "[{'message': 'Rate limit exceeded', 'code': 88}]":
print(e)
time.sleep(15 * 60) #15分待機
else:
break
else:
time.sleep(5) #5秒おく
break
リツイートの部分はリツイートが何度も出来なくて落ちるので、「except Exception as e:」で逃がしてみた。
このネタは検索ワードとフィルターが工夫が要るようで、フィッシングアカウントまで拾ってリツイートしてしまいかねないので、なかなか難しい。