【Python】Twitter APIを使って特定のワードを含むツイートをリツイートするbotを作成

この記事では、PythonでTwitter APIを使って特定のワードのツイートを検索してリツイートするbotを作成する方法を紹介します。

これを使えば、ቻンቻンがቺቻቺቻリツイート(@chinmochi_RT)のようなbotを作ることができます。

Twitter APIを利用するためには申請が必要です。まだTwitter APIを使用するための開発者申請をしていない人は以下の記事を参考に申請してみてください。

Twitter開発者アカウント(Twitter デベロッパー アカウント)の申請方法
Twitter開発者アカウント(Twitter デベロッパー アカウント)の申請方法

TwitterAPIを利用するために必要な「Twitter開発者アカウント」(Twitter Developer Account)の取得方法や申請に通過しやすくなる申請文の書き方などを説明します。

記事を見る
目次
  1. 作るプログラムの仕様について
  2. ソースコードの紹介
  3. ソースコードの解説

作るプログラムの仕様について

このような仕様で作ります。

ソースコードの紹介

まずは必要なライブラリのインストールをします。

pip install tweepy

または

py -m pip install tweepy

こちらがソースコードです。コピペしてログイン情報や反応ワードを変えればそのまま使えます。

import tweepy


CK = "ここにコンシューマーキーを入力"
CS = "ここにコンシューマーシークレットを入力"
AK = "ここにアクセストークンを入力"
AS = "ここにアクセスシークレットを入力"

word = "ここにRTするワードを入力"

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AK, AS)
api = tweepy.API(auth)

print('実行中')

class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        if 'RT @' not in status.text[0:4]:
            if 'http' not in status.text:
                api.retweet(id=status.id)
    
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)

myStream.filter(track=[word], is_async=True)

ソースコードの解説

ここではソースコードの解説をします。

import tweepy
import time

CK = "コンシューマーキーを入力"
CS = "コンシューマーシークレットを入力"
AK = "アクセストークンを入力"
AS = "アクセストークンシークレットを入力"

word = 'ここにRTするワードを入力'

auth = tweepy.OAuthHandler(CK, CS)
auth.set_access_token(AK, AS)
api = tweepy.API(auth)

print('実行中')
        

この部分ではまずimportのところでtweepy(TwitterAPIをPythonで簡単に扱えるやつ)を適用します。

そして、コンシューマーキーなどの認証情報やリツイートするワードを定義し、コンソールに実行中であることを表示します。

    class MyStreamListener(tweepy.StreamListener):
    def on_status(self, status):
        if 'RT @' not in status.text[0:4]:
            if 'http' not in status.text:
                api.retweet(id=status.id)
    
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
        
myStream.filter(track=[word], is_async=True)

ここではリアルタイムにツイートを取得し、RTしています。

ユーザーが止めるまでは無限ループするようにしています。

これだけで簡単にリアルタイムでリツイートするbotが作れます