WakaTime數據同步展現工具

從16年知道 WakaTime 後就開始使用它來記錄本身的編碼時間,但做爲免費版只能查看最近兩週的數據,因而好久以前就寫了一個程序同步本身的歷史數據,不過一直沒找到合適的圖表插件像官網那樣展現數據信息。前些日子諮詢了一下同事,得知了用 antv 能夠繪製對應的圖表數據,恰好如今也處於失業階段,就花了幾天時間又從新作了一個項目用於同步和展現 WakaTime 數據。

WakaTime

WakaTime簡介

WakaTime 是一款能夠記錄你的編碼時間的工具,目前支持絕大部分主流的 IDE 以及 Chrome 瀏覽器。前端

使用步驟

  1. 註冊 WakaTime 帳號;
  2. 官網找到對應的 IDE 插件,按照步驟安裝 WakaTime 插件(下圖中灰色表示目前官方還不支持):

所支持的IDE

  1. 我的設置頁面複製 Secret API Key ,填入對應的 WakaTime 插件中;

複製 Secret API Key

  1. 過一段時間後,你就能夠在 WakaTime 網站上看到你的編碼狀況,以下圖所示:

wakatime-sync項目

項目簡介

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

通知服務:Server醬釘釘機器人mongodb

項目邏輯比較簡單,就是天天會定時經過 WakaTime 的 API 抓取並保存前一天的數據,再經過圖標插件展現出來。以後還會完善接口緩存、同步通知等功能;數據庫

同時使用了 AntV-G2 和 Echarts 的緣由是由於持續時間圖能夠用 AntV-G2 實現,但日曆圖用 AntV-G2 實現過於複雜,就採用了用 Echarts 實現日曆圖;後端

另外本項目最初是的數據庫是 MongoDB ,可是考慮到通用性和易用性後來又換成了 MySQL。MongoDB 版本的代碼也實現了相關的同步展現邏輯,代碼在 mongodb 分支中。

使用方法

替換或設置好src/main/resources/application.yml配置文件中的wakatime.app.keyspring.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中對應的參數註釋掉或將值置爲空

可能會遇到的問題

  1. 因爲本項目採用的是SpringBoot 2,對應的 mysql-connector-java 驅動使用的是MySQL服務端的時區,若是你使用的MySQL的時區和你程序中的時區以及你在 WakaTime 我的設置中的時區不一致,就會致使保存的相關數據中時間不許,解決辦法就是首先調整好 WakaTime 我的設置裏的時區,再調整 MySQL 數據庫的時區,或者是使用 5.X版本的mysql-connector-java驅動。
  2. 若是你一直在使用 WakaTime ,若是想使用本項目同步你全部的歷史數據,能夠在官網上試用團隊版的方式得到1個月(仍是半個月?)的付費版功能或者是訂閱一個月的付費版,而後經過本項目來同步全部的歷史數據:POST /api/v1/sync 或參見項目中的測試方法。使用測試方法進行時不能同時使用太多的線程去同時調用 API 接口,會被限流。

TODO

  • 查詢接口緩存;
  • 能夠對項目名稱設置別名展現;

結語

若是本項目對你有用的話,歡迎在 GITHUB碼雲上 star,也歡迎對項目提出修改意見和建議。

相關文章
相關標籤/搜索