资讯专栏INFORMATION COLUMN

WakaTime数据同步展示工具

focusj / 644人阅读

摘要:从年知道后就开始使用它来记录自己的编码时间,但作为免费版只能查看最近两周的数据,于是很久之前就写了一个程序同步自己的历史数据,不过一直没找到合适的图表插件像官网那样展示数据信息。版本的代码也实现了相关的同步展示逻辑,代码在分支中。

从16年知道 WakaTime 后就开始使用它来记录自己的编码时间,但作为免费版只能查看最近两周的数据,于是很久之前就写了一个程序同步自己的历史数据,不过一直没找到合适的图表插件像官网那样展示数据信息。前些日子咨询了一下同事,得知了用 antv 可以绘制对应的图表数据,刚好现在也处于失业阶段,就花了几天时间又重新做了一个项目用于同步和展示 WakaTime 数据。
WakaTime WakaTime简介

WakaTime 是一款可以记录你的编码时间的工具,目前支持绝大部分主流的 IDE 以及 Chrome 浏览器。

使用步骤

注册 WakaTime 账号;

在官网找到对应的 IDE 插件,按照步骤安装 WakaTime 插件(下图中灰色表示目前官方还不支持):

在个人设置页面复制 Secret API Key ,填入对应的 WakaTime 插件中;

过一段时间后,你就可以在 WakaTime 网站上看到你的编码情况,如下图所示:

wakatime-sync项目 项目简介

WakaTime 提供了丰富多样的图表可以多维度地查看自己的编码时间情况。不过作为免费用户,最多只能查看自己最近14天的数据;如果要查看全部的数据,需要 $9/月的订阅费用。

还好 WakaTime 提供了 API 接口,通过接口可以获取到编码时间统计情况的原始数据(作为免费用户还是有只能查看最近14天数据的限制)。

本项目通过 WakaTime 提供的 API 接口,可以把自己的 WakaTime 数据保存在的数据库中,然后利用图表插件展示出来,目前已完成三种类型的图表展示:

每日项目持续时间图:

时间范围内活动情况:

每日编码耗时日历图:

项目地址

GITHUB: https://github.com/wf2311/wakatime-sync

码云: https://gitee.com/wf2311/wakatime-sync

所用技术

后端:JDK1.8、SpringBoot、Jodd-HTTP、Thymeleaf;

数据库:MySQL 5.7;

前端:Moment.js、ElementUI、AntV-G2 、Echarts;

通知服务:Server酱、钉钉机器人

项目逻辑比较简单,就是每天会定时通过 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中对应的参数注释掉或将值置为空

可能会遇到的问题

由于本项目采用的是SpringBoot 2,对应的 mysql-connector-java 驱动使用的是MySQL服务端的时区,如果你使用的MySQL的时区和你程序中的时区以及你在 WakaTime 个人设置中的时区不一致,就会导致保存的相关数据中时间不准,解决办法就是首先调整好 WakaTime 个人设置里的时区,再调整 MySQL 数据库的时区,或者是使用 5.X版本的mysql-connector-java驱动。

如果你一直在使用 WakaTime ,如果想使用本项目同步你所有的历史数据,可以在官网上试用团队版的方式获得1个月(还是半个月?)的付费版功能或者是订阅一个月的付费版,然后通过本项目来同步所有的历史数据:POST /api/v1/sync 或参见项目中的测试方法。使用测试方法进行时不能同时使用太多的线程去同时调用 API 接口,会被限流。

TODO

查询接口缓存;

可以对项目名称设置别名展示;

结语

如果本项目对你有用的话,欢迎在 GITHUB 或码云上 star,也欢迎对项目提出修改意见和建议。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73086.html

相关文章

  • 提高 JavaScript 开发效率的高级 VSCode 扩展之二!

    摘要:将这些命令绑定到键盘快捷键是有帮助的,例如向上箭头用于平衡向外,而向下箭头用于平衡向内。是和的快速原型开发平台。 本系列的第一篇可以在这里看到: 提高 JavaScript 开发效率的高级 VSCode 扩展! showImg(https://segmentfault.com/img/bVbnn2j?w=1254&h=768); 想阅读更多优质文章请猛戳GitHub博客,一年百来篇优质...

    cyrils 评论0 收藏0
  • 一些你所不知道的VS Code插件

    摘要:摘要你所不知道的系列。允许你写入缩写代码并返回的相应标记,目前已经内置,所以不用配置了。自从年双十一正式上线,累计处理了亿错误事件,付费客户有金山软件百姓网等众多品牌企业。摘要: 你所不知道的系列。 原文:提高 JavaScript 开发效率的高级 VSCode 扩展之二! 作者:前端小智 Fundebug经授权转载,版权归原作者所有。 作为一名业余爱好者、专业人员,甚至是每月只有一次编...

    Near_Li 评论0 收藏0
  • 《HelloGitHub》第 68 期

    摘要:整个项目简单还具有实用价值,可作为的实战项目学习的调试工具栏。查看文档自动在个人首页展示编程时长的工具。通过学习这些前沿的人工智能论文,提前了解在未来更多可能性可以将图片和视频转换成漫画风格的工具。兴趣是最好的老师,HelloGitHub 让你对编程感兴趣!简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。https://github.com/521xueweihan...

    番茄西红柿 评论0 收藏2637
  • 装B利器:2016时间都去哪了?

    摘要:检测在电脑上花费的时间,干了什么这个软件支持平台,需要在机器上装上客户端,然后按照说明做下去,你就会在他们的官网上看到一个,记录你做了什么。检测你在编辑器上做了什么,非常详细,支持很多编辑器。 1 rescuetime 检测在电脑上花费的时间,干了什么 https://www.rescuetime.com/da...这个软件支持win,mac,linux平台,需要在机器上装上客户端,然...

    gaara 评论0 收藏0
  • VS code-前端配置_022

    摘要:前端配置简体中文插件,一般会自动识别你的环境,自动提示是否需要简体中文的语言包。使用插件将目前配置保存到上,以后只需要从上获取,就可以一次性安装插件配置信息。 VS code-前端配置 showImg(https://segmentfault.com/img/bVbuK6l?w=1224&h=999); Chinese (Simplified) Language Pack for Vi...

    cyrils 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<