Files
RaptDramaDump/swagger/openapi.yaml
T

522 lines
14 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
openapi: 3.0.3
info:
title: RaptDrama 接口调试
version: "1.0.0"
description: |
独立调试台,不经过抓取脚本。
页面上的请求会发到本机 `/proxy`,再由调试台转发到 `https://apis.raptdrama.com`。
设备头和 User-Agent 由调试台补上,这里只要填业务参数。
用法:先调用「游客登录」,从返回的 `data.token` 复制出来,点右上角 Authorize,填进 `apasstk`。
之后需要登录态的接口会自动带上这个头。邮箱登录不需要先有 token。
servers:
- url: http://127.0.0.1:8787/proxy
description: 本机转发
tags:
- name: 登录
- name: 首页和分类
- name: 剧集
- name: 其他已核对
components:
securitySchemes:
apasstk:
type: apiKey
in: header
name: apasstk
description: 登录接口返回的 data.token。游客登录本身不需要它。
schemas:
EmptyObject:
type: object
additionalProperties: false
example: {}
EmailLogin:
type: object
required: [email, password]
properties:
email:
type: string
example: user@example.com
password:
type: string
format: password
ClassifyVideo:
type: object
required: [page, limit, type]
properties:
page:
type: integer
example: 1
description: 从 1 开始。空页表示结束。
limit:
type: integer
example: 10
description: 服务端每页最多约 10 条。
type:
type: integer
example: 20
description: 18 Comedy,20 Passion,21 Newest,22 Western,23 Comic drama。不要用 tstype。
PageQuery:
type: object
properties:
page:
type: integer
example: 1
limit:
type: integer
example: 10
SearchQuery:
type: object
required: [keyword]
properties:
keyword:
type: string
example: love
page:
type: integer
example: 1
limit:
type: integer
example: 10
DramaId:
type: object
required: [vid]
properties:
vid:
type: integer
example: 1942
description: 剧 id,不是集 id。
PlaylistQuery:
type: object
required: [vid, page, before]
properties:
vid:
type: integer
example: 1942
page:
type: integer
example: 1
before:
type: integer
example: 1
description: playlistv2 第一页为 1,后面的页为 0。playlist 一次返回全部,这个字段仍可带上。
ReadLog:
type: object
required: [vid, cid]
properties:
vid:
type: integer
example: 1942
cid:
type: integer
example: 1
description: 集 id。
del:
type: integer
example: 0
Envelope:
type: object
properties:
code:
type: integer
description: 200 成功,299 未登录,500 参数错误。HTTP 状态经常仍是 200。
msg:
type: string
data: {}
paths:
/app/open/autologin:
post:
tags: [登录]
summary: 游客登录
description: 每次调用都新建一个游客。把 data.token 填到 Authorize。
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 含 id、nickname、token、score、vipday、badge
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/emailLogin:
post:
tags: [登录]
summary: 邮箱登录
description: 同一邮箱重复登录是同一个用户。字段名必须是 email 和 password。
security: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmailLogin"
responses:
"200":
description: 成功时 msg 为 Login success,data.token 可作 apasstk
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/user/getUserInfo:
post:
tags: [登录]
summary: 当前用户信息
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data.id 是数字。游客 token 也可以调用。
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/classifyv2:
post:
tags: [首页和分类]
summary: 分类列表
description: 多一个 label_origin。id 22 的名称是 Western。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 为分类数组,字段 id、label、label_origin、image
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/classify:
post:
tags: [首页和分类]
summary: 分类列表(无 v2)
description: 条数和 id 与 classifyv2 相同,没有 label_origin。id 22 的名称是 Occident。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 为分类数组
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/classify_video:
post:
tags: [首页和分类]
summary: 分类下的剧
description: 顶栏五个分类都用这个接口,只改 type。每页约 10 条,空页结束。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ClassifyVideo"
responses:
"200":
description: data 为剧目数组
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/orgin:
get:
tags: [首页和分类]
summary: New Releases
description: 一次约 10 部,较新的在前。没有单独分页。这不是 Trending Now。
security:
- apasstk: []
responses:
"200":
description: data 为剧目数组
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/recommend:
post:
tags: [首页和分类]
summary: Recommend 分页
description: page 从 1 开始。start 无效。空页或整页重复才是结尾。曾翻到约 332 部。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PageQuery"
responses:
"200":
description: data 为剧目数组,每页约 10 条
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/search:
post:
tags: [首页和分类]
summary: 搜索
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/SearchQuery"
responses:
"200":
description: data 为剧目数组,多一个 totalvideo
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/bank:
post:
tags: [首页和分类]
summary: 片库或观看记录
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 含 vid、cid 和嵌套的 video
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/extra_broadcast:
post:
tags: [首页和分类]
summary: Extra broadcast
description: 历史页列表,不是首页 Trending Now。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 为剧目数组
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/video/getchapters:
get:
tags: [剧集]
summary: 分集列表
security:
- apasstk: []
parameters:
- name: vid
in: query
required: true
schema:
type: integer
example: 1942
- name: start
in: query
schema:
type: integer
example: 0
- name: limit
in: query
schema:
type: integer
example: 200
responses:
"200":
description: data.list 含 id、title、idx、isvip。isvip 是字符串 0 或 1。
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/video/playlist:
post:
tags: [剧集]
summary: 一次取全部分集地址
description: 字段与 playlistv2 相同,但一次返回该剧全部集。免费集 src 为 m3u8,锁定集 src 为空字符串。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PlaylistQuery"
responses:
"200":
description: data.count 为总集数,data.list 为全部集
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/video/playlistv2:
post:
tags: [剧集]
summary: 分页取分集地址
description: 每页约 10 集。第一页 before 为 1,之后为 0。vid 是剧 id。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PlaylistQuery"
responses:
"200":
description: data.list 每页约 10 条,字段与 playlist 相同
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/video/videoinfo:
post:
tags: [剧集]
summary: 剧详情
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/DramaId"
responses:
"200":
description: data.video 为剧信息,data.moshi 为整数。登录态下还可能有 history。
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/video/addreadlog:
post:
tags: [剧集]
summary: 上报观看
description: App 播放时发出。返回格式未逐字段核对。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReadLog"
responses:
"200":
description: 业务包装
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/open/contact:
post:
tags: [其他已核对]
summary: 联系邮箱
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data.techniacl_email 与 data.business_email。字段名就是 techniacl_email。
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/appopen/getAuthConfig:
post:
tags: [其他已核对]
summary: 第三方登录配置
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data.google 与 data.apple 的开关和客户端 id
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/user/paylistv2:
post:
tags: [其他已核对]
summary: 商品列表 v2
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 含 bindinfo、coins、need、redemption、score、subscribed_products、vips
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"
/app/user/paylist:
post:
tags: [其他已核对]
summary: 商品列表(无 v2)
description: 商品和 v2 相同,vips 与 coins 包在 plays 里。
security:
- apasstk: []
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyObject"
responses:
"200":
description: data 含 bindinfo、need、plays、score、subscribed_products
content:
application/json:
schema:
$ref: "#/components/schemas/Envelope"