自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

撤回的微信消息真的看不到?78行Python代碼幫你看穿一切!

開發(fā) 后端
Python曾經(jīng)對我說:"時日不多,趕緊用Python"。于是看到了一個基于python的微信開源庫:itchat,玩了一天,做了一個程序,把私聊撤回的信息可以收集起來并發(fā)送到個人微信的文件傳輸助手。

[[233485]]

導(dǎo)讀:Python曾經(jīng)對我說:"時日不多,趕緊用Python"。于是看到了一個基于python的微信開源庫:itchat,玩了一天,做了一個程序,把私聊撤回的信息可以收集起來并發(fā)送到個人微信的文件傳輸助手,包括:

(1) who :誰發(fā)送的

(2) when :什么時候發(fā)送的消息

(3) what:什么信息

(4) which:哪一類信息,包括:文本、圖片、語音、視頻、分享、位置、附件

... 

01 代碼實現(xiàn) 

  1. # -*-encoding:utf-8-*-  
  2. import os  
  3. import re  
  4. import shutil  
  5. import time  
  6. import itchat  
  7. from itchat.content import *  
  8.  
  9. # 說明:可以撤回的有文本文字、語音、視頻、圖片、位置、名片、分享、附件  
  10.  
  11. # {msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}  
  12. msg_dict = {}  
  13.  
  14. # 文件存儲臨時目錄  
  15. rev_tmp_dir = "/home/alic/RevDir/"  
  16. if not os.path.exists(rev_tmp_dir): os.mkdir(rev_tmp_dir)  
  17.  
  18. # 表情有一個問題 | 接受信息和接受note的msg_id不一致 巧合解決方案  
  19. face_bug = None  
  20.  
  21. # 將接收到的消息存放在字典中,當(dāng)接收到新消息時對字典中超時的消息進行清理 | 不接受不具有撤回功能的信息  
  22. # [TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO, FRIENDS, NOTE]  
  23. @itchat.msg_register([TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO])  
  24. def handler_receive_msg(msg):  
  25.     global face_bug  
  26.     # 獲取的是本地時間戳并格式化本地時間戳 e: 2017-04-21 21:30:08  
  27.     msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S"time.localtime())  
  28.     # 消息ID  
  29.     msg_id = msg['MsgId' 
  30.     # 消息時間  
  31.     msg_time = msg['CreateTime' 
  32.     # 消息發(fā)送人昵稱 | 這里也可以使用RemarkName備注 但是自己或者沒有備注的人為None  
  33.     msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickName" 
  34.     # 消息內(nèi)容  
  35.     msg_content = None  
  36.     # 分享的鏈接  
  37.     msg_share_url = None  
  38.     if msg['Type'] == 'Text' \  
  39.             or msg['Type'] == 'Friends' 
  40.         msg_content = msg['Text' 
  41.     elif msg['Type'] == 'Recording' \  
  42.             or msg['Type'] == 'Attachment' \  
  43.             or msg['Type'] == 'Video' \  
  44.             or msg['Type'] == 'Picture' 
  45.         msg_content = r"" + msg['FileName' 
  46.         # 保存文件  
  47.         msg['Text'](rev_tmp_dir + msg['FileName'])  
  48.     elif msg['Type'] == 'Card' 
  49.         msg_content = msg['RecommendInfo']['NickName'] + r" 的名片"  
  50.     elif msg['Type'] == 'Map' 
  51.         x, y, location = re.search(  
  52.             "<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg['OriContent']).group(1, 2, 3)  
  53.         if location is None:  
  54.             msg_content = r"緯度->" + x.__str__() + " 經(jīng)度->" + y.__str__()  
  55.         else 
  56.             msg_content = r"" + location  
  57.     elif msg['Type'] == 'Sharing': 
  58.         msg_content = msg['Text' 
  59.         msg_share_url = msg['Url' 
  60.     face_bug = msg_content  
  61.     # 更新字典  
  62.     msg_dict.update 
  63.         {  
  64.             msg_id: {  
  65.                 "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec": msg_time_rec,  
  66.                 "msg_type": msg["Type"],  
  67.                 "msg_content": msg_content, "msg_share_url": msg_share_url  
  68.             }  
  69.         }  
  70.     )  
  71.  
  72. # 收到note通知類消息,判斷是不是撤回并進行相應(yīng)操作  
  73. @itchat.msg_register([NOTE])  
  74. def send_msg_helper(msg):  
  75.     global face_bug  
  76.     if re.search(r"\<\!\[CDATA\[.*撤回了一條消息\]\]\>", msg['Content']) is not None:  
  77.         # 獲取消息的id 
  78.          old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)  
  79.         old_msg = msg_dict.get(old_msg_id, {})  
  80.         if len(old_msg_id) < 11: 
  81.             itchat.send_file(rev_tmp_dir + face_bug, toUserName='filehelper' 
  82.             os.remove(rev_tmp_dir + face_bug)  
  83.         else 
  84.             msg_body = "告訴你一個秘密~" + "\n" \  
  85.                        + old_msg.get('msg_from') + " 撤回了 " + old_msg.get("msg_type") + " 消息" + "\n" \  
  86.                        + old_msg.get('msg_time_rec') + "\n" \  
  87.                        + "撤回了什么 ⇣" + "\n" \  
  88.                        + r"" + old_msg.get('msg_content' 
  89.             # 如果是分享存在鏈接  
  90.             if old_msg['msg_type'] == "Sharing": msg_body += "\n就是這個鏈接➣ " + old_msg.get('msg_share_url' 
  91.  
  92.             # 將撤回消息發(fā)送到文件助手  
  93.             itchat.send(msg_body, toUserName='filehelper' 
  94.             # 有文件的話也要將文件發(fā)送回去  
  95.             if old_msg["msg_type"] == "Picture" \  
  96.                     or old_msg["msg_type"] == "Recording" \  
  97.                     or old_msg["msg_type"] == "Video" \  
  98.                     or old_msg["msg_type"] == "Attachment" 
  99.                 file = '@fil@%s' % (rev_tmp_dir + old_msg['msg_content'])  
  100.                 itchat.send(msg=file, toUserName='filehelper' 
  101.                 os.remove(rev_tmp_dir + old_msg['msg_content'])  
  102.             # 刪除字典舊消息  
  103.             msg_dict.pop(old_msg_id)  
  104.  
  105. if __name__ == '__main__' 
  106.     itchat.auto_login(hotReload=True,enableCmdQR=2)  
  107.     itchat.run() 

該程序可以直接在終端運行,在終端掃碼成功夠即可登錄成功,同時也可以打包在window系統(tǒng)運行(注意修改一下路徑,推薦使用相對路徑)。 

  1. ➜  ~ python wx.py  
  2. Getting uuid of QR code.  
  3. Downloading QR code.  
  4. Please scan the QR code to log in 
  5. Please press confirm on your phone.  
  6. Loading the contact, this may take a little while.  
  7. �[3;J  
  8. Login successfully as AlicFeng  
  9. Start auto replying. 

02 效果圖

 

03 itchat

上面都是編程邏輯的小事,我還是記錄一下itchat微信這個開源庫。

1. 簡介

itchat是一個開源的微信個人號接口,使用python調(diào)用微信變得非常簡單。簡單是用itchat代碼即可構(gòu)建一個基于微信的即時通訊,更不錯的體現(xiàn)在于方便擴展個人微信的在其他平臺的更多通訊功能。

2. 安裝 

  1. pip3 install itchat 

3. itchat - Helloworld

僅僅三行代碼發(fā)送一條信息給文件傳輸助手。 

  1. import itchat 
  2.  
  3. itchat.auto_login(hotReload=True
  4.  
  5. itchat.send('Hello AlicFeng', toUserName='filehelper'

4. 查看客戶端

學(xué)習(xí)最重要的還是API說明手冊:

Github for itchat:

https://github.com/liduanwei/ItChat

中文API:

http://itchat.readthedocs.io/zh/latest/

責(zé)任編輯:龐桂玉 來源: 大數(shù)據(jù)
相關(guān)推薦

2018-07-25 13:34:14

Python微信撤回

2020-09-21 14:37:09

Python代碼微信

2018-07-13 16:26:46

編程語言Python微信

2013-12-25 10:33:22

微信騰訊智能電視

2019-11-14 09:08:06

微信WindowsRevokeMsgPa

2021-11-15 08:20:23

技術(shù)管理者績效

2018-12-14 14:58:04

Python微信消息

2012-04-26 09:45:52

程序員

2025-03-18 10:25:59

2017-03-17 15:10:52

微信消息撤回功能

2021-05-28 07:12:59

Python閉包函數(shù)

2012-05-22 09:19:20

Linux系統(tǒng)

2012-12-31 11:22:58

開源開放

2018-03-02 11:03:19

微信消息撤回

2014-10-20 12:22:17

2020-09-11 10:55:10

useState組件前端

2016-02-23 15:08:51

中云網(wǎng)

2011-07-18 19:32:14

投影機維護技巧

2015-06-29 11:11:33

谷歌眼鏡未來可穿戴

2021-02-28 09:47:54

軟件架構(gòu)軟件開發(fā)軟件設(shè)計
點贊
收藏

51CTO技術(shù)棧公眾號