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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
78行Python代碼幫你復(fù)現(xiàn)微信撤回消息!

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

成都創(chuàng)新互聯(lián)公司是一個(gè)技術(shù)型專業(yè)的建站公司,致力于為廣大企業(yè)、創(chuàng)業(yè)者打造切實(shí)有效的PC站、WAP站、APP站點(diǎn)等企業(yè)網(wǎng)站。無(wú)論是企業(yè)宣傳的成都營(yíng)銷網(wǎng)站建設(shè)、致力于營(yíng)銷的電商網(wǎng)站、內(nèi)容資訊分享的各行業(yè)網(wǎng)站或其他類型網(wǎng)站,我們都從網(wǎng)站前期定位分析策劃、技術(shù)架構(gòu),到網(wǎng)站界面設(shè)計(jì)、創(chuàng)意表現(xiàn)、站點(diǎn)架構(gòu)搭建以及后續(xù)訪問(wèn)監(jiān)控、維護(hù)、網(wǎng)站托管運(yùn)營(yíng)反饋建議等提供整套服務(wù)。

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

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. # 說(shuō)明:可以撤回的有文本文字、語(yǔ)音、視頻、圖片、位置、名片、分享、附件
  9. # {msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}
  10. msg_dict = {}
  11. # 文件存儲(chǔ)臨時(shí)目錄
  12. rev_tmp_dir = "/home/alic/RevDir/"
  13. if not os.path.exists(rev_tmp_dir): os.mkdir(rev_tmp_dir)
  14. # 表情有一個(gè)問(wèn)題 | 接受信息和接受note的msg_id不一致 巧合解決方案
  15. face_bug = None
  16. # 將接收到的消息存放在字典中,當(dāng)接收到新消息時(shí)對(duì)字典中超時(shí)的消息進(jìn)行清理 | 不接受不具有撤回功能的信息
  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.     # 獲取的是本地時(shí)間戳并格式化本地時(shí)間戳 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.     # 消息時(shí)間
  26.     msg_time = msg['CreateTime']
  27.     # 消息發(fā)送人昵稱 | 這里也可以使用RemarkName備注 但是自己或者沒(méi)有備注的人為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通知類消息,判斷是不是撤回并進(jìn)行相應(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 = "告訴你一個(gè)秘密~" + "\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就是這個(gè)鏈接 " + 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()

該程序可以直接在終端運(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 效果圖

03 itchat

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

1. 簡(jiǎn)介

itchat是一個(gè)開(kāi)源的微信個(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. 查看客戶端

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

Github for itchat:

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

中文API:

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

分享標(biāo)題:78行Python代碼幫你復(fù)現(xiàn)微信撤回消息!
網(wǎng)頁(yè)地址:http://www.5511xx.com/article/cdoeohe.html