不知道你们有没有试过一时不留意微信信息,发信息的人秒撤回了。然后你心中各种纠结:到底撤回了啥?今天来帮你们解决这个烦恼。
所以女王大人究竟撤回了什么呢??
了解itchat
这里先介绍一个新东西:itchat。这是个什么东西?简单来说,它就是个微信机器人。itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。
有了itchat,如果你想要给文件传输助手发一条信息,只需要这样:
import itchat
itchat.auto_login()
itchat.send('Hello, filehelper', toUserName='filehelper')
如果你想要回复发给自己的文本消息,只需要这样:
import itchat
@itchat.msg_register(itchat.content.TEXT)
def text_reply(msg):
return msg.text
itchat.auto_login()
itchat.run()
更多的实例,自己可以去官网查看,这里是它的api地址
接下来要做的事是,利用这个api找到撤回的信息。
监听信息,保存信息
最重要的代码接口是这一句: @itchat.msg_register([TEXT, PICTURE, FRIENDS, CARD, MAP, SHARING, RECORDING, ATTACHMENT, VIDEO]) # 文本,语音,图片 def resever_info(msg): 这个是检测接收到的信息,包括文本,语言,图片这三种。我们需要做的是把监听的信息都保存起来。
itext = msg['Text'] # 取出消息内容
iid = msg['MsgId'] # 取出消息标识
itype = msg['Type'] # 取出消息类型
sname = msg['FileName'] # 取出消息文件名
susername = itchat.search_friends(userName=msg['FromUserName'])['NickName']
stime = msg['CreateTime'] # 获取信息发送的时间
time_local = time.localtime(ticks)
这些拿到的信息可以全部保存进字典。
监控系统提示,提取保存的信息
接下来我们需要监控系统提示
@itchat.msg_register(NOTE) # 监听系统提示
def note_info(msg):
def note_info(msg):
# 监听到好友撤回了一条消息
if '撤回了一条消息' in msg['Text']:
content = msg['Content']
# Content值为xml,解析xml
doc = 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': # 撤回的消息为语音
....
elif msg_type == 'Text':# 撤回的消息为文本
....
elif msg_type == 'Picture':# 撤回的消息为图片
...
上面的思想还是说的比较清楚的。就是利用itchat进行信息监听和保存,再监听系统提示,最后从系统提示中可以找到已经撤回的信息。
有需要拿完整源码的话,请移步到公众号:诗一样的代码。既然进来了,原创不易。小伙伴点个赞再走呗。
下一篇:【python小技巧】花式表白之动态二维码,这个gif有点帅哦
|