bilibili-API-collect/docs/cheese/info.md
2023-02-23 11:48:58 +08:00

641 lines
28 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

# 课程基本信息
课程ssid与epid和番剧不互通
课程avid与普通视频绝大部分api接口不能互通少部分互通接口如下
1. 获取视频简介
2. 查询视频状态数
3. 查询分P列表
4. 视频快照
5. 获取弹幕使用cid
6. 发送弹幕
7. 高能进度条使用cid
## 获取课程基本信息
> https://api.bilibili.com/pugv/view/web/season
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式referer为 `.bilibili.com`域名下
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------------ | -------------------------------------------------- |
| season_id | num | 课程ssid | 必要(可选) | season_id与ep_id任选其一<br />**与番剧ssid不互通** |
| ep_id | num | 课程epid | 必要(可选) | season_id与ep_id任选其一<br />**与番剧epid不互通** |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------- |
| code | num | 返回值 | 0成功<br />-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可观看<br />2不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />false未观看<br />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`**<br />0未关注<br />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未收藏<br />1已收藏 |
| favored_count | num | 1 | **作用尚不明确** |
| payed | num | 是否购买 | 0未购买<br />1已购买 |
| progress | obj | 课程进度 | 未登录无此项 |
`user_status`中的`progress`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------------ | -------- |
| last_ep_id | num | 最后观看的epid | |
| last_ep_index | str | 最后观看的标题 | |
| last_time | num | 最后观看的时间进度 | 单位为秒 |
**示例:**
查询课程`ss61`或分集`ep790`的信息
ssid方式
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'season_id=61' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
epid方式
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'ep_id=790' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"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.68B币起/53期",
"discount_desc": "262.68B币",
"discount_prefix": "券后",
"pay_shade": "券后支付262.68B币即可观看所有视频",
"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"
}
```
</details>
## 获取课程分集列表
> https://api.bilibili.com/pugv/view/web/ep/list
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式referer为 `.bilibili.com`域名下
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------ | -------------------- |
| season_id | num | 课程ssid | 必要 | **与番剧ssid不互通** |
| ps | num | 每页项数 | 非必要 | 默认为50 |
| pn | num | 页码 | 非必要 | 默认为1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------- |
| code | num | 返回值 | 0成功<br />-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可观看<br />2不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />false未观看<br />true已观看 |
| watchedHistory | num | 该集观看历史 | **需要登录SESSDATA且referer为`https://www.bilibili.com`** |
`data`中的`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------------- | ----------------------------------------- |
| next | bool | 是否存在下一页 | false不存在下一页<br />true存在下一页 |
| num | num | 当前页码 | |
| size | num | 每页项数 | |
| total | num | 总价项数 | |
**示例:**
按照每页5项查询课程`ss61`的分集列表第1页
```shell
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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"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"
}
```
</details>