Files
Auto_Bangumi/docs/dev/plugins/points/conflict-policy.md
Estrella Pan 3258fcca4b docs(4.0-P7): 插件开发文档拆分为总览加每个扩展点一页,补齐中英日三语
- docs/dev/plugins.md 改为总览与导航,旧内容拆入 docs/dev/plugins/
- 新增核心概念、配置表单、事件、前端挂载点、命令行、签名与分发、内置插件、示例页
- 每个扩展点一页,侧边栏由页面表生成
- 改正旧文档中下载器配置、hardlink path_map 与补链按钮的过时描述
2026-10-08 14:51:00 +02:00

1.2 KiB
Raw Permalink Blame History

版本冲突策略(conflict_policy)

新种子的规范文件名已被另一个种子占用时,决定保留旧的还是替换。典型场景:同一集的 v2 发布。@provider(points.CONFLICT_POLICY, id=...) 返回 ConflictPolicy。

from ab_sdk.rename import ConflictDecision, ConflictRequest

class ReplaceUpgradesOnly:
    def decide(self, request: ConflictRequest) -> ConflictDecision:
        if request.strict_upgrade:
            return ConflictDecision("replace")
        return ConflictDecision("hold", "不是同一发布的更高版本")
  • ConflictRequest:target_path、incoming(新种子)、owners(占用者)、strict_upgrade(唯一占用者与新种子是同一发布,且新种子版本号更高)。
  • hold 保留旧文件,新种子等待;reason 展示给用户。replace 删除旧任务及其文件。
  • 宿主只在「唯一占用者、双方都是单文件种子、双方解析身份完整」时执行 replace,其它情况一律按 hold 处理。
  • 宿主自带 hold 与 replace,即设置项「版本冲突策略」的两个选项。用 plugins.slots.conflict_policy 选择(默认 hold)。选中的 id 未登记时,退回 hold。