🖥

#python で #Twitter #API を叩き、日本時間基準で、昨日のまとめを #Markdown で作る例

2019/02/12に公開

#python で #Twitter #API を叩き、日本時間基準で、昨日のまとめを #Markdown で作る例

Script

なんだか1時間ぐらいズレている気もする

# https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-user_timeline.html

import json, config, os, re
from requests_oauthlib import OAuth1Session
import time
import datetime
from datetime import timedelta
 
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS)

url = "https://api.twitter.com/1.1/statuses/user_timeline.json"

params ={
  'count' : os.environ.get('COUNT') or 1000,
  'trim_user' : True,
  'exclude_replies' : True,
  'tweet_mode' : 'extended'

}
res = twitter.get(url, params = params)

if res.status_code != 200:  
    print("Failed: %d" % res.status_code)
    exit()

def convert_datetime(datetime_str):
  tweet_time = time.strptime(datetime_str,'%a %b %d %H:%M:%S +0000 %Y')

  tweet_datetime = datetime.datetime(*tweet_time[:6])
  return(tweet_datetime)

def in_jst_yesterday(tweet_datetime):
  today_beggining_of_day = \
    datetime.datetime.utcnow() \
    .replace(hour=0, minute=0, second=0, microsecond=0) \
    - timedelta(hours=9)

  yesterday_beggining_of_day = \
    today_beggining_of_day \
    - timedelta(days=1)

  if today_beggining_of_day > tweet_datetime >= yesterday_beggining_of_day:
    return True

timelines = json.loads(res.text)

results = []

for line in timelines:
    tweet_datetime = convert_datetime(line['created_at'])

    if not in_jst_yesterday(tweet_datetime):
      continue

    text = re.sub(r'https://t\.co/\w+', '' ,line['full_text'])
    text = re.sub(r'#', '' , text)
    
    text = '# ' + text
    text += "\n" + '<a href="https://twitter.com/YumaInaura/status/' + str(line['id']) + '">' + line['created_at'] + '</a>'
    if 'media' in line['entities'].keys():
      for media in line['entities']['media']:
        text += "\n"
        text += "![image]("+media['media_url_https']+')'
    text += "\n"

    results.append(text)

results.reverse()

for result in results:
  print(result)

REf

PythonでTwitter API を利用していろいろ遊んでみる - Qiita

Original by Github issue

https://github.com/YumaInaura/YumaInaura/issues/581

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2019-02-12

Discussion