自分の記憶が怪しい
アプリ普通にありそうだけどあえて - スナックelve 本店
↓
twitterのDM検索したい
↓
メールとかだと抜けがある
↓
twitterのDMを取得してローカルに保存したい
というわけで、本当は全部の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