bilibili-API-collect/cheese/info.md

29 KiB
Raw Blame History

课程基本信息


课程ssid与epid和番剧不互通

课程avid与普通视频绝大部分api接口不能互通少部分互通接口如下

  1. 获取视频简介
  2. 查询视频状态数
  3. 查询分P列表
  4. 视频快照
  5. 获取弹幕使用cid
  6. 发送弹幕
  7. 高能进度条使用cid

获取课程基本信息

http://api.bilibili.com/pugv/view/web/season

请求方式GET

认证方式CookieSESSDATA

鉴权方式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 'http://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'season_id=61' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'

epid方式

curl -G 'http://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.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"
}

获取课程分集列表

http://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成功
-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 'http://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"
}