質問: json.loads(req.text) for line in res: print(line['created_at']) print(line['text']) print() else: print("Failed: %d" % req.status_code) ```
回答: このソースだとtweepyの機能を全然使わず、requests-oauthlibで認証したセッションを使って、直にTwitter APIにアクセスしています。 したがって参照するのはTwitter APIのリファレンスです。 user_timeline APIにsinceやuntulパラメータはありませんので指定しても効果がありません。 パラメータの`max_id`を指定するとそのidより小さい=古いツイートを取得できます。 件数は`count`パラメータです。 Twitterのid(status_id)は上位ビットに日時が入っているので、 →参考 日時からだいたいのstatus_idを作れます。 ``` from datetime import datetime, timedelta, timezone UTC = timezone.utc JST = timezone(timedelta(hours=+9), 'JST') # 日本時間2018年12月21日 00:00:00 until_date_time = datetime(2018, 12, 21, tzinfo=JST) # UNIX時間(ミリ秒) timestamp = int((until_date_time.astimezone(UTC) - datetime(1970, 1, 1, tzinfo=UTC)).total_seconds()) * 1000 - 1288834974657 # 22ビットシフト max_id = timestamp << 22 url = "https://api.twitter.com/1.1/statuses/user_timeline.json" # max_idとcountの指定 params ={'max_id': max_id, 'count': 200, 'screen_name':'*******'} req = twitter.get(url, params=params) ``` とすると2018年12月21日 00:00:00より前のツイート最大200件が取得できます。 (ただし、もしアクセス可能なら、です。過去3,200件を超えてタイムラインAPIでは取得できません) あとは"取得できたツイートの一番古いツイートのid"をmax_idに指定して繰り返します。