摘要:從年知道后就開(kāi)始使用它來(lái)記錄自己的編碼時(shí)間,但作為免費(fèi)版只能查看最近兩周的數(shù)據(jù),于是很久之前就寫(xiě)了一個(gè)程序同步自己的歷史數(shù)據(jù),不過(guò)一直沒(méi)找到合適的圖表插件像官網(wǎng)那樣展示數(shù)據(jù)信息。版本的代碼也實(shí)現(xiàn)了相關(guān)的同步展示邏輯,代碼在分支中。
從16年知道 WakaTime 后就開(kāi)始使用它來(lái)記錄自己的編碼時(shí)間,但作為免費(fèi)版只能查看最近兩周的數(shù)據(jù),于是很久之前就寫(xiě)了一個(gè)程序同步自己的歷史數(shù)據(jù),不過(guò)一直沒(méi)找到合適的圖表插件像官網(wǎng)那樣展示數(shù)據(jù)信息。前些日子咨詢了一下同事,得知了用 antv 可以繪制對(duì)應(yīng)的圖表數(shù)據(jù),剛好現(xiàn)在也處于失業(yè)階段,就花了幾天時(shí)間又重新做了一個(gè)項(xiàng)目用于同步和展示 WakaTime 數(shù)據(jù)。WakaTime WakaTime簡(jiǎn)介
WakaTime 是一款可以記錄你的編碼時(shí)間的工具,目前支持絕大部分主流的 IDE 以及 Chrome 瀏覽器。
使用步驟注冊(cè) WakaTime 賬號(hào);
在官網(wǎng)找到對(duì)應(yīng)的 IDE 插件,按照步驟安裝 WakaTime 插件(下圖中灰色表示目前官方還不支持):
在個(gè)人設(shè)置頁(yè)面復(fù)制 Secret API Key ,填入對(duì)應(yīng)的 WakaTime 插件中;
過(guò)一段時(shí)間后,你就可以在 WakaTime 網(wǎng)站上看到你的編碼情況,如下圖所示:
wakatime-sync項(xiàng)目 項(xiàng)目簡(jiǎn)介WakaTime 提供了豐富多樣的圖表可以多維度地查看自己的編碼時(shí)間情況。不過(guò)作為免費(fèi)用戶,最多只能查看自己最近14天的數(shù)據(jù);如果要查看全部的數(shù)據(jù),需要 $9/月的訂閱費(fèi)用。
還好 WakaTime 提供了 API 接口,通過(guò)接口可以獲取到編碼時(shí)間統(tǒng)計(jì)情況的原始數(shù)據(jù)(作為免費(fèi)用戶還是有只能查看最近14天數(shù)據(jù)的限制)。
本項(xiàng)目通過(guò) WakaTime 提供的 API 接口,可以把自己的 WakaTime 數(shù)據(jù)保存在的數(shù)據(jù)庫(kù)中,然后利用圖表插件展示出來(lái),目前已完成三種類(lèi)型的圖表展示:
每日項(xiàng)目持續(xù)時(shí)間圖:
時(shí)間范圍內(nèi)活動(dòng)情況:
每日編碼耗時(shí)日歷圖:
GITHUB: https://github.com/wf2311/wakatime-sync
碼云: https://gitee.com/wf2311/wakatime-sync
所用技術(shù)后端:JDK1.8、SpringBoot、Jodd-HTTP、Thymeleaf;
數(shù)據(jù)庫(kù):MySQL 5.7;
前端:Moment.js、ElementUI、AntV-G2 、Echarts;
通知服務(wù):Server醬、釘釘機(jī)器人
項(xiàng)目邏輯比較簡(jiǎn)單,就是每天會(huì)定時(shí)通過(guò) WakaTime 的 API 抓取并保存前一天的數(shù)據(jù),再通過(guò)圖標(biāo)插件展示出來(lái)。之后還會(huì)完善接口緩存、同步通知等功能;
同時(shí)使用了 AntV-G2 和 Echarts 的原因是因?yàn)槌掷m(xù)時(shí)間圖可以用 AntV-G2 實(shí)現(xiàn),但日歷圖用 AntV-G2 實(shí)現(xiàn)過(guò)于復(fù)雜,就采用了用 Echarts 實(shí)現(xiàn)日歷圖;
另外本項(xiàng)目最初是的數(shù)據(jù)庫(kù)是 MongoDB ,但是考慮到通用性和易用性后來(lái)又換成了 MySQL。MongoDB 版本的代碼也實(shí)現(xiàn)了相關(guān)的同步展示邏輯,代碼在 mongodb 分支中。
使用方法替換或設(shè)置好src/main/resources/application.yml配置文件中的wakatime.app.key和spring.datasource.* 相關(guān)數(shù)據(jù)庫(kù)配置,采用 maven 打包的方式安裝即可,支持 Docker 方式安裝。
數(shù)據(jù)庫(kù)建庫(kù)腳本位于sql/wakatime_sync.sql中。
數(shù)據(jù)庫(kù)使用 MongoDB 的版本位于分支 mongdb 中。
示例地址:https://wakatime.wangfeng.pro/。
消息通知系統(tǒng)中有一個(gè)定時(shí)任務(wù),會(huì)在每天早上09:00會(huì)根據(jù)配置信息想釘釘或微信發(fā)送上一天的編碼時(shí)間信息;
需要在application.yml配置對(duì)應(yīng)的參數(shù):
Server醬微信通知:按照Server醬網(wǎng)站說(shuō)明獲得一個(gè)SCKEY,設(shè)置成wakatime.ftqq-key的值;
釘釘機(jī)器人通知:在要獲得提醒的釘釘群里面生成一個(gè)自定義機(jī)器人,將機(jī)器人的 Hook 地址中的 access_token 的值設(shè)置成wakatime.dingding-key的值;
如果不想使用對(duì)應(yīng)的消息通知,請(qǐng)將application.yml中對(duì)應(yīng)的參數(shù)注釋掉或?qū)⒅抵脼榭?/strong>
可能會(huì)遇到的問(wèn)題由于本項(xiàng)目采用的是SpringBoot 2,對(duì)應(yīng)的 mysql-connector-java 驅(qū)動(dòng)使用的是MySQL服務(wù)端的時(shí)區(qū),如果你使用的MySQL的時(shí)區(qū)和你程序中的時(shí)區(qū)以及你在 WakaTime 個(gè)人設(shè)置中的時(shí)區(qū)不一致,就會(huì)導(dǎo)致保存的相關(guān)數(shù)據(jù)中時(shí)間不準(zhǔn),解決辦法就是首先調(diào)整好 WakaTime 個(gè)人設(shè)置里的時(shí)區(qū),再調(diào)整 MySQL 數(shù)據(jù)庫(kù)的時(shí)區(qū),或者是使用 5.X版本的mysql-connector-java驅(qū)動(dòng)。
如果你一直在使用 WakaTime ,如果想使用本項(xiàng)目同步你所有的歷史數(shù)據(jù),可以在官網(wǎng)上試用團(tuán)隊(duì)版的方式獲得1個(gè)月(還是半個(gè)月?)的付費(fèi)版功能或者是訂閱一個(gè)月的付費(fèi)版,然后通過(guò)本項(xiàng)目來(lái)同步所有的歷史數(shù)據(jù):POST /api/v1/sync 或參見(jiàn)項(xiàng)目中的測(cè)試方法。使用測(cè)試方法進(jìn)行時(shí)不能同時(shí)使用太多的線程去同時(shí)調(diào)用 API 接口,會(huì)被限流。
TODO查詢接口緩存;
可以對(duì)項(xiàng)目名稱設(shè)置別名展示;
結(jié)語(yǔ)如果本項(xiàng)目對(duì)你有用的話,歡迎在 GITHUB 或碼云上 star,也歡迎對(duì)項(xiàng)目提出修改意見(jiàn)和建議。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/73086.html
摘要:將這些命令綁定到鍵盤(pán)快捷鍵是有幫助的,例如向上箭頭用于平衡向外,而向下箭頭用于平衡向內(nèi)。是和的快速原型開(kāi)發(fā)平臺(tái)。 本系列的第一篇可以在這里看到: 提高 JavaScript 開(kāi)發(fā)效率的高級(jí) VSCode 擴(kuò)展! showImg(https://segmentfault.com/img/bVbnn2j?w=1254&h=768); 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來(lái)篇優(yōu)質(zhì)...
摘要:摘要你所不知道的系列。允許你寫(xiě)入縮寫(xiě)代碼并返回的相應(yīng)標(biāo)記,目前已經(jīng)內(nèi)置,所以不用配置了。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,付費(fèi)客戶有金山軟件百姓網(wǎng)等眾多品牌企業(yè)。摘要: 你所不知道的系列。 原文:提高 JavaScript 開(kāi)發(fā)效率的高級(jí) VSCode 擴(kuò)展之二! 作者:前端小智 Fundebug經(jīng)授權(quán)轉(zhuǎn)載,版權(quán)歸原作者所有。 作為一名業(yè)余愛(ài)好者、專業(yè)人員,甚至是每月只有一次編...
摘要:整個(gè)項(xiàng)目簡(jiǎn)單還具有實(shí)用價(jià)值,可作為的實(shí)戰(zhàn)項(xiàng)目學(xué)習(xí)的調(diào)試工具欄。查看文檔自動(dòng)在個(gè)人首頁(yè)展示編程時(shí)長(zhǎng)的工具。通過(guò)學(xué)習(xí)這些前沿的人工智能論文,提前了解在未來(lái)更多可能性可以將圖片和視頻轉(zhuǎn)換成漫畫(huà)風(fēng)格的工具。興趣是最好的老師,HelloGitHub 讓你對(duì)編程感興趣!簡(jiǎn)介HelloGitHub 分享 GitHub 上有趣、入門(mén)級(jí)的開(kāi)源項(xiàng)目。https://github.com/521xueweihan...
摘要:檢測(cè)在電腦上花費(fèi)的時(shí)間,干了什么這個(gè)軟件支持平臺(tái),需要在機(jī)器上裝上客戶端,然后按照說(shuō)明做下去,你就會(huì)在他們的官網(wǎng)上看到一個(gè),記錄你做了什么。檢測(cè)你在編輯器上做了什么,非常詳細(xì),支持很多編輯器。 1 rescuetime 檢測(cè)在電腦上花費(fèi)的時(shí)間,干了什么 https://www.rescuetime.com/da...這個(gè)軟件支持win,mac,linux平臺(tái),需要在機(jī)器上裝上客戶端,然...
摘要:前端配置簡(jiǎn)體中文插件,一般會(huì)自動(dòng)識(shí)別你的環(huán)境,自動(dòng)提示是否需要簡(jiǎn)體中文的語(yǔ)言包。使用插件將目前配置保存到上,以后只需要從上獲取,就可以一次性安裝插件配置信息。 VS code-前端配置 showImg(https://segmentfault.com/img/bVbuK6l?w=1224&h=999); Chinese (Simplified) Language Pack for Vi...
閱讀 1491·2023-04-26 01:58
閱讀 2371·2021-11-04 16:04
閱讀 1845·2021-08-31 09:42
閱讀 1847·2021-07-25 21:37
閱讀 1117·2019-08-30 15:54
閱讀 2150·2019-08-30 15:53
閱讀 3105·2019-08-29 13:28
閱讀 2758·2019-08-29 10:56