如何用Python記錄微信撤回的訊息
import itchat
from itchat.content import *
import os
import time
import xml.dom.minidom # 解析 xml 模組
# 這是儲存撤回訊息的檔案目錄 ( 如:圖片、語音等 ) ,這裡已經寫死了,大家可以自行修改
temp = '/Users/yourname/Documents/itchat' + '/' + ' 撤回的訊息 '
if not os.path.exists(temp):
os.mkdir(temp)
itchat.auto_login(True) # 自動登入
dict = {} # 定義一個字典
# 這是一個裝飾器,給下面的函式新增新功能
# 能夠捕獲好友傳送的訊息,並傳遞給函式引數 msg
@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO]) # 文字,語音,圖片
def resever_info(msg):
global dict # 宣告全域性變數
info = msg['Text'] # 取出訊息內容
msgId = msg['MsgId'] # 取出訊息標識
info_type = msg['Type'] # 取出訊息型別
name = msg['FileName'] # 取出訊息檔名
# 取出訊息傳送者標識並從好友列表中檢索
fromUser = itchat.search_friends(userName=msg['FromUserName'])['NickName']
ticks = msg['CreateTime'] # 獲取資訊傳送的時間
time_local = time.localtime(ticks)
dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local) # 格式化日期
# 將訊息標識和訊息內容新增到字典
# 每一條訊息的唯一標識作為鍵,訊息的具體資訊作為值,也是一個字典
dict[msgId] = {"info": info, "info_type": info_type, "name": name, "fromUser": fromUser, "dt": dt}
@itchat.msg_register(NOTE) # 監聽系統提示
def note_info(msg):
# 監聽到好友撤回了一條訊息
if ' 撤回了一條訊息 ' in msg['Text']:
# 獲取系統訊息中的 Content 結點值
content = msg['Content']
# Content 值為 xml ,解析 xml
doc = xml.dom.minidom.parseString(content)
# 取出 msgid 標籤的值
result = doc.getElementsByTagName("msgid")
# 該 msgId 就是撤回的訊息標識,透過它可以在字典中找到撤回的訊息資訊
msgId = result[0].childNodes[0].nodeValue
# 從字典中取出對應訊息標識的訊息型別
msg_type = dict[msgId]['info_type']
if msg_type == 'Recording': # 撤回的訊息為語音
recording_info = dict[msgId]['info'] # 取出訊息標識對應的訊息內容
info_name = dict[msgId]['name'] # 取出訊息檔名
fromUser = dict[msgId]['fromUser'] # 取出傳送者
dt = dict[msgId]['dt'] # 取出傳送時間
recording_info(temp + '/' + info_name) # 儲存語音
# 拼接提示訊息
send_msg = ' 【傳送人 : 】 ' + fromUser + '\n' + ' 傳送時間 :' + dt + '\n' + ' 撤回了一條語音 '
itchat.send(send_msg, 'filehelper') # 將提示訊息傳送給檔案助手
# 傳送儲存的語音
itchat.send_file(temp + '/' + info_name, 'filehelper')
del dict[msgId] # 刪除字典中對應的訊息
print(" 儲存語音 ")
elif msg_type == 'Text':
text_info = dict[msgId]['info'] # 取出訊息標識對應的訊息內容
fromUser = dict[msgId]['fromUser'] # 取出傳送者
dt = dict[msgId]['dt'] # 取出傳送時間
# 拼接提示訊息
send_msg = ' 【傳送人 : 】 ' + fromUser + '\n' + ' 傳送時間 :' + dt + '\n' + ' 撤回內容 :' + text_info
# 將提示訊息傳送給檔案助手
itchat.send(send_msg, 'filehelper')
del dict[msgId] # 刪除字典中對應的訊息
print(" 儲存文字 ")
elif msg_type == 'Picture':
picture_info = dict[msgId]['info'] # 取出訊息標識對應的訊息內容
fromUser = 外匯跟單gendan5.comdict[msgId]['fromUser'] # 取出傳送者
dt = dict[msgId]['dt'] # 取出傳送時間
info_name = dict[msgId]['name'] # 取出檔名
picture_info(temp + '/' + info_name) # 儲存圖片
# 拼接提示訊息
send_msg = ' 【傳送人 : 】 ' + fromUser + '\n' + ' 傳送時間 :' + dt + '\n' + ' 撤回了一張圖片 '
itchat.send(send_msg, 'filehelper') # 將圖片傳送給檔案助手
# 傳送儲存的語音
itchat.send_file(temp + '/' + info_name, 'filehelper')
del dict[msgId] # 刪除字典中對應的訊息
print(" 儲存圖片 ")
itchat.run()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2840867/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 女神把微信訊息撤回後好慌,Python幾十行程式碼輕鬆檢視撤回訊息!Python行程
- Python輕鬆檢視微信撤回訊息,祕密無處可藏Python
- Python + Wxpy 實現微信防撤回。Python
- 監聽微信公眾號訊息,監聽微信訊息推送
- 教你如何用vbs實現微信自動傳送訊息功能
- 在python中使用itchat傳送微信訊息Python
- 微信轉錯賬撤回設定方法 微信轉錯了錢怎麼撤回?
- 微信多開小助手WeChatTweak Mac(微信防撤回)Mac
- 微信多開和防撤回工具
- 微信伴侶WechatTweak for mac(微信防撤回、多開助手)Mac
- 微信怎麼群發訊息?微信群發助手群發訊息圖文教程
- 使用 laravel-wechat-notification 傳送微信模板訊息、企業微信應用訊息Laravel
- 微信客服訊息時間限制
- 在 Mac 上多開微信,還能看到朋友撤回的資訊:WeChatTweakMac
- 微信之父張小龍:企業微信將與微信訊息打通
- 微信聊天記錄的備份
- 微信聊天記錄的恢復
- 支付寶迴應年度賬單爭議;撤回的微信聊天記錄也可作為電子證據
- Python這麼頂?搶紅包殺手、訊息撤回也沒得用!Python
- 訊息通知系統記錄
- .NET Core 企業微信訊息推送
- IM撤回訊息-iOS客戶端實現iOS客戶端
- 微信小程式使用記錄微信小程式
- 企業微信sdk呼叫,企業微信好友收發訊息
- WeChatTweak for mac(微信多開和防撤回工具)Mac
- PHP微信開發之模板訊息回覆PHP
- 微信影片聊天記錄怎麼錄製
- appium 點選微信通訊錄APP
- Python構建企業微信自動訊息轉發服務端Python服務端
- Python自制微信機器人:群發訊息、自動接收好友Python機器人
- 【玩具】使用Python自動化傳送微信訊息進行訂水Python
- 使用pushplus+python實現亞馬遜到貨訊息推送微信Python亞馬遜
- 微信授權學習記錄
- 微信小程式踩坑記錄微信小程式
- python探索微信朋友資訊Python
- Java微信公眾號推送模版訊息的方法示例Java
- 微信小程式 傳送模板訊息的功能實現微信小程式
- 微信開發——同步粉絲、群發訊息