やりたいこと
自動で何か喋ってくれるTwitterのbotを作りたい。
前回の記事。
前回までで、僕のツイートを学習して文章を自動生成するところまでは出来ました。
今回は自動生成した文章をツイートするところまでやりたいと思います。
また、自動で僕のツイートを取得してDBに格納する機能もつけます。
開発環境
・Windows 10
・Python 3.10.7
・tweepy 4.10.1
やったこと
1.tweepyのインストール
2.TwitterのAPI KEYの取得
3.ツイートを取得する機能の作成
4.ツイートから生成した文章をツイートする機能の作成
1.tweepyのインストール
まず、PythonからTwitterAPIを実行するためのライブラリをインストールします。
今回はtweepyというものを使います。
2.TwitterのAPI KEYの取得
botとして運用するアカウントを新規に作成して、Twitter開発者登録する。
するとAPI KEYが発行されるのでそれをメモする。
開発者登録の仕方は以下のページを参考にしました。
3.ツイートを取得してDBに格納する機能の作成
ざっくり書くとこんな感じです。
import tweepy
client = tweepy.Client(consumer_key = ここにApi Key,
consumer_secret = ここにApi Key Secret,
bearer_token = ここにBearer Token,
access_token = ここにAccess Token,
access_token_secret = ここにAccess Token Secret,)
def getTweets():
tweets = client.search_recent_tweets(query='from:ここにユーザ名 -RT', tweet_fields=['id', 'text', 'created_at'])
return tweets.data
ポイントはtweet_fields
引数でしょうか。
ここに欲しいツイートのフィールドを指定しています。
ツイートのID、本文、それと投稿日時です。
3-1.ツイートの投稿日時を日本時間に変換する
取得したツイートの日時がどうやら9時間ずれているようでした。
2022-09-08 03:56:52+00:00
なので、タイムゾーンを考慮した時間に変換します。
def convertTime(timeStr, format='%Y-%m-%d %H:%M:%S%z'):
postedOn = datetime.datetime.strptime(str(timeStr), format)
return postedOn.astimezone().strftime('%Y-%m-%d %H:%M')
strptime
関数で文字列からdatetime型にしてastimezone
で端末のタイムゾーンを適用した日時にします。
4.ツイートから生成した文章をツイートする機能の作成
取得したツイートをDBに格納したり、DBのデータを学習して文章を生成したりといった機能も用意しましたが、ここでは割愛させていただきます。
(そこの記事はまた別の機会に)
ツイートを投稿する処理はざっくりこんな感じ。
import tweepy
client = tweepy.Client(consumer_key = ここにApi Key,
consumer_secret = ここにApi Key Secret,
bearer_token = ここにBearer Token,
access_token = ここにAccess Token,
access_token_secret = ここにAccess Token Secret,)
def postTweet(message):
client.create_tweet(text=message)
create_tweet
関数のtext
引数に文字列を渡しています。
最初、引数名を指定せずに直接create_tweet(message)
としていましたが、エラーが発生したので引数名を明示しました。
このpostTweet
を実行すればツイートが投稿されます。
参考資料