Python 实现企业微信自动打卡程序二:跳过节假日,随机打卡时间,定时任务,失败通知
实现打卡时间随机范围
既然我们程序写完后需要定时执行,那定时执行打卡就会导致每次上班或下班打卡时都是同一时间,这并不好
,为了避免被发现,每次打卡时间都是同一时间,这里我们优化程序,增加随机等待时间来实现。例如每次点击打卡时,随机等待 5-10 分钟。
这里我们增加了 random_sleep 函数来处理随机等待时间,下班也是同样逻辑。
处理节假日不打卡的情况
为了避免节假日误操作打卡情况,这里我们需要过滤节假日无需打卡情况。
处理方式如下:
(推荐)简单版本:直接根据星期来判断,周一至周五打卡,周末不打卡
网上寻找每年节假日相关公开接口
这里我们推荐直接根据星期来判断,因为大多数情况下网上的节假日接口不太稳定(这样会导致我们误打卡),我们的目标是实现真正的和人工打卡一样的操作。
主要代码是增加if TimeUtil.is_work_day():
判断
实现定时调度打卡
到这里我们已经编写好了一个初版的自动打卡程序,接下来上调度。配置调度有几种方式:
使用 Python 相关调度库,例如
falsk-scheduler
或django-scheduler
windows 里编写 bat 文件,然后在系统设置定时任务
Linux 可使用
crontab
配置定时任务
这里我们为了方便演示,直接使用 windows 的计划任务来配置定时
新建任务
在任务计划程序中,右键点击【任务计划程序库】-【新建任务】
注意:需要勾选
【不管用户是否登录都要运行】
任务触发器配置
点击【触发器】,选择【每天】
任务操作配置
点击【操作】-【新建】-【浏览】
选择我们编写的 bat 文件
start.bat
文件代码示例:
最后保存即可实现任务按计划每天执行
注意,我们是上班+下班打卡执行程序,为了不受影响,建议分别配置 2 个定时任务
上班:配置从每天 8:30 开始执行程序
下班:配置从每天 18:30 开始执行程序(
想XX加班的同志,可以配置时间更晚一点
)
打卡成功或失败通知自己
看到这里,你以为完美了吗?并不是,是程序就总会出错,如果某天程序打卡失败,就会导致我们漏打卡,轻则补卡,重则扣钱
为了实现打卡失败时及时通知自己,然后手工打卡的情况,我们需要做一个通知功能。
这里有如下几种解决方案:
通过第三方免费接口,例如Server酱(不知道免费额度能用多久)来实现推送消息到个人微信上
通过收费接口,实现电话通知,例如XX云上有很多这样的产品
给自己企业微信里的自己发一条消息来提醒
通过企微机器人webHook形式发送消息
如果各位大佬有更好的服务推送消息到个人微信的方案,欢迎沟通
这里先采用第 3 种方案,通过 adb 打开企业微信,然后给自己发一条消息提醒,给大家留个作业。
思考:如何使用 uiautoamtor2 或 adb 命令实现打开企业微信,找到自己,并给自己发送一条消息?
总结
通过以上代码,我们基本实现了企微上下班自动打卡的全部流程,本次代码只做学习交流使用~
文章转载自:Python魔法师
评论