全球快看:wxpy库的常用实用方法 微信好友可视化分析方法

发布时间:   来源:CSDN  

当微信一步步走进人们的生活,大家慢慢离不开它,好了不写作文了! 今天是对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("(.*?)", 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 randomplay1=["你好在的,加我直接转账就好了","你刚加的这个人比坤坤还努力","请问你是看中了我的美貌才加的我吗?","我是祖国的花朵,而你是祖国的荒草"]@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#3d7a22d0436f46e8a6676ae31e0e1cf6bot = Bot(cache_path=False)tuling_api_key = "64abb42bcdbd4ac4ba9c43fd014d177a"tuling = Tuling(api_key=tuling_api_key)def auto_reply(msg):    return tuling.do_reply(msg)

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

相关文章Related

返回栏目>>