跳转至

断点续传与智能去重

当发送任务因程序崩溃、手动停止或网络中断而未完成时,你可以重新启动队列,程序会自动跳过已成功发送的弹幕,从断点处继续。


工作原理

程序在本地 SQLite 数据库中记录每条弹幕的发送结果。发送前会查询数据库,判断该弹幕是否已存在于目标视频中:

待发送弹幕 → 生成五维指纹
                  │
                  ▼
        查询本地数据库 (history.db)
                  │
      ┌───────────┼───────────┐
      ▼                       ▼
已存在记录                 无记录
(指纹+视频匹配)              │
      │                     ▼
      ▼                  正常发送
自动跳过 (Skip)
不消耗延时等待

匹配规则(五维指纹)

程序使用「五维指纹」来判断两条弹幕是否完全一致,而不是简单的文本比对:

维度 字段 说明
1 msg 弹幕文本内容
2 progress 出现时间(毫秒级精度)
3 mode 弹幕模式(滚动/底部/顶部)
4 fontsize 字号大小
5 color 颜色值

只有当五维指纹完全相同 目标视频(BV 号 + 分 P cid)也相同时,才会判定为重复并跳过。

这种设计能精确区分「同一位置、同一内容但样式不同」的弹幕(例如一条白色滚动弹幕和一条彩色顶部弹幕),避免误跳过。


配置

配置项 说明 默认值
skip_sent 是否启用断点续传(发送前查重) 开启

关闭后,程序不会查询历史记录,每条弹幕都会正常发送(即使之前已发过)。


使用场景

场景 1:程序崩溃后恢复

正在发送 500 条弹幕,发送到第 200 条时程序意外退出。

操作:重新启动程序,打开同一个任务,点击启动队列。

结果:前 200 条已在数据库中有记录,程序自动跳过,从第 201 条继续发送。

场景 2:手动停止后继续

发送到一半手动点击了「紧急停止」。

操作:直接点击「启动队列」。

结果:已发送的弹幕被跳过,从未发送的弹幕继续。

场景 3:跨任务去重

你之前已经在某个视频上发送过一批弹幕,现在又用同一个 XML 文件创建了新任务。

操作:正常启动新任务。

结果:与之前发送记录匹配的弹幕会被跳过,只发送新增的弹幕。


查看跳过记录

在发送过程的日志面板中,跳过的弹幕会显示为 ⏭️ 跳过 状态,并标注原因(已有记录)。

发送完成后,结果摘要对话框中会显示跳过条数:

发送结果:
  ✅ 成功: 156 条
  ⏭️ 跳过: 44 条 (已有记录)
  ❌ 失败: 0 条

任务总结与失败弹幕导出

任务结束后,如果存在发送失败的弹幕,程序会弹出对话框询问「是否保存失败弹幕」:

  • :将失败的弹幕导出为新的 XML 文件(仅包含失败的弹幕,不含已成功的)。
  • :丢弃失败记录。

保存的 XML 文件可以直接用于创建新任务重新发送。