手动触发音声库扫描:让新添加的文件夹和元数据入库
默认行为:不会自动扫描
Kikoeru 有一个"特性"(或者说传统):添加完根文件夹后不会自动扫描——你得手动点一下。如果忘了这一步,新下载的文件永远不会出现在库里。
触发扫描
进入 Web 界面的设置 → 扫描(或类似页面),找到扫描按钮:
- "扫描本地音色库" / "开始扫描" / "Scan Library"
- 点了之后,扫描器会递归遍历所有根文件夹下的子目录,识别音频文件,然后匹配 DLSite 元数据,最后写入 SQLite 数据库。
进度监控
扫描是异步的,你可以边扫边做其他事:
- 扫描进度通过 Socket.io 实时推到 Web 界面
- 通常在页面底部或侧边栏显示进度条和当前正在处理的作品名
- 扫描日志会记录每个作品的处理结果(成功 / 失败 / 跳过)
扫描会做什么
- 遍历每个根文件夹的子目录,识别音频文件
- 根据目录名提取番号(RJ12345 这种格式)
- 去 DLSite 抓取元数据(标题、封面、标签、作者、发售日期)
- 如果数据库里已存在该作品,刷新元数据
- 如果数据库里已存在但文件不再存在(你删了文件夹),标记为"待清理"
- 全部完成后,WebSocket 推送"扫描结束"事件
扫描速度
取决于:
- 音声库总量(几千到几万条)
- DLSite 元数据抓取速度(网络状况、DLSite 是否限速)
- 硬件(机械硬盘 vs SSD、容器资源限制)
首次扫描可能比较慢(每个作品都要第一次抓元数据)。后续增量扫描(只扫新文件夹或新增文件)会快很多,因为已有的元数据不会重复抓。
扫描期间可以做什么
- 在 Web 界面浏览已有作品
- 播放音频(如果之前已经扫描过)
- 但不要同时跑多次扫描——并发扫描可能导致数据库冲突
扫描完了要做什么
- 看扫描日志里的统计(新增 N 条、刷新 N 条、跳过 N 条、清理 N 条)
- 随机点几个作品确认:封面在、标签全、标题正常
- 如果"扫描新增"数量和你新建的文件夹数对不上,说明有没匹配到番号的目录