從16年知道 WakaTime 後就開始使用它來記錄本身的編碼時間,但做爲免費版只能查看最近兩週的數據,因而好久以前就寫了一個程序同步本身的歷史數據,不過一直沒找到合適的圖表插件像官網那樣展現數據信息。前些日子諮詢了一下同事,得知了用 antv 能夠繪製對應的圖表數據,恰好如今也處於失業階段,就花了幾天時間又從新作了一個項目用於同步和展現 WakaTime 數據。
WakaTime 是一款能夠記錄你的編碼時間的工具,目前支持絕大部分主流的 IDE 以及 Chrome 瀏覽器。前端
WakaTime 提供了豐富多樣的圖表能夠多維度地查看本身的編碼時間狀況。不過做爲免費用戶,最多隻能查看本身最近14天的數據;若是要查看所有的數據,須要 $9/月的訂閱費用。java
還好 WakaTime 提供了 API 接口,經過接口能夠獲取到編碼時間統計狀況的原始數據(做爲免費用戶仍是有隻能查看最近14天數據的限制)。mysql
本項目經過 WakaTime 提供的 API 接口,能夠把本身的 WakaTime 數據保存在的數據庫中,而後利用圖表插件展現出來,目前已完成三種類型的圖表展現:git
後端:JDK1.八、SpringBoot、Jodd-HTTP、Thymeleaf;github
數據庫:MySQL 5.7;spring
前端:Moment.js、ElementUI、AntV-G2 、Echarts;sql
項目邏輯比較簡單,就是天天會定時經過 WakaTime 的 API 抓取並保存前一天的數據,再經過圖標插件展現出來。以後還會完善接口緩存、同步通知等功能;數據庫
同時使用了 AntV-G2 和 Echarts 的緣由是由於持續時間圖能夠用 AntV-G2 實現,但日曆圖用 AntV-G2 實現過於複雜,就採用了用 Echarts 實現日曆圖;後端
另外本項目最初是的數據庫是 MongoDB ,可是考慮到通用性和易用性後來又換成了 MySQL。MongoDB 版本的代碼也實現了相關的同步展現邏輯,代碼在 mongodb 分支中。
替換或設置好src/main/resources/application.yml
配置文件中的wakatime.app.key
和spring.datasource.*
相關數據庫配置,採用 maven 打包的方式安裝便可,支持 Docker 方式安裝。
數據庫建庫腳本位於sql/wakatime_sync.sql
中。
數據庫使用 MongoDB 的版本位於分支 mongdb 中。
示例地址:https://wakatime.wangfeng.pro/。
系統中有一個定時任務,會在天天早上09:00會根據配置信息想釘釘或微信發送上一天的編碼時間信息;
須要在application.yml
配置對應的參數:
wakatime.ftqq-key
的值;wakatime.dingding-key
的值;若是不想使用對應的消息通知,請將application.yml
中對應的參數註釋掉或將值置爲空
mysql-connector-java
驅動使用的是MySQL服務端的時區,若是你使用的MySQL的時區和你程序中的時區以及你在 WakaTime 我的設置中的時區不一致,就會致使保存的相關數據中時間不許,解決辦法就是首先調整好 WakaTime 我的設置裏的時區,再調整 MySQL 數據庫的時區,或者是使用 5.X
版本的mysql-connector-java
驅動。POST /api/v1/sync
或參見項目中的測試方法。使用測試方法進行時不能同時使用太多的線程去同時調用 API 接口,會被限流。