[python][企业微信]企业微信自动打卡Python脚本,价值一万元的自动打卡脚本

# -*- coding: utf-8 -*-
import datetime
import os
import random
import time
import schedule
# 引入uiautomator库
from pip._vendor import requests
from uiautomator import device as d

# 法定节假日准确日期,不进行打卡
holiday = [2020-06-25,
           2020-06-26,
           2020-06-27,
           2020-10-01,
           2020-10-02,
           2020-10-03,
           2020-10-04,
           2020-10-05,
           2020-10-06,
           2020-10-07,
           2020-10-08,
           ]
# 调整工作日准确日期,进行打卡
ajustWorking = [2020-05-09, 2020-06-28, 2020-09-27, 2020-10-10]
# 调休日期,不进行打卡
compensatoryLeave = [2020-05-16]


def init():
    # 初始化信息
    print(d.info)
    # 点亮屏幕
    # d.screen.on()
    os.popen("adb shell input keyevent 224")
    time.sleep(1)
    # 滑动屏幕
    os.popen("adb shell input swipe 300 2000 300 500")
    time.sleep(1)
    # 输入密码
    os.popen("adb shell input text 密码")  # 你的手机密码
    time.sleep(1)


def openwework():
    """
    企业微信打卡
    clock in out 上班 下班
    :return:
    """
    init()
    msg = 0
    # 先结束再开启
    os.popen("adb shell am force-stop com.tencent.wework")
    time.sleep(1)
    os.popen("adb shell am start com.tencent.wework/com.tencent.wework.launch.LaunchSplashActivity")
    time.sleep(5)
    print("启动企业微信成功")
    d(text=u"工作台").click()
    time.sleep(1)
    d(text=u"打卡").click()
    time.sleep(3)
    print("打开打卡界面成功")
    print("当前小时:", datetime.datetime.now().hour)

    if datetime.datetime.now().hour < 11:
        # 早晨卡
        if d(text=u"你已在打卡范围内").info[text] == "你已在打卡范围内":
            print("现在是上午")
            d(text=u"上班打卡").click()
            time.sleep(2)
            if d(text=u"上班·正常").info[text] == "上班·正常":
                in_time = d(className="android.widget.TextView", resourceId="com.tencent.wework:id/mp").info[text]
                print("打卡时间:", in_time)
                msg = "上班打卡成功: 时间:" + in_time + " 日志时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            else:
                msg = "打卡失败:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    else:
        # 下班卡
        if d(text=u"你已在打卡范围内").info[text] == "你已在打卡范围内":
            print("现在是下午")
            d(text=u"下班打卡").click()
            time.sleep(2)
            if d(text=u"下班·正常").info[text] == "下班·正常":
                in_time = d(className="android.widget.TextView", resourceId="com.tencent.wework:id/mp").info[text]
                print("打卡时间:", in_time)
                msg = "下班打卡成功: 时间:" + in_time + " 日志时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            else:
                msg = "打卡失败:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    # 返回桌面
    time.sleep(1)
    os.popen("adb shell input keyevent 3")
    time.sleep(1)
    os.popen("adb shell am force-stop com.tencent.wework")
    time.sleep(1)
    return msg


# 启动微信
def wexin():
    # 按home键
    os.popen("adb shell input keyevent 3")
    time.sleep(1)
    os.popen("adb shell am start com.tencent.mm/com.tencent.mm.ui.LauncherUI")
    time.sleep(3)
    print("启动微信成功")
    d(text=u"通讯录").click()
    time.sleep(1)
    d(text=u"你自己的微信名字").click()  # 你自己的微信名字  
    time.sleep(2)
    d(text=u"音视频通话").click()
    time.sleep(1)
    d(text=u"语音通话").click()
    # 振铃五秒钟
    time.sleep(5)
    # d(text=u"取消").click()
    os.popen("adb shell input tap 540 1850")
    time.sleep(3)
    # 按返回键
    os.popen("adb shell input keyevent 4")
    time.sleep(2)
    os.popen("adb shell input keyevent 4")
    time.sleep(1)
    # 按home键
    os.popen("adb shell input keyevent 3")
    time.sleep(1)
    os.popen("adb shell am force-stop com.tencent.mm")
    print("结束微信成功")
    time.sleep(1)
    # 锁屏
    os.popen("adb shell input keyevent 26")


def pushmsg(msg):
    """
    推送消息给微信
    :return:
    """
    try:
        url = http://wxpusher.zjiecode.com/api/send/message/?appToken=你自己的token&content= + msg + &uid=你自己的uid
        requests.get(url)
    except Exception:
        print("推送消息异常")


def fuckCard():
    # 设置增加的随机分钟数
    clocknum = 3
    # 获取当前时间,2020-05-05 07:45
    nowtime = datetime.datetime.now()
    print("当前时间:", nowtime)
    # 加上随机数(0-3分钟),2020-05-05 07:46
    doworktime = (nowtime + datetime.timedelta(minutes=random.randint(0, clocknum))).strftime("%Y-%m-%d %H:%M")
    print("执行任务时间:", doworktime)
    a = 0
    # 如果当前时间小于执行时间,执行while循环
    while time.strftime("%Y-%m-%d %H:%M", time.localtime()) < doworktime:
        print("秒数:", a)
        a += 1
        time.sleep(1)
    # 到时间执行任务
    # 如果当前时间大于执行时间,执行任务
    if time.strftime("%Y-%m-%d %H:%M", time.localtime()) >= doworktime:
        print("到时间执行任务")
        msg = openwework()
        pushmsg(msg)
        wexin()
        return


def fuckRest():
    """
    # 搞定随机时间
    :return:
    """
    if time.strftime("%Y-%m-%d", time.localtime()) in holiday:
        print("今天是法定假日")
        return True
    if time.strftime("%Y-%m-%d", time.localtime()) in compensatoryLeave:
        print("今天是调休日期,不进行打卡~~")
        return True
    if time.strftime("%Y-%m-%d", time.localtime()) in ajustWorking:
        print("今天是调整工作日,需要进行打卡")
        # 周六启动计划任务问题,需要进行时间判断修复 schedule.every().saturday.at(‘12:09‘).do(fuckRest)
        # 也就是是避免 12点问题
        if datetime.datetime.now().hour != 12:
            print("调整工作日,早8八点,晚6点,正常打卡")
            fuckCard()
        return True

    # 判断是否为周一到周六上午
    # 1.判断当前日期是否为周日
    if datetime.datetime.now().weekday() != 6:
        if datetime.datetime.now().weekday() != 5:
            print("周一至周五")
            fuckCard()
        else:
            print("今天是周六")
            if (datetime.datetime.now().hour >= 8) and (datetime.datetime.now().hour < 13):
                print("周六半天打卡")
                fuckCard()



# 企业微信自动打卡
if __name__ == "__main__":
    ‘‘‘
    主函数
    linux 后台运行
    nohup python3 -u main.py > main.log 2>&1 &
    Windows 
    start /b python3 main.py
    # 我司工作日:周一至周五,早8晚6。周六早8点半,中午12点。
    ‘‘‘
    # 每天执行打卡
    # 第一个卡
    schedule.every().day.at(07:45).do(fuckRest)
    # # 周六执行此任务
    # 正常工作日周六早晨卡
    schedule.every().saturday.at(08:13).do(fuckRest)
    # 正常工作日周六中午卡
    schedule.every().saturday.at(12:09).do(fuckRest)
    # # 第二个卡
    schedule.every().day.at(18:11).do(fuckRest)
    while True:
        schedule.run_pending()
        time.sleep(3)

[python][企业微信]企业微信自动打卡Python脚本 价值一万元的自动打卡脚本

这个Python脚本还是有bug的,暂时不在维护和修复了,如果按照既定规划的执行不会出现错误。

当然,断网,断电,手机异常升级,重启等等错误,仍然需要人工进行搞定。

不过嘛,当没有收到提醒通知的时候,人工看看吧,也就早晨和下班那么一哆嗦,这要保证这一哆嗦不错误就好了。

反正我暂时没有遇见错误呢,遇见的时候再说吧,欢迎大家把错误信息发给我。

 

 

价值一万元的自动打卡脚本,表问我为毛价值一万元,你懂得,哇哈哈哈。

 

[python][企业微信]企业微信自动打卡Python脚本,价值一万元的自动打卡脚本

上一篇:Android常用权限permission列表摘录


下一篇:Android中的DDMS进行调试