让我深夜十二点催她睡觉,我用 Python 轻松搞定!

Python学习与数据挖掘 2021-10-28 16:18:14
十二 深夜 睡觉 十二点 二点

来源:网络


事情是这样的:昨天晚上,女朋友让我十二点催她睡觉。

============================

图片
不过,可是我实在太困了,熬不下去…… 是吧?女朋友哪有睡觉重要?
图片
但,女朋友的命令,我是不敢违抗的……
图片
但是睡觉也不能缺!

这时候我们该怎么办呢?是时候让Python登场了!

Python登场

这次我们来做一个自动发送微信的程序,在深夜十二点的时候给女朋友发去消息,也算是尽了一个男朋友的义务了。

安装和导入

我们需要两个模块:apscheduler,pyautogui

快捷键 Windows+r 打开运行控制框,输入 cmd,进入命令行,输入:

pip install apscheduler
pip install pyautogui

导入:

import pyautogui
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler # 阻塞当前进程的调度器
# blocking类型调度器会阻塞当前进程,若你想要后台运行的调度器,可以使用以下代码:
# from apscheduler.schedulers.background import BackgroundScheduler

pyautogui

首先我们来实现自动发送消息

pyautogui 是一个非常强大的库,可以操作鼠标和键盘。我们将用它来完成自动操作电脑。

先来做一些基本设置:

pyautogui.PAUSE = 1 # 设置每一步操作的间隔(秒),可防止操作太快

然后我们登录微信,最小化。

接下来我们把鼠标放到微信的任务栏图标上,运行以下语句,获取此时光标的坐标,返回一个Point对象:

print(pyautogui.position()) # 打印坐标,Point(x=148, y=879)
icon_position = pyautogui.position() # Point(x=148, y=879)

打开微信,选择女朋友的回话窗口,将鼠标放在输入框上,同样获取光标坐标,为了将焦点锁定到输入框以方便待会的输入。
图片

print(pyautogui.position()) # 打印坐标,Point(x=174, y=751)
entry_position = pyautogui.position() # Point(x=174, y=751)

接下来,控制程序依次点击这两个点:

pyautogui.click(icon_position) # 默认左键单击
# pyautogui.click(148, 879)
pyautogui.click(entry_position)
# pyautogui.click(174, 751)

打开微信并锁定焦点后,我们开始输入文本。

输入文本可以有两种方式:

  • pyautogui.typewrite(['o', 'n', 'e', 'enter'])

在方法中传入一个列表,里面每一元素都是单个字母或特殊按键

  • pyautogui.typewrite('You can type multiple letters in this way')

传入字符串,但不能同时打印字母和特殊按键。

这两种方式都不能直接输入中文,所以只能依靠你的输入法来输入中文了。

pyautogui.typewrite([*list('zhengzai '), *list('jinxing '), 'shift', *list('pyautogui'), 'shift', *list('shiyan '), 'enter'], 0.1) # 第一个参数是输入文本,第二个是输入每个字符的间隔时间

为了使我们的操作更加 人模狗样 像人的操作,我么来加上移动鼠标的代码:

pyautogui.moveTo(icon_position, duration=2) # duration为执行时长,可选
pyautogui.click(icon_position)
pyautogui.moveTo(entry_position, duration=2)
pyautogui.click(entry_position)
pyautogui.typewrite([*list('zhengzai '), *list('jinxing '), 'shift', *list('pyautogui'), 'shift', *list('shiyan '), 'enter'], 0.1) # 第二个参数为按下每一个字母的间隔,可选

看看效果:
图片
当然,若是你要输入的内容实在很多,又嫌麻烦,可以通过复制粘贴来实现:

import pyperclip
pyperclip.copy('正在进行发中文试验,看到请忽略,更不要骂傻逼') # 复制
pyautogui.hotkey('ctrl', 'v') # 按下组合键的方法,ctrl+v粘贴
pyautogui.press('enter') # 按下按键

图片
这样,我们便完成了自动发送微信消息的功能了。

apscheduler

APScheduler 是一个Python库,可实现延迟调度要执行Python代码的功能,可以只执行一次,也可以定期执行。可以随时添加新任务或删除旧任务。能够十分方便地进行定时任务。

scheduler = BlockingScheduler() # 实例化一个调度器
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # 添加任务
scheduler.start()

add_job 方法在这里传了 3 个参数,第一个为到时间后要执行的函数,第二个为触发器的类型。这里选用的是 date 触发器,特定的时间点触发,作业任务只会执行一次。第三个参数 run_date 就是执行的时间。在这前我已经把自动发送消息的代码封装为了 main 函数,只需到时后调用即可。

完整代码

import pyautogui
import pyperclip
from datetime import datetime
from apscheduler.schedulers.blocking import BlockingScheduler
def main():
pyautogui.PAUSE = 0
icon_position = pyautogui.Point(x=148, y=879) # 任务栏图标位置
entry_position = pyautogui.Point(x=174, y=751) # 输入框位置
pyautogui.moveTo(icon_position, duration=1) # duration为执行时长,可选
pyautogui.click(icon_position)
pyautogui.moveTo(entry_position, duration=0.7)
pyautogui.click(entry_position)
pyperclip.copy('快去睡觉')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
pyperclip.copy('笨猪')
pyautogui.hotkey('ctrl', 'v')
pyautogui.press('enter')
scheduler = BlockingScheduler() # 实例化
scheduler.add_job(main, 'date', run_date=datetime(2021, 8, 18, 24, 00, 00)) # 添加任务
scheduler.start()

完成啦!现在可以去睡觉了。

结果

第二天早上起床,我被我妈妈骂了一顿,问我为什么午夜12点的时候电脑还亮着,而且还在自己发微信!

不过,好在女朋友没丢,我成功完成了女朋友的任务!
图片

好啦,这篇文章就到这里了。以上就是我分享的全部内容,感谢阅读!

技术交流

欢迎转载、收藏、有所收获点赞支持一下!

在这里插入图片描述

目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友

  • 方式①、发送如下图片至微信,长按识别,后台回复:加群;
  • 方式②、添加微信号:dkl88191,备注:来自CSDN
  • 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

长按关注

版权声明
本文为[Python学习与数据挖掘]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_38037405/article/details/121009000

  1. 你只认识大众汽车的车标怎么能行?赶紧用python采集所有车标学习一下
  2. python回文词如何以文件形式解决python问题
  3. 工作排程中Bat调用Python 程式无发打开(一闪而过)?
  4. python题目不会写求朋友们帮帮忙
  5. pythonwx内进行for循环导致窗体未响应
  6. Python自动化测试框架,谁才是你的唯一?
  7. 如何删除anaconda文件夹里的python.exe
  8. python爬取数据报错求解决一下
  9. Python编写程序求复利率,复利计算公式为
  10. 每周最怕编程课,懂python的朋友看看我吧
  11. 使用python批量将csv文件转为txt文件
  12. 用python写程序!!救命!!
  13. Python编写程序,输入年龄和出生年份,输入姓名和年龄
  14. Python爬虫,关于Xpath定位与预期不符
  15. python 批量计算的数据 print()到console的数据如何全部保存到指定路径文档,目前只能保存最后一个文件的
  16. 安装Python时出现错误:显示发现windows7 怎么弄
  17. 关于python中的PiP升级,尝试过很多遍了还是这个问题
  18. 这个怎么整啊,刚接触python
  19. 用python做图形旋转,opencv如何自动旋转图片到正常的水平位置
  20. Python零基础入门:字符串使用详解(常用方法及使用案例)
  21. Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
  22. python中一维数组怎么转置
  23. 遇到一个问题,关于Python的复数的
  24. python批量将文件夹里的csv文件转成txt文件
  25. Python 彻底搞懂列表推导式|初级到进阶(实例30+)
  26. python爬虫,遇到urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>错误
  27. Python程序设计输入五到十之间的整数n,生成并输出一个n位的验证码,不能把大小写字母和数字全写出来
  28. python程序打包之后没运行tkinter
  29. python提取多个Excel文件内目的格内容按一定格式写入新的Excel。
  30. pandas读取csv文件文件末尾都是NaN值,发生了什么?
  31. Python使用matplotlib可视化自定义背景色实战:自定义可视化图像的背景色(Background Color)
  32. 大学生Python实验的列表与元组
  33. python 关于线程的参数args的问题
  34. 如何用python将pdf转成网页html的格式
  35. python基础题 运行后卡在某一步 随后电脑疯狂运转发声 等待无果
  36. 求大神教怎么用python写字
  37. 云计算开发:Python3-expandtabs()方法详解
  38. 9000字深度整理: 全网最详细 Pandas 合并数据集操作总结!
  39. python这个代码有错误,请帮我修改
  40. python redis自带门神 lock 方法
  41. 有关python求众数,中位数和均值的题目
  42. 零基础5天入门Python数据分析:第四课
  43. 零基础5天入门Python数据分析:第三课(上)
  44. 零基础5天入门Python数据分析:第一课
  45. python redis自带门神 lock 方法
  46. 【算法学习】LCP 01. 猜数字(java / c / c++ / python / go)
  47. 【Python量化分析100例】Day2-星期几最容易被割韭菜
  48. python逆推年份,前两问写好了,第三问不会
  49. Python 爬取百度网页如何绕过安全验证
  50. 零基础5天入门Python数据分析:第五课
  51. Python人脸融合时出现关于pybind11的问题
  52. python如何返回除数,公约数,倍数
  53. python 返回多重嵌套列表(多于两层嵌套)的元素
  54. 用Python采集了几千条相亲文案,终于发现了告别单身的秘密
  55. python正负序列题,目前只学到循环,怎么做啊(*꒦ິ⌓꒦ີ)
  56. 拿爱奇艺练手Python爬虫,是在法律边缘试探吗?爬虫技巧学习
  57. Python注释删除代码依然报错
  58. python的pyautogui模块中的pyautogui.scroll()括号中无论写什么值滚动范围都相同
  59. 为什么python在vscode里运行报语法错误,在IDLE里就不会
  60. 请问python如何在将pdf转成word时,去除pdf上的页眉页脚(或者对于每页pdf只取第2行-倒数第二行)