python如何查看微信消息撤回


Posted in Python onNovember 27, 2018

本文为大家分享了python查看微信消息撤回的具体代码,供大家参考,具体内容如下

1.安装itchat

itchat是一个开源的python微信库,支持发送消息、图片、视频、地图、名片、文件等,还可以实现自动回复等多种功能。

看到的一个文档还不错

1).先安一个python 下载地址

2).安装成功之后,进入pip3.exe所在的目录

python如何查看微信消息撤回

安装itchat:pip3.exe install itchat 下图我的已经安装过了(注意:使用3以及以上版本执行)。

python如何查看微信消息撤回

3.打开cmd拖入按回车就好了

python如何查看微信消息撤回

代码实现

建一个wx.py文件,以下代码导入

# -*-encoding:utf-8-*-
import os
import re
import shutil
import time
import itchat
from itchat.content import *

# 说明:可以撤回的有文本文字、语音、视频、图片、位置、名片、分享、附件

# {msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}
msg_dict = {}

# 文件存储临时目录
rev_tmp_dir = "/RevDir/"
if not os.path.exists(rev_tmp_dir): os.mkdir(rev_tmp_dir)

# 表情有一个问题 | 接受信息和接受note的msg_id不一致 巧合解决方案
face_bug = None


# 将接收到的消息存放在字典中,当接收到新消息时对字典中超时的消息进行清理 | 不接受不具有撤回功能的信息
# [TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO, FRIENDS, NOTE]
@itchat.msg_register([TEXT, PICTURE, MAP, CARD, SHARING, RECORDING, ATTACHMENT, VIDEO])
def handler_receive_msg(msg):
  global face_bug
  # 获取的是本地时间戳并格式化本地时间戳 e: 2017-04-21 21:30:08
  msg_time_rec = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
  # 消息ID
  msg_id = msg['MsgId']
  # 消息时间
  msg_time = msg['CreateTime']
  # 消息发送人昵称 | 这里也可以使用RemarkName备注 但是自己或者没有备注的人为None
  msg_from = (itchat.search_friends(userName=msg['FromUserName']))["NickName"]
  # 消息内容
  msg_content = None
  # 分享的链接
  msg_share_url = None
  if msg['Type'] == 'Text' \
      or msg['Type'] == 'Friends':
    msg_content = msg['Text']
  elif msg['Type'] == 'Recording' \
      or msg['Type'] == 'Attachment' \
      or msg['Type'] == 'Video' \
      or msg['Type'] == 'Picture':
    msg_content = r"" + msg['FileName']
    # 保存文件
    msg['Text'](rev_tmp_dir + msg['FileName'])
  elif msg['Type'] == 'Card':
    msg_content = msg['RecommendInfo']['NickName'] + r" 的名片"
  elif msg['Type'] == 'Map':
    x, y, location = re.search(
      "<location x=\"(.*?)\" y=\"(.*?)\".*label=\"(.*?)\".*", msg['OriContent']).group(1, 2, 3)
    if location is None:
      msg_content = r"纬度->" + x.__str__() + " 经度->" + y.__str__()
    else:
      msg_content = r"" + location
  elif msg['Type'] == 'Sharing':
    msg_content = msg['Text']
    msg_share_url = msg['Url']
  face_bug = msg_content
  # 更新字典
  msg_dict.update(
    {
      msg_id: {
        "msg_from": msg_from, "msg_time": msg_time, "msg_time_rec": msg_time_rec,
        "msg_type": msg["Type"],
        "msg_content": msg_content, "msg_share_url": msg_share_url
      }
    }
  )


# 收到note通知类消息,判断是不是撤回并进行相应操作
@itchat.msg_register([NOTE])
def send_msg_helper(msg):
  global face_bug
  if re.search(r"\<\!\[CDATA\[.*撤回了一条消息\]\]\>", msg['Content']) is not None:
    # 获取消息的id
    old_msg_id = re.search("\<msgid\>(.*?)\<\/msgid\>", msg['Content']).group(1)
    old_msg = msg_dict.get(old_msg_id, {})
    if len(old_msg_id) < 11:
      itchat.send_file(rev_tmp_dir + face_bug, toUserName='filehelper')
      os.remove(rev_tmp_dir + face_bug)
    else:
      msg_body = "爱你蕾蕾 ⇣" + "\n" \
            + old_msg.get('msg_from') + " 撤回了 " + old_msg.get("msg_type") + " 消息" + "\n" \
            + old_msg.get('msg_time_rec') + "\n" \
            + "内容 ⇣" + "\n" \
            + r"" + old_msg.get('msg_content')
      # 如果是分享存在链接
      if old_msg['msg_type'] == "Sharing": msg_body += "\n就是这个链接➣ " + old_msg.get('msg_share_url')

      # 将撤回消息发送到文件助手
      itchat.send(msg_body, toUserName='filehelper')
      # 有文件的话也要将文件发送回去
      if old_msg["msg_type"] == "Picture" \
          or old_msg["msg_type"] == "Recording" \
          or old_msg["msg_type"] == "Video" \
          or old_msg["msg_type"] == "Attachment":
        file = '@fil@%s' % (rev_tmp_dir + old_msg['msg_content'])
        itchat.send(msg=file, toUserName='filehelper')
        os.remove(rev_tmp_dir + old_msg['msg_content'])
      # 删除字典旧消息
      msg_dict.pop(old_msg_id)


if __name__ == '__main__':
  itchat.auto_login(hotReload=True,enableCmdQR=1)
  itchat.run()

打开cmd,将文件拖入即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
35个Python编程小技巧
Apr 01 Python
django中的setting最佳配置小结
Nov 21 Python
Python之lambda匿名函数及map和filter的用法
Mar 05 Python
简单了解python PEP的一些知识
Jul 13 Python
Pytorch在NLP中的简单应用详解
Jan 08 Python
Python图像处理库PIL的ImageFont模块使用介绍
Feb 26 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
如何基于Python实现word文档重新排版
Sep 29 Python
Python实战之实现康威生命游戏
Apr 26 Python
如何使用flask将模型部署为服务
May 13 Python
利用For循环遍历Python字典的三种方法实例
Mar 25 Python
python中退出多层循环的方法
Nov 27 #Python
为什么Python中没有&quot;a++&quot;这种写法
Nov 27 #Python
django session完成状态保持的方法
Nov 27 #Python
Python3实现腾讯云OCR识别
Nov 27 #Python
python利用百度AI实现文字识别功能
Nov 27 #Python
python如何实现一个刷网页小程序
Nov 27 #Python
python实现简单的文字识别
Nov 27 #Python
You might like
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php中file_get_content 和curl以及fopen 效率分析
2014/09/19 PHP
php创建session的方法实例详解
2015/01/27 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
利用jQuery实现可以编辑的表格
2014/05/26 Javascript
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
js实现二级菜单点击显示当前内容效果
2018/04/28 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
Async/Await替代Promise的6个理由
2019/06/15 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
2020/11/30 Javascript
[45:25]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
Python request使用方法及问题总结
2020/04/26 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
python实现取余操作的简单实例
2020/08/16 Python
Python 的 __str__ 和 __repr__ 方法对比
2020/09/02 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
mysql的最长数据库名,表名,字段名可以是多长
2014/04/21 面试题
房地产还款计划书
2014/01/10 职场文书
便利店促销方案
2014/02/20 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
意向书范本
2014/07/29 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
停课通知书
2015/04/24 职场文书
海康机器人重磅发布全新算法开发平台VM4.2
2022/04/21 数码科技