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 相关文章推荐
python中使用urllib2获取http请求状态码的代码例子
Jul 07 Python
编程语言Python的发展史
Sep 26 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
关于python的list相关知识(推荐)
Aug 30 Python
Python线程创建和终止实例代码
Jan 20 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
pytorch之添加BN的实现
Jan 06 Python
python GUI库图形界面开发之PyQt5简单绘图板实例与代码分析
Mar 08 Python
Python进行统计建模
Aug 10 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
聊聊python中的异常嵌套
Sep 01 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
浅析php单例模式
2014/11/25 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
javascript使用百度地图api和html5特性获取浏览器位置
2014/01/10 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
初探nodeJS
2017/01/24 NodeJs
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
vue实现微信分享功能
2018/11/28 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
深入讲解Python中的迭代器和生成器
2015/10/26 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Python基于xlrd模块处理合并单元格
2020/07/28 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
甲乙双方合作协议书
2014/10/13 职场文书
客房领班岗位职责
2015/02/11 职场文书
父亲节活动总结
2015/02/12 职场文书