我做了一个追番管理工具
终于做了个正经项目)
学了这么久 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




