概要
TweepyのAPI v2は最低限しか情報を取得しないので、*_fields
で取得したいプロパティを指定しましょうというお話です。
ツイートを取得
ツイートの作成時間を知りたくて、いつものようにget_tweetしました。
>>> print(api.get_tweet(20).data.created_at)
None
データの取得方法
None
って何
None
とは🤔
ツイートの作成時間なんていう重要そうな項目、普通に考えたらないわけないので、ソースコードを見に行くことにしました。
TweepyのTweetクラスのソースコードを見ていたところ、どうやらtweet.data
で内部データを取得できるようです。
やってみましょう。
内部データを見る
>>> print(api.get_tweet(20).data.data)
{'id': '20', 'text': 'just setting up my twttr'}
なんと、idとtextしかそもそもないことがわかりました。では、created_atのようなプロパティはどこへ消えてしまったのでしょう?
ドキュメントは読んどけ
答えは公式ドキュメントに書いてありました。
tweet_fields
ですが、str
かlist[str]
で取得したいプロパティを指定することでプロパティが帰ってくるようです。
実践
>>> print(api.get_tweet(20, tweet_fields=["created_at"]).data.data)
{'created_at': '2006-03-21T20:50:14.000Z', 'id': '20', 'text': 'just setting up my twttr'}
しっかりcreated_at
が帰ってきました。
応用
>>> for status in api.get_users_tweets(783214, tweet_fields=["created_at"]).data:
... print(str(status.id) + " : " + str(status.created_at))
1491089523291394052 : 2022-02-08 16:40:20+00:00
1491089514818846723 : 2022-02-08 16:40:18+00:00
1491085462013759491 : 2022-02-08 16:24:11+00:00
1491084952846352388 : 2022-02-08 16:22:10+00:00
1491084940624248836 : 2022-02-08 16:22:07+00:00
1491084675225427969 : 2022-02-08 16:21:04+00:00
1491084352800894978 : 2022-02-08 16:19:47+00:00
1491084344579997699 : 2022-02-08 16:19:45+00:00
1491084033874345986 : 2022-02-08 16:18:31+00:00
1491082777021792262 : 2022-02-08 16:13:31+00:00
*_fields
は結構どこでも取得できるようです。
結論
最低限しか取得しないから、取得したいプロパティを*_fields
で指定しよう!