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,也欢迎对项目提出修改意见和建议。

相关文章
相关标签/搜索