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

f:id:elve:20210709063203p:plain

ネタ元
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を開く
f:id:elve:20210709062917p:plain
次へ
f:id:elve:20210709062932p:plain
スペースにチェック入れて完了

検索もソートもガンガンできるぜ!!

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です