微信 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)

看一下操作效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/365592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级Java泛型:检索泛型类型参数

在JDK5中引入Java泛型之后, Java泛型Swift成为许多Java程序的组成部分。 但是,乍一看似乎很简单的Java泛型,程序员很快就会迷失此功能。 大多数Java程序员都知道Java编译器的类型擦除 。 一般来说,类型擦除意味着有关Java类的所有…

php 算法

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找&#xff08;数组里查找某个元素&#xff09; function bin_sch($array, $low, $high, $k){ if ( $low < $high){ $mid intval(($low$high)/2 ); if…

python利用opencv去除图片logo_利用python和opencv批量去掉图片黑边

import osimport cv2import numpy as npfrom scipy.stats import modeimport timeimport concurrent.futures‘‘‘multi-process to crop pictures.‘‘‘def crop(file_path_list):origin_path, save_path file_path_listimg cv2.imread(origin_path)gray cv2.cvtColor(im…

angularJS解决数据显示闪一下的问题?-解决办法

转自&#xff1a;https://www.cnblogs.com/e0yu/p/7219930.html?utm_sourceitdadao&utm_mediumreferral#undefined 使用 angular JS 的时候&#xff0c;把 angularJS 放到文件底部&#xff0c;在渲染页面的时候&#xff0c;会出现闪一下的情况&#xff1a; 解决办法一&a…

vue的钩子函数

1.computed 计算属性 计算属性将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 1..aPlus: {get: function () {return this.a 1},set: function (v) {this.a v - 1}}2.. aPlus(){    return this.$router.params  } 这两种方法都可以&am…

python英文字符串排序_Python根据内嵌的数字将字符串排序(sort by numbers embedded in strings)...

标签&#xff1a;import rere_digits re.compile(r‘(\d)‘)def embedded_numbers(s):pieces re_digits.split(s) # 切成数字与非数字pieces[1::2] map(int, pieces[1::2]) # 将数字部分转成整数return piecesdef sort_strings_with_embedded_numbers(ali…

定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱

本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下整个链路&#xff1a;传感器采集端采集数据&#xff0c;边缘端上传数据库&#xff0c;从数据库拿到数据。产品端有个自动出报告的需求&#xff0c;并且希望自动…

使用Guava的AbstractInvocationHandler正确完成代理

不太经常&#xff0c;但有时我们被迫使用java.lang.reflect.Proxy编写自定义动态代理类 。 这种机制的确没有魔力&#xff0c;而且即使您永远不会真正使用它&#xff0c;也值得知道-因为Java代理在各种框架和库中无处不在。 这个想法很简单&#xff1a;动态创建一个实现一个或…

php异常处理机制

转自&#xff1a;https://www.cnblogs.com/water0729/p/5802476.html php异常我们常接触到的就是error错误码1&#xff0c;warning错误码2&#xff0c;notice错误码8这三类。出现error了系统是挂掉了&#xff0c;但是warning和notice是我们可以捕捉并处理的 php配置项display_e…

JavaScript 事件处理详解

事件绑定与解绑&#xff1a; el.onEventName function (){} document.getElementById("dom").onclick function(){ } //绑定事件 document.getElementById("dom").onclick null; //移除绑定 dom0级事件&#xff0c;也就是最早期js处理事…

webbrowser设置横向打印_C# 日常记录:指定打印机/纸张/纸盒(静默打印)(不弹窗打印)WinForm篇...

我在WinForm 编程时一直有一个困扰很久的问题&#xff0c;有很多时候我们需要静默打印 或者不想使用默认的UI 进行打印设置 这个时候我的想法如下 1. 获取全部打印机 2.获取打印机能打什么样的纸3.将打印机设置传入并打印首选用到的打印机设置类System.Drawing.Printing.Printe…

mysql异步非阻塞方式_如何理解swoole异步非阻塞?

传统的apache2handler或php-fpm本质上都是短生命周期(请求后释放资源)的FastCGI运行模式. 请求来了,master进程会调用worker进程来处理,处理完后释放资源. 假设你在functions.php里定义了1000个函数,那么每次请求,都要重新定义一次,有一定的性能损失. 好处则是修改保存代码后,下…

IDEA中使用Maven

Maven的安装与使用 安装 1、下载&#xff0c;官网下载。 2、解压&#xff0c;存放路径中不可包含空格和中文。如&#xff1a;"E:\dev\workspace\maven\apache-maven-3.6.0" 3、配置本地仓库&#xff0c;进入 "conf/settings.xml" 中&#xff0c;在 setting…

Java应用程序中的内存泄漏和内存管理

Java平台最突出的功能之一是其自动内存管理。 许多人错误地将此功能转换为Java中没有内存泄漏 。 但是&#xff0c;事实并非如此&#xff0c;我给人的印象是&#xff0c;现代Java框架和基于Java的平台&#xff0c;尤其是Android平台&#xff0c;越来越与这种错误的假设相矛盾。…

js (jQuery)分组数据

function getobjArr (data) {var result [];data.HELMET.system 系统分类// console.log(data)$.each(data.HELMET, function (index_h, elem_h) {var h {id: index_h,name: elem_h,Projects: []}$(data.sonProjects).each(function (index_p, elem_p) {elem_p.AppCategory…

【前端组件】

下拉列表&#xff1a;https://harvesthq.github.io/chosen/#optgroup-support转载于:https://www.cnblogs.com/helww/p/9718396.html

python后台开发知识点_面试总结:鹅厂Linux后台开发面试笔试C++知识点参考笔记...

文章每周持续更新&#xff0c;各位的「三连」是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇)文章是由自己笔试面试腾讯的笔记整理而来&#xff0c;整理的时候又回顾了一遍&#xff0c;中间工作忙断断续续整理了半个月&#xf…

python用turtle画彩虹_Python利用turtle库绘制彩虹代码示例

语言&#xff1a;PythonIDE&#xff1a;Python.IDE需求做出彩虹效果颜色空间RGB模型&#xff1a;光的三原色&#xff0c;共同决定色相HSB/HSV模型&#xff1a;H色彩&#xff0c;S深浅&#xff0c;B饱和度&#xff0c;H决定色相需要将HSB模型转换为RGB模型代码示例&#xff1a;#…

MongoDB事实:商品硬件上每秒插入80000次以上

在尝试一些时间序列集合时&#xff0c;我需要一个大数据集来检查我们的聚合查询在增加数据负载的情况下不会成为瓶颈。 我们解决了5000万份文档&#xff0c;因为超出此数目我们仍然会考虑分片。 每次事件如下所示&#xff1a; {"_id" : ObjectId("5298a5a03b3…

scala-jdbc-scalike操作jdbc数据库

1, 引入maven依赖 <!-- 使用 sclaikeJDBC --><dependency><groupId>org.scalikejdbc</groupId><artifactId>scalikejdbc_2.11</artifactId><version>3.3.1</version></dependency><dependency><groupId>org…