自从微信禁止网页版登陆之后,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操控微信教程相关推荐

  1. ubuntu安装python3.8_将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程

    1. 概述 本文记录在 Ubuntu 16.04 上将 python 升级为 3.8 版本,并配置为系统默认 python3 的过程. 在 Ubuntu 16.04 中,python3 的默认版本为 ...

  2. 微信小程序:最新wordpress黑金壁纸微信小程序 二开修复版源码下载支持流量主收益

    这是一款wordpress系统框架的壁纸小程序源码 相信很多人以前也有用过这类的壁纸小程序源码吧 现在给大家发的这一款是二开修复版的 和以前的安装方式差不多,支持流量主收益模式 介绍: WordPre ...

  3. 【Python】全网最新最全Pyecharts可视化教程(二):绘制好看的交互式地图教程

    说到使用Python来进行地图的可视化那就一定少不了Pyecharts的身影,本文小编就对Pyecharts可实现的地图可视化进行一番探究,看看其出来的效果如何 1 Pyecharts-Map 首先要 ...

  4. 【Python】全网最新最全Pyecharts可视化教程(三):制作多个子图

    1 在介绍了Pyecharts的普通绘图和对地图的绘制之后,今天小编将对Pyecharts绘制多个子图的能力进行简单的展示,并且将其应用在具体的案例之上来进行演示,看看其出来的效果如何 1 Grid( ...

  5. 【Python】全网最新最全Pyecharts可视化教程(一)

    数据可视化能够更加直观的将数据的趋势展现出来,而绝大数人对于数据可视化的选择要么是matplotlib或者是seaborn,本文将从比较热门的可视化模块pyecharts入手,向读者介绍一下pyech ...

  6. python 图片库_最新PHP+Python开源版在线浏览美女图片美女套图源码带数据库

    首页图片设置了4个点击功能区,分别是:上一张.下一张.全部随机.套图集随机(为了丰富移动端操作) 搜索功能注释隐藏了,想用的同学自己打开发开者模式解除注释即可 随机按钮:仅在右上角下拉菜单选中的图集中 ...

  7. 苹果微信更新不了最新版本_电脑微信版本更新!支持批量删除联系人

    每一次的微信更新一般来说都要引起一阵全网的讨论,甚至还有可能登上热搜,苹果和安卓系统有时还会有不同的更新内容.但是大家好像都容易忽视了电脑端的微信更新内容,电脑端的微信更新总是悄无声息地,也没什么人关 ...

  8. 最新黑马Python入门视频教程

    最新黑马Python入门视频教程 最新黑马Python入门视频教程 最新黑马Python入门视频教程 下载地址:百度网盘

  9. python官网下载速度慢-python 官网慢

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! python是一门语言,有语法等规范. 但是落实到具体实现上,就不一样了. 用c实 ...

最新文章

  1. dos环境下mysql的访问_MYSQL dos环境下使用
  2. 独家 | 教你使用Keras on Google Colab(免费GPU)微调深度神经网络
  3. jQuery的事件方法
  4. 融合通信常见问题3月刊 | 云信小课堂
  5. faceswap深度学习AI实现视频换脸详解
  6. Highcharts的饼图大小的控制
  7. 快速指南:剖析JBoss BPM跨进程通信
  8. 基于sklearn的LogisticRegression鸢尾花多类分类实践
  9. Java8中String.join方法,让我们的代码更优美
  10. [转载] 140种Python标准库、第三方库和外部工具
  11. Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2 【转】...
  12. 红外条码扫描器的另类使用C#版
  13. 吃透这套架构演化图,从零搭建Web网站也不难!
  14. html5 dom操作api,17 HTML5 DOM获取元素.html
  15. c语言数据类型ppt,C语言基本数据类型.ppt
  16. 圆梦天宫,英雄凯旋—从神州十三号看IP技术在航天测控通信网的应用
  17. python繁简体转换
  18. qqlive播放器下载视频
  19. iOS App添加扩展App Extension
  20. 构建maven时No archetypes currently available的解决方法

热门文章

  1. Python字符串的编码与解码(encode与decode)
  2. CENTOS 7 踢用户_从零学ELK系列(三):Centos安装Docker(超详细图文教程)
  3. 关于猿如何找对象,心里没点那啥数吗?
  4. rnn按时间展开_双向RNN的理解
  5. 5调用外部浏览器打开代码_浏览器事件循环
  6. 怎样调用另一个html中的元素,html – 使用DIV作为另一个元素的背景
  7. sap获取系统时间_获取系统当前时间
  8. java 生成缩略图类_JAVA生成【缩略图】方法
  9. 小白自学前端,轻松月入过万哦!
  10. oracle优质图书,经典Oracle图书推荐(之四)_oracle