日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
撤回的微信消息真的看不到?78行Python代碼幫你看穿一切!

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

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出阿拉山口免費做網(wǎng)站回饋大家。

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


文章題目:撤回的微信消息真的看不到?78行Python代碼幫你看穿一切!
新聞來源:http://m.5511xx.com/article/coosppo.html