はじめに
tweepyのupdate_status()やupdate_with_media()でツイートしたときに,エラーならエラーと表示されるが成功したときに何も出ないので,成功したら成功したと表示させたい。
実装
エラーのステータスはtweepy.TweepError.reasonに入ってるらしい。
try:
api.update_status(tweet)
except tweepy.TweepError as e:
print(e.reason)
って感じにすると
[{'code': 187, 'message': 'Status is a duplicate.'}]
って返ってくるからキーを指定すればcodeだけ取り出せそうだけどどうやらこれ丸ごとstringらしいので,エラー文をそのまま条件に使用して下のような感じで実装(するのが手っ取り早そう)。
エラーになる要因はたいていAPIのリクエスト制限に引っかかるか重複したツイートしてるか(テスト投稿でやっちゃいがち)だと思うのでその二つは表示できるようにしてそれ以外のエラーはそのままって感じで。
try:
api.update_status(self.tweet)
except tweepy.TweepError as e:
if e.reason == "[{'code': 88, 'message': 'Rate limit exceeded'}]":
print("エラー;リクエスト上限に達しました。15分間待ってください")
if e.reason == "[{'code': 187, 'message': 'Status is a duplicate.'}]":
print("エラー:ツイートが重複しています")
else:
print(e)
else:
print("ツイート成功")
tkinterでGUIにする場合はprint
部分をtk.Labelのtextveriable=
に使用してるtk.StringVar()
に.set
するよう置き換えればOK