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/ironpython:从入门到精通
Oct 02 Python
Python中replace方法实例分析
Aug 20 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
Aug 30 Python
python人民币小写转大写辅助工具
Jun 20 Python
Python定义函数功能与用法实例详解
Apr 08 Python
python实现动态数组的示例代码
Jul 15 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
基于python实现上传文件到OSS代码实例
May 09 Python
如何在Windows中安装多个python解释器
Jun 16 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
用Python远程登陆服务器的步骤
Apr 16 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
Linux系统下PHP-FPM的安装和配置教程
2015/08/17 PHP
PHP预定义变量9大超全局数组用法详解
2016/04/23 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
php使用PDO获取结果集的方法
2017/02/16 PHP
Laravel框架FormRequest中重写错误处理的方法
2019/02/18 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
php源码的使用方法讲解
2019/09/26 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
js调试工具console.log()方法查看js代码的执行情况
2014/08/08 Javascript
js实现在网页上简单显示时间的方法
2015/03/02 Javascript
使用jquery制作弹出框效果
2015/04/03 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
微信小程序开发之toast等弹框提示使用教程
2017/06/08 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python随手笔记之标准类型内建函数
2015/12/02 Python
python和c语言的主要区别总结
2019/07/07 Python
python做接口测试的必要性
2019/11/20 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
信息技术专业个人自我评价
2013/12/11 职场文书
个人安全生产责任书
2014/07/28 职场文书
鸟的天堂导游词
2015/01/31 职场文书
活动费用申请报告
2015/05/15 职场文书