用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 提供的免費短信(有限制,字數太長,發送出去接收不到):

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


分享到:


相關文章: