TIPPythonを使ったTwitter自動化に関する話の続きです。 Twitterのリストにユーザーを追加する方法で随分詰まったので、備忘録としてこの記事を残しました。
ここから本題
1. PythonでTwitterのリスト追加を行う
とりあえず、APIへの登録とconfigファイルの作成は前の記事↓を参考にしてください。
次に、リスト(Twitterのリストです)へのメンバー追加ですが、コード自体は下のような感じで行けます。
#coding:utf-8
import configimport tweepy# Accesss Token SecertCK = config.CONSUMER_KEYCS = config.CONSUMER_SECRETAT = config.ACCESS_TOKENATS = config.ACCESS_TOKEN_SECRETauth = tweepy.OAuthHandler(CK, CS)auth.set_access_token(AT, ATS)api = tweepy.API(auth)#ここまでいつもの#リスト追加api.add_list_member(screen_name='追加するユーザーの@以降の名前', slug='リストのスラグ※要注意', owner_screen_name='自分の@以降の名前')このスラグについてですが、これはTwitterアプリで作成したリスト名とは違います。(参考にしたのは 次の記事です)
スラグを確認するには以下のコードを実行します。
#coding:utf-8import configimport tweepy# Accesss Token SecertCK = config.CONSUMER_KEYCS = config.CONSUMER_SECRETAT = config.ACCESS_TOKENATS = config.ACCESS_TOKEN_SECRETauth = tweepy.OAuthHandler(CK, CS)auth.set_access_token(AT, ATS)api = tweepy.API(auth)#ここまでいつものscreen_name="kanzak1dea" #リスト作成者の@以降の名前for twilist in api.lists_all(screen_name=screen_name): print("slug="+twilist.slug) print("name="+twilist.name)すると以下のようにリストのスラグと名前が出てくるので、そのスラグ名を先ほどのslugの所に入れればOKです。
slug=list8
name=“アズールレーン”
詳しく知るには公式のリファレンスを見るとよいです。Python初心者でも頑張ればある程度はわかると思います。
とまあまずはリスト追加をPythonで行ってみたのですが、実はこれはやりたいことの前段階でしか無くて。本当はある単語を呟いた人をリストに入れるというのがやりたい。ということで、それを実現できたコードはこちら。
2. 単語検索してリスト追加
フォローを自動化して増やしていくと、当然ながらTLがとても速くなります。それではフォローしている人のつぶやきを効率的に見ることはできませんから、リスト管理することが必要になってきます。
ということで、タイムラインから単語を検索してリスト追加することを自動化するのが今回の課題となります。
これを一部ですが実現できるのが次のコードです。
#coding:utf-8import configimport tweepy# Accesss Token SecertCK = config.CONSUMER_KEYCS = config.CONSUMER_SECRETAT = config.ACCESS_TOKENATS = config.ACCESS_TOKEN_SECRET
auth = tweepy.OAuthHandler(CK, CS)auth.set_access_token(AT, ATS)api = tweepy.API(auth)
#ここまで恒例のヤツ
listword1 = "アズールレーン" #検索ワード1listword2 = "アズレン" #検索ワード2
for status in api.home_timeline(count=40): #自分のタイムラインのステータス取得(個別対応)40個取得 userid = status.user.id #ツイートのユーザーid username = status.user.name #ツイートのユーザ名 tweet = status.text #ツイートの内容 print("--------------------------") print("名前:"+username) print(tweet) print("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")
if listword1 in tweet or listword2 in tweet or listword1 in username or listword2 in username: #検索ワード1か検索ワード2がツイートに含まれていたら api.add_list_member(user_id=userid, slug="list1", owner_screen_name="nahamot") #listにそのツイートのユーザ名を追加する print(listword1+"リストに"+username+"を追加しました!") print("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%") else: print(listword1+"リストに"+username+"を追加しませんでした。") print("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%")このコードの場合だと、「アズールレーン」という単語と「アズレン」という単語を検索して、アズールレーン好きな人を集めているリストに追加しています。
ただし、注意としてリスト追加は連続して行うとAPI制限に引っかかりやすくなるということは覚えておいてください。
まだまだ改良の余地はあるのですが、少しずつ実現できていく感じが楽しいですね!
3. まとめ
-
Twitterのリスト名とslugは違うので確認してコードに組み込む必要がある
-
タイムラインから単語を検索してリスト追加自動化に成功
-
リスト追加はAPI制限引っかかりやすいので特に注意
ということで今日はこの辺で。
ここまで読んでいただき、ありがとうございました!