XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/bilibili-API-collect

添加获取课程视频流url

ce5bab1
社会易姐QwQ <45892418+SocialSisterYi@users.noreply.github.com>
提交于

代码差异

4 个文件 +254 -17
Modified README.md +1 -1
@@ -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)×
Modified cheese/info.md +2 -2
@@ -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`** |
Added cheese/videostream_url.md +237 -0
@@ -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文件的数据
Modified video/videostream_url.md +14 -14
@@ -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 | ---- | ---- | ------------- | ---------------- |