众所周知,当我们在春节通宵玩游戏或者看春节晚会的时候,如果你的好友和亲戚这时给你发来春节祝福,而你又刚好在团战或是看到精彩部分,我们就没办法抽时间来回复他们,万一他们直接打电话来,打断了我们的美好时光,就很容易把我们高兴s。
鱼逝,我就用Python做了这个自动祝(fu)福(yan)系统,帮助我们自动祝福别人,畅享幸福假期。
先看看库先!
import time
import random
import tkinter as tk
from tkinter import ttk, messagebox as msg
from PIL import ImageGrab,ImageChops,Image
import pymouse, pykeyboard, pyperclip
一个tkinter用来创建窗口,方便大家在自己电脑上操作
PIL这个库提供了截屏和图片对比,方便对消息的更新做出反应
至于pymouse, pykeyboard, pyperclip都是老面孔了,键盘输入鼠标获取和消息传递
蓝后,就是创建窗口!
mainForm = tk.Tk()
mainForm.title('自动敷衍系统')
mainForm.resizable(0, 0)
msgText = tk.Text(mainForm, height=40, width=40)
msgText.insert(0.0, "在这里写下你喜欢的敷衍的话吧")
msgText.grid(row=0, padx=5, pady=5)
由于,每个人的新年祝福都不一样,于是我就在这里放了个文本输入框,方便文采好的人可以任意发挥,emoji也是支持的哦😯!
mouseInputXY = (-1, -1)
mousePeopleXY = (-1,-1)
mouseUPXY = (-1,-1)
mouseDOWNXY = (-1,-1)
def onClickMouseButton():
global mouseInputXY ,mouseUPXY ,mouseDOWNXY ,mousePeopleXY
m = pymouse.PyMouse()
msg.showinfo('成功', '成功,请在点击确认后2秒内将鼠标移动到微信的输入框,2秒后自动获取输入框鼠标位置。')
time.sleep(2)
mouseInputXY = m.position()
msg.showinfo('成功', '成功,请在点击确认后2秒内将鼠标移动到微信第一人上,2秒后自动获取鼠标位置。')
time.sleep(2)
mousePeopleXY = m.position()
msg.showinfo('成功', '成功,请在点击确认后2秒内将鼠标移动到微信聊天框的左上端,2秒后自动获取鼠标位置。')
time.sleep(2)
mouseUPXY = m.position()
msg.showinfo('成功', '成功,请在点击确认后2秒内将鼠标移动到微信聊天框的右下端,2秒后自动获取鼠标位置。')
time.sleep(2)
mouseDOWNXY = m.position()
msg.showinfo('成功', '任务成功完成')
基于每个人电脑都不一样,自然微信QQ的输入位置都不一样,而这个函数就是为为了让敷衍系统更加贴切,更懂你。
海澜之家,男人的衣柜(不知道为什么突然想到这句广告)
def compare_images(path_one, path_two):
image_one = Image.open(path_one)
image_two = Image.open(path_two)
try:
diff = ImageChops.difference(image_one, image_two)
if diff.getbbox() is None:
# 图片间没有任何不同则直接退出
print("No message!")
return False
else:
print('New!')
return True
except ValueError:
pass
这个就是比较桌面截屏的函数啦!如果有变化,我们的程序就知道是有消息了(当然,它区分不了群消息和个人消息,都会发敷衍[大哭])
mouseButton = ttk.Button(mainForm, text='点击获取鼠标位置', width=40, command=onClickMouseButton)
mouseButton.grid(row=2, padx=5, pady=5)
哦差点忘了,这里当然还有一个启动用的按钮啦,这东西可不能丢yee
def onClickStartButton():
# 判断是否已经读取鼠标位置
if mouseInputXY == (-1, -1):
msg.showerror('错误', '请先获取鼠标位置哦哦哦')
return
msgContent = msgText.get(0.0, tk.END).rstrip()
if msgContent == '在这里写下你喜欢的敷衍的话吧' or msgContent == '':
msg.showerror('错误', '请先输入你要敷衍的话')
return
if not msg.askokcancel('提示', '开始敷衍喽'):
return
m = pymouse.PyMouse() # 获取鼠标对象
k = pykeyboard.PyKeyboard() # 获取键盘对象
lst = msgContent.split()
size = (mouseUPXY[0], mouseUPXY[1], mouseDOWNXY[0], mouseDOWNXY[1])
print(size)
path_one, path_two = r"cut1.jpg", r"cut2.jpg"
while True:
img = ImageGrab.grab(size)
image = img.convert('RGB')
image.save(path_one)
time.sleep(5)
img = ImageGrab.grab(size)
image = img.convert('RGB')
image.save(path_two)
if compare_images(path_one,path_two):
m.click(mousePeopleXY[0], mousePeopleXY[1], n=2)
m.click(mouseInputXY[0], mouseInputXY[1], n=2)
pyperclip.copy(random.choice(lst))
k.press_keys(['Command', 'V'])
time.sleep(1)
k.press_keys(['Return'])
time.sleep(1)
m.click(mouseInputXY[0], mouseInputXY[1])
好了核心部分,终极奥义就是
就是
就是
白嫖啦,直接把上面所有的代码段都拼起来,然后图片存放的路径改改,就可以用啦
快去用吧
去吧去吧
你还在看什么呢
别看我看代码呀
什么?
你说不完整?
哪里哪里
你看
startButton = ttk.Button(mainForm, text='启动', width=40, command=onClickStartButton)
startButton.grid(row=3, padx=5, pady=5)
mainForm.mainloop()
这不就完整啦,加上这段就可以用啦
什么?还不完整?!
你还想要用来敷衍的话,都懒到这种地步了吗(呜呜呜)
好吧
那我就贴在这里喽
# 新年快乐!!!
最后祝大家心想事成万事如意,福如东海寿比南山,一天更比一天好!!!
哦耶!