python利用itchat监控微信好友的头像是否更换(纯属娱乐)

利用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()

很鸡肋的功能,纯属娱乐,开心就好。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

honestman_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值