当前位置: 首页 > 后端技术 > Python

78行Python代码教你找回微信撤回的消息

时间:2023-03-25 21:54:03 Python

78行Python代码教你找回微信小程序撤回的消息,时间线等,这不是重点,重点是看一个基于python的微信开源库:itchat,玩了一天。Python曾经对我说:“时间不多了,赶紧用Python吧”。我们用itchat做一个这样的程序:可以收集私聊撤回的信息,发送到个人微信文件助手,包括:(1)who:谁发送的(2)when:消息发送的时间(3)what:什么信息(4)which:什么样的信息,包括:文字,图片,语音,视频,分享,位置,附件...代码实现#-*-encoding:utf-8-*-importosimportreimportshutilimporttimeimportitchatfromitchat.contentimport*#说明:文字、语音、视频、图片、位置、名片、分享、附件均可撤回#{msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)}msg_dict={}#文件存放临时目录rev_tmp_dir="/home/alic/RevDir/"ifnotos.path.exists(rev_tmp_dir):os.mkdir(rev_tmp_dir)#表情有问题|accept消息和接受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])defhandler_receive_msg(msg):globalface_bug#获取本地时间戳并格式化本地时间戳e:2017-04-2121:30:08msg_time_rec=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())#消息IDmsg_id=msg['MsgId']#消息时间msg_time=msg['CreateTime']#消息发送者昵称|RemarkName在这里也可以用来备注 但你??或没有备注的人是None共享链接msg_share_url=Noneifmsg['Type']=='Text'\ormsg['Type']=='Friends':msg_content=msg['Text']elifmsg['Type']=='Recording'\ormsg['Type']=='附件'\ormsg['Type']=='视频'\ormsg['Type']=='图片':msg_content=r""+msg['FileName']#保存文件msg['Text'](rev_tmp_dir+msg['FileName'])elifmsg['Type']=='Card':msg_content=msg['RecommendInfo']['NickName']+r"businesscard"elifmsg['Type']=='Map':x,y,location=re.search(""+X。__str__()+"longitude->"+y.__str__()else:msg_content=r""+locationelifmsg['Type']=='Sharing':msg_content=msg['Text']msg_share_url=msg['url']face_bug=msg_content#更新字典msg_content,"msg_share_url":msg_share_url}})#接收笔记通知消息,判断是否退出并进行相应操作@itchat.msg_register([NOTE])defsend_msg_helper(msg):globalface_bugifre.search(r"\<\!\[CDATA\[.*retractedamessage\]\]\>",msg['Content'])isnotNone:#获取消息的idold_msg_id=re.search("\(.*?)\<\/msgid\>",msg['Content']).group(1)old_msg=msg_dict.get(old_msg_id,{})如果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")+"message"+"\n"\+old_msg.get('msg_time_rec')+"\n"\+"撤回了什么?"+"\n"\+r""+old_msg.get('msg_content')#如果有分享链接ifold_msg['msg_type']=="Sharing":msg_body+="\nThisisthelink?"+old_msg.get('msg_share_url')#发送取款消息到文件助手itchat.send(msg_body,toUserName='filehelper')#如果有文件,应该把文件传回去["msg_type"]=="Video"\orold_msg["msg_type"]=="Attachment":file='@fil@%s'%(rev_tmp_dir+old_msg['msg_content'])itchat.send(msg=文件,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=2)itchat.run()程序可以直接在终端运行,在终端扫码即可登录成功。同时也可以在window系统上打包运行(注意需要修改路径,建议使用相对路径)?~pythonwx.py获取二维码的uuid。下载二维码。请扫描二维码登录。请在手机上按确认。正在加载联系人,这可能需要一些时间。[3;J登录成功,AlicFeng开始自动回复。上面的效果图tchat都是编程逻辑的小东西,我还是记录一下开源库itchat微信。itchat是一个开源的微信个人账号接口,使用Python调用微信变得非常简单。简单的是用itchat代码搭建一个基于微信的即时通讯,更好的是方便在其他平台扩展个人微信更多的通讯功能。安装pip3installitchatitchat-Helloworld只需要三行代码就可以给文件助手发送消息有错误或者不懂的地方可以在评论区提出,一起交流!如果文章对你有帮助,点赞+关注,你的支持是我最大的动力

猜你喜欢