利用itchat模块可以模拟登录微信网页版,所以可以获取一些微信的基本信息,包括好友名字,数量,头像,群聊等等,也可模拟发送信息,所以写了一个监控好友头像是否改变,如果好友头像改变了,立马赞美ta的头像:头像不错!(舔狗模式开启)
废话不多说,直接上代码
import datetime
import os
import shutil
import time
import itchat
from skimage.measure import compare_ssim
import cv2
# 比较两个图片的相似度
def compare_pic(pic1, pic2):
# print(pic1, pic2)
try:
imageA = cv2.imread(pic1)
imageB = cv2.imread(pic2)
grayA = cv2.cvtColor(imageA, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(imageB, cv2.COLOR_BGR2GRAY)
try:
(score, diff) = compare_ssim(grayA, grayB, full=True)
except:
return False
# print("SSIM: {}".format(score))
if score > 0.95:
return True
else:
return False
except Exception as e:
# print(e)
# print('pic1为',pic1)
# print('pic2为',pic2)
return True
# 获取所有好友头像
def headImg():
# 创建头像文件夹
is_exists = os.path.exists('imgs')
if not is_exists:
os.mkdir('imgs')
else:
shutil.rmtree('imgs')
os.mkdir('imgs')
# 遍历头像以UserName 为名为每位用户 创建文件夹
friends = itchat.get_friends()
for index,friend in enumerate(friends):
# print(friend)
each_dir_name = './imgs/' + friend['UserName']
os.mkdir(each_dir_name)
img = itchat.get_head_img(userName=friend['UserName'])
file_name = each_dir_name + '/' + friend['UserName'] + '.jpg'
with open(file_name, 'wb') as f:
f.write(img)
# 检查好友头像是否改变
def checkImg():
is_send = False
while 1:
# 遍历头像以UserName 为名为每位用户 创建文件夹
friends = itchat.get_friends()
for index, friend in enumerate(friends):
each_dir_name = './imgs/' + friend['UserName']
img = itchat.get_head_img(userName=friend['UserName'])
file_name = each_dir_name + '/' + friend['UserName'] + '.jpg'
file_name_new = each_dir_name + '/' + friend['UserName'] + '_new' + '.jpg'
with open(file_name_new, 'wb') as f:
f.write(img)
# 保存完毕后 比较两个图片是否相同
is_same = compare_pic(file_name, file_name_new)
# 后续处理
if not is_same:
# 改变了头像 逻辑:赞美好友的头像 并且改变后原来的图改变为新的图
itchat.send_msg(u'头像不错!',toUserName=friend['UserName'])
with open(file_name, 'wb') as f:
f.write(img)
time.sleep(1)
print('%s:我已经检测所有的好友一遍'%datetime.datetime.now())
time.sleep(1)
if __name__ == '__main__':
itchat.auto_login(hotReload=True)
headImg() # 每一次扫码登录 都需要重新生成所有的好友的头像文件 热键登录可以注释掉 节省时间
checkImg()
很鸡肋的功能,纯属娱乐,开心就好。