偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

78行Python代碼幫你復(fù)現(xiàn)微信撤回消息!

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

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

  • who :誰發(fā)送的
  • when :什么時(shí)候發(fā)送的消息
  • what:什么信息
  • which:哪一類信息,包括:文本、圖片、語音、視頻、分享、位置、附件...

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

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

  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 效果圖

78行Python代碼幫你復(fù)現(xiàn)微信撤回消息!

03 itchat

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

1. 簡(jiǎn)介

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

2. 安裝

pip3 install itchat

3. itchat - Helloworld

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

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

4. 查看客戶端

[[237838]]

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

Github for itchat:

  • https://github.com/liduanwei/ItChat

中文API:

  • http://itchat.readthedocs.io/zh/latest/
責(zé)任編輯:未麗燕 來源: 簡(jiǎn)書
相關(guān)推薦

2018-06-20 14:42:42

微信撤回的消息Python

2018-07-13 16:26:46

編程語言Python微信

2020-09-21 14:37:09

Python代碼微信

2018-12-14 14:58:04

Python微信消息

2017-03-17 15:10:52

微信消息撤回功能

2018-03-02 11:03:19

微信消息撤回

2020-09-05 16:07:00

微信騰訊移動(dòng)應(yīng)用

2017-10-26 11:36:46

微信撤回消息

2023-04-07 18:37:46

2019-09-25 08:26:20

Python微信頭像

2019-11-14 09:08:06

微信WindowsRevokeMsgPa

2020-08-14 13:00:02

微信拍一拍移動(dòng)應(yīng)用

2015-06-04 09:26:23

微信推送模板PHP代碼

2019-10-17 21:37:28

微信飛機(jī)大戰(zhàn)Python

2024-12-19 10:00:00

Python發(fā)送消息編程

2025-03-31 10:49:16

2020-11-30 09:31:28

微信代碼程序員

2017-08-01 17:02:19

代碼Python數(shù)據(jù)

2021-08-24 17:14:53

騰訊企業(yè)微信

2016-11-02 13:12:31

微信離線消息
點(diǎn)贊
收藏

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