Python初心者がTwitterのタイムラインから単語検索してリストにメンバー追加してみた話【2020】

新月一2020-07-26AutomationPython 自動化 Tweepy

twitter

TIP

Pythonを使ったTwitter自動化に関する話の続きです。 Twitterのリストにユーザーを追加する方法で随分詰まったので、備忘録としてこの記事を残しました。

ここから本題

1. PythonでTwitterのリスト追加を行う

とりあえず、APIへの登録とconfigファイルの作成は前の記事↓を参考にしてください。

次に、リスト(Twitterのリストです)へのメンバー追加ですが、コード自体は下のような感じで行けます。

#coding:utf-8

import config
import tweepy
# Accesss Token Secert
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
auth = 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アプリで作成したリスト名とは違います。(参考にしたのは 次の記事です)

tweepyでtwitterのリスト周りを触るopen in new window

スラグを確認するには以下のコードを実行します。

#coding:utf-8
import config
import tweepy
# Accesss Token Secert
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
auth = 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初心者でも頑張ればある程度はわかると思います。

tweepy/tweepyopen in new window

とまあまずはリスト追加をPythonで行ってみたのですが、実はこれはやりたいことの前段階でしか無くて。本当はある単語を呟いた人をリストに入れるというのがやりたい。ということで、それを実現できたコードはこちら。

2. 単語検索してリスト追加

フォローを自動化して増やしていくと、当然ながらTLがとても速くなります。それではフォローしている人のつぶやきを効率的に見ることはできませんから、リスト管理することが必要になってきます。

ということで、タイムラインから単語を検索してリスト追加することを自動化するのが今回の課題となります。

これを一部ですが実現できるのが次のコードです。

#coding:utf-8
import config
import tweepy
# Accesss Token Secert
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AT, ATS)
api = tweepy.API(auth)

#ここまで恒例のヤツ

listword1 = "アズールレーン" #検索ワード1
listword2 = "アズレン" #検索ワード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制限引っかかりやすいので特に注意

    ということで今日はこの辺で。

ここまで読んでいただき、ありがとうございました!

Last Updated 2023-03-10 17:35:41