当前浏览的是 v7 预览版文档(v7 尚未正式发布,API 可能随版本调整)。查看对应的 v6 正式版文档
@ikenxuan/amagi

B站 SDK 方法

B站平台的 27 个 SDK 方法,由端点注册表派生

本页 27 个方法由端点注册表生成:参数表、摘要与废弃标记都取自 端点声明。同一批端点的 HTTP 形态(路径、query 参数、响应信封、在线调用)见 HTTP 端点参考。

调用形式与单次请求配置

Client 上的绑定 Fetcher 是 client.<平台>.fetcher.<方法>(options, requestConfig?):cookie 已随 Client 绑好,第二个参数只作用于当前这一次调用,并与 Client 的实例级请求配置合并 —— 单次配置优先,headers 单独合并。

直接导出的裸 Fetcher 是 <平台>Fetcher.<方法>(options, cookie?, requestConfig?):没有实例级配置,cookie 按次传,第三个参数直接作用于当前请求。amagi.<平台>Fetcher 与同名的命名导出(import { bilibiliFetcher } from '@ikenxuan/amagi')是同一个对象。

两种形态都由端点注册表派生、走同一条执行管线、返回同一种信封,所以本页列出的方法名与参数对两者都成立。

requestConfig.headers 里任意大小写的 Cookie(Cookie / cookie / COOKIE)都会替换本次调用实际使用的 cookie:绑定形态覆盖 Client 上绑定的那份,裸 Fetcher 形态覆盖第二个参数。这次调用用哪份 Cookie,只写这一处就够。

匿名调一次:

const  = await ...(
  { : '170001', : 1, : 20 },
  { : { : '' } }
)

它只影响这一次请求,不改 Client 实例,也不影响同一实例后续的调用。

v7 的 Cookie 头按大小写不敏感匹配,覆盖只写在 headers 一处即可。

读取返回值:取 data

方法永不抛异常,返回的是信封:成功支有 data,失败支有 error,两支都有 message 与 meta,顶层没有 code。本页所有示例统一用 if (result.success) 收窄之后再读 result.data —— 四种读法里只有它既不必额外 import,收窄后的 data 又不带 | undefined:

读法拿到的 data
if (result.success)T(本页示例统一用这种)
直接读 result.data(不收窄)T | undefined
list.filter(isSuccess)T(数组回调里没有 if 可用)
unwrap(result)T,失败时抛 AmagiThrownError

四种读法的完整说明、失败分支的字段与三条逃生舱见响应类型。

大整数 ID 与响应类型

默认 JSON 解析会把超出 JavaScript 安全整数范围的裸整数保留为十进制字符串,防止直播间、作品等 ID 被四舍五入。普通安全整数、浮点数和指数写法保持原样;显式文本响应和自定义 transformResponse 仍由调用方控制。响应 ID 的类型因此可能是 string | number,需要统一存储时可用 String(id);不要先调用 Number() 再拼接请求。

新增端点只声明已有证据支持的响应字段;缺少完整成功响应样本的字段使用 unknown,使用前应检查对象、数组或字符串等实际结构。

本页之外:自定义请求

本页是已收录的端点方法。要请求 amagi 尚未收录的 B站接口,用 client.bilibili.request。它的默认签名器是不签(27 条端点里只有 5 条签名,默认签会大面积签错),要签就显式给 sign: 'wbi' 或 'qtparam'。URL 由 client.bilibili.apiUrls 构造 —— 那份以 URL 字符串为主(只有两个验证码接口返回 { Url, Body }):

const  = ...({ : 'BV1xx411c7mD' })
const  = await ...()

详见自定义请求。

Fetcher 方法

fetchVideoInfo

视频作品详细信息。端点 bilibili.videoInfo,同一端点的 HTTP 形态。

取稿件详情(标题、封面、UP 主、统计、分 P 列表);返回的 cid 供取流与弹幕使用。

参数类型必填说明
bvidstring是稿件 BV 号,如 BV1xx411c7mD
const  = await ...({
  : 'BV1xx411c7mD'
})

if (.) {
  .(.)
}

fetchVideoStreamUrl

视频下载流信息。端点 bilibili.videoStream,同一端点的 HTTP 形态。

取稿件的播放与下载流地址;高清档位需要带登录凭证,cid 来自 videoInfo。

参数类型必填说明
avidnumber是稿件 AV 号,纯数字不带 av 前缀
cidnumber是稿件 cid(分 P 的视频流 ID)
const  = await ...({
  : 170001,
  : 279786
})

if (.) {
  .(.)
}

fetchVideoDanmaku

视频实时弹幕列表。端点 bilibili.videoDanmaku,同一端点的 HTTP 形态。

取视频某一段的实时弹幕;每段 6 分钟,按 segment_index 分段取全量。

参数类型必填默认值说明
cidnumber是—稿件 cid
segment_indexnumber否1弹幕分段序号,每 6 分钟一段,默认 1
const  = await ...({
  : 279786
})

if (.) {
  .(.)
}

fetchComments

作品评论列表。端点 bilibili.comments,同一端点的 HTTP 形态。

取作品评论列表,按 number 自动翻页并去重;楼中楼用 commentReplies。

支持声明式翻页:用 number 指定需要的条数,单页上限 100 条,游标的带入与停止条件由端点声明处理。

参数类型必填默认值说明
oidstring是—目标对象 ID,视频稿件填 avid
typenumber是—评论区类型代码:1 视频稿件(oid=avid)、2 话题、11 相簿/图片动态、12 专栏(cvid)、14 音频(auid)、17 动态、33 课程(epid)等;完整对照表见 bilibili-API-collect「评论区类型代码」
numbernumber否20目标条数,自动翻页合并后去重,默认 20
modenumber否—排序方式:0 和 3 仅热度,1 按热度+按时间,2 仅时间;默认 3
platnumber否—平台类型,默认 1
seek_rpidstring否—定位到某条评论,默认空
web_locationstring否—web 位置参数,默认 1315875
const  = await ...({
  : '170001',
  : 1
})

if (.) {
  .(.)
}

type 是评论区类型:1=视频、11=图文动态、12=专栏、14=音频、17=文字动态;端点声明只接受 v6 的那批取值(1、2、4–22、33),其余直接判参数校验失败。

fetchCommentReplies

指定评论的回复列表。端点 bilibili.commentReplies,同一端点的 HTTP 形态。

取单条根评论下的楼中楼回复;整个评论区的列表用 comments。

参数类型必填默认值说明
oidstring是—目标对象 ID,视频稿件填 avid
typenumber是—评论区类型代码:1 视频稿件(oid=avid)、11 相簿/图片动态、12 专栏(cvid)、17 动态等;完整对照表见 bilibili-API-collect「评论区类型代码」
rootstring是—根评论 ID,即要展开的一级评论
numbernumber否20该根评论下的回复条数,不翻页,默认 20
const  = await ...({
  : '170001',
  : 1,
  : '123456789'
})

if (.) {
  .(.)
}

fetchUserCard

用户名片信息。端点 bilibili.userCard,同一端点的 HTTP 形态。

取用户名片(昵称、头像、个性签名、等级、认证)与粉丝、投稿数统计。

参数类型必填说明
host_midnumber是UP 主 UID
const  = await ...({
  : 123456
})

if (.) {
  .(.)
}

fetchUserDynamicList

用户空间动态列表。端点 bilibili.userDynamicList,同一端点的 HTTP 形态。

取用户空间的第一页动态列表;本接口不支持翻页。

参数类型必填说明
host_midnumber是UP 主 UID
const  = await ...({
  : 123456
})

if (.) {
  .(.)
}

fetchUserLiveStatus

用户直播状态与直播间基础信息。端点 bilibili.userLiveStatus,同一端点的 HTTP 形态。

按 UID 查用户的直播状态与直播间信息;已有房间号时用 liveRoomInfo。

参数类型必填说明
host_midnumber是UP 主 UID
const  = await ...({
  : 123456
})

if (.) {
  .(.)
}

直接读直播状态,不依赖用户空间动态里的直播推荐卡片,适合轮询开播状态。返回里主要看这几个字段:

字段说明
roomStatus1 已开通直播间,0 未开通
liveStatus1 正在直播,0 当前未开播
roomid直播间 ID;未开通直播间时为 0
title直播间标题
cover直播封面

fetchUserSpaceInfo

用户空间详细信息。端点 bilibili.userSpaceInfo,同一端点的 HTTP 形态。

取用户空间完整资料(等级、硬币、VIP、粉丝勋章等);名片类信息用 userCard。

参数类型必填说明
host_midnumber是UP 主 UID
const  = await ...({
  : 123456
})

if (.) {
  .(.)
}

fetchUploaderTotalViews

UP 主总播放量。端点 bilibili.uploaderTotalViews,同一端点的 HTTP 形态。

取 UP 主的播放与获赞统计;等级、VIP 等完整资料用 userSpaceInfo。

参数类型必填说明
host_midnumber是UP 主 UID
const  = await ...({
  : 123456
})

if (.) {
  .(.)
}

fetchDynamicDetail

动态详情。端点 bilibili.dynamicDetail,同一端点的 HTTP 形态。

按动态 ID 取详情,返回结构随动态类型(图文 / 转发 / 视频等)而变。

参数类型必填说明
dynamic_idstring是动态 ID,纯数字串
const  = await ...({
  : '123456789'
})

if (.) {
  .(.)
}

fetchBangumiInfo

番剧基本信息。端点 bilibili.bangumiInfo,同一端点的 HTTP 形态。

取番剧季度或单集的基本信息;两个 ID 至少传一个,都传时以 ep_id 为准。

参数类型必填说明
ep_idstring否剧集 EP ID,如 ep330798
season_idstring否番剧季度 SS ID,如 ss33802
const  = await ...({
  : '123456'
})

if (.) {
  .(.)
}

ep_id 与 season_id 二选一:两个都是可选参数,但端点声明的 refine 要求至少给一个(都不给会以参数校验失败返回)。ID 带不带 ep / ss 前缀都行,build 会削掉。

fetchBangumiStreamUrl

番剧下载流信息。端点 bilibili.bangumiStream,同一端点的 HTTP 形态。

取番剧剧集的播放与下载流地址;高清档位需要带登录凭证。

参数类型必填说明
cidnumber是剧集分集的 cid
ep_idstring是剧集 EP ID,如 ep330798
const  = await ...({
  : 279786,
  : '123456'
})

if (.) {
  .(.)
}

fetchLiveRoomInfo

直播间信息。端点 bilibili.liveRoomInfo,同一端点的 HTTP 形态。

取直播间的展示信息(标题、封面、分区等);房间标识与开播状态用 liveRoomInit。

参数类型必填说明
room_idstring是直播间 ID
const  = await ...({
  : '123456'
})

if (.) {
  .(.)
}

fetchLiveRoomInitInfo

直播间初始化信息。端点 bilibili.liveRoomInit,同一端点的 HTTP 形态。

取房间的标识与开播状态;标题、封面等展示信息用 liveRoomInfo。

参数类型必填说明
room_idstring是直播间 ID
const  = await ...({
  : '123456'
})

if (.) {
  .(.)
}

fetchArticleContent

专栏正文内容。端点 bilibili.articleContent,同一端点的 HTTP 形态。

取专栏正文;标题、作者、阅读统计等元信息用 articleInfo。

参数类型必填说明
idstring是专栏 ID,取自专栏链接
const  = await ...({
  : '123456'
})

if (.) {
  .(.)
}

fetchArticleCards

专栏显示卡片信息。端点 bilibili.articleCards,同一端点的 HTTP 形态。

一次可批量查询多条,支持视频、专栏、直播间的 ID 混传,结果按 ID 分组返回。

参数类型必填说明
idsstring[] | string是ID 列表,可混传视频、专栏、直播间
const  = await ...({
  : ['123456', '789012']
})

if (.) {
  .(.)
}

fetchArticleInfo

专栏文章基本信息。端点 bilibili.articleInfo,同一端点的 HTTP 形态。

取文章页元信息(标题、头图、作者、阅读/点赞);正文用 articleContent。

参数类型必填说明
idstring是专栏 ID,取自专栏链接
const  = await ...({
  : '123456'
})

if (.) {
  .(.)
}

fetchArticleListInfo

文集基本信息。端点 bilibili.articleListInfo,同一端点的 HTTP 形态。

取文集(rlid)本体与其中的文章清单;单篇专栏用 articleInfo。

参数类型必填说明
idstring是文集 ID(rlid),取自文集链接
const  = await ...({
  : '123456'
})

if (.) {
  .(.)
}

fetchLoginStatus

登录基本信息。端点 bilibili.loginStatus,同一端点的 HTTP 形态。

取当前账号的登录信息,可用来判断登录凭证是否还有效。

无参数。

const  = await ...({})

if (.) {
  .(.)
}

requestLoginQrcode

登录二维码。端点 bilibili.loginQrcode,同一端点的 HTTP 形态。

扫码登录第一步:返回二维码内容与轮询凭据 qrcode_key。

无参数。

const  = await ...({})

if (.) {
  .(.)
}

checkQrcodeStatus

二维码扫码状态。端点 bilibili.qrcodeStatus,同一端点的 HTTP 形态。

轮询扫码进度;登录成功时新登录态只在响应头,本接口不透出响应头。

参数类型必填说明
qrcode_keystring是二维码 key,取自 loginQrcode
const  = await ...({
  : 'xxx'
})

if (.) {
  .(.)
}

requestCaptchaFromVoucher

由 v_voucher 申请的验证码信息。端点 bilibili.captchaFromVoucher,同一端点的 HTTP 形态。

人机校验第一步:用 v_voucher 换取验证码与校验参数。

参数类型必填说明
csrfstring否CSRF Token,取 bili_jct
v_voucherstring是风控下发的凭证,形如 voucher_xxx
const  = await ...({
  : 'voucher_xxx'
})

if (.) {
  .(.)
}

validateCaptchaResult

验证码校验结果。端点 bilibili.validateCaptcha,同一端点的 HTTP 形态。

人机校验第二步:提交 challenge / token 与用户过完验证的结果。

参数类型必填说明
csrfstring否CSRF Token,取 bili_jct
challengestring是极验 challenge,第一步返回
tokenstring是极验 token,第一步返回
validatestring是人机验证通过后回填
seccodestring是人机验证通过后回填的校验串
const  = await ...({
  : 'challenge_xxx',
  : 'token_xxx',
  : 'validate_xxx',
  : 'validate_xxx|jordan'
})

if (.) {
  .(.)
}

convertAvToBv

AV 号转换得到的 BV 号。端点 bilibili.avToBv,同一端点的 HTTP 形态。

把稿件 AV 号换算成 BV 号,本地计算不发请求,返回 { bvid }。

纯本地计算,不发请求。

参数类型必填说明
avidnumber是稿件 AV 号,纯数字不带 av 前缀
const  = await ...({
  : 170001
})

if (.) {
  .(.)
}

convertBvToAv

BV 号转换得到的 AV 号。端点 bilibili.bvToAv,同一端点的 HTTP 形态。

把稿件 BV 号换算成 AV 号,本地计算不发请求,返回 { aid }。

纯本地计算,不发请求。

参数类型必填说明
bvidstring是稿件 BV 号,如 BV1xx411c7mD
const  = await ...({
  : 'BV1xx411c7mD'
})

if (.) {
  .(.)
}

fetchEmojiList

表情列表。端点 bilibili.emojiList,同一端点的 HTTP 形态。

取评论区表情面板里的全部表情,无参数。

无参数。

const  = await ...({})

if (.) {
  .(.)
}

On this page