微信自动发送消息

基本不会python语法,只是读了几篇别人的博客写出玩的,所以很是粗糙,做的也比较麻烦,数据转换来转换去的,而且excel表部分地方也不能把汉字写上去,判断图标是否匹配也比较潦草,如果有优化意见,欢迎指正

实现原理:

先通过cv2库函数取出图像,再使用cv2.matchTemplate函数进行图像匹配,求出你需要点击图像所在电脑的坐标,然后通过pyautogui库实现鼠标的移动和点击,再用pyperclip库实现文字的复制和粘贴

前提:

安装相应的库

pip install pyperclip 回车

pip install xlrd==1.2.0 回车

pip install pyautogui==0.9.50 回车

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 回车

具体过程:

在项目建立文件image用来存放图片,再建立xlfile文件存放excel文件(这里主要是为了学习使用,如果觉得麻烦可以看看我的另一篇博客,另一篇没有使用xlrd库,是自动点开B站的,基本原理一样http://t.csdn.cn/g2EPw)

 

 这里的a1放的微信图标,a2接收人的微信头像,a6是退出微信聊天界面点的×的图片,a3,a4,a5不用管,这几个图片并没有使用

xlsx文件用的ww,文件内容如下

分别是图片的名称,运行之后在控制台的提示,点击次数,间隔时间,点击方式

解释一下,为啥表头写了两个1,而不是文字,因为这两列在后面转换成了int和float型数据,如果写文字会显示无法转换,同样也不能空着,这也是为什么明明a4没有图片,无点击等操作后面还是写了数据的原因

 

import cv2
import pyautogui
import pyperclip
#https://blog.csdn.net/qq_42791845/article/details/103700503 匹配方式
import xlrd
#点击坐标,方式,次数,提示,间隔时间
def click(x,y,meth,second,tip,time):
    pyautogui.moveTo(x,y)
    print(tip)
    pyautogui.click(button=meth,clicks=second)
    pyautogui.sleep(time)
#输入要找的图片路径输出位置
def get_xy(img_model_path):
    pyautogui.screenshot().save("./image/screenshot.png")
    img_model=cv2.imread(img_model_path)
    img_desk =cv2.imread("./image/screenshot.png")
    #匹配图片嘻嘻
    result=cv2.matchTemplate(img_desk,img_model,cv2.TM_SQDIFF_NORMED)
    #print(cv2.minMaxLoc(result)[2])
    #计算位置嘻嘻
    upper_left=cv2.minMaxLoc(result)[2]
    height,width,chanel=img_model.shape
    postion=((upper_left[0]+width/2),(upper_left[1]+height/2))
    return postion
def out():
    w = xlrd.open_workbook('./xlfile/ww.xlsx')
    bibi = w.sheet_by_index(0)
    col=bibi.cell_value(3,4)
    pyperclip.copy(col)
    pyautogui.hotkey('ctrl','v')
    pyautogui.sleep(0.3)
    pyautogui.press("enter")
def xl():
    w=xlrd.open_workbook('./xlfile/ww.xlsx')
    bibi=w.sheet_by_index(0)
    row=bibi.nrows
    #row行 col列
    col_picNumber_value=bibi.col_values(0)
    col_tips_value = bibi.col_values(1)
    col_ckNumber_value = bibi.col_values(2)
    col_times_value = bibi.col_values(3)
    col_meths_value = bibi.col_values(4)

    #将数据转换成str int float
    col_picNumber_value=[str(i) for i in col_picNumber_value]
    col_tips_value = [str(i) for i in col_tips_value]
    col_ckNumber_value = [int(i) for i in col_ckNumber_value]
    col_times_value = [float(i) for i in col_times_value]
    col_meths_value = [str(i) for i in col_meths_value]
    for x in range(1,row-1):
        if x==3:
            out()
            continue
        postion = get_xy("./image/%s.png" % (col_picNumber_value[x]))
        if postion[0] >= 1500:
            pyautogui.alert('%s匹配失败' % (col_tips_value[x]))
            exit(0)
        else:
            click(postion[0], postion[1], col_meths_value[x], col_ckNumber_value[x], col_tips_value[x], col_times_value[x])
    count = 0
    while (count<3):
        count=count+1
        out()

xl()

 

小问题:

(1)程序运行提示匹配不到,可能是电脑目前看不到微信图标,因为每次匹配是先对电脑进行截图,通过截图进行匹配,可以看看image文件的screenshot.png图片

 (2)发现xlrd库不支持xlsx文件,那可能是xlrd库版本高了,换个版本即可

 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值