热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

2022年春节祝福微信自动回复

众所周知,当我们在春节通宵玩游戏或者看春节晚会的时候,如果你的好友和亲戚这时给你发来春节祝福,而你又刚好在团战或是看到精彩部分࿰

众所周知,当我们在春节通宵玩游戏或者看春节晚会的时候,如果你的好友和亲戚这时给你发来春节祝福,而你又刚好在团战或是看到精彩部分,我们就没办法抽时间来回复他们,万一他们直接打电话来,打断了我们的美好时光,就很容易把我们高兴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 ,mousePeopleXYm = 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 Falseelse:print('New!')return Trueexcept 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('错误', '请先获取鼠标位置哦哦哦')returnmsgContent = msgText.get(0.0, tk.END).rstrip()if msgContent == '在这里写下你喜欢的敷衍的话吧' or msgContent == '':msg.showerror('错误', '请先输入你要敷衍的话')returnif not msg.askokcancel('提示', '开始敷衍喽'):returnm = 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()

这不就完整啦,加上这段就可以用啦

什么?还不完整?!

你还想要用来敷衍的话,都懒到这种地步了吗(呜呜呜)

好吧

那我就贴在这里喽

# 新年快乐!!!

最后祝大家心想事成万事如意,福如东海寿比南山,一天更比一天好!!!

哦耶!


推荐阅读
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • Ihavethefollowingonhtml我在html上有以下内容<html><head><scriptsrc..3003_Tes ... [详细]
  • FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路
    本文介绍了FineReport平台数据分析图表显示部分系列接口的应用场景和实现思路。当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。通过调用FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartIndex).setSeriesVisible()接口,可以获取需要显示的系列图表对象,并在表单中显示这些系列。本文以决策报表为例,详细介绍了实现方法,并给出了示例。 ... [详细]
  • IjustinheritedsomewebpageswhichusesMooTools.IneverusedMooTools.NowIneedtoaddsomef ... [详细]
  • 小程序获取用户信息按钮返回中文地址
    1.我是根据官方文档中描述去写的按钮 可以看到button中加了zh_CNopen-typegetUserInfobindgetuserinfogetU ... [详细]
  • 在JavaScript中,函数没有重载的概念,如果声明了多个重名的函数,不管函数的形参个数是否一样,只有最后一个有效。如果调用函数时传入的参数个数与函数定义时的参数个数不符,会出现不同的情况。函数调用时,传入的参数个数少于函数定义时的参数个数,未传入的参数会被当做undefined处理,可能会导致错误。而传入的参数个数多于函数定义时的参数个数,多余的参数不会被使用,但不会报错。 ... [详细]
author-avatar
JUN-围脖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有