* さくらインターネットでも使えるようになった,半日分ぐらいの時間を掛けて作成した,ツイートの全文を取得するpython3のスクリプト
:CATEGORIES: パソコン,python,TwitterAPI
|python|
!/usr/bin/env python3
-- coding: utf-8 --
import json, config from requests_oauthlib import OAuth1Session import re import sys from datetime import datetime from datetime import timezone
args = sys.argv if len(sys.argv) == 1: user = 'kk_hirono' else: user = args[1]
if not len(sys.argv) == 2: offset = 1 else: offset = args[2]
def convert_to_datetime(datetime_str):
#tweet_datetime = datetime.strptime(datetime_str,'%a %b %d %H:%M:%S %z %Y') #return(tweet_datetime)
CK="Consumer Key" CS="Consumer Secret" AT="Access Token" ATS="Access Token Secret" twitter = OAuth1Session(CK, CS, AT, ATS) url = "https://api.twitter.com/1.1/statuses/user_timeline.json" #タイムライン取得エンドポイント
params ={ 'count' : 200, # 取得数 'page' : {offset}, # 'trim_user' : True, # ユーザー情報を除く #'exclude_replies' : True, # リプライを除く 'tweet_mode' : 'extended', # 拡張モード 'screen_name' : {user} } res = twitter.get(url, params = params)
if res.status_code == 200: timelines = json.loads(res.text) #timelines = timelines.reverse() for line in reversed(timelines): #JSONの並び替え(逆順) if line['retweeted'] or re.compile("^RT @").search(line['full_text']): user = line['user']['screen_name'] name = line['user']['name'] #org_text = re.sub('\A', '> ', line['full_text']) org_text = re.sub("^", '> ', line['full_text'], flags=re.MULTILINE) #すべての行頭を置換 #org_text = line['full_text'].replace("^", "> ") rt_user = line['retweeted_status']['user']['screen_name'] rt_name = line['retweeted_status']['user']['name'] tw_date = datetime.strptime(line['created_at'], '%a %b %d %H:%M:%S %z %Y').replace(tzinfo=timezone.utc).astimezone(tz=None).strftime('%Y-%m-%d %H:%M:%S') rt_date = datetime.strptime(line['retweeted_status']['created_at'], '%a %b %d %H:%M:%S %z %Y').replace(tzinfo=timezone.utc).astimezone(tz=None).strftime('%Y-%m-%d %H:%M:%S') tw_url = "https://twitter.com/%s/status/#%s" % (user, line['id_str']) rt_url = "https://twitter.com/%s/status/#%s" % (rt_user, line['retweeted_status']['id_str'])
print("RT %s(%s)|%s(%s) 日時:%s/%s URL: %s %s\n%s\n" % (user, name, rt_user, rt_name,tw_date, rt_date, tw_url, rt_url, org_text))
#print("RT {user}({name})|{rt_user}({rt_name}) 日時:{tw_date}/{rt_date} URL: {tw_url} {rt_url}\n> {org_tweet}\n\n")
#print(line)
else:
if not re.compile("^( - |- |> |[source:]|RT |TW )").search(line['full_text']):
print(" ", end="")
print(re.sub('>', '>', line['full_text'])) # ツイートの最初の行を見出しにして、 Markdown で良い感じにマークアップ
print("")
if 'media' in line['entities'].keys():
for media in line['entities']['media']:
print("' + "\n") # 画像URLをMarkdownの埋め込み形式に
#print("\n")
else: print("Failed: %d" % res.status_code) ||<
次が参考にしたページですが,手間取って時間も掛かりました。
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 20:25 URL: https://twitter.com/kk_hirono/status/1302582217697234944 https://twitter.com/hirono_hideki/status/1302568715867664385
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 20:08 URL: https://twitter.com/kk_hirono/status/1302582229357404160 https://twitter.com/hirono_hideki/status/1302564297109696518
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 19:17 URL: https://twitter.com/kk_hirono/status/1302582244150706177 https://twitter.com/hirono_hideki/status/1302551523373662209
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 19:03 URL: https://twitter.com/kk_hirono/status/1302582258868432897 https://twitter.com/hirono_hideki/status/1302548023092760576
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 17:26 URL: https://twitter.com/kk_hirono/status/1302582274928467969 https://twitter.com/hirono_hideki/status/1302523491665625089
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 16:18 URL: https://twitter.com/kk_hirono/status/1302582291802202115 https://twitter.com/hirono_hideki/status/1302506319975309313
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:19/2020/09/06 16:08 URL: https://twitter.com/kk_hirono/status/1302582306578731009 https://twitter.com/hirono_hideki/status/1302503988638527488
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:20/2020/09/06 15:55 URL: https://twitter.com/kk_hirono/status/1302582322349236226 https://twitter.com/hirono_hideki/status/1302500751969677313
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:20/2020/09/06 15:51 URL: https://twitter.com/kk_hirono/status/1302582341550792705 https://twitter.com/hirono_hideki/status/1302499681629474818
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:20/2020/09/06 15:50 URL: https://twitter.com/kk_hirono/status/1302582359796056064 https://twitter.com/hirono_hideki/status/1302499349167964160
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:20/2020/09/06 15:28 URL: https://twitter.com/kk_hirono/status/1302582384693452800 https://twitter.com/hirono_hideki/status/1302493917024141313
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:20/2020/09/06 15:07 URL: https://twitter.com/kk_hirono/status/1302582403202871297 https://twitter.com/hirono_hideki/status/1302488503297609728
▶▶▶ kk_hironoのリツイート ▶▶▶
- RT kk_hirono(刑事告発・非常上告_金沢地方検察庁御中)|hirono_hideki(奉納\さらば弁護士鉄道・泥棒神社の物語) 日時:2020-09-06 21:20/2020/09/06 15:02 URL: https://twitter.com/kk_hirono/status/1302582418583379969 https://twitter.com/hirono_hideki/status/1302487405526622208
| 固定リンク
最近のコメント