From ce5bab10f926f86a6d5875d5ac495223e85ba56f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=A4=BE=E4=BC=9A=E6=98=93=E5=A7=90QwQ?=
<45892418+SocialSisterYi@users.noreply.github.com>
Date: Mon, 8 Jun 2020 13:11:47 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=8E=B7=E5=8F=96=E8=AF=BE?=
=?UTF-8?q?=E7=A8=8B=E8=A7=86=E9=A2=91=E6=B5=81url?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 2 +-
cheese/info.md | 4 +-
cheese/videostream_url.md | 237 ++++++++++++++++++++++++++++++++++++++
video/videostream_url.md | 28 ++---
4 files changed, 254 insertions(+), 17 deletions(-)
create mode 100644 cheese/videostream_url.md
diff --git a/README.md b/README.md
index ebf1082..7700f64 100644
--- a/README.md
+++ b/README.md
@@ -116,7 +116,7 @@
- 已购课程
- 分区推荐列表
- 操作
- - 播放&下载地址(视频流)
+ - [播放&下载地址(视频流)](cheese/videostream_url.md)√
- [直播](live)
- [直播间基本信息](live/info.md)x
- [直播分区](live/live_area.md)×
diff --git a/cheese/info.md b/cheese/info.md
index 7018e13..a4bafcd 100644
--- a/cheese/info.md
+++ b/cheese/info.md
@@ -129,7 +129,7 @@
| page | num | 1 | |
| play | num | 课程分集播放量 | |
| release_date | num | 课程分集发布时间 | 时间戳 |
-| status | num | 分集属性 | 1:可免费试看
2:需要付费观看 |
+| status | num | 分集权限属性 | 1:可观看
2:不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
false:未观看
true:已观看 |
| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** |
@@ -490,7 +490,7 @@ http://api.bilibili.com/pugv/view/web/season?season_id=61
| page | num | 1 | |
| play | num | 课程分集播放量 | |
| release_date | num | 课程分集发布时间 | 时间戳 |
-| status | num | 分集属性 | 1:可免费试看
2:需要付费观看 |
+| status | num | 分集权限属性 | 1:可观看
2:不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
false:未观看
true:已观看 |
| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** |
diff --git a/cheese/videostream_url.md b/cheese/videostream_url.md
new file mode 100644
index 0000000..2b3bb75
--- /dev/null
+++ b/cheese/videostream_url.md
@@ -0,0 +1,237 @@
+# 课程视频流URL
+
+## 获取课程视频流URL
+
+> http://api.bilibili.com/pugv/player/web/playurl
+
+*方式:GET*
+
+本接口为课程视频专用,故与普通视频不互通
+
+获取非试看课程视频及720P以上清晰度视频时需要登录(SESSDATA)购买的课程也需要使用登录进行鉴权
+
+高帧率(码率)视频需要带有大会员的账号token(SESSDATA)
+
+获取的url有效时间为120min,超时失效需要重新获取
+
+**部分视频**会有**分段**,需要特别注意
+
+**参数:**
+
+| 参数名 | 类型 | 内容 | 必要性 | 备注 |
+| ------ | ---- | -------------- | ------ | ------------------------------------------------------------ |
+| aid | url | 课程avID | 必要 | |
+| ep_id | url | 课程epID | 必要 | |
+| cid | url | 视频CID | 必要 | |
+| qn | url | 视频清晰度选择 | 非必要 | 未登录默认32(480P)
登录默认64(720P)
**值含义见下表** |
+
+分辨率代码:
+
+| 值 | 含义 |
+| ---- | ---------------------- |
+| 16 | 360P 流畅 |
+| 32 | 480P 清晰 |
+| 64 | 720P 高清(登录) |
+| 74 | 720P60 高清(大会员) |
+| 80 | 1080P 高清(登录) |
+| 112 | 1080P+ 高清(大会员) |
+| 116 | 1080P60 高清(大会员) |
+| 120 | 4K 超清(大会员) |
+
+**json回复:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------- | ---- | -------- | ------------------------------------------------------------ |
+| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频
-403:权限不足(未购买) |
+| message | str | 错误信息 | 默认为success |
+| data | obj | 数据本体 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ------------------ | ------ | ---------------------- | ---------------------------------------- |
+| accept_format | str | 视频支持的分辨率的格式 | |
+| code | num | 0 | |
+| durl | arrary | 视频分段 | |
+| seek_param | str | start | |
+| no_rexcode | num | 0 | |
+| format | str | 视频格式 | |
+| fnval | num | 0 | |
+| video_project | bool | true | |
+| fnver | num | 0 | |
+| message | str | 空 | |
+| type | str | 视频格式 | |
+| accept_quality | arrary | 视频支持的分辨率列表 | |
+| quality | num | 视频分辨率代码 | **值含义见上表** |
+| timelength | num | 视频长度 | 单位为毫秒
不同分辨率可能有略微差异 |
+| result | str | suee | **作用尚不明确** |
+| seek_type | str | offset | **作用尚不明确** |
+| has_paid | bool | false | **作用尚不明确** |
+| supportFormats | arrary | 视频分辨率详细列表 | |
+| from | str | local | **作用尚不明确** |
+| video_codecid | num | ??? | **作用尚不明确** |
+| accept_description | arrary | 视频支持的分辨率列表 | |
+| status | num | 0 | **作用尚不明确** |
+
+`data`中的`durl`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | ----------------- | ---- |
+| 0 | obj | 视频分段1信息 | |
+| n | obj | 视频分段(n+1)信息 | |
+| …… | obj | …… | |
+
+`durl`数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---------- | ------ | ------------ | ---------------------------------- |
+| size | num | 视频大小 | 单位为Byte |
+| ahead | str | 空 | 作用尚不明确 |
+| length | num | 视频长度 | 单位为毫秒 |
+| vhead | str | 空 | 作用尚不明确 |
+| backup_url | arrary | 备用视频流 | |
+| url | str | 视频流url | **重要**
链接有效时间为120min |
+| order | num | 视频分段序号 | 某些视频会分为多个片段 |
+
+`durl`数组中的对象中的`backup_url`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | ------------- | ---------------- |
+| 0 | str | 备用视频流url | 有效时间为120min |
+
+`data`中的`supportFormats`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | ------------------- | ---- |
+| 0 | obj | 分辨率详细信息1 | |
+| n | obj | 分辨率详细信息(n+1) | |
+| …… | obj | …… | …… |
+
+`supportFormats`数组中的对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ----------- | ---- | ---------- | ---- |
+| format | str | 分辨率名称 | |
+| description | atr | 分辨率备注 | |
+| quality | num | 分辨率代码 | |
+
+`data`中的`accept_description`数组:
+
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | --------------- | ---- |
+| 0 | str | 分辨率名称1 | |
+| n | str | 分辨率名称(n+1) | |
+| …… | str | …… | …… |
+
+**示例:**
+
+获取课程`ep790`(CID=`132105993`,avID=`76973173`)的视频流url,清晰度为1080P60
+
+http://api.bilibili.com/pugv/player/web/playurl?ep_id=790&avid=76973173&cid=132105993&qn=116
+
+```json
+{
+ "code": 0,
+ "data": {
+ "accept_format": "flv_p60,flv720_p60,flv,flv720,flv480,flv360",
+ "code": 0,
+ "durl": [
+ {
+ "size": 1105854161,
+ "ahead": "",
+ "length": 2222204,
+ "vhead": "",
+ "backup_url": [
+ "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"
+ ],
+ "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",
+ "order": 1,
+ "md5": ""
+ }
+ ],
+ "seek_param": "start",
+ "no_rexcode": 0,
+ "format": "flv_p60",
+ "fnval": 0,
+ "video_project": true,
+ "fnver": 0,
+ "message": "",
+ "type": "FLV",
+ "accept_quality": [
+ 116,
+ 74,
+ 80,
+ 64,
+ 32,
+ 16
+ ],
+ "quality": 116,
+ "timelength": 2222204,
+ "result": "suee",
+ "seek_type": "offset",
+ "has_paid": false,
+ "supportFormats": [
+ {
+ "format": "flv_p60",
+ "description": "高清 1080P60",
+ "quality": 116
+ },
+ {
+ "format": "flv720_p60",
+ "description": "高清 720P60",
+ "quality": 74
+ },
+ {
+ "format": "flv",
+ "description": "高清 1080P",
+ "quality": 80
+ },
+ {
+ "format": "flv720",
+ "description": "高清 720P",
+ "quality": 64
+ },
+ {
+ "format": "flv480",
+ "description": "清晰 480P",
+ "quality": 32
+ },
+ {
+ "format": "flv360",
+ "description": "流畅 360P",
+ "quality": 16
+ }
+ ],
+ "from": "local",
+ "video_codecid": 7,
+ "accept_description": [
+ "高清 1080P60",
+ "高清 720P60",
+ "高清 1080P",
+ "高清 720P",
+ "清晰 480P",
+ "流畅 360P"
+ ],
+ "status": 0
+ },
+ "message": "success"
+}
+```
+
+
+
+## 视频的获取
+
+将`data`.`durl`.`[1-n]`.`url`或`data`.`durl`.`[1-n]`.`backup_url`.`[0]`中的内容作为url进行GET操作, 如果有多个视频, 需要手动合并处理
+
+需要验证Header中`referer`在 `http://www.bilibili.com`或`https://www.bilibili.com`域名下
+
+**无referer或错误的情况会返回403 Forbidden**故无法获取
+
+**以上述视频url为例:**
+
+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
+
+回复正文将返回一个flv文件的数据
\ No newline at end of file
diff --git a/video/videostream_url.md b/video/videostream_url.md
index aa4f1e4..fe62cab 100644
--- a/video/videostream_url.md
+++ b/video/videostream_url.md
@@ -53,27 +53,27 @@
| 字段 | 类型 | 内容 | 备注 |
| ------------------ | ------ | ------------------------ | ---------------------------------------- |
-| from | str | local | 作用尚不明确 |
-| result | str | suee | 作用尚不明确 |
-| message | str | 空 | 作用尚不明确 |
+| from | str | local | **作用尚不明确** |
+| result | str | suee | **作用尚不明确** |
+| message | str | 空 | **作用尚不明确** |
| quality | num | 视频分辨率代码 | **值含义见上表** |
| format | str | 视频格式 | |
| timelength | num | 视频长度 | 单位为毫秒
不同分辨率可能有略微差异 |
| accept_format | str | 视频支持的分辨率的格式 | |
| accept_description | arrary | 视频支持的分辨率列表 | |
| accept_quality | arrary | 视频支持的分辨率代码列表 | **值含义见上表** |
-| video_codecid | num | ??? | 作用尚不明确 |
-| seek_param | str | start | 作用尚不明确 |
-| seek_type | str | offset | 作用尚不明确 |
-| durl | arrary | 视频流地址信息 | |
+| video_codecid | num | ??? | **作用尚不明确** |
+| seek_param | str | start | **作用尚不明确** |
+| seek_type | str | offset | **作用尚不明确** |
+| durl | arrary | 视频分段 | |
`data`中的`accept_description`数组:
-| 项 | 类型 | 内容 | 备注 |
-| ---- | ---- | ----------- | ---- |
-| 0 | str | 分辨率1 | |
-| n | str | 分辨率(n+1) | |
-| …… | str | …… | …… |
+| 项 | 类型 | 内容 | 备注 |
+| ---- | ---- | --------------- | ---- |
+| 0 | str | 分辨率名称1 | |
+| n | str | 分辨率名称(n+1) | |
+| …… | str | …… | …… |
`data`中的`accept_quality`数组:
@@ -91,7 +91,7 @@
| n | obj | 视频分段(n+1)信息 | |
| …… | obj | …… | |
-`data`中的`durl`数组中的对象:
+`durl`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ------ | ------------ | ---------------------------------- |
@@ -103,7 +103,7 @@
| url | str | 视频流url | **重要**
链接有效时间为120min |
| backup_url | arrary | 备用视频流 | |
-`data`中的`durl`数组中的对象中的`backup_url`数组:
+`durl`数组中的对象中的`backup_url`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---------------- |