全ツイートダウンロードしたあとでDMをエクセルで見れるようにする
2021年7月9日

ネタ元
ascii.jp
どうせならVBAで処理したいと思って
宇宙一わかりやすい?VBA-JSONを使ったJSONパースのしかた – Qiita
この辺読んだがわからず。断念。
ネタ元のコードだとエラーが出る。
インデントがなんか気に食わないらしいので入力し直して、足りないパッケージ入れてもダメ。
dmConversationのmessagesにmessageCreateがあるの前提のコードなので
{
"messageCreate" : {
"reactions" : [ ],
"urls" : [ ],
"text" : "はーい!\n楽しみにしてまーす!(o^^o)",
"mediaUrls" : [ ],
"senderId" : "XXX",
"id" : "XXX",
"createdAt" : "2017-07-07T05:20:26.586Z"
}
},
{
"participantsLeave" : { //■■■ここでエラーが出ちゃう■■■
"userIds" : [
"XXX"
],
"createdAt" : "2017-07-06T22:17:04.340Z"
}
},
ので、回避するようにしただけ。
# -*- coding: utf-8 -*- # エクセルを立ち上げておいてファイル読み込む import json import re import sys import io import codecs from dateutil.parser import parse from pytz import timezone # jasonファイルを開いて読み込む with codecs.open(r'ダウンロードしたデータのパス\data\direct-messages-group.js', 'r' , 'utf-8', 'ignore') as f: data = f.read() tw = json.loads(data[data.find('['):]) # 書き出すファイルを開く f = open(r'出力したいパス\direct-messages.tsv', 'wb') # 見たいデータを出力する for t in tw: for m in t['dmConversation']['messages']: try : s = m['messageCreate']['text'] c = parse(m['messageCreate']['createdAt']).astimezone(timezone('Asia/Tokyo')).strftime("%Y-%m-%d %H:%M:%S") s = s.replace("\n", " ") s = s.replace("\r", " ") s = "https://twitter.com/messages/"+t['dmConversation']['conversationId']+"\t"+c+"\t"+s+'\n' f.write(s.encode('utf-8')) except: continue f.close()
エクセルで見るときはファイル→開く→ファイルの種類を(*.*)に→direct-messages.tsvを開く

次へ

スペースにチェック入れて完了
検索もソートもガンガンできるぜ!!
是非フォローしてください
最新の情報をお伝えします