返回提交历史
Modified
README.md
+1
-1
Modified
cheese/info.md
+2
-2
Added
cheese/videostream_url.md
+237
-0
Modified
video/videostream_url.md
+14
-14
XFEstudio/bilibili-API-collect
添加获取课程视频流url
ce5bab1
代码差异
4 个文件
+254
-17
@@ -116,7 +116,7 @@
116
116
- 已购课程
117
117
- 分区推荐列表
118
118
- 操作
119
- 播放&下载地址(视频流)
119
- [播放&下载地址(视频流)](cheese/videostream_url.md)√
120
120
- [直播](live)
121
121
- [直播间基本信息](live/info.md)x
122
122
- [直播分区](live/live_area.md)×
@@ -129,7 +129,7 @@
129
129
| page | num | 1 | |
130
130
| play | num | 课程分集播放量 | |
131
131
| release_date | num | 课程分集发布时间 | 时间戳 |
132
| status | num | 分集属性 | 1:可免费试看<br />2:需要付费观看 |
132
| status | num | 分集权限属性 | 1:可观看<br />2:不可观看 |
133
133
| title | str | 课程分集标题 | |
134
134
| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**<br />false:未观看<br />true:已观看 |
135
135
| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** |
@@ -490,7 +490,7 @@ http://api.bilibili.com/pugv/view/web/season?season_id=61
490
490
| page | num | 1 | |
491
491
| play | num | 课程分集播放量 | |
492
492
| release_date | num | 课程分集发布时间 | 时间戳 |
493
| status | num | 分集属性 | 1:可免费试看<br />2:需要付费观看 |
493
| status | num | 分集权限属性 | 1:可观看<br />2:不可观看 |
494
494
| title | str | 课程分集标题 | |
495
495
| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**<br />false:未观看<br />true:已观看 |
496
496
| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** |
@@ -0,0 +1,237 @@
1
# 课程视频流URL
2
3
## 获取课程视频流URL
4
5
> http://api.bilibili.com/pugv/player/web/playurl
6
7
*方式:GET*
8
9
本接口为课程视频专用,故与普通视频不互通
10
11
获取非试看课程视频及720P以上清晰度视频时需要登录(SESSDATA)购买的课程也需要使用登录进行鉴权
12
13
高帧率(码率)视频需要带有大会员的账号token(SESSDATA)
14
15
获取的url有效时间为120min,超时失效需要重新获取
16
17
**部分视频**会有**分段**,需要特别注意
18
19
**参数:**
20
21
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
22
| ------ | ---- | -------------- | ------ | ------------------------------------------------------------ |
23
| aid | url | 课程avID | 必要 | |
24
| ep_id | url | 课程epID | 必要 | |
25
| cid | url | 视频CID | 必要 | |
26
| qn | url | 视频清晰度选择 | 非必要 | 未登录默认32(480P)<br />登录默认64(720P)<br />**值含义见下表** |
27
28
分辨率代码:
29
30
| 值 | 含义 |
31
| ---- | ---------------------- |
32
| 16 | 360P 流畅 |
33
| 32 | 480P 清晰 |
34
| 64 | 720P 高清(登录) |
35
| 74 | 720P60 高清(大会员) |
36
| 80 | 1080P 高清(登录) |
37
| 112 | 1080P+ 高清(大会员) |
38
| 116 | 1080P60 高清(大会员) |
39
| 120 | 4K 超清(大会员) |
40
41
**json回复:**
42
43
根对象:
44
45
| 字段 | 类型 | 内容 | 备注 |
46
| ------- | ---- | -------- | ------------------------------------------------------------ |
47
| code | num | 返回值 | 0:成功 <br />-400:请求错误<br />-404:无视频<br />-403:权限不足(未购买) |
48
| message | str | 错误信息 | 默认为success |
49
| data | obj | 数据本体 | |
50
51
`data`对象:
52
53
| 字段 | 类型 | 内容 | 备注 |
54
| ------------------ | ------ | ---------------------- | ---------------------------------------- |
55
| accept_format | str | 视频支持的分辨率的格式 | |
56
| code | num | 0 | |
57
| durl | arrary | 视频分段 | |
58
| seek_param | str | start | |
59
| no_rexcode | num | 0 | |
60
| format | str | 视频格式 | |
61
| fnval | num | 0 | |
62
| video_project | bool | true | |
63
| fnver | num | 0 | |
64
| message | str | 空 | |
65
| type | str | 视频格式 | |
66
| accept_quality | arrary | 视频支持的分辨率列表 | |
67
| quality | num | 视频分辨率代码 | **值含义见上表** |
68
| timelength | num | 视频长度 | 单位为毫秒<br />不同分辨率可能有略微差异 |
69
| result | str | suee | **作用尚不明确** |
70
| seek_type | str | offset | **作用尚不明确** |
71
| has_paid | bool | false | **作用尚不明确** |
72
| supportFormats | arrary | 视频分辨率详细列表 | |
73
| from | str | local | **作用尚不明确** |
74
| video_codecid | num | ??? | **作用尚不明确** |
75
| accept_description | arrary | 视频支持的分辨率列表 | |
76
| status | num | 0 | **作用尚不明确** |
77
78
`data`中的`durl`数组:
79
80
| 项 | 类型 | 内容 | 备注 |
81
| ---- | ---- | ----------------- | ---- |
82
| 0 | obj | 视频分段1信息 | |
83
| n | obj | 视频分段(n+1)信息 | |
84
| …… | obj | …… | |
85
86
`durl`数组中的对象:
87
88
| 字段 | 类型 | 内容 | 备注 |
89
| ---------- | ------ | ------------ | ---------------------------------- |
90
| size | num | 视频大小 | 单位为Byte |
91
| ahead | str | 空 | 作用尚不明确 |
92
| length | num | 视频长度 | 单位为毫秒 |
93
| vhead | str | 空 | 作用尚不明确 |
94
| backup_url | arrary | 备用视频流 | |
95
| url | str | 视频流url | **重要**<br />链接有效时间为120min |
96
| order | num | 视频分段序号 | 某些视频会分为多个片段 |
97
98
`durl`数组中的对象中的`backup_url`数组:
99
100
| 项 | 类型 | 内容 | 备注 |
101
| ---- | ---- | ------------- | ---------------- |
102
| 0 | str | 备用视频流url | 有效时间为120min |
103
104
`data`中的`supportFormats`数组:
105
106
| 项 | 类型 | 内容 | 备注 |
107
| ---- | ---- | ------------------- | ---- |
108
| 0 | obj | 分辨率详细信息1 | |
109
| n | obj | 分辨率详细信息(n+1) | |
110
| …… | obj | …… | …… |
111
112
`supportFormats`数组中的对象:
113
114
| 字段 | 类型 | 内容 | 备注 |
115
| ----------- | ---- | ---------- | ---- |
116
| format | str | 分辨率名称 | |
117
| description | atr | 分辨率备注 | |
118
| quality | num | 分辨率代码 | |
119
120
`data`中的`accept_description`数组:
121
122
| 项 | 类型 | 内容 | 备注 |
123
| ---- | ---- | --------------- | ---- |
124
| 0 | str | 分辨率名称1 | |
125
| n | str | 分辨率名称(n+1) | |
126
| …… | str | …… | …… |
127
128
**示例:**
129
130
获取课程`ep790`(CID=`132105993`,avID=`76973173`)的视频流url,清晰度为1080P60
131
132
http://api.bilibili.com/pugv/player/web/playurl?ep_id=790&avid=76973173&cid=132105993&qn=116
133
134
```json
135
{
136
"code": 0,
137
"data": {
138
"accept_format": "flv_p60,flv720_p60,flv,flv720,flv480,flv360",
139
"code": 0,
140
"durl": [
141
{
142
"size": 1105854161,
143
"ahead": "",
144
"length": 2222204,
145
"vhead": "",
146
"backup_url": [
147
"https://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3cbv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=b271bf493bff32ffe62969582c8d18b4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=1,2&logo=40000000"
148
],
149
"url": "https://upos-sz-mirrorks3.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3bv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=6a8ae3711bd0bb2a484ec2427d659b14&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,2&logo=80000000",
150
"order": 1,
151
"md5": ""
152
}
153
],
154
"seek_param": "start",
155
"no_rexcode": 0,
156
"format": "flv_p60",
157
"fnval": 0,
158
"video_project": true,
159
"fnver": 0,
160
"message": "",
161
"type": "FLV",
162
"accept_quality": [
163
116,
164
74,
165
80,
166
64,
167
32,
168
16
169
],
170
"quality": 116,
171
"timelength": 2222204,
172
"result": "suee",
173
"seek_type": "offset",
174
"has_paid": false,
175
"supportFormats": [
176
{
177
"format": "flv_p60",
178
"description": "高清 1080P60",
179
"quality": 116
180
},
181
{
182
"format": "flv720_p60",
183
"description": "高清 720P60",
184
"quality": 74
185
},
186
{
187
"format": "flv",
188
"description": "高清 1080P",
189
"quality": 80
190
},
191
{
192
"format": "flv720",
193
"description": "高清 720P",
194
"quality": 64
195
},
196
{
197
"format": "flv480",
198
"description": "清晰 480P",
199
"quality": 32
200
},
201
{
202
"format": "flv360",
203
"description": "流畅 360P",
204
"quality": 16
205
}
206
],
207
"from": "local",
208
"video_codecid": 7,
209
"accept_description": [
210
"高清 1080P60",
211
"高清 720P60",
212
"高清 1080P",
213
"高清 720P",
214
"清晰 480P",
215
"流畅 360P"
216
],
217
"status": 0
218
},
219
"message": "success"
220
}
221
```
222
223
224
225
## 视频的获取
226
227
将`data`.`durl`.`[1-n]`.`url`或`data`.`durl`.`[1-n]`.`backup_url`.`[0]`中的内容作为url进行GET操作, 如果有多个视频, 需要手动合并处理
228
229
需要验证Header中`referer`在 `http://www.bilibili.com`或`https://www.bilibili.com`域名下
230
231
**无referer或错误的情况会返回403 Forbidden**故无法获取
232
233
**以上述视频url为例:**
234
235
wget --referer "http://www.bilibili.com" "https://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3cbv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=b271bf493bff32ffe62969582c8d18b4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=1,2&logo=40000000" -O video.flv
236
237
回复正文将返回一个flv文件的数据
@@ -53,27 +53,27 @@
53
53
54
54
| 字段 | 类型 | 内容 | 备注 |
55
55
| ------------------ | ------ | ------------------------ | ---------------------------------------- |
56
| from | str | local | 作用尚不明确 |
57
| result | str | suee | 作用尚不明确 |
58
| message | str | 空 | 作用尚不明确 |
56
| from | str | local | **作用尚不明确** |
57
| result | str | suee | **作用尚不明确** |
58
| message | str | 空 | **作用尚不明确** |
59
59
| quality | num | 视频分辨率代码 | **值含义见上表** |
60
60
| format | str | 视频格式 | |
61
61
| timelength | num | 视频长度 | 单位为毫秒<br />不同分辨率可能有略微差异 |
62
62
| accept_format | str | 视频支持的分辨率的格式 | |
63
63
| accept_description | arrary | 视频支持的分辨率列表 | |
64
64
| accept_quality | arrary | 视频支持的分辨率代码列表 | **值含义见上表** |
65
| video_codecid | num | ??? | 作用尚不明确 |
66
| seek_param | str | start | 作用尚不明确 |
67
| seek_type | str | offset | 作用尚不明确 |
68
| durl | arrary | 视频流地址信息 | |
65
| video_codecid | num | ??? | **作用尚不明确** |
66
| seek_param | str | start | **作用尚不明确** |
67
| seek_type | str | offset | **作用尚不明确** |
68
| durl | arrary | 视频分段 | |
69
69
70
70
`data`中的`accept_description`数组:
71
71
72
| 项 | 类型 | 内容 | 备注 |
73
| ---- | ---- | ----------- | ---- |
74
| 0 | str | 分辨率1 | |
75
| n | str | 分辨率(n+1) | |
76
| …… | str | …… | …… |
72
| 项 | 类型 | 内容 | 备注 |
73
| ---- | ---- | --------------- | ---- |
74
| 0 | str | 分辨率名称1 | |
75
| n | str | 分辨率名称(n+1) | |
76
| …… | str | …… | …… |
77
77
78
78
`data`中的`accept_quality`数组:
79
79
@@ -91,7 +91,7 @@
91
91
| n | obj | 视频分段(n+1)信息 | |
92
92
| …… | obj | …… | |
93
93
94
`data`中的`durl`数组中的对象:
94
`durl`数组中的对象:
95
95
96
96
| 字段 | 类型 | 内容 | 备注 |
97
97
| ---------- | ------ | ------------ | ---------------------------------- |
@@ -103,7 +103,7 @@
103
103
| url | str | 视频流url | **重要**<br />链接有效时间为120min |
104
104
| backup_url | arrary | 备用视频流 | |
105
105
106
`data`中的`durl`数组中的对象中的`backup_url`数组:
106
`durl`数组中的对象中的`backup_url`数组:
107
107
108
108
| 项 | 类型 | 内容 | 备注 |
109
109
| ---- | ---- | ------------- | ---------------- |