Twitterでいろんな情報を集めたいので、自動フォローとリストインをpython+tweepyコードをパクってみた
こういうことをTwitterでやるとアカウントBANになるのかも知れませんが、TLからいろんな情報を集めたいのでTweetを検索してリストにいれるBOTを作ってみました。
1.自動リストイン構想
興味のある話はTwitterにかなり流れて居るのですが、せっかくの情報がTLに埋もれて見逃してしまうことがあるので、そのカテゴリーのTweetをじっくり見させてもらいたいのが目的です。
フォローせずにリストだけ入れると相手方に気を悪くされそうな気がするのでフォローとリストインにしました。
勝手にフォローしても許してくれそうな人、ハッシュタグで検索しても良いよオーラの出てる人主体にする。
できるだけ怪しいアカウントは検索したときに選別しておきたい。
2.Twitter API v2では難しそう
ツイートを検索して取得とかは比較的簡単にできるようなんだが、自動フォローやリストインが私のような初心者コースではかなり難関な感じがします。
ググっても出てこないんですが、何が難しいってTwitterAPIのV1.1とV2の情報が混在していて私にはわけがわからない。
3.妥協してTwitterAPIV1.1のコードを拾ってきて少し弄ってみた。
TwitterにAPI V1.1を使いたいんじゃ申請をして。パクリ元、いや引用元は以下の通り。
TweepyでTwitterアカウントを自動フォローする方法 | みゃふのPythonプログラミング解説
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 = "#レザークラフト OR #LeatherCraft -filter:retweets"
#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 + 'さんのフォローに成功しました。')
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
こんな具合でほぼパクってきたものをちょっといじってそのまま動かした。
引用元さんありがとう。
V2でやるにはどうやったら良いのだろう?今の私には少し難問だったようだ。