You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Anilist GraphQL API按MyAnimeList ID批量查询媒体条目?

批量通过MAL ID获取Anilist媒体条目的解决方案

针对Anilist GraphQL API不支持直接通过MAL ID数组批量查询的问题,有以下几种高效的替代方案:

方案1:单个GraphQL请求中定义多个Media字段

在一个查询里为每个MAL ID单独声明一个Media字段,通过不同变量传递ID,一次性获取所有结果。

示例查询:

query BatchMedia($idMal1: Int!, $idMal2: Int!) {
  media1: Media(idMal: $idMal1) {
    id
    idMal
    title {
      romaji
      english
    }
    coverImage {
      large
    }
    # 按需添加你需要的其他字段(对应原查询的media片段)
  }
  media2: Media(idMal: $idMal2) {
    id
    idMal
    title {
      romaji
      english
    }
    coverImage {
      large
    }
    # 保持与上面一致的字段集合
  }
}

对应的变量:

{
  "idMal1": 21,
  "idMal2": 166531
}
  • 优势:单次HTTP请求完成,避免多次网络往返开销
  • 注意事项:若MAL ID数量较多,查询语句会大幅变长;需留意Anilist的查询复杂度限制,避免超限。

方案2:发送批量GraphQL请求

Anilist支持在单个HTTP请求中发送多个GraphQL查询(批量请求),复用同一个查询模板,仅修改变量即可。

示例请求体(JSON格式):

[
  {
    "query": "query Media($idMal: Int!) { Media(idMal: $idMal) { id idMal title{romaji} } }",
    "variables": {"idMal": 21}
  },
  {
    "query": "query Media($idMal: Int!) { Media(idMal: $idMal) { id idMal title{romaji} } }",
    "variables": {"idMal": 166531}
  }
]
  • 优势:无需修改查询结构,复用性强;相比多次独立HTTP请求,减少了TCP握手、连接建立等额外开销
  • 注意事项:单次批量请求的查询数量建议控制在10-20个以内,避免触发Anilist的限流机制。

方案3:先映射MAL ID到Anilist ID,再批量查询

如果需要频繁批量查询,可先将MAL ID转换为对应的Anilist ID并缓存,之后使用Anilist支持的id_in过滤器批量查询:

步骤1:批量转换ID(用方案1或2实现)

步骤2:使用id_in批量查询

query BatchMedia($anilistIds: [Int]!) {
  Page {
    media(id_in: $anilistIds) {
      id
      idMal
      title {
        romaji
        english
      }
      coverImage {
        large
      }
    }
  }
}

对应的变量:

{
  "anilistIds": [1535, 111087] // 对应MAL ID 21、166531的Anilist ID
}
  • 优势:适合长期批量查询场景,查询结构简洁,复杂度更低

内容的提问来源于stack exchange,提问作者Swargaraj Bhowmik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 16:40:16