Skip to content

CUSTOM_SOURCE_API_URL 返回的结果无法用于自动匹配 #486

Description

@T-Matrix

问题描述

配置 CUSTOM_SOURCE_API_URL 并在 SOURCE_ORDER 中加入 custom 后,手动搜索能够正常返回远端实例的结果和剧集列表,但 POST /api/v2/match 无法匹配这些 custom 候选。

环境

  • danmu_api: 1.21.2
  • commit: 280b2327ccf06fb5e32a1db7051025359121a2c1
  • Docker 部署
  • 配置示例:
CUSTOM_SOURCE_API_URL=https://custom.example.com/87654321
SOURCE_ORDER=renren,hanjutv,custom

复现步骤

  1. 让自定义源中存在一部带有多集详情的剧集,例如《坏妈妈》(2023)。
  2. 向主实例发送:
POST /api/v2/match
Content-Type: application/json

{"fileName":"坏妈妈.2023.S01E01"}
  1. 搜索阶段能够返回正确的 2023 年候选,但自动匹配结果为空:
{
  "errorCode": 0,
  "success": true,
  "errorMessage": "",
  "isMatched": false,
  "matches": []
}

日志中出现:

[matchAnime] Missing request detail snapshot for anime 40982
[matchAnime] Missing request detail snapshot for anime 9299859

原因分析

CustomSource.handleAnimes 已支持接收 detailStore:

async handleAnimes(sourceAnimes, queryTitle, curAnimes, detailStore = null)

但源注册表中的 custom handleAdapter 只转发了前三个参数:

handleAdapter: (instance, searchResult, queryTitle, isolatedAnimes) =>
  instance.handleAnimes(searchResult, queryTitle, isolatedAnimes)

因此 addAnime(..., detailStore) 实际收到 null,custom 候选的剧集详情没有写入本次请求的 isolatedDetailStore。后续自动匹配只能看到候选列表,无法获取候选的剧集快照。

建议修复

- handleAdapter: (instance, searchResult, queryTitle, isolatedAnimes) =>
-   instance.handleAnimes(searchResult, queryTitle, isolatedAnimes)
+ handleAdapter: (instance, searchResult, queryTitle, isolatedAnimes, isolatedDetailStore) =>
+   instance.handleAnimes(searchResult, queryTitle, isolatedAnimes, isolatedDetailStore)

应用该修改后,同一请求能够返回:

{
  "success": true,
  "isMatched": true,
  "matches": [
    {
      "animeTitle": "坏妈妈(2023)...from custom",
      "episodeTitle": "第01集"
    }
  ]
}

并且继续请求返回的 episodeId 可以正常获取弹幕。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions