微信 python 2020_2020年最新的Python操控微信教程
自从微信禁止网页版登陆之后,itchat 库实现的功能也就都不能用了,那现在 Python 还能操作微信吗?答案是还可以。
目前有一个项目 WechatPCAPI 可以对微信进行操作,简单来说它是直接操作 PC 版微信客户端的,当然它有一定不足之处就是:PC 版微信客户端和 Python 都需要使用指定版本的,本文我们使用的 Python 版本为 3.7.6 ,微信客户端使用版本为 2.6.8.52 ,WechatPCAPI 的 GitHub 地址为: https://github.com/Mocha-L/WechatPCAPI 。
获取好友列表
WechatPCAPI 提供了方法 get_friends() ,该方法返回信息包括:好友、群和公众号的列表信息,信息内容主要包括:微信号、昵称和自己设置的备注。
我们使用获取的昵称做个简单的词云展示,代码实现如下所示:
logging.basicConfig(level=logging.INFO)
def on_message(message):
pass
def get_friends():
# 初始化微信实例
wx_inst = WechatPCAPI(on_message=on_message, log=logging)
# 启动微信
wx_inst.start_wechat(block=True)
# 等待登陆成功,此时需要人为扫码登录微信
while not wx_inst.get_myself():
time.sleep(5)
print('登陆成功')
nicknames = []
# 排除的词
remove = ['还是', '不会', '一些', '所以', '果然',
'起来', '东西', '为什么', '真的', '这么',
'但是', '怎么', '还是', '时候', '一个',
'什么', '自己', '一切', '样子', '一样',
'没有', '不是', '一种', '这个', '为了'
]
for key, value in wx_inst.get_friends().items():
if key in ['fmessage', 'floatbottle', 'filehelper'] or 'chatroom' in key:
continue
nicknames.append(value['wx_nickname'])
words = []
for text in nicknames:
if not text:
continue
for t in jieba.cut(text):
if t in remove:
continue
words.append(t)
global word_cloud
# 用逗号隔开词语
word_cloud = ','.join(words)
def nk_cloud():
# 打开词云背景图
cloud_mask = np.array(Image.open('bg.png'))
# 定义词云的一些属性
wc = WordCloud(
# 背景图分割颜色为白色
background_color='white',
# 背景图样
mask=cloud_mask,
# 显示最大词数
max_words=300,
# 显示中文
font_path='./fonts/simkai.ttf',
# 最大尺寸
max_font_size=70
)
global word_cloud
# 词云函数
x = wc.generate(word_cloud)
# 生成词云图片
image = x.to_image()
# 展示词云图片
image.show()
# 保存词云图片
wc.to_file('nk.png')
看一下效果:
消息防撤回
我们在使用微信和好友聊天时,对方有时会有撤回消息的情况,正常情况下,我们是不知道好友撤回的消息是什么的,通过 WechatPCAPI 就可以实现消息防撤回的功能。
我们知道通常撤回的消息是点击撤回操作前一步发送的内容,当然也可能撤回的是前两步、三步 ... 的消息,这里我们只对撤回前一步的消息做处理,基本思路是:我们将撤回前一步发送的消息存一下,当对方点击撤回操作时,我们再将前一步的消息再次返回给自己。
下面看一下实现代码:
logging.basicConfig(level=logging.INFO)
queue_recved_event = Queue()
def on_message(msg):
queue_recved_event.put(msg)
def login():
pre_msg = ''
# 初始化微信实例
wx_inst = WechatPCAPI(on_message=on_message, log=logging)
# 启动微信
wx_inst.start_wechat(block=True)
# 等待登陆成功,此时需要人为扫码登录微信
while not wx_inst.get_myself():
time.sleep(5)
print('登陆成功')
while True:
msg = queue_recved_event.get()
data = msg.get('data')
sendinfo = data.get('sendinfo')
data_type = str(data.get('data_type'))
msgcontent = str(data.get('msgcontent'))
is_recv = data.get('is_recv')
print(msg)
if data_type == '1' and 'revokemsg' not in msgcontent:
pre_msg = msgcontent
if sendinfo is not None and 'revokemsg' in msgcontent:
user = str(sendinfo.get('wx_id_search'))
recall = '撤回的消息:' + pre_msg
wx_inst.send_text(to_user=user, msg=recall)
看一下操作效果:
微信 python 2020_2020年最新的Python操控微信教程相关推荐
- ubuntu安装python3.8_将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
1. 概述 本文记录在 Ubuntu 16.04 上将 python 升级为 3.8 版本,并配置为系统默认 python3 的过程. 在 Ubuntu 16.04 中,python3 的默认版本为 ...
- 微信小程序:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益
这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...
- 【Python】全网最新最全Pyecharts可视化教程(二):绘制好看的交互式地图教程
说到使用Python来进行地图的可视化那就一定少不了Pyecharts的身影,本文小编就对Pyecharts可实现的地图可视化进行一番探究,看看其出来的效果如何 1 Pyecharts-Map 首先要 ...
- 【Python】全网最新最全Pyecharts可视化教程(三):制作多个子图
1 在介绍了Pyecharts的普通绘图和对地图的绘制之后,今天小编将对Pyecharts绘制多个子图的能力进行简单的展示,并且将其应用在具体的案例之上来进行演示,看看其出来的效果如何 1 Grid( ...
- 【Python】全网最新最全Pyecharts可视化教程(一)
数据可视化能够更加直观的将数据的趋势展现出来,而绝大数人对于数据可视化的选择要么是matplotlib或者是seaborn,本文将从比较热门的可视化模块pyecharts入手,向读者介绍一下pyech ...
- python 图片库_最新PHP+Python开源版在线浏览美女图片美女套图源码带数据库
首页图片设置了4个点击功能区,分别是:上一张.下一张.全部随机.套图集随机(为了丰富移动端操作) 搜索功能注释隐藏了,想用的同学自己打开发开者模式解除注释即可 随机按钮:仅在右上角下拉菜单选中的图集中 ...
- 苹果微信更新不了最新版本_电脑微信版本更新!支持批量删除联系人
每一次的微信更新一般来说都要引起一阵全网的讨论,甚至还有可能登上热搜,苹果和安卓系统有时还会有不同的更新内容.但是大家好像都容易忽视了电脑端的微信更新内容,电脑端的微信更新总是悄无声息地,也没什么人关 ...
- 最新黑马Python入门视频教程
最新黑马Python入门视频教程 最新黑马Python入门视频教程 最新黑马Python入门视频教程 下载地址:百度网盘
- python官网下载速度慢-python 官网慢
广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! python是一门语言,有语法等规范. 但是落实到具体实现上,就不一样了. 用c实 ...
最新文章
- dos环境下mysql的访问_MYSQL dos环境下使用
- 独家 | 教你使用Keras on Google Colab(免费GPU)微调深度神经网络
- jQuery的事件方法
- 融合通信常见问题3月刊 | 云信小课堂
- faceswap深度学习AI实现视频换脸详解
- Highcharts的饼图大小的控制
- 快速指南:剖析JBoss BPM跨进程通信
- 基于sklearn的LogisticRegression鸢尾花多类分类实践
- Java8中String.join方法,让我们的代码更优美
- [转载] 140种Python标准库、第三方库和外部工具
- Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
- 红外条码扫描器的另类使用C#版
- 吃透这套架构演化图,从零搭建Web网站也不难!
- html5 dom操作api,17 HTML5 DOM获取元素.html
- c语言数据类型ppt,C语言基本数据类型.ppt
- 圆梦天宫,英雄凯旋—从神州十三号看IP技术在航天测控通信网的应用
- python繁简体转换
- qqlive播放器下载视频
- iOS App添加扩展App Extension
- 构建maven时No archetypes currently available的解决方法
热门文章
- Python字符串的编码与解码(encode与decode)
- CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)
- 关于猿如何找对象,心里没点那啥数吗?
- rnn按时间展开_双向RNN的理解
- 5调用外部浏览器打开代码_浏览器事件循环
- 怎样调用另一个html中的元素,html – 使用DIV作为另一个元素的背景
- sap获取系统时间_获取系统当前时间
- java 生成缩略图类_JAVA生成【缩略图】方法
- 小白自学前端,轻松月入过万哦!
- oracle优质图书,经典Oracle图书推荐(之四)_oracle