课程ssid与epid和番剧不互通
课程avid与普通视频绝大部分api接口不能互通,少部分互通接口如下:
- 获取视频简介
- 查询视频状态数
- 查询分P列表
- 视频快照
- 获取弹幕(使用cid)
- 发送弹幕
- 高能进度条(使用cid)
请求方式:GET
认证方式:Cookie(SESSDATA)
鉴权方式:referer为 .bilibili.com
域名下
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
season_id | num | 课程ssid | 必要(可选) | season_id与ep_id任选其一 与番剧ssid不互通 |
ep_id | num | 课程epid | 必要(可选) | season_id与ep_id任选其一 与番剧epid不互通 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -404:错误 |
message | str | 错误信息 | 默认为success |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
brief | obj | 课程概述信息 | |
coupon | obj | 优惠信息 | 若无优惠则无此项 |
cover | str | 课程封面url | |
episode_page | obj | 课程分集信息 | |
episode_sort | num | 1 | 作用尚不明确 |
episodes | array | 课程分集列表 | |
faq | obj | 常见问题信息1 | 合并格式 |
faq1 | obj | 常见问题信息2 | 分离格式 |
payment | obj | 付费信息 | |
purchase_note | obj | 购买须知信息 | |
purchase_protocol | obj | 付费内容协议信息 | |
release_bottom_info | str | 底部更新状态文字 | |
release_info | str | 更新状态文字+更新连载状态文字 | |
release_info2 | str | 更新连载状态文字 | |
release_status | str | 更新状态文字 | |
season_id | num | 课程ssid | 与番剧ssid不互通 |
share_url | str | 页面url | |
short_link | str | bilibili uri链接 | |
stat | obj | 播放数信息 | |
status | num | 10 | 作用尚不明确 |
subtitle | str | 课程简介信息 | |
title | str | 课程标题 | |
up_info | obj | UP主信息 | |
user_status | obj | 用户状态信息 | 需要登录(SESSDATA)且referer为https://www.bilibili.com |
data
中的brief
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
content | str | 空 | |
img | array | 简介图片 | |
title | str | 课程概述 | |
type | num | 2 |
brief
中的img
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 简介图片1 | |
n | obj | 简介图片(n+1) | |
…… | obj | …… | …… |
img
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
aspect_ratio | num | ??? | 作用尚不明确 |
url | str | 简介图片url |
data
中的coupon
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
amount | num | 折扣乘数 | |
expire_time | str | 结束时间 | YYYY-MM-DD HH:MM:SS |
start_time | str | 起始时间 | YYYY-MM-DD HH:MM:SS |
status | num | ??? | 作用尚不明确 |
title | str | 优惠标题 | |
token | str | 领取token |
data
中的episode_page
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
next | bool | false | |
num | num | 1 | |
size | num | 总计集数 | |
total | num | 总计集数 |
data
中的episodes
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 课程分集1 | |
n | obj | 课程分集(n+1) | |
…… | obj | …… | …… |
episodes
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
aid | num | 课程分集avid | 与普通稿件avid部分不互通 |
cid | num | 课程分集cid | 与普通视频cid部分不互通 |
duration | num | 课程分集时间长度 | 单位为秒 |
from | str | pugv | |
id | num | 课程分集epid | 与番剧epid不互通 |
index | num | 课程分集数 | |
page | num | 1 | |
play | num | 课程分集播放量 | |
release_date | num | 课程分集发布时间 | 时间戳 |
status | num | 分集权限属性 | 1:可观看 2:不可观看 |
title | str | 课程分集标题 | |
watched | bool | 是否观看该集 | 需要登录(SESSDATA)且referer为https://www.bilibili.com false:未观看 true:已观看 |
watchedHistory | num | 该集观看历史 | 需要登录(SESSDATA)且referer为https://www.bilibili.com |
data
中的faq
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
content | str | 常见问题信息 | |
link | str | 常见问题页面url | |
title | str | 常见问题 |
data
中的faq1
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
items | array | 常见问题列表 | |
title | str | 常见问题 |
faq1
中的items
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 常见问题1 | |
n | obj | 常见问题(n+1) | |
…… | obj | …… | …… |
items
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
answer | str | 回答信息 | |
question | str | 问题信息 |
data
中的payment
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
desc | str | 付费价格说明 | |
discount_desc | str | 折扣说明信息 | 若无优惠则无此项 |
discount_prefix | str | 折扣类型前缀 | 若无优惠则无此项 |
pay_shade | str | 观看所有视频付费说明 | |
price | num | 课程价格 | 单位为B币(折扣后价格) |
price_format | str | 课程价格 | 单位为B币折扣后价格) |
data
中的purchase_note
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
content | str | 购买须知信息文字内容 | |
link | str | 购买须知页面url | |
title | str | 购买须知 |
data
中的purchase_protocol
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
link | str | 付费内容协议页面url | |
title | str | 付费内容协议 |
data
中的stat
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
play | num | 播放量 | |
play_desc | str | 播放量文字信息 |
data
中的up_info
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
avatar | str | UP主头像url | |
brief | str | UP主备注 | 非个人签名 |
follower | num | UP主粉丝数 | |
is_follow | num | 是否关注UP主 | 需要登录(SESSDATA)且referer为https://www.bilibili.com 0:未关注 1:已关注 |
link | str | UP主空间url | |
mid | num | UP主uid | |
pendant | obj | ??? | 作用尚不明确 |
uname | str | UP主昵称 |
up_info
中的pendant
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
image | str | 空 | 作用尚不明确 |
name | str | 空 | 作用尚不明确 |
follower | num | 0 | 作用尚不明确 |
data
中的user_status
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
favored | num | 是否收藏 | 0:未收藏 1:已收藏 |
favored_count | num | 1 | 作用尚不明确 |
payed | num | 是否购买 | 0:未购买 1:已购买 |
progress | obj | 课程进度 | 未登录无此项 |
user_status
中的progress
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
last_ep_id | num | 最后观看的epid | |
last_ep_index | str | 最后观看的标题 | |
last_time | num | 最后观看的时间进度 | 单位为秒 |
示例:
查询课程ss61
或分集ep790
的信息
ssid方式:
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'season_id=61' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
epid方式:
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'ep_id=790' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
查看响应示例:
{
"code": 0,
"data": {
"brief": {
"content": "",
"img": [
{
"aspect_ratio": 0.9375,
"url": "http://i0.hdslb.com/bfs/archive/29942f338ee570632838403a09871bad130cfe9a.jpg"
},
{
"aspect_ratio": 0.9375,
"url": "http://i0.hdslb.com/bfs/archive/913e5c37d836d7954ae9ca19da62a43ba5b34219.jpg"
},
{
"aspect_ratio": 1.3359375,
"url": "http://i0.hdslb.com/bfs/archive/a974555bd4a52f0aa865bd192c1e3401ed4cb0ad.jpg"
},
{
"aspect_ratio": 1.3359375,
"url": "http://i0.hdslb.com/bfs/archive/73cd7669b251db9d2b62b921bee49a137c3d65dc.jpg"
},
{
"aspect_ratio": 1.0625,
"url": "http://i0.hdslb.com/bfs/archive/b084ac8f6710c8eddbc58770a4254508de75eb02.jpg"
},
{
"aspect_ratio": 1.2890625,
"url": "http://i0.hdslb.com/bfs/archive/44e32c2cf64b894563829ce65bbef199220f4121.jpg"
},
{
"aspect_ratio": 1.3203125,
"url": "http://i0.hdslb.com/bfs/archive/90764fd095810565713b92606dc9cd0cfb25adae.jpg"
},
{
"aspect_ratio": 1.15234375,
"url": "http://i0.hdslb.com/bfs/archive/c35ca0ced0ad075a2c13b8fdc1e47b88573bce45.jpg"
}
],
"title": "课程概述",
"type": 2
},
"coupon": {
"amount": 0.66,
"expire_time": "2020-06-30 00:00:00",
"start_time": "2020-05-21 00:00:00",
"status": 1,
"title": "【上新限时6.6折】《唐盾:0-N4日语精讲》",
"token": "B20200521135929161905873"
},
"cover": "http://i0.hdslb.com/bfs/archive/95d4de9e6691ccc2b18f087f5f654652dee3c01b.jpg",
"episode_page": {
"next": false,
"num": 1,
"size": 66,
"total": 66
},
"episode_sort": 1,
"episodes": [
{
"aid": 76973173,
"cid": 132105993,
"duration": 2223,
"from": "pugv",
"id": 790,
"index": 1,
"page": 1,
"play": 2406406,
"release_date": 1574762407,
"status": 1,
"title": "唐盾:一起从0基础学日语吧(含50音 词汇试听)",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77114885,
"cid": 132110244,
"duration": 3003,
"from": "pugv",
"id": 795,
"index": 2,
"page": 1,
"play": 49100,
"release_date": 1574766759,
"status": 2,
"title": "50音あ行假名/音调/送气与不送气音",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77120689,
"cid": 131913553,
"duration": 3253,
"from": "pugv",
"id": 797,
"index": 3,
"page": 1,
"play": 49518,
"release_date": 1574770029,
"status": 2,
"title": "50音图的か行、さ行、た行假名",
"watched": false,
"watchedHistory": 0
},
…………
],
"faq": {
"content": "Q:课程在什么时间更新?\nA:课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。\n\nQ:课程购买后有收看时间限制吗?\nA:购买后除不可抗力因素外,课程均可永久收看,请您放心购买。\n\nQ:原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?\nA:虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。\n\nQ:购买课程后是否可以加入老师的粉丝群或者用户群?\nA:如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。",
"link": "http://m.bilibili.com",
"title": "常见问题"
},
"faq1": {
"items": [
{
"answer": "课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。",
"question": "课程在什么时间更新?"
},
{
"answer": "购买后除不可抗力因素外,课程均可永久收看,请您放心购买。",
"question": "课程购买后有收看时间限制吗?"
},
{
"answer": "虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。",
"question": "原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?"
},
{
"answer": "如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。",
"question": "购买课程后是否可以加入老师的粉丝群或者用户群?"
}
],
"title": "常见问题"
},
"payment": {
"desc": "券后 262.68 B币起/53期",
"discount_desc": "262.68 B币",
"discount_prefix": "券后",
"pay_shade": "券后支付 262.68 B币即可观看所有视频",
"price": 398.0,
"price_format": "398"
},
"purchase_note": {
"content": "1. 本内容为付费内容,购买成功后方可观看。<br/>2. 本内容为虚拟服务,已购买内容不支持退款,敬请谅解。<br/>3. 实际购买价格以页面展示的价格及订单结算页显示价格为准。<br/>4. 如您在购买付费内容时有任何疑问,可随时咨询在线客服。<br/>完整的购买协议,请点击阅读<a href=\"https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html\" color=\"#0ba395\" target=\"_blank\">《bilibili付费内容购买协议》</a>",
"link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html",
"title": "购买须知"
},
"purchase_protocol": {
"link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html",
"title": "bilibili付费内容购买协议"
},
"release_bottom_info": "没有更多啦~",
"release_info": "已完结,共53期",
"release_info2": "共53期",
"release_status": "已完结",
"season_id": 61,
"share_url": "https://m.bilibili.com/cheese/play/ss61",
"short_link": "bilibili://cheese/season/61",
"stat": {
"play": 2878146,
"play_desc": "287.8万播放"
},
"status": 10,
"subtitle": "新东方名师唐盾的精品日语课,包含50音/N5/N4的词汇/语法/课文/练习精讲,让我们一起轻松学日语~",
"title": "唐盾:0-N4日语精讲",
"up_info": {
"avatar": "http://i1.hdslb.com/bfs/face/564421428d1f74314ed50e16a8f570ad968828b0.jpg",
"brief": "唐盾:前新东方日语名师,倾注日语教学、翻译14年。曾任新东方欧亚教育长沙中心总监。",
"follower": 21333,
"is_follow": 0,
"link": "https://space.bilibili.com/19452605",
"mid": 19452605,
"pendant": {
"image": "",
"name": "",
"pid": 0
},
"uname": "盾盾桑教你学日语"
},
"user_status": {
"favored": 1,
"favored_count": 1,
"payed": 0,
"progress": {
"last_ep_id": 790,
"last_ep_index": "唐盾:一起从0基础学日语吧(含50音 词汇试听)",
"last_time": 1
}
}
},
"message": "success"
}
请求方式:GET
认证方式:Cookie(SESSDATA)
鉴权方式:referer为 .bilibili.com
域名下
url参数:
参数名 | 类型 | 内容 | 必要性 | 备注 |
---|---|---|---|---|
season_id | num | 课程ssid | 必要 | 与番剧ssid不互通 |
ps | num | 每页项数 | 非必要 | 默认为50 |
pn | num | 页码 | 非必要 | 默认为1 |
json回复:
根对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
code | num | 返回值 | 0:成功 -404:错误 |
message | str | 错误信息 | 默认为success |
data | obj | 信息本体 |
data
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
items | array | 课程分集列表 | |
page | obj | 列表分页信息 |
data
中的items
数组:
项 | 类型 | 内容 | 备注 |
---|---|---|---|
0 | obj | 课程分集1 | |
n | obj | 课程分集(n+1) | |
…… | obj | …… | …… |
items
数组中的对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
aid | num | 课程分集avid | 与普通稿件avid部分不互通 |
cid | num | 课程分集cid | 与普通视频cid部分不互通 |
duration | num | 课程分集时间长度 | 单位为秒 |
from | str | pugv | |
id | num | 课程分集epid | 与番剧epid不互通 |
index | num | 课程分集数 | |
page | num | 1 | |
play | num | 课程分集播放量 | |
release_date | num | 课程分集发布时间 | 时间戳 |
status | num | 分集权限属性 | 1:可观看 2:不可观看 |
title | str | 课程分集标题 | |
watched | bool | 是否观看该集 | 需要登录(SESSDATA)且referer为https://www.bilibili.com false:未观看 true:已观看 |
watchedHistory | num | 该集观看历史 | 需要登录(SESSDATA)且referer为https://www.bilibili.com |
data
中的page
对象:
字段 | 类型 | 内容 | 备注 |
---|---|---|---|
next | bool | 是否存在下一页 | false:不存在下一页 true:存在下一页 |
num | num | 当前页码 | |
size | num | 每页项数 | |
total | num | 总价项数 |
示例:
按照每页5项查询课程ss61
的分集列表第1页
curl -G 'https://api.bilibili.com/pugv/view/web/ep/list' \
--data-urlencode 'season_id=61' \
--data-urlencode 'ps=5 ' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
查看响应示例:
{
"code": 0,
"data": {
"items": [
{
"aid": 76973173,
"cid": 132105993,
"duration": 2223,
"from": "pugv",
"id": 790,
"index": 1,
"page": 1,
"play": 2406951,
"release_date": 1574762407,
"status": 1,
"title": "唐盾:一起从0基础学日语吧(含50音 词汇试听)",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77114885,
"cid": 132110244,
"duration": 3003,
"from": "pugv",
"id": 795,
"index": 2,
"page": 1,
"play": 49106,
"release_date": 1574766759,
"status": 2,
"title": "50音あ行假名/音调/送气与不送气音",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77120689,
"cid": 131913553,
"duration": 3253,
"from": "pugv",
"id": 797,
"index": 3,
"page": 1,
"play": 49522,
"release_date": 1574770029,
"status": 2,
"title": "50音图的か行、さ行、た行假名",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77606110,
"cid": 132897199,
"duration": 2823,
"from": "pugv",
"id": 806,
"index": 4,
"page": 1,
"play": 35800,
"release_date": 1575128696,
"status": 2,
"title": "50音图的な行、は行、ま行假名",
"watched": false,
"watchedHistory": 0
},
{
"aid": 78015255,
"cid": 133651764,
"duration": 2165,
"from": "pugv",
"id": 812,
"index": 5,
"page": 1,
"play": 25842,
"release_date": 1575446218,
"status": 2,
"title": "や行、ら行、わ行假名、拨音",
"watched": false,
"watchedHistory": 0
}
],
"page": {
"next": true,
"num": 1,
"size": 5,
"total": 66
}
},
"message": "success"
}