python钉钉打卡脚本

使用方法:

1.需要有固定手机设备放在能打卡的地方,打开定位。

2.需要有adb环境,手机跟adb之间建立连接。

3.自己修改脚本里面的坐标。

代码如下:

import os
import time
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime


def interval_time(date):
    """获取当前时间距离指定时相差的秒值
    :param date: 格式为:"2021-07-28 18:25"
    :return: 返回秒
    """
    now_time = int(time.time())
    # 触发时间精确到分
    trigger_time = int(time.mktime(time.strptime(date, "%Y-%m-%d %H:%M")))
    if trigger_time > now_time:
        seconds = trigger_time - now_time
        print("相差秒值是:{}".format(seconds))
        return seconds
    else:
        print("输入日期小于当前时间")


def is_connect():
    devices_list = []
    result = os.popen(adb devices)
    str_list = result.readlines()
    for i in range(len(str_list)):
        if str_list[i].find(\tdevice) != -1:
            temp = str_list[i].split(\t)
            devices_list.append(temp[0])
    if devices_list:
        print("获取到的设备名是:{}".format(devices_list[0]))
        return True
    return False


def clock_in():
    """打卡"""
    if is_connect():
        # 循环3次提高打卡成功概率
        for i in range(3):
            print("第{}次运行".format(i))
            print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
            os.system("adb shell am start com.alibaba.android.rimet/.biz.LaunchHomeActivity")
            print("启动钉钉")
            time.sleep(2)
            os.system("adb shell input tap 539 2139")
            print("点击工作台")
            time.sleep(3)
            os.system("adb shell input tap 948 1470")
            print("点击考勤打卡")
            time.sleep(3)
            os.system("adb shell input tap 430 1947")
            print("点击手机定位")
            time.sleep(2)
            # 点击返回
            os.system("adb shell input keyevent BACK")
            time.sleep(2)
            # 在点返回。回到工作台
            os.system("adb shell input keyevent BACK")
            # 重新考勤打卡
            time.sleep(3)
            os.system("adb shell input tap 948 1470")

            time.sleep(5)
            # 点击打卡
            os.system("adb shell input tap 548 1121")
            print("点击打卡")
            time.sleep(1)
            # 杀App进程
            os.system("adb shell am force-stop com.alibaba.android.rimet")
            if i == 2:
                # 循环次数为3时,锁屏
                os.system("adb shell input keyevent 26")
    else:
        print("设备未连接")


if __name__ == __main__:
    seconds = interval_time("2021-08-26 21:01")
    sched = BlockingScheduler()
    sched.add_job(clock_in, interval, seconds=seconds)
    sched.start()

 

python钉钉打卡脚本

上一篇:Python--深入理解Python特性 第3章


下一篇:【thinkphp6源码分析二】最最基础的类-APP类