0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TwitterAPIを使ってツイートを取得したりツイートを投稿したりする【Python + tweepy】

Posted at

やりたいこと

自動で何か喋ってくれる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に格納する機能の作成

ざっくり書くとこんな感じです。

TwitterAccessor.py
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

なので、タイムゾーンを考慮した時間に変換します。

Functiuons.py
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のデータを学習して文章を生成したりといった機能も用意しましたが、ここでは割愛させていただきます。
(そこの記事はまた別の機会に)

ツイートを投稿する処理はざっくりこんな感じ。

TwitterAccessor.py
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を実行すればツイートが投稿されます。

参考資料

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?