python撤回qq消息_仅78行代码实现微信撤回消息查看
前言
今天一大早奔来图书馆,想想了微信很简洁也很强大的一个工具,最近微信的新闻还是比较多的, 比如:小程序、时间轴等,这不是重点,重点是看到了一个基于python的微信开源库:itchat,玩了一天。Python曾经对我说:"时日不多,赶紧用Python"。
下面就使用itchat做一个这样的程序:
私聊撤回的信息可以收集起来并发送到个人微信的文件助手,包括:
(1) who :谁发送的
(2) when :什么时候发送的消息
(3) what:什么信息
(4) which:哪一类信息,包括:文本、图片、语音、视频、分享、位置、附件
...
代码实现
# -*-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 = "/home/alic/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(
"
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"\", msg['Content']) is not None:
# 获取消息的id
old_msg_id = re.search("\(.*?)\", 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=2)
itchat.run()
该程序可以直接在终端运行,在终端扫码成功够即可登录成功,同时也可以打包在window系统运行(注意修改一下路径,推荐使用相对路径)。
➜ ~ python wx.py
Getting uuid of QR code.
Downloading QR code.
Please scan the QR code to log in.
Please press confirm on your phone.
Loading the contact, this may take a little while.
[3;J
Login successfully as AlicFeng
Start auto replying.
效果图
itchat
itchat
上面都是编程逻辑的小事,我还是记录一下itchat微信这个开源库。
简介
itchat是一个开源的微信个人号接口,使用python调用微信变得非常简单。简单是用itchat代码即可构建一个基于微信的即时通讯,更不错的体现在于方便扩展个人微信的在其他平台的更多通讯功能。
安装
pip3 install itchat
itchat - Helloworld
仅仅三行代码发送一条信息给文件助手
import itchat
itchat.auto_login(hotReload=True)
itchat.send('Hello AlicFeng', toUserName='filehelper')
标签: 微信
顶一下
(1)
100%
踩一下
(0)
0%
python撤回qq消息_仅78行代码实现微信撤回消息查看相关推荐
- python代码删掉了几行怎么撤回_仅78行代码实现微信撤回消息查看 | Python itchat
前言 今天一大早奔来图书馆,想想了微信很简洁也很强大的一个工具,最近微信的新闻还是比较多的, 比如:小程序.时间轴等,这不是重点,重点是看到了一个基于python的微信开源库:itchat,玩了一天. ...
- python hsv inrange 范围_仅20行代码,用python给证件照换底色
1.图片来源 该图片来源于百度图片,如果侵权,请联系我删除!图片仅用于知识交流.本文只是为了告诉大家:python其实有很多黑科技(牛逼的库),我们既可以用python处理工作中的一些事儿,同时我们也 ...
- 20行代码实现微信拜年消息智能自动回复
又是一年新春时,相信大家都会收到来自亲朋好友的祝福轰炸.在这种时候,不回复显得有点不近人情,但是一个个手打回复又会让人觉得手太累.尤其是大部分好友都是复制群发的消息,虽说"群发的短信我不回& ...
- 5行代码实现微信模版消息推送,springboot实现微信推送,java微信推送
视频讲解:https://edu.csdn.net/course/detail/23750 今天来带大家学习下微信模版消息推送. 先看效果图: 核心代码只有下面几行,即可轻松实现微信模版消息推送 // ...
- python随机生成大写字母_python随机生成大小写字母数字混合密码(仅20行代码)
用简单的方法生成随机性较大的密码 仅用20行代码随机生成密码 核心思路:利用random模块 random模块随机生成数字,大小写字母,循环次数 while循环+随机生成的循环次数-->随机pl ...
- Python从入门到高手的80行代码
文章目录 基础入门 菜鸟提升 基础晋级 高手之路 内置包库 奇技淫巧 最新版: Python从入门到入土的90行代码 基础入门 1 python 即在命令行输入python,进入Python的开发环境 ...
- 模型训练平台的构建_用5行代码构建自定义训练的对象检测模型
模型训练平台的构建 如今,机器学习和计算机视觉已成为一种热潮. 我们都已经看到了有关自动驾驶汽车和面部识别的新闻,并且可能想象到建立我们自己的计算机视觉模型将会多么酷. 但是,进入该领域并不总是那么容 ...
- python语言用什么来表明每行代码的层次关系_2021年尔雅通识课《切削原理与刀具》课后习题答案...
2021年尔雅通识课<切削原理与刀具>课后习题答案 二战后南海局势比较稳定的原因不包括() 答:冷战后相当长时间内,中美战略关系极不稳定 日本是一个多地震国家,主要因为它位于海岛上. 答: ...
- python旋转地球源代码_90行代码让微信地球转起来,太酷了!(python实现)
原标题:90行代码让微信地球转起来,太酷了!(python实现) 点击图片,即可查看图书详情. 1.微信地球 手机重启后打开微信的一瞬间,会看到一幅有名的图片,上面站着一个 张小龙 . 你可曾想过这样 ...
- python 拆分excel工作表_Python几行代码轻松拆分表格
Python几行代码轻松拆分表格 作者:梅朵 微信公众号:实用办公编程技能 微信号:Excel-Python 什么?,Python几行代码竟然可以按指定轻松拆分表格? 将test.xls中的数据按地区 ...
最新文章
- WinServer-FTP搭建
- 网站SEO优化该如何提高用户粘度?
- mysql5.7安装差异_mysql5.7和mysql5.6同在CentOS7.4安装差异对比之5.7.18
- 爆款专栏《Python 黑科技》目录导航丨进度:12/50
- Objective-C 2.0 with Cocoa Foundation --- 2,从Hello,World!开始
- 北大师兄告诉你,怎样顺利完成自己的博士生涯
- 【Oracle学习笔记】
- Java项目中 log4j的用法
- 腾讯专注关键词的深度语义匹配模型
- python公众号文章爬虫_微信公众号文章爬虫
- 【github】-MM-Wiki初体验
- 关于/etc/login.defs
- ARP报文抓包解析学习
- 数据挖掘与数据分析(二)—— 探索性数据分析EDA(单因子与对比分析) 可视化 (1) —— 集中趋势 离中趋势 数据分布(偏态系数峰态系数正态分布三大分布)抽样理论(误差精度)
- 杜绝焦虑,如何提高执行力改变生活?
- CAJ转pdf在线网址
- Dijkstra最短路由算法,求任意两点之间的最短距离【Java】
- 湖中剑 前端周刊 #13 | Web录屏、Bundleless、低代码 Deco、Bundle Scanner、RN 低功耗蓝牙
- 阿伟,别打电动了,休息一下好不好
- Linux应用编程概念
热门文章
- 80C51单片机:3.数码管显示、封装与消隐
- 极化的概念及天线极化方式
- 西北大学计算机转专业,2021年西北大学大一新生转专业及入学考试相关规定
- 人人都是架构师:分布式系统架构落地与瓶颈突破 - china-pub网上书店
- AndroidStudio报错Transform output file D:\android\RfidDemo\app\libs\RFID_lib.jar does not exist.
- 关于ASCII码的理解
- VMware Horizon 8 2106 -- 用于管理虚拟桌面 (VDI)、应用和在线服务的领先平台
- 02 凸优化理论-凸集
- python,微信小程序,教你如何快速生成半透明头像
- 科比服务器型号,Ubuntu是NBA全明星科比