大家都知道 如果今天是女朋友的生日 我写了好多好多的话,我不想熬夜了好累~
好想微信有一个定时发送的功能 这样 它来了哦!~
欢迎强大的Py先生上场
1.引用两个库
首先需要两个库:pyautogui,pyperclip
我们可以直接打开终端去 Windows+R ,输入cmd,写入这两个 进行安装
pip install apscheduler
pip install pyautogui
2.进入编写工具 Pycharm
这样就可以直接引用我们的加个库了
import pyautogui
import pyperclip
from datetime import datetime
import time
from apscheduler.schedulers.blocking import BlockingScheduler
pyautogui 这个库我们是作为快捷键进行执行使用,也就是说可以利用它去控制我们的鼠标以及键盘
pyperclip 这个库我们是作为文本来使用 pyperclip模块中有两个函数,分别是copy()和paste(),copy()用于向计算机的剪贴板发送文本,paste()用于从计算机剪贴板接收文本。
接下来我们先进行简单的操作
pyautogui.PAUSE = 0.5 # 设置每一步操作的间隔(秒),可防止操作太快
先设置没个消息的间隔秒数为0.5秒,然后我们打开PC端微信
我们把鼠标放到微信的任务栏图标上,运行以下语句,获取此时光标的坐标,返回一个Point对象
print(pyautogui.position()) # 打印坐标,Point(x=123, y=1052)
icon_position = pyautogui.position() # Point(x=123, y=1052)
注:(Position的意思就是位置哦,意思就是坐标)
打开微信,选择女朋友的回话窗口,将鼠标放在输入框上,同样获取光标坐标,为了将焦点锁定到输入框以方便待会的输入
print(pyautogui.position()) # 打印坐标,Point(x=254, y=771)
entry_position = pyautogui.position() # Point(x=254, y=771)
注:(上边总共两个坐标,第一个是微信任务栏,第二个是输入框地方,看清哦~)
接下来控制这两个位置点
pyautogui.click(icon_position)# 默认左键单击
pyautogui.click(entry_position)
接下来可以输入文本了
pyperclip.copy('正在进行发中文试验,看到请忽略,更不要骂傻逼') # 复制
pyautogui.hotkey('ctrl', 'v') # 按下组合键的方法,ctrl+v粘贴
pyautogui.press('enter') # 按下按键
注:(上边copy指的是复制,hotkey快捷键设置,enter不多说了,回车)
3.time.sleep
这个是为了让脚本运行有缓冲 所添加的时间截点
time.sleep(3)#3秒钟后开始执行
这样,我们便完成了自动发送微信消息的功能了。
4.apscheduler
APScheduler(Advanced Python Scheduler)是一个轻量级的Python定时任务调度框架(Python库)。
APScheduler有三个内置的调度系统,其中包括:
cron式调度(可选开始/结束时间)
基于间隔的执行(以偶数间隔运行作业,也可以选择开始/结束时间)
一次性延迟执行任务(在指定的日期/时间内运行作业一次)
话不多说上代码,
scheduler = BlockingScheduler() # 实例化
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 23, 15, 4, 10)) # 添加任务
scheduler.start()
add_job 方法传了 3 个参数,第一个为到时间后要执行的main函数,第二个为触发器的类型。这里选用的是 date 触发器,特定的时间点触发,作业任务只会执行一次。第三个参数 run_date 就是执行的时间。在这前我已经把自动发送消息的代码封装为了 main 函数,只需到时后调用即可。
5:完整代码
import pyautogui
import pyperclip
from datetime import datetime
import time
from apscheduler.schedulers.blocking import BlockingScheduler
def main():
pyautogui.PAUSE = 0
icon_position = pyautogui.Point(x=123, y=1052) # 任务栏图标位置
entry_position = pyautogui.Point(x=254, y=771) # 输入框位置
pyautogui.moveTo(icon_position, duration=1) # duration为执行时长,可选
pyautogui.click(icon_position)
pyautogui.moveTo(entry_position, duration=0.7)
pyautogui.click(entry_position)
time.sleep(3)
pyperclip.copy('快去睡觉')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
time.sleep(3)
pyperclip.copy('笨猪')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
time.sleep(3)
pyperclip.copy('测试结束~')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
scheduler = BlockingScheduler() # 实例化
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 23, 15, 4, 10)) # 添加任务
scheduler.start()