收听进度自动追踪:每个文件记住上次停留的时间点
进度追踪的工作机制
什么时候写进度
每次播放器状态变化时:
- 暂停播放
- 切换到下一首/上一首
- 关闭浏览器
- APP 被系统挂起
播放器把当前文件的播放位置(秒数) 写回服务器 SQLite。
恢复时怎么找
再次打开播放器时:
- 播放器先查数据库:最后一次播的是哪个作品、哪个文件、听到第几秒
- 如果文件还在(没有被你删),直接跳到那个时间点开始播
- 如果文件不在了(库被清理了),播放器自动跳到该作品的第一个文件或下一个未完成的文件
粒度:按文件还是按作品
按文件。Kikoeru 记录的是"这个音频文件播放到了第几秒",不是"这个作品播放到了第几集"。
好处:
- 同一首歌可以在不同位置暂停、下次从不同点续播
- 精确到秒级
进度和书签的区别
| 功能 | 自动/手动 | 粒度 | 数量 |
|---|---|---|---|
| 收听进度 | 自动 | 每个文件一个当前位置 | 每个文件一个 |
| 书签 | 手动 | 文件内的任意时间点 | 一个文件可多个 |
清理孤立进度
如果你删了某个文件(硬盘上),Kikoeru 的进度记录会变成"幽灵数据"——下次扫描时会自动清理这些无主的进度条目。
跨设备场景
假设你有三台设备连同一个 Kikoeru 服务器:
- 在手机上听 A 作品第 3 集,听到 1 分 20 秒,锁屏
- 在电脑上打开 Web PWA → 自动跳到 A 作品第 3 集,从 1 分 20 秒继续
- 在 iPad 上打开 → 同样从 1 分 20 秒继续
进度是全局共享的,不分设备。