當前位置: 妍妍網 > 碼農

如何用Python檢視微信好友撤回的訊息?

2024-05-24碼農

點選上方 " Python人工智慧技術 " 關註, 星標或者置頂

22點24分準時推播,第一時間送達

後台回復「 大禮包 」,送你特別福利

編輯:樂樂 | 來自:Python綠色通道

上一篇:

正文

大家好,我是Python人工智慧技術

一、pip Install itchat

既然都用python解決問題了,第一步當然是明確用什麽庫啦,直接執行pip install itchat:

done!

二、itchat.login()

下完了庫,就得試下庫的最入門用法啦,啦啦啦:

但沒想到,復現到這一步時就出問題了。直接用itchat庫像上面這樣操作,登陸的會是微信的網頁版,而騰訊之前為了防止大家用電腦自動化操作微信從而可能會導致一些安全問題,封停了網頁版微信API,如果只是像上面這樣做的話,控制台會提醒說「由於安全原因,此微訊號不能使用網頁版微信。你可以使用+Windows+版微信或+Mac+版微信登入。」

ok,男人要有耐心,遇事心平氣和,google+知乎,若沒試過七七四十九種解決方案,萬不可直接考慮砸電腦。

很好,經過幾次試錯以後,找到一種簡單便捷的解決方案:

很好,如上操作完,登陸成功!

三、itchat.search_friends() + send()

很好,登陸成功,來試著給好友發條訊息?

我大概執行了下面這樣的程式碼:

執行結果:

很好,發送成功!

四、@itchat.msg_register()

接下來我們要監聽一下好友發送的訊息,嘗試在本機執行參考文件中的這段程式碼:

在我本機復現的效果,沒毛病,效果杠杠的,發啥我都能在控制台監聽到了,嘿嘿嘿:

五、def reserver_info(msg)

接下來我們來復現下面這一段:

我本機上的情況

六、@itchat.msg_register([TEXT, PICTURE, RECORDING])

上面完成了對於文字內容的監聽,接下來要感受一下圖片、語音什麽的如何處理了。

嘗試復現下面的程式碼:

本機復現成功,結果我就先不放了,不然又得打碼,好麻煩[捂臉] 原文中對於圖片格式和音訊格式的講解:

七、os.mkdir() + info()

我們現在牽扯到應該怎麽儲存圖片和語音資訊了。

而我接下來繼續的行為,低情商的說法叫:繼續抄;高情商的說法:人家程式碼的可復用性好高。另外,搜尋公眾號頂級架構師後台回復「面試」,獲取一份驚喜禮包。

在本機復現這段程式碼:

執行結果:

是python就是這麽容易順利執行,讓人感覺枯燥且乏味嗎?Hhh,當年勞資要是想用別人的C++的程式碼,沒個取經的精神,過上那麽九九八十一難是絕對調不通滴呀。

八、note_info(msg)

現在我們能夠儲存聊天資訊了,就是既然是要做防撤回軟體,我們應該只需要存那些撤回了的資訊,那麽靠什麽來判別哪些資訊是撤回訊息呢?Content模組為我們提供了NOTE型別,該型別指的是系統訊息:

好,我們繼續在本地復現上面的程式:

復現成功,枯燥。

九、完整程式程式碼

最後就是完整程式的程式碼:

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 = dict[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()





執行結果:

你還有什 麽想要補充的嗎?

最後給大家推薦一個ChatGPT 4.0國內網站,是我們團隊一直在使用的,我們對接是OpenAI官網的帳號,給大家打造了一個一模一樣ChatGPT,很多粉絲朋友現在也都透過我拿這種號,價格不貴,關鍵還有售後。

一句話說明:用官方一半價格的錢,一句話說明:用跟官方 ChatGPT4.0 一模一樣功能,無需魔法,無視封號,不必擔心次數不夠。

最大優勢:可實作會話隔離!突破限制:官方限制每個帳號三小時可使用40次4.0本網站可實作次數上限之後,手動切換下一個未使用的帳號【相當於一個4.0帳號,同享受一百個帳號輪換使用許可權】

最後,再次推薦下我們的AI星

為了跟上AI時代我幹了一件事兒,我建立了一個知識星球社群:ChartGPT與副業。想帶著大家一起探索ChatGPT和新的AI時代

有很多小夥伴搞不定ChatGPT帳號,於是我們決定,凡是這四天之內加入ChatPGT的小夥伴,我們直接送一個正常可用的永久ChatGPT獨立帳戶。

不光是增長速度最快,我們的星球品質也絕對經得起考驗,短短一個月時間,我們的課程團隊釋出了8個專欄、18個副業計畫:

簡單說下這個星球能給大家提供什麽:


1、不斷分享如何使用ChatGPT來完成各種任務,讓你更高效地使用ChatGPT,以及副業思考、變現思路、創業案例、落地案例分享。

2、分享ChatGPT的使用方法、最新資訊、商業價值。

3、探討未來關於ChatGPT的機遇,共同成長。

4、幫助大家解決ChatGPT遇到的問題。

5、提供一整年的售後服務,一起搞副業

星球福利:

1、加入星球4天後,就送ChatGPT獨立帳號。

2、邀請你加入ChatGPT會員交流群。

3、贈送一份完整的ChatGPT手冊和66個ChatGPT副業賺錢手冊。


其它福利還在籌劃中... 不過,我給你大家保證,加入星球後,收獲的價值會遠遠大於今天加入的門票費用 !

本星球第一期原價399,目前屬於試營運,早鳥價169,每超過50人漲價10元,星球馬上要來一波大的漲價,如果你還在猶豫,可能最後就要以更高價格加入了。。

早就是優勢。建議大家盡早以便宜的價格加入!

免責聲明:本文內容來源於網路,文章版權歸原作者所有,意在傳播相關技術知識&行業趨勢,供大家學習交流,若涉及作品版權問題,請聯系刪除或授權事宜。

技術君個人微信

添加技術君個人微信即送一份驚喜大禮包

→ 技術資料共享

→ 技術交流社群

--END--

往日熱文:

Python程式設計師深度學習的「四大名著」:

這四本書著實很不錯!我們都知道現在機器學習、深度學習的資料太多了,面對海量資源,往往陷入到「無從下手」的困惑出境。而且並非所有的書籍都是優質資源,浪費大量的時間是得不償失的。給大家推薦這幾本好書並做簡單介紹。

獲得方式:

1.掃碼關註本公眾號

2.後台回復關鍵詞:名著

▲長按掃描關註,回復名著即可獲取