成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

[[233485]]

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

(1) who :誰發送的

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

(3) what:什么信息

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

... 

01 代碼實現 

  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. # 將接收到的消息存放在字典中,當接收到新消息時對字典中超時的消息進行清理 | 不接受不具有撤回功能的信息  
  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.     # 消息發送人昵稱 | 這里也可以使用RemarkName備注 但是自己或者沒有備注的人為None  
  33.     msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickName" 
  34.     # 消息內容  
  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__() + " 經度->" + 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通知類消息,判斷是不是撤回并進行相應操作  
  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.             # 將撤回消息發送到文件助手  
  93.             itchat.send(msg_body, toUserName='filehelper' 
  94.             # 有文件的話也要將文件發送回去  
  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系統運行(注意修改一下路徑,推薦使用相對路徑)。 

  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調用微信變得非常簡單。簡單是用itchat代碼即可構建一個基于微信的即時通訊,更不錯的體現在于方便擴展個人微信的在其他平臺的更多通訊功能。

2. 安裝 

  1. pip3 install itchat 

3. itchat - Helloworld

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

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

4. 查看客戶端

學習最重要的還是API說明手冊:

Github for itchat:

https://github.com/liduanwei/ItChat

中文API:

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

責任編輯:龐桂玉 來源: 大數據
相關推薦

2018-07-25 13:34:14

Python微信撤回

2020-09-21 14:37:09

Python代碼微信

2018-07-13 16:26:46

編程語言Python微信

2019-11-14 09:08:06

微信WindowsRevokeMsgPa

2013-12-25 10:33:22

微信騰訊智能電視

2018-12-14 14:58:04

Python微信消息

2021-11-15 08:20:23

技術管理者績效

2017-03-17 15:10:52

微信消息撤回功能

2012-04-26 09:45:52

程序員

2021-05-28 07:12:59

Python閉包函數

2025-03-18 10:25:59

2012-12-31 11:22:58

開源開放

2020-09-11 10:55:10

useState組件前端

2014-10-20 12:22:17

2012-05-22 09:19:20

Linux系統

2016-02-23 15:08:51

中云網

2011-07-18 19:32:14

投影機維護技巧

2018-03-02 11:03:19

微信消息撤回

2021-02-28 09:47:54

軟件架構軟件開發軟件設計

2018-11-23 11:17:24

負載均衡分布式系統架構
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av天天看| 99热精品在线观看 | 中文字幕成人av | 一区二区三区四区五区在线视频 | 天天综合天天 | 日韩在线免费视频 | 美日韩中文字幕 | 免费久久99精品国产婷婷六月 | 亚洲一区二区久久久 | 国产一区二区电影 | 91在线看 | 六月婷婷久久 | av在线电影网站 | 欧美一级大黄 | 欧美亚洲国产一区二区三区 | 成人av一区 | 日韩在线精品 | 国产欧美三区 | 国产精品欧美一区二区 | 午夜国产精品视频 | 亚洲成人精品在线观看 | 成人小视频在线观看 | 国产精品亚洲片在线播放 | 2019天天操| 放个毛片看看 | 国产成人免费视频网站视频社区 | 国产在线视频一区二区董小宛性色 | 999视频在线播放 | 日韩视频 中文字幕 | 精品二区| 国产精品成人一区二区三区 | 日韩1区| 亚洲欧美国产一区二区三区 | 久草网站 | 久久久精品亚洲 | 99pao成人国产永久免费视频 | 欧美一级视频免费看 | 国产欧美久久精品 | 欧美一区二区大片 | 日本中文字幕日韩精品免费 | 91视频在线 |