用Python来实现钉钉自动打卡并发送邮件短信提醒

自从用钉钉打卡,老忘记打,只会python语言,所以用Python写了一个自动跑的脚本,每天定时跑。这样就避免忘记了。需要一台在公司跑的手机。

首先,原理上是通过Python调用cmd命令行来调用ADB驱动来操作安卓手机。(安卓手机打开开发者选项,调试模式),之后获取手机屏幕截图,发送到电脑,通过Email SMTP协议发送邮件。百度OCR识别图像后,Twilio发送短信。不想看内容的童鞋可直接github下载项目运行:https://github.com/1414044032/DingDingAutoPlayCard。

效果展示:

用Python来实现钉钉自动打卡并发送邮件短信提醒
用Python来实现钉钉自动打卡并发送邮件短信提醒
用Python来实现钉钉自动打卡并发送邮件短信提醒用Python来实现钉钉自动打卡并发送邮件短信提醒

首先需要安装adb驱动。可以在如下的网站下载adb驱动:https://adb.clockworkmod.com/。

下载后,我安装到了如下的目录中。

用Python来实现钉钉自动打卡并发送邮件短信提醒

之后把adb.exe所在的文件夹配置到Path环境变量中:

用Python来实现钉钉自动打卡并发送邮件短信提醒
用Python来实现钉钉自动打卡并发送邮件短信提醒

配置完成后,打开cmd测试一下(你得通过USB插上你得安卓手机):

用Python来实现钉钉自动打卡并发送邮件短信提醒

输入:adb devices 能成功显示类似图上的信息,则表示。Adb成功连接上了手机。

之后,我们查到了adb 控制安卓手机的一系列的命令:

用Python来实现钉钉自动打卡并发送邮件短信提醒

我们选取我们需要的命令来通过定时操作手机来完成自动打卡的操作。

在模拟点击操作时,我们需要一系列的手机坐标信息。

我们可以吧手机截图发送到电脑,之后打开图片,通过电脑自带的画图工具来打开。

用Python来实现钉钉自动打卡并发送邮件短信提醒

之后,你可以发现。鼠标所指的点就是手机上真实的坐标:

用Python来实现钉钉自动打卡并发送邮件短信提醒

首先我们需要梳理一下我们的逻辑,类似下图:

用Python来实现钉钉自动打卡并发送邮件短信提醒

所以,我们的思路就明确了:

Python控制逻辑是否打卡,并开启下次循环。

Adb 负责操纵手机。

接下来控制打卡的逻辑大概这个样子:

用Python来实现钉钉自动打卡并发送邮件短信提醒

下来就是写代码的阶段了:

首先,确定一个方法只做一件事:

我们定义一个钉钉类:

之后写方法:

配置文件:

用Python来实现钉钉自动打卡并发送邮件短信提醒

初始化,加载一系列需要的参数。参数放在配置文件中,通过"configparser

"来获取。

用Python来实现钉钉自动打卡并发送邮件短信提醒

之后写方法(都是调用固定的adb命令,中间加上阻塞,来保证钉钉已经打开):

用Python来实现钉钉自动打卡并发送邮件短信提醒

由于上班,下班都需要打开钉钉,退出钉钉,所以这里我们把上面的两个方法放在一起写一个妆饰器来装饰需要打开和关闭操作的方法。(上班一般为极速打卡,不需要点击上班打卡,所以只需要打开钉钉即可):

用Python来实现钉钉自动打卡并发送邮件短信提醒

之后用妆饰器修饰上班,下班的方法:

用Python来实现钉钉自动打卡并发送邮件短信提醒

中间获取截图,以及发送邮件的方法,添加到上下班的方法中即可:

用Python来实现钉钉自动打卡并发送邮件短信提醒
用Python来实现钉钉自动打卡并发送邮件短信提醒

之后写两个方法,一个过滤周末,一个来生成随机的打卡时间点:

用Python来实现钉钉自动打卡并发送邮件短信提醒

完成之后,程序还差最主要的定时跑任务:

使用Python的sche模块来开启定时任务:

用Python来实现钉钉自动打卡并发送邮件短信提醒用Python来实现钉钉自动打卡并发送邮件短信提醒

之后,我新增了短信提醒的功能。通过百度ocr识别图片文字后,使用Twilio 提供的免费短信(有限制,字数太长,发送出去接收不到):

新增功能只需要添加到上下班的方法体中即可。


分享到:


相關文章: