跳到正文
javinfo

筛选

筛选、排序和分页 /query 结果,并查看各提供商支持的筛选。

筛选仅适用于 /query。单结果的 /movie 和 /random 不接受筛选。


1. 快速开始

/query 在 q 之外接受四个可选输入:filter、sort、page、num(每页数量)。GET 和 POST 都适用。

KEY="jvi_..."   # your API key, sent as the x-javinfo-key header

# POST — genre + runtime filter, newest first
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{
        "q": "ema kisaki",
        "filter": { "genre": "Big Tits", "runtimeMin": 120 },
        "sort": "release",
        "page": 1
      }'

# GET — same thing, flattened into query params
curl -s "https://api.javinfo.dev/query?q=ema%20kisaki&filter[genre]=Big%20Tits&filter[runtimeMin]=120&sort=release" \
  -H "x-javinfo-key: $KEY"

有筛选条件时,q 可选。没有关键词也能浏览整个分类:

# All "creampie" titles, no search term
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{ "filter": { "genre": "creampie" } }'

既没有 q 也没有筛选条件 → 400("provide a search query or at least one filter")。

默认 num=10 时每 1,000 次调用 $0.40,随页大小上涨(见计费)。 筛选不改变价格。无结果(200 带 count: 0)或出错免费。


2. 输入参数

filter

对象。所有字段可选,只设需要的。

字段类型含义
genre字符串分类 / 类型
actress字符串女优(演员)
maker字符串制作商 / 工作室
series字符串系列
director字符串导演
label字符串厂牌
actor字符串男演员
censored"censored" | "uncensored"马赛克状态
runtimeMin数字(分钟)最短时长
runtimeMax数字(分钟)最长时长
releaseAfter字符串 YYYY-MM-DD在此日期或之后发布
releaseBefore字符串 YYYY-MM-DD在此日期或之前发布
availability"playable" | "magnets" | "subtitle" | "single"有流媒体 / 磁力 / 字幕 / 属于单一作品

sort

取 relevance(默认)、release、update、rating、views。

  • relevance:文本相关度。默认。
  • release:最新发布优先。
  • update:最近添加或更新优先。
  • rating:评分最高优先。
  • views:保留。没有提供商支持,始终拒绝。

page

从 1 开始的整数。省略即第 1 页。num 决定页大小。

深度翻页上限。 fanza/dmm 索引把结果集限制在 1,000 条,page × num 必须 ≤ 1000 —— num: 50 时第 20 页是最后一页。再往后是 404(无结果),不是错误信息。要更 深,用 filter 收窄。

num

每页结果数。整数,默认 10,最大 50。超出会截断,不拒绝;num < 1 → 400。 missav 以自身搜索数为上限;其他提供商都分页。page 偏移由 num 算出(num=10 时 第 2 页跳过前 10 条)。

两种方法都会转换数字输入,包括 page 和嵌套 filter[...]。带 filter[runtimeMin]=120 的 GET 可用。


3. 提供商能力矩阵

/query 搜索多个提供商,并非每个都支持每种筛选。构建查询前先读表。

提供商及 ID:query:fanza、query:dmm(DMM + FANZA 两个店面)、query:javdatabase、 query:sextb、query:javlibrary、query:javbus、query:missav、query:javdb。

能力fanza / dmmmissavjavdbjavdatabasesextbjavlibraryjavbus
genre✅✅❌✅✅✅✅
actress✅✅❌✅✅✅✅
maker✅✅❌✅✅✅✅
series✅✅❌✅✅✅✅
director✅✅❌✅✅✅✅
label✅✅❌✅✅✅✅
actor✅✅❌✅✅✅❌
censored: censored✅✅✅✅✅✅✅
censored: uncensored❌✅✅✅✅❌✅
runtimeMin / runtimeMax✅✅❌✅✅✅✅
releaseAfter / releaseBefore✅✅❌✅✅✅✅
availability❌❌✅❌❌❌❌
组合多个筛选条件任意组合任意组合❌ 无任意组合任意组合任意组合任意组合
sort: relevance✅✅✅✅✅✅✅
sort: release✅❌✅✅✅✅✅
sort: update❌❌✅❌❌❌❌
sort: rating❌❌✅❌❌❌❌
sort: views❌❌❌❌❌❌❌
page✅❌(始终第 1 页)✅✅✅✅✅

图例:✅ 支持 · ❌ 不支持。

注意事项:

  • fanza/dmm 仅有码。 uncensored 会排除它们。
  • javdb 没有字段筛选。 只有有码分类、availability 和丰富排序;请求具名维度即排除。
  • javlibrary 仅有码。 uncensored 会排除它。
  • javbus 没有 actor 维度。 固定 filter.actor 返回 422。只按 relevance 或 release 排序;sort: rating 拒绝。
  • javbus 接受日文或英文名。 演员、制作商和类型同时读两种字段,所以 三上悠亜 和 Yua Mikami 都匹配。类型是英文名,附日文对应。
  • javdatabase 仅英文。 语料是英文站点;日文查询(巨乳)匹配不到,该提供商被跳过。 传罗马字或英文。
  • missav 忽略 page 和 sort。 只返回第 1 页,按相关度。
  • javdatabase、sextb、javlibrary、javbus 来自我们自己的目录。 筛选和分页快而完整, 无上游上限。

4. 提供商选择的工作方式(瀑布流)

/query 按顺序尝试提供商,第一个有效结果胜出:

FANZA → DMM → javdatabase → sextb → javlibrary → javbus → missav → javdb

前七个(到 missav)来自我们自己的索引。javdb 实时抓取,作为兜底。

无法满足的筛选如何处理,取决于是否固定提供商。

未固定(默认)— 跳过并前进

不发送 providers 时,所有注册提供商都是候选。无法完全满足的会被静默跳过,瀑布流 前进。第一个能兑现整个请求的提供商作答。

# sort=rating is javdb-only → every other provider is skipped, javdb answers.
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{ "q": "ABP", "sort": "rating" }'
# → { "source": "javdb", ... }

没有提供商能满足 → 422 和原因。

固定 — 硬性错误

发送 providers 强制指定一个或一组。被固定的提供商无法满足时,请求以 422 失败, message 说明原因。绝不静默丢弃。

# Pin javdb, ask for a genre it can't filter → 422
curl -s -X POST https://api.javinfo.dev/query \
  -H "x-javinfo-key: $KEY" -H 'content-type: application/json' \
  -d '{ "q": "x", "providers": ["query:javdb"], "filter": { "genre": "creampie" } }'
# → 422 { "message": "does not support filter \"genre\"" }

# Pin fanza, ask for uncensored → 422
#   → { "message": "does not support uncensored content" }

providers 接受逗号列表或数组,可带或不带 query: 前缀: "providers": ["fanza","missav"] 或 "providers": "javdb"。


5. 值原样透传

v1 透传:筛选值原样发往该提供商的后端。没有共享分类体系,也没有跨提供商模糊匹配。 在一个提供商上有效的值,在另一个上往往不匹配,因为各源存储元数据的方式不同。

需要预先考虑:

  • 类型因提供商而异。

    • fanza/dmm、javdatabase、sextb 用英文类型名("Big Tits"、"creampie")。
    • missav 用日文("巨乳"、"フィスト");英文类型返回空。
    • javbus 两种都接受,并同时匹配。
  • 名称必须完全匹配。 精确匹配,不是子串。DMM + FANZA 索引把别名并入名称,例如 "Ema Kisaki (HARUKI, Haruki Kato)";筛选 actress: "Ema Kisaki" 返回零行。需要 完整的存储字符串。(v1 已知粗糙处。)

  • censored 各源含义不同。 missav 没有字面标志;API 把 censored 映射为主流马赛克 作品,uncensored 映射为其他一切(Caribbeancom、10musume、Tokyo-Hot、1pondo、FC2、 无码流出等)。

  • javdatabase 仅英文。 传英文或罗马字;日文 q 或值匹配不到,该提供商被跳过。

不匹配时只会得到更少或没有结果;未固定时瀑布流继续。不会报错。


6. 响应结构

响应体是获胜提供商的结果集:

{
  "q": "ema kisaki",        // your query, echoed
  "source": "fanza",        // which provider answered
  "count": 10,              // page size (default 10, set by num)
  "results": [
    {
      "id": "118abp00999",          // stable id (content id or dvd id)
      "dvdId": "ABP-999",
      "title": "…",
      "cover": "https://…/…ps.jpg",
      "releaseDate": "2019-01-04",
      "extra": {                    // provider-specific, keys vary by source
        "runtimeMins": 130,
        "maker": "…",
        "categories": ["Big Tits", "…"],
        "actresses": [{ "name": "…", "image": "https://…|null" }],
        "duration": 7800,           // missav (seconds)
        "genres": ["巨乳"],          // missav
        "studio": "…", "url": "…"   // javdatabase
        // …
      }
    }
  ]
}

extra 是超集:只出现应答提供商的键。核心字段(id、dvdId、title、cover、 releaseDate)各提供商一致。

响应头携带元数据:X-Response-Time-Ms、X-Balance-Remaining。


7. 各提供商速查表

fanza / dmm(DMM + FANZA 店面):最丰富的结构化筛选。

  • 所有具名维度,自由组合。英文类型和名称。
  • runtimeMin/runtimeMax 以分钟计。sort: release。分页。
  • 仅有码。无 uncensored、availability。
# Big-tits titles over 120 min, newest first
-d '{ "filter": { "genre": "Big Tits", "runtimeMin": 120 }, "sort": "release" }'

按名字搜索。 英文标题只到 2022 年中,更新的只有日文。演员名(罗马字)单独索引, 所以 q 搜 "Yua Mikami" 仍能到新作。加 "sort": "release" 让最新优先:默认 relevance 下,英文标题提到该名字的老片更靠前。

# Newest Yua Mikami titles first
-d '{ "q": "Yua Mikami", "providers": ["fanza"], "sort": "release" }'
# Exact-match browse (see §5 on stored name strings)
-d '{ "filter": { "actress": "Yua Mikami" }, "sort": "release" }'

missav:最广的筛选面,仅相关度。

  • 所有具名维度(类型为日文)、时长和发布范围、censored 双向。
  • 无 sort、无真正分页(仅第 1 页)、无 availability。
# Uncensored titles matching "caribbean"
-d '{ "q": "caribbean", "filter": { "censored": "uncensored" } }'
# Japanese genre browse
-d '{ "q": "SSIS", "filter": { "genre": "巨乳" } }'

javdb:无字段筛选,排序和 availability 最好。

  • 仅 censored(双向)、availability、sort(relevance/release/update/rating)。
  • 分页。无 genre、actress、maker。
# Playable, highest rated
-d '{ "q": "ABP", "filter": { "availability": "playable" }, "sort": "rating" }'

javdatabase:完整英文目录。有码和无码,所有具名维度,两种范围。仅英文值(日文 q 跳过)。sort: release。分页。无 availability。

# Creampie titles from S1
-d '{ "filter": { "genre": "creampie", "maker": "S1 NO.1 STYLE" } }'

sextb:含流媒体,我们自己的目录。所有具名维度,两种范围,censored 双向。 sort: release。分页。无 availability。

javlibrary:仅有码,我们自己的目录。所有具名维度,两种范围。sort: release。分页。 无 availability。

javbus:种子和广泛的日文目录,我们自己的索引。除 actor 外的所有具名维度,两种范围, censored 双向。演员、制作商和类型接受日文或英文。sort: relevance / release。分页。 无 availability。种子随 /movie 以 extra.downloadLinks 返回。

# Japanese actress, newest first (POST)
-d '{ "providers": ["javbus"], "filter": { "actress": "三上悠亜" }, "sort": "release", "num": 2 }'

# Japanese genre + runtime, over GET
curl -s 'https://api.javinfo.dev/query?providers=javbus&filter%5Bgenre%5D=%E5%B7%A8%E4%B9%B3&filter%5BruntimeMin%5D=120&num=2' \
  -H "x-javinfo-key: $KEY"

# Uncensored releases since 2026, newest first (POST)
-d '{ "providers": ["javbus"], "filter": { "censored": "uncensored", "releaseAfter": "2026-01-01" }, "sort": "release", "num": 2 }'

固定 javbus 并请求它做不到的事 → 真正的 422:

# No male-actor dimension → 422
-d '{ "providers": ["javbus"], "filter": { "actor": "Shimiken" } }'
# → { "defined": false, "code": "BAD_REQUEST", "status": 422, "message": "does not support filter \"actor\"" }

# No rating sort → 422
-d '{ "providers": ["javbus"], "q": "ABP", "sort": "rating" }'
# → { "defined": false, "code": "BAD_REQUEST", "status": 422, "message": "does not support sort \"rating\"" }

结果形状是 §6 的标准 /query 响应体。/movie 记录和种子列表见 javbus 一节。


8. v1 的限制

  • 跨提供商值规范化。 没有统一词汇;用各提供商的方言(英文 vs 日文,精确字符串)。
  • sort: views 保留,无人实现。
  • 单维多值。 每字段一个值(不支持 genre: ["a","b"])。
  • javdb 的范围。 其他提供商都支持。
  • javdb 之外的 availability。
  • javdb 组合任意筛选。 它没有字段筛选。
  • javbus 的 actor。 没有男演员维度。
  • javbus 的 sort: update、rating、views。 只支持 relevance 和 release。
  • missav 的分页或排序。
  • fanza/dmm 翻页超过 1000 条(page × num ≤ 1000)。
  • 筛选 /movie 或 /random。

组合不可能时:固定 → 422 和原因;未固定 → 跳过并试下一个。

下一步

本页内容