やりたいことはできなかった

自分の記憶が怪しい

twitterのDM検索したい

メールとかだと抜けがある

twitterのDMを取得してローカルに保存したい

アプリ普通にありそうだけどあえて – スナックelve 本店

というわけで、本当は全部のDMを取得したかったのだけど、送信、受信それぞれ200件くらいまでしか取れないみたい(´・ω・`)ショボーン

Specifies the number of direct messages to try and retrieve, up to a maximum of 200.

https://developer.twitter.com/en/docs/direct-messages/sending-and-receiving/api-reference/get-messages

とりあえず「日付、時間、送信者、受信者、内容」をCSVで吐き出させて、後はエクセルで何とかしようと思った。
例によって例のごとく正常系しか見てないのでファイル書き込めないときとか止まると思うw
トークンのパーミッション(?)の設定しっかり反映させてからね~。

import datetime
import json
import sys
import twitter
from my_config import *
#ファイルに書き込む関数
def writeFileLine(myfilename,dms):
myid = 0
f = open(myfilename, 'ab')
for dm in dms:
myid = dm['id']
mText = '"' + dm['text'] + '"'
mSender = dm['sender']['name']
mRecipient = dm['recipient']['name']
mCreated_at = datetime.datetime.strptime(dm['created_at'],"%a %b %d %H:%M:%S +0000 %Y")
f.write((mCreated_at.strftime("%Y/%m/%d,%H:%M:%S") + ',' + mSender + ',' + mRecipient + ',' + mText +'\n').encode("utf_8_sig", "ignore"))
f.close
return(myid)
#初期設定
auth = twitter.OAuth(ACCESS_TOKEN, ACCESS_TOKEN_SECRET, CONSUMER_KEY, CONSUMER_SECRET_KEY)
t = twitter.Twitter(auth=auth)
#ファイルクリア
myfilename = 'DmGetter.csv'
f = open(myfilename, 'wb')
f.close
#受信取得 
try:
dms = t.direct_messages()
except:
print('失敗じゃ\n')
sys.exit()
if 'Error' in dms:
print('失敗じゃ\n' + dms)
#ファイル書き込み
lID = writeFileLine(myfilename,dms)
#2回目以降
while lID != 0:
try:
dms = t.direct_messages(max_id = lID - 1)
except:
print('失敗じゃ\n')
sys.exit()
if 'Error' in dms:
print('失敗じゃ\n' + dms)
nID = writeFileLine(myfilename,dms)
if nID != lID:
lID = nID
else:
lID = 0
#送信取得 
try:
dms = t.direct_messages.sent()
except:
print('失敗じゃ\n')
sys.exit()
if 'Error' in dms:
print('失敗じゃ\n' + dms)
myfilename = 'DmGetter.csv'
#ファイル書き込み
lID = writeFileLine(myfilename,dms)
#2回目以降
while lID != 0:
try:
dms = t.direct_messages.sent(max_id = lID - 1)
except:
print('失敗じゃ\n')
sys.exit()
if 'Error' in dms:
print('失敗じゃ\n' + dms)
nID =writeFileLine(myfilename,dms)
if nID != lID:
lID = nID
else:
lID = 0

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

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

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

コメントする

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