wxpy库的常用实用方法!当然日常加入数据分析部分!

当微信一步步走进人们的生活,大家慢慢离不开它,好了不写作文了!
今天是对wxpy库常用方法的概述,包括自动回复,自动接受好友请求,转发,监听,防撤回等功能的实现,并对微信好友进行可视化分析!

先用实现数据可视化部分来开开胃吧
下图是对于各城市好友的分布人数情况

在这里插入图片描述
首先我们需要获取微信好友的分布情况

bot = Bot(cache_path=True,login_callback=None)#设置下次自动登录,方便测试
friends = bot.friends(update=True)#获取所有微信好友
friend_data = []
for friend in friends1:
    friend_data1.append(friend.city)#将微信好友的所在城市加入列表
for i in friend_data:
    if i == '':
        friend_data.remove(i)
for j in friend_data:
    if j == 'Others':
        friend_data.remove(j)#和下面的del都是为了移除不在中国范围内或是未定义的地名便于使用绘制地图
print(friend_data)
a = {}
for i in friend_data:
    a[i] = friend_data.count(i)
print(a)
del a['']
del a['London']
del a['Sydney']
del a['Adelaide']
# 把字典进行有序拆分为2个列表
attrs = []
values = []
for value, attr in a.items():
    values.append(attr)
    attrs.append(value)#获取好友所在每个城市及其人数

下图是做的使用pyecharts 的geo模块制作的地图,中国好友分布地图以及浙江好友分布地图同样都是可交互图表

friends1 = bot.friends(update=False).search(province = '浙江')#获取在浙江的好友

操作方法同上,获取浙江好友所在的城市,并将人数与城市分别放在列表中
在这里插入图片描述

这是中国分布地图
在这里插入图片描述
接下来进入主题是对wxpy库用法的操作

p = bot.friends().stats_text()#获取自身好友分布的简要概况
print(p)
print('*'*10)
l = bot.friends().search(sex = FEMALE)#获取好友中性别为女的朋友
print(l)
print('*'*10)
l1 = bot.friends().search(province = '浙江')#获取好友中省份为浙江的好友
print(l1)
print('*'*10)
l2 = bot.friends().search(city = '大连')#好友中城市为大连的好友
print(l2)
print('*'*10)
my_friend = bot.friends().search(u'萌!')[0]#查找特定名称的好友
print(my_friend)
print('*'*10)
my_group = bot.groups(update=True).search(u'软件三班')[0]#查找群并获取群内好友
print(my_group)
for i in my_group:
    print(i)

结果如图
在这里插入图片描述
在这里插入图片描述
接下来是万众期待的聊天环节,试想你和女神在一个群里,而其他人太吵只想看她的信息怎么办,那就要在群聊中监听她,如果有人在群里@你或者所有人,但是消息却被顶上去了,这时候也需要转发

@bot.register(chats=Group)#设置聊天对象为群
def for_msg(msg):
    if msg.is_at:
        msg.forward(bot.file_helper, prefix='陈彦祖发言')#这里是测试失误,来不及改,当有人@的时候就会转发到文件助手,这里前缀是陈彦祖发言,但是应该写成xxx@我,怎么改自己想要下课了赶时间!
    if msg.member == my_friend:
        msg.forward(bot.file_helper, prefix='萌!发言')#当群聊中的女神发言,就会将她的消息也转到文件助手

然后是防撤回功能

@bot.register(msg_types=NOTE)
def system_msg(msg):
    raw = msg.raw#获取聊天信息
    print(raw)
    print(raw['Status'])
    if raw['Status'] == 4:#状态4代表撤回
        revoke_msg_id = re.search('<msgid>(.*?)</msgid>', msg.raw['Content']).group(1)
        print(revoke_msg_id)
        print(msg.bot.messages[::-1])
        for old_msg_item in msg.bot.messages[::-1]:#获取最后一条信息并像文件助手转发(两者有不同id)
            print(old_msg_item)
            print(old_msg_item.id)
            if revoke_msg_id == str(old_msg_item.id):
                bot.file_helper.send("撤回了一条消息来自:{}".format(old_msg_item))

在这里插入图片描述
在这里插入图片描述
然后是自动添加好友请求,并随机打招呼

import random
play1=['你好在的,加我直接转账就好了','你刚加的这个人比坤坤还努力','请问你是看中了我的美貌才加的我吗?','我是祖国的花朵,而你是祖国的荒草']
@bot.register(msg_types=FRIENDS)
def auto_accept_friends(msg):
    new_friend = bot.accept_friend(msg.card)
    new_friend.send(random.choice(play1))

在这里插入图片描述
接着是对消息的回复功能,我直接添加了监控电脑的例子

@bot.register(chats=Friend)
def friend_msg(msg):
    if msg.type == TEXT:#好友发送文本消息的情况执行以下
        if msg.text == '监控':#如果文字为监控
            cap = cv2.VideoCapture(0)#打开摄像头
            ret, frame = cap.read() # show a frame
            # cv2.imshow("qcapture", frame)
            cv2.imwrite("photo.jpg",frame)#保存拍摄图片
            print(msg.sender)#发送者
            msg.sender.send_image('photo.jpg')#像发送者发送图片
    if msg.type == PICTURE:#如果发送消息为图片格式
        msg.get_file(save_path='yanzhi.jpg')#接受图片
        yanzhi(msg.sender,'yanzhi.jpg')#这里是颜值检测功能,使用的是百度的api

效果如下
在这里插入图片描述
在这里插入图片描述
测试效果还是挺准的,有没有美颜差别也不大,大公司的api就是厉害
另外别忘了要加一个bot.join()可以一直调用者程序,
真的下课了没时间了,还有好多自己去百度微信文档!!!!!!
谢谢大家再见!
贴个之前基于图灵机器人自动回复聊天的代码吧

from wxpy import *
import re
#64abb42bcdbd4ac4ba9c43fd014d177a
#3d7a22d0436f46e8a6676ae31e0e1cf6
bot = Bot(cache_path=False)
tuling_api_key = "64abb42bcdbd4ac4ba9c43fd014d177a"
tuling = Tuling(api_key=tuling_api_key)
def auto_reply(msg):
    return tuling.do_reply(msg)

现在图灵机器人要实名认证才能免费试用,我嫌麻烦就一直没认证,但是你们可以尝试
在这里插入图片描述
下课了再见!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值