用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
本文最后更新于:2024年7月24日 晚上
背景
背景是这样的, 我的家里台式机常年 休眠, 并配置了 Wake On Lan (WOL) 方便远程唤醒并使用.
但是我发现, 偶尔台式机会被其他情况唤醒, 这时候我并不知道, 结果白白运行了好几天, 浪费了很多电.
所以我的需求是这样的:
🤔 电脑唤醒 后(可能是开机, 有可能是从休眠状态唤醒), 自动做如下几件事:
- 摄像头拍照(判断是不是有人在使用)
- 屏幕截图(判断是不是有人在使用)
- 生成一封邮件, 告诉我「电脑已启动」并附上拍照和截图;
- 发送到我的邮箱.
具体实现
📷️ 摄像头拍照
✨ 概述:
通过
opencv-python
包实现.
具体的包名为: opencv-python
依赖 numpy
所以安装命令为:
1 |
|
然后导入语句为: import cv2
源码如下:
1 |
|
🎨 屏幕截图
✨ 概述:
通过
pyautogui
包实现.
参考文档: 对 Python 获取屏幕截图的 4 种方法详解
pyautogui 是比较简单的,但是不能指定获取程序的窗口,因此窗口也不能遮挡,不过可以指定截屏的位置,0.04s 一张截图,比 PyQt 稍慢一点,但也很快了。
1 |
|
📧 写邮件
✨ 概述:
通过
MIMEMultipart
类型
MIME 邮件中各种不同类型的内容是分段存储的,各个段的排列方式、位置信息都通过 Content-Type
域的 multipart
类型来定义。 multipart
类型主要有三种子类型:
mixed
: 附件alternative
: 纯文本和超文本内容related
:内嵌资源. 比如:在发送 html 格式的邮件内容时,可能使用图像作为 html 的背景,html 文本会被存储在alternative
段中,而作为背景的图像则会存储在related
类型定义的段中
具体源码如下:
1 |
|
📤️ 发邮件
✨ 概述:
通过
smtplib
包实现.
源码如下:
1 |
|
⏰ 台式机唤醒后触发 python 脚本
🗔 Windows 脚本
Windows bat 脚本如下:
1 |
|
⏰ 任务计划程序
进入 计算机管理 -> 系统工具 -> 任务计划程序. 添加如下任务计划:
- 安全选项:
- ✔️勾选:
不管用户是否登录都要运行
- ✔️勾选:
使用最高权限运行
- ✔️勾选:
- 触发器:
发生事件时
- 日志:
系统
- 源:
Power-Troubleshooter
- 事件 ID:
1
- 操作: 启动程序:
D:\scripts\auto_email.bat
🎉🎉🎉完成!
用 Python 脚本实现电脑唤醒后自动拍照 截屏并发邮件通知
https://ewhisper.cn/posts/4384/