课程基本信息

课程ssid与epid和番剧不互通

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

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

获取课程基本信息

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

请求方式:GET

认证方式:Cookie(SESSDATA)

鉴权方式:referer为 .bilibili.com域名下

url参数:

参数名类型内容必要性备注
season_idnum课程ssid必要(可选)season_id与ep_id任选其一
与番剧ssid不互通
ep_idnum课程epid必要(可选)season_id与ep_id任选其一
与番剧epid不互通

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-404:错误
messagestr错误信息默认为success
dataobj信息本体

data对象:

字段类型内容备注
briefobj课程概述信息
couponobj优惠信息若无优惠则无此项
coverstr课程封面url
episode_pageobj课程分集信息
episode_sortnum1作用尚不明确
episodesarray课程分集列表
faqobj常见问题信息1合并格式
faq1obj常见问题信息2分离格式
paymentobj付费信息
purchase_noteobj购买须知信息
purchase_protocolobj付费内容协议信息
release_bottom_infostr底部更新状态文字
release_infostr更新状态文字+更新连载状态文字
release_info2str更新连载状态文字
release_statusstr更新状态文字
season_idnum课程ssid与番剧ssid不互通
share_urlstr页面url
short_linkstrbilibili uri链接
statobj播放数信息
statusnum10作用尚不明确
subtitlestr课程简介信息
titlestr课程标题
up_infoobjUP主信息
user_statusobj用户状态信息需要登录(SESSDATA)且referer为https://www.bilibili.com

data中的brief对象:

字段类型内容备注
contentstr
imgarray简介图片
titlestr课程概述
typenum2

brief中的img数组:

类型内容备注
0obj简介图片1
nobj简介图片(n+1)
……obj…………

img数组中的对象:

字段类型内容备注
aspect_rationum???作用尚不明确
urlstr简介图片url

data中的coupon对象:

字段类型内容备注
amountnum折扣乘数
expire_timestr结束时间YYYY-MM-DD HH:MM:SS
start_timestr起始时间YYYY-MM-DD HH:MM:SS
statusnum???作用尚不明确
titlestr优惠标题
tokenstr领取token

data中的episode_page对象:

字段类型内容备注
nextboolfalse
numnum1
sizenum总计集数
totalnum总计集数

data中的episodes数组:

类型内容备注
0obj课程分集1
nobj课程分集(n+1)
……obj…………

episodes数组中的对象:

字段类型内容备注
aidnum课程分集avid与普通稿件avid部分不互通
cidnum课程分集cid与普通视频cid部分不互通
durationnum课程分集时间长度单位为秒
fromstrpugv
idnum课程分集epid与番剧epid不互通
indexnum课程分集数
pagenum1
playnum课程分集播放量
release_datenum课程分集发布时间时间戳
statusnum分集权限属性1:可观看
2:不可观看
titlestr课程分集标题
watchedbool是否观看该集需要登录(SESSDATA)且referer为https://www.bilibili.com
false:未观看
true:已观看
watchedHistorynum该集观看历史需要登录(SESSDATA)且referer为https://www.bilibili.com

data中的faq对象:

字段类型内容备注
contentstr常见问题信息
linkstr常见问题页面url
titlestr常见问题

data中的faq1对象:

字段类型内容备注
itemsarray常见问题列表
titlestr常见问题

faq1中的items数组:

类型内容备注
0obj常见问题1
nobj常见问题(n+1)
……obj…………

items数组中的对象:

字段类型内容备注
answerstr回答信息
questionstr问题信息

data中的payment对象:

字段类型内容备注
descstr付费价格说明
discount_descstr折扣说明信息若无优惠则无此项
discount_prefixstr折扣类型前缀若无优惠则无此项
pay_shadestr观看所有视频付费说明
pricenum课程价格单位为B币(折扣后价格)
price_formatstr课程价格单位为B币折扣后价格)

data中的purchase_note对象:

字段类型内容备注
contentstr购买须知信息文字内容
linkstr购买须知页面url
titlestr购买须知

data中的purchase_protocol对象:

字段类型内容备注
linkstr付费内容协议页面url
titlestr付费内容协议

data中的stat对象:

字段类型内容备注
playnum播放量
play_descstr播放量文字信息

data中的up_info对象:

字段类型内容备注
avatarstrUP主头像url
briefstrUP主备注非个人签名
followernumUP主粉丝数
is_follownum是否关注UP主需要登录(SESSDATA)且referer为https://www.bilibili.com
0:未关注
1:已关注
linkstrUP主空间url
midnumUP主uid
pendantobj???作用尚不明确
unamestrUP主昵称

up_info中的pendant对象:

字段类型内容备注
imagestr作用尚不明确
namestr作用尚不明确
followernum0作用尚不明确

data中的user_status对象:

字段类型内容备注
favorednum是否收藏0:未收藏
1:已收藏
favored_countnum1作用尚不明确
payednum是否购买0:未购买
1:已购买
progressobj课程进度未登录无此项

user_status中的progress对象:

字段类型内容备注
last_ep_idnum最后观看的epid
last_ep_indexstr最后观看的标题
last_timenum最后观看的时间进度单位为秒

示例:

查询课程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"
}

获取课程分集列表

https://api.bilibili.com/pugv/view/web/ep/list

请求方式:GET

认证方式:Cookie(SESSDATA)

鉴权方式:referer为 .bilibili.com域名下

url参数:

参数名类型内容必要性备注
season_idnum课程ssid必要与番剧ssid不互通
psnum每页项数非必要默认为50
pnnum页码非必要默认为1

json回复:

根对象:

字段类型内容备注
codenum返回值0:成功
-404:错误
messagestr错误信息默认为success
dataobj信息本体

data对象:

字段类型内容备注
itemsarray课程分集列表
pageobj列表分页信息

data中的items数组:

类型内容备注
0obj课程分集1
nobj课程分集(n+1)
……obj…………

items数组中的对象:

字段类型内容备注
aidnum课程分集avid与普通稿件avid部分不互通
cidnum课程分集cid与普通视频cid部分不互通
durationnum课程分集时间长度单位为秒
fromstrpugv
idnum课程分集epid与番剧epid不互通
indexnum课程分集数
pagenum1
playnum课程分集播放量
release_datenum课程分集发布时间时间戳
statusnum分集权限属性1:可观看
2:不可观看
titlestr课程分集标题
watchedbool是否观看该集需要登录(SESSDATA)且referer为https://www.bilibili.com
false:未观看
true:已观看
watchedHistorynum该集观看历史需要登录(SESSDATA)且referer为https://www.bilibili.com

data中的page对象:

字段类型内容备注
nextbool是否存在下一页false:不存在下一页
true:存在下一页
numnum当前页码
sizenum每页项数
totalnum总价项数

示例:

按照每页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"
}