Python脚本定时发送微信文件

背景:朋友让我改一个文件,可我改完已经半夜了。这时候如果微信发给朋友恐会打扰他休息。于是决定用Python写一个自动发送微信信息的脚本,第二天早上自动发送。
任务简述:使用Python自动化程序,把file.txt在早上6点准时拖动到微信并发送。

0 准备

首先需要考虑的是如何通过Python模拟鼠标操作。在此我货比三家:

module stars latest commit
Pyuserinput 903 2016.2.26
mouse 274 2020.1.2
PyAutoGUI 3600 2020.1.14

对比后,我们选用PyAutoGUI。

Windows/Mac安装:
pip install pyautogui
conda虚拟环境通过豆瓣源加速:
python -m pip install -i https://pypi.douban.com/simple/ pyautogui


1 获取坐标

要发送什么文件,首先需要获取文件坐标,然后再模拟鼠标拖动。
要获取屏幕坐标,可以用下面的代码:

import pyautogui
import time
time.sleep(2)
print(pyautogui.position())

上面的程序会先暂停2秒,等待你将鼠标放到文件上。2秒后,程序会输出文件的屏幕坐标。在我的测试中,我把文件放到了屏幕右上角,坐标为(1857, 31)

但是这样做有些不够自动化。
pyautogui提供了更自动化的方法:pyautogui.locateOnScreen()pyautogui.locateCenterOnScreen()
我们需要file.txt的坐标,就先截图,记得不要太大,如下。
在这里插入图片描述
这种截图情况下是不可以移动文件的,否则文件的背景会改变。所以截图越小越好,最好没有背景,如下:
在这里插入图片描述
然后将截图命名后,放入python同目录下,用这行代码代替即可:

file_pos = pyautogui.locateCenterOnScreen('file.png')

注意,运行代码的时候不要遮住屏幕上的图片位置。


2 模拟拖动过程

这里要做的是把文件从(1857, 31)拖动到微信框的坐标。获取微信框坐标的代码就不赘述了。拖动使用的是dragTo方法,其中参数duration一定要设定,为拖动时间。直接上代码。

import pyautogui

file_pos = pyautogui.locateCenterOnScreen('file.png')
wechat_pos = pyautogui.locateCenterOnScreen('wechat.png')
print(file_pos,wechat_pos)

pyautogui.moveTo(file_pos)

pyautogui.dragTo(wechat_pos, duration=0.5)

pyautogui.click(wechat_pos)
pyautogui.press('enter')

在这里插入图片描述

3 定时

定时操作很简单,target_time为设置的时间,精确到秒。 time.sleep()可以设置每隔多久检测一次

import datetime
import time
target_time = datetime.datetime(2020, 3, 18, 6, 0, 0)
current_time = datetime.datetime.now()
while current_time < target_time:
    time_delta = target_time-current_time
    minutes_delta = int(time_delta.seconds/60)
    seconds_delta = time_delta.seconds - int(time_delta.seconds/60)*60
    print("current time:{},   {}:{} left".format(current_time, minutes_delta, seconds_delta))
    if current_time < target_time:
        time.sleep(60)
    current_time = datetime.datetime.now()

import pyautogui
file_pos = pyautogui.locateCenterOnScreen('file.png')
wechat_pos = pyautogui.locateCenterOnScreen('wechat.png')
print(file_pos,wechat_pos)

pyautogui.moveTo(file_pos)

pyautogui.dragTo(wechat_pos, duration=0.5)

pyautogui.click(wechat_pos)
pyautogui.press('enter')

在这里插入图片描述

4 注意事项

如果设置的是很久以后的定时发送,要记得防止屏幕自动锁屏!

5 其他

这里的拖动可以用一些更简单的操作来代替,比如复制粘贴,键盘模拟ctrl+c、ctrl+v即可。

发布了673 篇原创文章 · 获赞 644 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/zhaohaibo_/article/details/104920859
今日推荐