これまでpythonでtwitter APIを使用して自動化する方法について解説をしてきました
今回の記事では、pythonでtwitter botを作成していきたいと思います
2024/4/13追記
TwitterのAPIが有料化してしまいましたが、APIキーがなくてもbotを作成できるPythonプログラムを作成したので、参考にしてください
pythonでtwitterを操作してみたい
pythonでtwitterのbotを作成したい
pythonでtwitterを自動化したい
といった方に向けて、書いていきます!
以下の記事では、pythonでtwitterを使う方法をまとめて解説しているので、参考にしてみてください
pythonでtwitterを扱えるようになると、twitterで行われている懸賞に自動で応募することができるようになります
コピペでOK!アフタフォロー付きのtwitter懸賞自動化コード
また、twitterアフィリエイトを自動化することもできます
コピペでOK!pythonを使ってtwitterアフィリエイトを自動化しよう
Contents
pythonでtwitter botを作成する準備
まずはpythonでtwitter botを作成するための準備を行なっていきましょう
twitter APIを取得する
pythonでtwitterを操作するためには、twitter APIを取得する必要があります
下記記事でかなり詳しくtwitter APIの取得方法を解説しているので、そちらの記事を参考にしてください
各種APIキーを取得する
twitter APIの申請→利用権限を取得できたら、各種API関連のキーを取得していきます
必要なキーは4種類
- Consumer Key(API Key)
- Consumer Secret(API Secret)
- Access Token
- Access Token Secret
https://tools.tsukumijima.net/twittertoken-viewer/
上記のサイトを使えば、Access TokenとAccess Token Secretは取得することができます
tweepyのインストール
pythonでtwitterを操作するためには、tweepyが必要になります
Macならターミナル、Windowsならコマンドプロンプトで以下のコマンドを入力します
pip install tweepy
これでpythonでtwitterを操作する準備は出来ました
あとはコードを書いていきましょう
pythonでtwitter botを作成するコード
定期的にツイートするbot
まずは定期的にツイートするbotを作るためのコード
import random
import tweepy
#****には自身のコードを入力してください
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
#****にツイートしたい内容を入力していきます.「,」で区切ることで、複数登録できます
tweetlist=["****"]
#リストに含まれるツイート内容をランダムでツイート
api.update_status(random.choice(tweetlist))
Pythonのコードを定期的に自動で実行させるためには、レンタルサーバーを使って、定期実行させる必要があります
定期実行の設定も行いたい場合には、以下の記事も参考にしてください
リアルタイムに応答するbot
特定のキーワードがツイートされたら、それに対してリアルタイムに応答する
import tweepy
#****には自身のコードを入力してください
CONSUMER_KEY = '****'
CONSUMER_SECRET = '****'
ACCESS_TOKEN = '****'
ACCESS_SECRET = '****'
#****にキーワードを入力
word="****"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
api = tweepy.API(auth)
class MyStreamListener(tweepy.Stream):
def on_status(self, status):
if 'RT @' not in status.text[0:2]:
if 'http' not in status.text:
api.retweet(id=status.id)
#それぞれのキーを入力
myStreamListener = tweepy.Stream('CONSUMER_KEY here',
'CONSUMER_SECRET here',
'ACCESS_TOKEN here',
'ACCESS_SECRET here')
#myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener)
myStreamListener.filter(track=[word], threaded=False)
今回のサンプルコードでは、「****」というツイートに対して、リアルタイムでリツイートする、という内容になっています
「****」を好きなワードに変更することで、そのワードがツイートされたらリアルタイムでリツイートします
tweepy.streamの使い方はレファレンスを参考にしてください
Pythonを使ってTwitter APIキーなしでbotを作る
これまでTwitterのbotを作成するためには、APIキーが必要でした
ここからは2024年度版のPythonを使ってTwitter APIキーなしでbotを作る方法を紹介します
具体的にはPythonのライブラリである「Twikit」を使用します
Twikitとは
TwikitはAPIキーなしで、スクレイピングを活用してツイートしたりツイートの検索、ツイート・トレンドの取得が可能なPythonライブラリです
Twikitとlolipopを使うことで、指定した時間にツイートを行うbotを作成することが可能
Twikitの特徴
Twikitの特徴は、APIキーなしで無料でTwitter botを作成することができる点です
APIキーを使用しないため、制限なく利用できます
※凍結リスクはあります
Twikitを使ってPythonでTwitter botを作成する
では実際にTwikitを使ってTwitter botを作成していきます
Twikitの使い方
まずはTwikitをインストールしましょう
pip install twikit
インストールが完了したら、ライブラリをインポートして、クライアントを定義します
クライアントの第一引数には言語を指定しますが、日本人の場合は「ja」でOK
from twikit import Client
client = Client('ja')
スクレイピング技術を活用しているので、アカウントにログインする必要があります
第二引数のメールアドレスはなくても大丈夫です
client.login(
auth_info_1='username',
auth_info_2='xxxx@example.com',
password='password'
)
これでTwitterアカウントにログインできるようになりますが、ログインするたびにアカウントに通知が出ます
煩わしいので、cookieを保存・読み込ませて、通知が出ないようにします
# ログイン情報を cookies.json に保存する
client.save_cookies("cookies.json")
次にcookieを読み込ませます
# ログイン情報を cookies.json から読み込む
client.load_cookies("cookies.json")
これでログインするたびに通知が出なくなります
ツイートを行うには、create_tweetです
# ツイートを作成
client.create_tweet("テスト")
画像や動画のツイートも可能
ローカル環境の画像や動画を読み込むには、upload_mediaを使用
# ローカルの画像をツイート
media_list = [
client.upload_media("xxx.png"),
client.upload_media("xxxx.mp4", wait_for_completion=True)
]
client.create_tweet("テスト", media_list)
wait_for_completionをTrueにしておくと、ファイルがアップロードされるまで待機します
ツイートの検索を行うには、search_tweetを使用します
#記事作成時のトピックを検索してます
tweets = client.search_tweet("コナンの映画", "Latest")
for tweet in tweets:
print("-------------------------------")
print(tweet.text)
次にいいねとリツイートです
いいねはtweet.favorit()
リツイートはtweet.retweer()です
Latestは最新ツイートの検索です
Topicにすることで、話題のツイートを取得可能
また、第三引数の「5」はいくつのツイートをいいね・リツイートするかを決めています
tweets = client.search_tweet("コナンの映画", "Latest", 5)
for tweet in tweets:
tweet.favorite()
tweet.retweet()
他にもユーザー検索やタイムライン検索などもできますが、頻繁に使用するのはここら辺だと思いますので、他の機能が気になる方は、ドキュメントを確認してください
from twikit import Client
client = Client('ja')
client.login(
auth_info_1='username',
auth_info_2='xxxx@example.com',
password='password'
)
# ログイン情報を cookies.json に保存する
client.save_cookies("cookies.json")
# ログイン情報を cookies.json から読み込む
client.load_cookies("cookies.json")
# ツイートを作成
client.create_tweet("テスト")
# ローカルの画像をツイート
media_list = [
client.upload_media("xxx.png"),
client.upload_media("xxxx.mp4", wait_for_completion=True)
]
client.create_tweet("テスト", media_list)
#記事作成時のトピックを検索してます
tweets = client.search_tweet("コナンの映画", "Latest")
for tweet in tweets:
print("-------------------------------")
print(tweet.text)
tweets = client.search_tweet("コナンの映画", "Latest", 5)
for tweet in tweets:
tweet.favorite()
tweet.retweet()
lolipopを使って定期実行するやり方はこちらの記事を参考にしてください
また、しばらくしたら懸賞に自動応募するやり方などもアップしていこうと思います