如何用Python记录微信撤回的消息

首先声明,本文主要就是在试图复现这篇文档中所说的:
想查看微信好友撤回的消息?Python帮你搞定
因此要是下文中有什么讲的不清楚的地方,大家也可以参考上面这篇文档。(总感觉腾讯云里面抓来一篇教自动化爬微信的工具的文档,em…不得不说,腾讯心挺大啊!)

一、pip Install itchat

既然都用python解决问题了,第一步当然是明确用什么库啦,直接执行pip install itchat:

请添加图片描述

👌 done!

二、itchat.login()

下完了库,就得试下库的最入门用法啦,啦啦啦:
请添加图片描述

但没想到,复现到这一步时就出问题了。直接用itchat库像上面这样操作,登陆的会是微信的网页版,而腾讯之前为了防止大家用计算机自动化操作微信从而可能会导致一些安全问题,封停了网页版微信API,如果只是像上面这样做的话,控制台会提醒说“由于安全原因,此微信号不能使用网页版微信。你可以使用+Windows+版微信或+Mac+版微信登录。

ok,男人要有耐心,遇事心平气和,google+知乎,若没试过七七四十九种解决方案,万不可直接考虑砸电脑。

很好,经过几次试错以后,找到一种简单便捷的解决方案:
在这里插入图片描述
很好,如上操作完,登陆成功!哦耶✌️!

三、itchat.search_friends() + send()

很好,登陆成功,来试着给好友发条消息?

我大概执行了下面这样的代码:
在这里插入图片描述

执行结果:请添加图片描述

很好,发送成功!

四、@itchat.msg_register()

接下来我们要监听一下好友发送的消息,尝试在本机执行参考文档中的这段代码:
请添加图片描述
在我本机复现的效果,没毛病,效果杠杠的,发啥我都能在控制台监听到了,嘿嘿嘿:
在这里插入图片描述

五、def reserver_info(msg)

接下来我们来复现下面👇这一段:
请添加图片描述
我本机上的情况(抄的我好开心啊[捂脸]):
在这里插入图片描述

六、@itchat.msg_register([TEXT, PICTURE, RECORDING])

上面完成了对于文字内容的监听,接下来要感受一下图片、语音什么的如何处理了。

尝试复现下面的代码:

请添加图片描述

本机复现成功,结果我就先不放了,不然又得打码,好麻烦[捂脸]

原文中对于图片格式和音频格式的讲解:
请添加图片描述

七、os.mkdir() + info()

我们现在牵扯到应该怎么存储图片和语音信息了。

而我接下来继续的行为,低情商的说法叫:继续抄;高情商的说法:人家代码的可复用性好高。

在本机复现这段代码:
请添加图片描述
执行结果:
请添加图片描述

是python就是这么容易顺利执行,让人感觉枯燥且乏味吗?Hhh,当年劳资要是想用别人的C++的代码,没个取经的精神,过上那么九九八十一难是绝对调不通滴呀,再一次,手动捂脸:[捂脸]

八、note_info(msg)

现在我们能够存储聊天信息了,就是既然是要做防撤回软件,我们应该只需要存那些撤回了的信息,那么靠什么来判别哪些信息是撤回消息呢?Content模块为我们提供了NOTE类型,该类型指的是系统消息:

请添加图片描述

好,我们继续在本地复现上面的程序:

在这里插入图片描述
复现成功,枯燥。

九、完整程序代码

最后就是完整程序的代码:

import itchat
from itchat.content import *
import os
import time
import xml.dom.minidom    # 解析xml模块# 这是保存撤回消息的文件目录(如:图片、语音等),这里已经写死了,大家可以自行修改
temp = '/Users/yourname/Documents/itchat' + '/' + '撤回的消息'
if not os.path.exists(temp):os.mkdir(temp)itchat.auto_login(True)    # 自动登录dict = {}    # 定义一个字典# 这是一个装饰器,给下面的函数添加新功能
# 能够捕获好友发送的消息,并传递给函数参数msg
@itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO])  # 文本,语音,图片
def resever_info(msg):global dict    # 声明全局变量info = msg['Text']  # 取出消息内容msgId = msg['MsgId']  # 取出消息标识info_type = msg['Type']  # 取出消息类型name = msg['FileName']  # 取出消息文件名# 取出消息发送者标识并从好友列表中检索fromUser = itchat.search_friends(userName=msg['FromUserName'])['NickName']ticks = msg['CreateTime']  # 获取信息发送的时间time_local = time.localtime(ticks)dt = time.strftime("%Y-%m-%d %H:%M:%S", time_local)  # 格式化日期# 将消息标识和消息内容添加到字典# 每一条消息的唯一标识作为键,消息的具体信息作为值,也是一个字典dict[msgId] = {"info": info, "info_type": info_type, "name": name, "fromUser": fromUser, "dt": dt}@itchat.msg_register(NOTE)  # 监听系统提示
def note_info(msg):# 监听到好友撤回了一条消息if '撤回了一条消息' in msg['Text']:# 获取系统消息中的Content结点值content = msg['Content']# Content值为xml,解析xmldoc = xml.dom.minidom.parseString(content)# 取出msgid标签的值result = doc.getElementsByTagName("msgid")# 该msgId就是撤回的消息标识,通过它可以在字典中找到撤回的消息信息msgId = result[0].childNodes[0].nodeValue# 从字典中取出对应消息标识的消息类型msg_type = dict[msgId]['info_type']if msg_type == 'Recording':    # 撤回的消息为语音recording_info = dict[msgId]['info']  # 取出消息标识对应的消息内容info_name = dict[msgId]['name'] # 取出消息文件名fromUser = dict[msgId]['fromUser'] # 取出发送者dt = dict[msgId]['dt'] # 取出发送时间recording_info(temp + '/' + info_name) # 保存语音# 拼接提示消息send_msg = '【发送人:】' + fromUser + '\n' + '发送时间:' + dt + '\n' + '撤回了一条语音'itchat.send(send_msg, 'filehelper') # 将提示消息发送给文件助手# 发送保存的语音itchat.send_file(temp + '/' + info_name, 'filehelper')del dict[msgId] # 删除字典中对应的消息print("保存语音")elif msg_type == 'Text':text_info = dict[msgId]['info'] # 取出消息标识对应的消息内容fromUser = dict[msgId]['fromUser'] # 取出发送者dt = dict[msgId]['dt'] # 取出发送时间# 拼接提示消息send_msg = '【发送人:】' + fromUser + '\n' + '发送时间:' + dt + '\n' + '撤回内容:' + text_info# 将提示消息发送给文件助手itchat.send(send_msg, 'filehelper')del dict[msgId] # 删除字典中对应的消息print("保存文本")elif msg_type == 'Picture':picture_info = dict[msgId]['info'] # 取出消息标识对应的消息内容fromUser = dict[msgId]['fromUser'] # 取出发送者dt = dict[msgId]['dt'] # 取出发送时间info_name = dict[msgId]['name'] # 取出文件名picture_info(temp + '/' + info_name) # 保存图片# 拼接提示消息send_msg = '【发送人:】' + fromUser + '\n' + '发送时间:' + dt + '\n' + '撤回了一张图片'itchat.send(send_msg, 'filehelper') # 将图片发送给文件助手# 发送保存的语音itchat.send_file(temp + '/' + info_name, 'filehelper')del dict[msgId] # 删除字典中对应的消息 print("保存图片")itchat.run()

运行结果:
请添加图片描述

~~~over~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19817.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能公司Adept完成3.5亿美元融资 要抓住ChatGPT热潮

雷递网 乐天 3月15日 人工智能初创公司Adept日前宣布,公司已经完成了3.5亿美元的B轮融资,由General Catalyst和Spark Capital领投。Adept希望利用竞争对手OpenAI的ChatGPT引发的聊天机器人热潮机会。 当前,Adept正在构建可以在数字世界中采取…

chatgpt赋能python:如何正确删掉Python代码

如何正确删掉Python代码 介绍 在编写Python代码时,难免会出现一些多余或者错误的代码。为了保持代码的整洁和高效,我们需要学会如何正确地删掉Python代码。本文将介绍一些实用的方法和技巧,帮助您轻松删除不必要的代码。 方法 1. 手动删除…

新手小白如何使用Laf免费接入Claude,并快速拥有一个属于自己的AI助手

一、关于Claude 1.什么是Claude? Claude是一款人工智能聊天机器人。它可以像朋友一样和你自然地互动聊天。和Claude聊天体验很像跟人聊天,你可以讨论任何话题,问各种各样的问题。Claude会尽量理解你说的每一句话,并给出合适的回…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 思维链

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 思维链 在本节中,我们将重点讨论要处理输出的任务,这些任务通常通过一系列步骤来获取输入并生成有用的输出。有时,在回答特定问题之前,模型详细推理问题是很重要的。如果你参加了我们之前为开发人…

使用 Python 的ChatGPT API 的简单指南

OpenAI 刚刚发布了 ChatGPT API.这是一个调用 GPT-3.5-Turbo 的 API,与 ChatGPT 产品中使用的模型相同。 对于那些已经熟悉 Python 中的 OpenAI API 的人来说,学习如何使用 ChatGPT API 应该很简单,但仍有一些概念是该 API 独有的&#xff0…

AI 绘图新玩法:「艺术风二维码」保姆级中文教程,一分钟出图,定制你专属微信二维码!...

公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! ​最近AI绘图界又出了一个现象级的玩法,「艺术化二维码」生成,先看个网上比较火的图了解一下。 上面这个图就是今天介绍的这个「艺术化二维码」生成网站&…

华为联手“北斗”、4年打磨昆仑玻璃……揭秘 Mate 50 背后的技术故事!

整理 | 朱珂欣 出品 | CSDN(ID:CSDNnews) 近年来,华为总是自带“热搜”的体质。年初时,“华为又给员工分红了”的话题,引发不少网友的讨论热潮。 1 月 31 日,《品牌强国之路》纪录片华为篇上…

“开源”一词诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 2 月 3 日,在 51 年前的今天,1972 年 2 月 3 日,第 11 届冬季奥林匹克运动会在日本札幌举行,开亚洲举办冬奥会之…

马斯克亲自下场测试 Twitter 功能,网友吐槽:他解雇了任何可以解释的工程师!...

为了检测用户反馈的 Twitter 故障,马斯克决定亲自下场做一把测试,却没想到遭到了不少网友的吐槽。 整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 2 月 1 日,Twitter CEO 埃隆马斯克发了一条推文,宣布将…

16 岁少年前往腾讯总部要求解封 QQ 账号;微软发内部信辟谣:没有关闭微软苏州的相关计划;Go 1.20 发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

安卓APP课程设计源码和报告——个人日记本开发

Android开发基础 题目: 个人日记本开发 题目个人日记本开发???关键技术开发过程中使用到的技术:利用SQLite存储数据 主要体现类:DbHelper类继承自SQLiteOpenHelper类,重写其构造方法、onCreate(…

ChatGPT 启示录:知识到底是什么?

知识是人类对客观世界的认识和经验,人类通过语言来表示知识,句子是语言的基本单位,一句话往往包含主谓宾,主语和宾语可被称为实体,谓语表示了主语宾语间的关系。所以,世界在人类大脑中,就是无数…

艺术签名微信小程序源码支持微信流量主

介绍: 某交易网站上卖500元的源码,免费设计艺术签名,支持微信流量主 云盘地址: http://zijieyunpan.cn/GVnCixUXtMA 阅览:

chatgpt赋能python:Python手写签名:如何用Python实现一个自动生成个性化签名的工具

Python 手写签名:如何用 Python 实现一个自动生成个性化签名的工具 Python 是一门高效的编程语言,它拥有强大的数据处理和图像处理能力。Python 还有一个优点是它的易读性,这使得 Python 成为许多程序员和数据科学家的首选语言。而今天我们要…

管理系统类毕设(六)---完善后端接口以及前端接入(接入了学生的查询 新增 修改 教师,考试,成绩类似于学生)

后端接口已经完成开发 完善后端接口以及前端接入(接入了学生的查询 新增 修改 教师,考试,成绩类似于学生) 代码已更新 https://github.com/dmhsq/edusys github代码尚未完全加注释(困) 目前效果如下 完善后端,接入前端 后端完善新增修改和新…

毕业设计-基于微信小程序的校友社区网络管理系统

目录 前言 课题背景与简介 实现设计思路 一、平台的选择与市场现状 二、系统设计 三、设计情况 实现效果样例 更多帮助 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个…

计算机毕设Python+Vue学院校友信息管理系统的(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

计算机毕设Python+Vue校园社团信息管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

计算机毕设Python+Vue校园社团管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

两周搞定计算机专业毕业设计,附源码+论文+答辩

毕设论文答辩通关法则,看这一篇,源码都在下面了!写在前面,尽管论文方法和毕设源码都有,但还是要看课自己敲完完善好。做好充分准备面对答辩。 文章目录 一、毕设二、论文2.1 论文标题2.2 确定论文大纲2.3 论文内容2.3.…