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 相关文章推荐
python3.3实现乘法表示例
Feb 07 Python
python的re模块应用实例
Sep 26 Python
Python实现命令行通讯录实例教程
Aug 18 Python
Ubuntu 下 vim 搭建python 环境 配置
Jun 12 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
pygame实现打字游戏
Feb 19 Python
python Popen 获取输出,等待运行完成示例
Dec 30 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
Mar 10 Python
Python TestSuite生成测试报告过程解析
Jul 23 Python
利用python做表格数据处理
Apr 13 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php判断文件夹是否存在不存在则创建
2015/04/09 PHP
php使用array_chunk函数将一个数组分割成多个数组
2018/12/05 PHP
实例讲解PHP表单处理
2019/02/15 PHP
xml和web特殊字符
2009/04/28 Javascript
Javascript绝句欣赏 一些经典的js代码
2012/02/22 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
谈谈JavaScript异步函数发展历程
2015/09/29 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
jQuery 导航自动跟随滚动的实现代码
2018/05/30 jQuery
layui-table对返回的数据进行转变显示的实例
2019/09/04 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
2020/01/12 Javascript
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
酷! 程序员用Python带你玩转冲顶大会
2018/01/17 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python实现根据文件格式分类
2019/10/31 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
HTML5的革新 结构之美
2011/06/20 HTML / CSS
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
拉飞逸官网:Lafayette 148 New York
2020/07/15 全球购物
班队活动设计方案
2014/01/30 职场文书
2015元旦节寄语
2014/12/08 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
小学生节约用水倡议书
2019/08/12 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
golang正则之命名分组方式
2021/04/25 Golang
Go语言实现一个简单的并发聊天室的项目实战
2022/03/18 Golang
pandas进行数据输入和输出的方法详解
2022/03/23 Python