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教程之模拟百度登陆代码分享
Jan 16 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
Python实现Const详解
Jan 27 Python
在Python中使用HTMLParser解析HTML的教程
Apr 29 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python对excel文档去重及求和的实例
Apr 18 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
PyCharm 专业版安装图文教程
Feb 20 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
python 数据库查询返回list或tuple实例
May 15 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 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/04/13 PHP
解析PHP处理换行符的问题 \r\n
2013/06/13 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
php中session与cookie的比较
2015/01/27 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
利用php生成验证码
2017/02/23 PHP
PHP实现百度人脸识别
2019/05/06 PHP
window.dialogArguments 使用说明
2011/04/11 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
微信小程序实现tab页面切换功能
2018/07/13 Javascript
webpack4简单入门实例
2018/09/06 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python async with和async for的使用
2019/06/20 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
渡河少年教学反思
2014/02/12 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
2014年党课学习材料
2014/05/11 职场文书
升学宴演讲稿
2014/09/01 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python