(2020-09-13 初稿 - 2021-06-13 追記)
筆者は、twitterをライフログツールとして使おうと考えており、rubyのtwを利用させてもらってきた。しかし、twは1日のつぶやきの取得数が20までで、20以上になるとつぶやきが取得できなくなってしまう。
そこで、以下にシンプルに自分のつぶやきをpythonで取得する方法を記述する。
なお、詳細は以下を参照のこと。多謝。m(__)m
【user_timelineリクエストのレスポンスの詳細】
スクリプトの作成よりも、twitterのAPI利用申請やAPIキー等の取得の方が、手間が掛かった。(-_-;)
筆者は、最初にreadオンリーのスクリプトを登録してしまい、Read + Writeに変更したら、再度Authentication Tokensを取得し直すハメになった。とほほ(-_-;)
ので、登録は、最初からRead+Writeの申請にしておいた方が良いと思う。
作成したスクリプトは以下のとおり。
cat p-tweet.py #!/usr/bin/env python3 #coding: UTF-8 # メッセージを取得する # ver0.01 2019-05-23 start # ver0.02 2020-09-13 screen_nameの投稿を取得 import twitter import oauthlib import json import sys import time, calendar # Constant NAME = 'hymd3a' # 自分のアカウント名に変更 MAX_COUNT = 50 # 取得したいツィート数 max 200 def DateTime(created_at): time_utc = time.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y') unix_time = calendar.timegm(time_utc) time_local = time.localtime(unix_time) return time.strftime("[%Y-%m-%d %H:%M:%S]", time_local) # 取得したキーとアクセストークンを設定する # 以下の * は、自分のコードに変更してね api = twitter.Api(consumer_key="*************************", consumer_secret="**************************************************", access_token_key="**************************************************", access_token_secret="*********************************************") # メッセージの取得 timeline = api.GetUserTimeline(screen_name=NAME,count=MAX_COUNT) for tweet in reversed(timeline): print(DateTime(tweet.created_at)) print(tweet.text) print("Retweet: ", tweet.retweet_count) print("Favorite: ", tweet.favorite_count)
【出力例】
[2020-09-13 13:15:06] 現在時刻は 2020-09-13 13:15:01 です。「ひゃまだ家」の部屋の 温度= 29.0 ℃, 湿度= 85.3 %, 飽差(HD)= 4.23 g/m3 で、Raspberry Pi3のCPU温度は temp=53.7'C です。(^^♪ Retweet: 0 Favorite: 3
APIにオプションがたくさんあるのに対し、アプリケーションの登録が面倒なので、投稿や取得、検索等の機能を盛り込んで行くと、かなり複雑なオプションを持つスクリプトになりそう。
また、機能追加等したら追記する。
(2021-06-13 追記)
TwitterのAPIもVer2がでて、「いいね」をしてくれたユーザIDがわかったりと便利な機能も追加された。
以下に、Ver2を使った簡単なスクリプトを作成したので、参考までに。