我做了一个追番管理工具
终于有了个追番工具)
学了一段时间 Java,也想折腾一个自己真正需要的工具,于是就有了 OtakuLog。
说实话就是…作为一个追番人,每次都要打开 Bangumi 手动更新进度,有时候忘了就一直显示”在看”,看着一堆过期的追番记录很烦。干脆自己做一个算了。
做了什么
核心就是追番管理——添加番剧、记录看到第几集、打分、写备注。听起来很简单对吧,但做着做着就越做越多了…
- Bangumi 一键导入收藏,不用手动一个个加
- 进度追踪,看到最后一集自动标完成
- 三种视图切换:表格 / 卡片 / 封面画廊
- 拖拽排序,顺序会保存到后端
- 观看热力图,精确到每一集的观看日期
- 以图搜番(截个图就能识别是哪部番哪个场景)
- WebDAV 多设备同步
- 分享卡生成,可以把追番总结做成图片分享
结果做到后面功能越来越多,感觉自己在写一个小型 Bangumi 客户端
技术栈
后端用了 Spring Boot + JPA + MySQL,前端是 Thymeleaf + 原生 JS(没用前端框架,就是写着玩的)。用 Flyway 管数据库迁移,目前已经有 5 个版本了。Chart.js 画统计图,SortableJS 做拖拽,Phosphor Icons 做图标。
测试写了 44 个,Controller / Service / Repository 三层都覆盖到了。说实话写测试的时候才发现好多边界情况自己根本没想到…
印象深刻的坑
Bangumi API 缓存:Bangumi 的 API 有请求频率限制,一开始没做缓存,连续搜几次就被限流了。后来加了 Caffeine 缓存,舒服多了。
热力图数据:一开始用简单的字段记录”看了几集”,后来发现要做热力图需要精确到每一集的观看时间。于是加了 episode_record 表,每次更新进度都记录一条事件,热力图的数据就是从这里来的。
以图搜番:接入了 trace.moe 的 API,上传一张截图就能匹配到番剧名和集数。这个功能纯粹是觉得好玩才做的,但意外地很好用,有时候看到一张图想不起来是哪部番的时候直接搜一下。
写在后面
这是一次把追番需求变成小工具的尝试。虽然功能上比不过那些大项目,但能用它整理自己的观看记录,对我来说就挺有意义的。
GitHub 地址:OtakuLog





