WakaTime資料同步展示工具
從16年知道 WakaTime 後就開始使用它來記錄自己的編碼時間,但作為免費版只能檢視最近兩週的資料,於是很久之前就寫了一個程式同步自己的歷史資料,不過一直沒找到合適的圖表外掛像官網那樣展示資料資訊。前些日子諮詢了一下同事,得知了用 antv 可以繪製對應的圖表資料,剛好現在也處於失業階段,就花了幾天時間又重新做了一個專案用於同步和展示 WakaTime 資料。
WakaTime
WakaTime簡介
ofollow,noindex" target="_blank">WakaTime 是一款可以記錄你的編碼時間的工具,目前支援絕大部分主流的 IDE 以及 Chrome 瀏覽器。
使用步驟
- 過一段時間後,你就可以在 WakaTime 網站上看到你的編碼情況,如下圖所示:
wakatime-sync專案
專案簡介
WakaTime 提供了豐富多樣的圖表可以多維度地檢視自己的編碼時間情況。不過作為免費使用者,最多隻能檢視自己最近14天的資料;如果要檢視全部的資料,需要 $9/月的訂閱費用。
還好 WakaTime 提供了 API 介面,通過介面可以獲取到編碼時間統計情況的原始資料(作為免費使用者還是有隻能檢視最近14天資料的限制)。
本專案通過 WakaTime 提供的 API 介面,可以把自己的 WakaTime 資料儲存在的資料庫中,然後利用圖表外掛展示出來,目前已完成三種類型的圖表展示:
- 每日專案持續時間圖:
- 時間範圍內活動情況:
- 每日編碼耗時日曆圖:
專案地址
所用技術
後端:JDK1.8、SpringBoot、Jodd-HTTP、Thymeleaf;
資料庫:MySQL 5.7;
前端:Moment.js、ElementUI、AntV-G2 、Echarts;
專案邏輯比較簡單,就是每天會定時通過 WakaTime 的 API 抓取並儲存前一天的資料,再通過圖示外掛展示出來。之後還會完善介面快取、同步通知等功能;
同時使用了 AntV-G2 和 Echarts 的原因是因為持續時間圖可以用 AntV-G2 實現,但日曆圖用 AntV-G2 實現過於複雜,就採用了用 Echarts 實現日曆圖;
另外本專案最初是的資料庫是 MongoDB ,但是考慮到通用性和易用性後來又換成了 MySQL。MongoDB 版本的程式碼也實現了相關的同步展示邏輯,程式碼在 gdb" rel="nofollow,noindex" target="_blank">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
配置對應的引數:
- Server醬微信通知:按照 Server醬網站說明 獲得一個 SCKEY ,設定成
wakatime.ftqq-key
的值; - 釘釘機器人通知:在要獲得提醒的釘釘群裡面生成一個 自定義機器人 ,將機器人的 Hook 地址中的 access_token 的值設定成
wakatime.dingding-key
的值;
如果不想使用對應的訊息通知,請將 application.yml
中對應的引數註釋掉或將值置為空