ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

pythonでTwitter APIを使う

(2020-09-13 初稿 - 2021-06-13 追記)

 

筆者は、twitterライフログツールとして使おうと考えており、rubyのtwを利用させてもらってきた。しかし、twは1日のつぶやきの取得数が20までで、20以上になるとつぶやきが取得できなくなってしまう。

そこで、以下にシンプルに自分のつぶやきをpythonで取得する方法を記述する。

 

なお、詳細は以下を参照のこと。多謝。m(__)m

python-twitterの各APIの詳細】

【user_timelineリクエストのレスポンスの詳細】

Twitter API利用申請の詳細】

スクリプトの作成よりも、twitterAPI利用申請や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 追記)

TwitterAPIもVer2がでて、「いいね」をしてくれたユーザIDがわかったりと便利な機能も追加された。

以下に、Ver2を使った簡単なスクリプトを作成したので、参考までに。

関連ページ