返回提交历史
Modified
.gitignore
+1
-0
Added
broadcast/general.md
+167
-0
Added
broadcast/video_room.md
+152
-0
Modified
user/space.md
+249
-0
XFEstudio/bilibili-API-collect
添加视频实时广播相关
f18eeab
代码差异
4 个文件
+569
-0
@@ -5,3 +5,4 @@ live/info_flow.md
5
5
bangumi/info.md
6
6
bangumi/ststus_number.md
7
7
live/live_manage.md
8
danmaku/action.md
@@ -0,0 +1,167 @@
1
# 全站广播
2
3
## 获取广播服务器地址
4
5
> http://api.bilibili.com/x/web-interface/broadcast/servers
6
7
*方式:GET*
8
9
**参数:**
10
11
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
12
| -------- | ---- | -------- | ------ | --------------------------------- |
13
| platform | url | 平台选择 | 必要 | 为web时输出域名<br />其他时输出ip |
14
15
**json回复:**
16
17
根对象:
18
19
| 字段 | 类型 | 内容 | 备注 |
20
| ------- | ---- | -------- | --------------------------- |
21
| code | num | 返回值 | 0:成功<br />-400:请求错误 |
22
| message | str | 错误信息 | 默认为0 |
23
| ttl | num | 1 | 作用尚不明确 |
24
| data | obj | 信息本体 | |
25
26
`data`对象:
27
28
| 字段 | 类型 | 内容 | 备注 |
29
| ------------- | ------ | ------------------ | ---- |
30
| domain | str | 广播服务器url | |
31
| tcp_port | num | tcp端口 | |
32
| ws_port | num | websocket端口 | |
33
| wss_port | num | websocket ssl端口 | |
34
| heartbeat | num | 最大心跳包间隔时间 | |
35
| nodes | arrary | 服务节点地址列表 | |
36
| backoff | obj | ??? | |
37
| heartbeat_max | num | ??? | |
38
39
`data`中的`nodes`数组:
40
41
| 项 | 类型 | 内容 | 备注 |
42
| ---- | ---- | ------------- | ---- |
43
| 0 | str | 服务节点1 | |
44
| n | str | 服务节点(n+1) | |
45
| …… | str | …… | |
46
47
`data`中的`backoff`对象:
48
49
| 字段 | 类型 | 内容 | 备注 |
50
| ---------- | ---- | ------ | ---- |
51
| max_delay | num | ??? | |
52
| base_delay | num | ??? | |
53
| factor | num | ??? | |
54
| jitter | num | ??? | |
55
56
示例:
57
58
当`platform`=`web`时,不显示节点ip
59
60
http://api.bilibili.com/x/web-interface/broadcast/servers?platform=web
61
62
```json
63
{
64
"code": 0,
65
"message": "0",
66
"ttl": 1,
67
"data": {
68
"domain": "broadcast.chat.bilibili.com",
69
"tcp_port": 7821,
70
"ws_port": 7822,
71
"wss_port": 7823,
72
"heartbeat": 30,
73
"nodes": ["broadcast.chat.bilibili.com"],
74
"backoff": {
75
"max_delay": 300,
76
"base_delay": 3,
77
"factor": 1.8,
78
"jitter": 0.3
79
},
80
"heartbeat_max": 3
81
}
82
}
83
```
84
85
当`platform`=其他时,显示节点ip
86
87
http://api.bilibili.com/x/web-interface/broadcast/servers?platform=1
88
89
```json
90
{
91
"code": 0,
92
"message": "0",
93
"ttl": 1,
94
"data": {
95
"domain": "broadcast.chat.bilibili.com",
96
"tcp_port": 7821,
97
"ws_port": 7822,
98
"wss_port": 7823,
99
"heartbeat": 30,
100
"nodes": ["134.175.207.130", "120.92.150.90", "120.92.150.212", "192.144.173.136", "154.8.217.108"],
101
"backoff": {
102
"max_delay": 300,
103
"base_delay": 3,
104
"factor": 1.8,
105
"jitter": 0.3
106
},
107
"heartbeat_max": 3
108
}
109
}
110
```
111
112
113
114
## 服务器数据包
115
116
连接服务器分为三种方式,分别是ws wss tcp,数据包分为上行和下行
117
118
单个数据包分为头部和正文
119
120
其中上行的有认证包 心跳包,下行的有认证包回复 心跳包回复 普通包
121
122
建立连接后超过30s内未发送认证包,或握手后30s内未发送心跳包,或发送了错误的认证包,都会被强制断开连接
123
124
操作流程:
125
126
1.发送认证包,等待接收认证回复
127
128
2.确认握手成功后,每30s内发送心跳包,并立即接收心跳包回复
129
130
3.空闲时间接收普通包
131
132
### 数据包结构
133
134
头部通用于上行和下行数据包
135
136
头部格式:
137
138
| 偏移量 | 长度(字节) | 类型 | 含义 |
139
| ------ | ------------ | ------ | ---------------------------------------------------- |
140
| 0x00 | 4 | uint32 | 封包总大小(头部大小+正文大小) |
141
| 0x04 | 2 | uint16 | 头部大小(一般为0x0012,18字节) |
142
| 0x06 | 2 | uint16 | 协议版本,可取常数1 |
143
| 0x08 | 4 | uint32 | 操作码(包类型)<br />**见下表** |
144
| 0x0C | 4 | uint32 | sequence(请求次数),可取常数1<br />对于普通包恒为0 |
145
| 0x10 | 2 | uint16 | 保留,一般为0 |
146
147
操作码:
148
149
| 代码 | 含义 |
150
| ---------- | ---------- |
151
| 0x00000002 | 心跳包 |
152
| 0x00000003 | 心跳包回复 |
153
| 0x000003E8 | 普通包 |
154
| 0x00000007 | 认证包 |
155
| 0x00000008 | 认证包回复 |
156
157
**示例:**
158
159
以下为一个认证包示例,正文为文本`test`
160
161
```
162
00000000 00 00 00 16 00 12 00 01 00 00 00 07 00 00 00 01 |................|
163
00000010 00 00 74 65 73 74 |..test|
164
```
165
166
167
@@ -0,0 +1,152 @@
1
# 视频实时信息
2
3
## 认证包(上行)
4
5
**正文内容json:**
6
7
根对象:
8
9
| 字段 | 类型 | 内容 | 备注 |
10
| -------- | ------ | -------- | ------------------------------ |
11
| room_id | str | 目标视频 | `video://{视频avID}/{视频CID}` |
12
| platform | str | 平台标识 | 默认为`web` |
13
| accepts | arrary | 操作标识 | |
14
15
`arrary`数组:
16
17
| 项 | 类型 | 内容 | 备注 |
18
| ---- | ---- | ---- | ---- |
19
| 0 | num | 1000 | |
20
21
**示例:**
22
23
发送视频`av706`(1P的CID为` 3724723 `)的认证包
24
25
```
26
00000000 00 00 00 55 00 12 00 01 00 00 00 07 00 00 00 01 |...U............|
27
00000010 00 00 7b 22 72 6f 6f 6d 5f 69 64 22 3a 22 76 69 |..{"room_id":"vi|
28
00000020 64 65 6f 3a 2f 2f 37 30 36 2f 33 37 32 34 37 32 |deo://706/372472|
29
00000030 33 22 2c 22 70 6c 61 74 66 72 6f 6d 22 3a 22 77 |3","platfrom":"w|
30
00000040 65 62 22 2c 22 61 63 63 65 70 74 73 22 3a 5b 31 |eb","accepts":[1|
31
00000050 30 30 30 5d 7d |000]}|
32
```
33
34
35
36
## 认证包回复(下行)
37
38
**正文内容json:**
39
40
根对象:
41
42
| 字段 | 类型 | 内容 | 备注 |
43
| ------- | ---- | -------- | -------- |
44
| code | num | 返回值 | 0:成功 |
45
| message | str | 错误信息 | 默认为OK |
46
| version | num | 版本号 | |
47
48
示例:
49
50
```
51
00000000 00 00 00 37 00 12 00 01 00 00 00 08 00 00 00 01 |...7............|
52
00000010 00 00 7b 22 63 6f 64 65 22 3a 30 2c 22 6d 65 73 |..{"code":0,"mes|
53
00000020 73 61 67 65 22 3a 22 4f 4b 22 2c 22 76 65 72 73 |sage":"OK","vers|
54
00000030 69 6f 6e 22 3a 31 7d |ion":1}|
55
```
56
57
58
59
## 心跳包(上行)
60
61
正文可为任意内容或为空
62
63
**示例:**
64
65
正文为空的示例
66
67
```
68
00000000 00 00 00 12 00 12 00 01 00 00 00 02 00 00 00 01 |................|
69
00000010 00 00 |..|
70
```
71
72
正文为`[object Object]`的示例
73
74
```
75
00000000 00 00 00 21 00 12 00 01 00 00 00 02 00 00 00 01 |...!............|
76
00000010 00 00 5b 6f 62 6a 65 63 74 20 4f 62 6a 65 63 74 |..[object Object|
77
00000020 5d |]|
78
```
79
80
81
82
## 心跳包回复(实时观看数)(下行)
83
84
**正文内容json:**
85
86
根对象:
87
88
| 字段 | 类型 | 内容 | 备注 |
89
| ------- | ---- | -------- | -------- |
90
| code | num | 返回值 | 0:成功 |
91
| message | str | 错误信息 | 默认为OK |
92
| data | obj | 信息本体 | |
93
94
`data`对象:
95
96
| 字段 | 类型 | 内容 | 备注 |
97
| ---- | ---- | ---------------- | ---- |
98
| room | obj | 视频实时观看信息 | |
99
100
`data`中的`room`对象:
101
102
| 字段 | 类型 | 内容 | 备注 |
103
| ------- | ---- | ------------ | ------------------------------ |
104
| online | num | 实时观看人数 | |
105
| room_id | str | 目标视频 | `video://{视频avID}/{视频CID}` |
106
107
**示例:**
108
109
当前视频`av706`实时观看人数为13
110
111
```
112
00000000 00 00 00 68 00 12 00 01 00 00 00 03 00 00 00 01 |...h............|
113
00000010 00 00 7b 22 63 6f 64 65 22 3a 30 2c 22 6d 65 73 |..{"code":0,"mes|
114
00000020 73 61 67 65 22 3a 22 30 22 2c 22 64 61 74 61 22 |sage":"0","data"|
115
00000030 3a 7b 22 72 6f 6f 6d 22 3a 7b 22 6f 6e 6c 69 6e |:{"room":{"onlin|
116
00000040 65 22 3a 31 33 2c 22 72 6f 6f 6d 5f 69 64 22 3a |e":13,"room_id":|
117
00000050 22 76 69 64 65 6f 3a 2f 2f 37 30 36 2f 33 37 32 |"video://706/372|
118
00000060 34 37 32 33 22 7d 7d 7d |4723"}}}|
119
```
120
121
122
123
## 普通包(实时弹幕)(下行)
124
125
**正文内容json:**
126
127
根数组:
128
129
| 项 | 类型 | 内容 | 备注 |
130
| ---- | ---- | ------------ | ------------------------------------------------------------ |
131
| 0 | str | 弹幕属性信息 | 详见[「弹幕」中的属性 p](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku.md) |
132
| 1 | str | 弹幕内容 | |
133
134
**示例:**
135
136
弹幕属性为`0.25,1,25,16777215,1588433046,1588431486568150,0,33ad5d91,32134068443807747`
137
138
弹幕内容为`此生无悔入东方,来世愿生幻想乡`
139
140
```
141
00000000 00 00 00 91 00 12 00 01 00 00 03 e8 00 00 00 00 |................|
142
00000010 00 00 5b 22 30 2e 32 35 2c 31 2c 32 35 2c 31 36 |..["0.25,1,25,16|
143
00000020 37 37 37 32 31 35 2c 31 35 38 38 34 33 33 30 34 |777215,158843304|
144
00000030 36 2c 31 35 38 38 34 33 31 34 38 36 35 36 38 31 |6,15884314865681|
145
00000040 35 30 2c 30 2c 33 33 61 64 35 64 39 31 2c 33 32 |50,0,33ad5d91,32|
146
00000050 31 33 34 30 36 38 34 34 33 38 30 37 37 34 37 22 |134068443807747"|
147
00000060 2c 22 e6 ad a4 e7 94 9f e6 97 a0 e6 82 94 e5 85 |,"此 生 无 悔|
148
00000070 a5 e4 b8 9c e6 96 b9 ef bc 8c e6 9d a5 e4 b8 96 |入 东 方 ,来 世 |
149
00000080 e6 84 bf e7 94 9f e5 b9 bb e6 83 b3 e4 b9 a1 22 |愿 生 幻 想 乡"|
150
00000090 5d |]|
151
```
152
@@ -1729,6 +1729,255 @@ http://api.bilibili.com/x/space/acc/tags?mid=53456
1729
1729
}
1730
1730
```
1731
1731
1732
### 查询用户创建的视频收藏夹列表
1733
1734
> http://api.bilibili.com/x/v3/fav/folder/created/list-all
1735
1736
*方式:GET*
1737
1738
查看私有收藏夹时需要登录(SESSDATA)
1739
1740
**参数:**
1741
1742
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
1743
| ------ | ---- | ----------- | ------ | ---- |
1744
| up_mid | url | 目标用户UID | 必要 | |
1745
1746
**json回复:**
1747
1748
根对象:
1749
1750
| 字段 | 类型 | 内容 | 备注 |
1751
| ------- | ----------------------------- | -------- | --------------------------- |
1752
| code | num | 返回值 | 0:成功<br />-400:请求错误 |
1753
| message | str | 错误信息 | 默认为0 |
1754
| ttl | num | 1 | 作用尚不明确 |
1755
| data | 隐藏时:null<br />公开时:obj | 信息本体 | |
1756
1757
`data`对象:
1758
1759
| 字段 | 类型 | 内容 | 备注 |
1760
| ----- | ---------------------------------------- | -------------- | ---- |
1761
| count | num | 创建的收藏夹数 | |
1762
| list | 无收藏夹时:null<br />有收藏夹时:arrary | 收藏夹列表 | |
1763
1764
`data`中的`list`数组:
1765
1766
| 项 | 类型 | 内容 | 备注 |
1767
| ---- | ---- | ----------- | --------------------- |
1768
| 0 | obj | 收藏夹1 | |
1769
| n | obj | 收藏夹(n+1) | 项数取决于`count`的值 |
1770
| …… | obj | …… | |
1771
1772
`data`中的`list`数组中的对象:
1773
1774
| 字段 | 类型 | 内容 | 备注 |
1775
| ----------- | ---- | ---------------- | ----------------------------------------- |
1776
| id | num | 收藏夹mlID | |
1777
| fid | num | 原始收藏夹ID | 去除两位UID尾号 |
1778
| mid | num | 创建用户UID | |
1779
| attr | num | 收藏夹属性 | 转换成8-bit二进制处理<br />详细说明见下表 |
1780
| title | str | 收藏夹标题 | |
1781
| fav_state | num | 0 | 作用尚不明确 |
1782
| media_count | num | 收藏夹总计视频数 | |
1783
1784
`attr`属性二进制值表:
1785
1786
| 其他有待补充... | 1:默认收藏夹 | 0:公开性 |
1787
| --------------- | -------------------------------- | -------------------- |
1788
| | 0:默认收藏夹<br />1:其他收藏夹 | 0:公开<br />1:私有 |
1789
1790
**示例:**
1791
1792
查询用户`UID=7792521`的收藏夹列表
1793
1794
http://api.bilibili.com/x/v3/fav/folder/created/list-all?up_mid=7792521
1795
1796
```json
1797
{
1798
"code": 0,
1799
"message": "0",
1800
"ttl": 1,
1801
"data": {
1802
"count": 5,
1803
"list": [{
1804
"id": 44233921,
1805
"fid": 442339,
1806
"mid": 7792521,
1807
"attr": 0,
1808
"title": "默认收藏夹",
1809
"fav_state": 0,
1810
"media_count": 85
1811
}, {
1812
"id": 936347621,
1813
"fid": 9363476,
1814
"mid": 7792521,
1815
"attr": 22,
1816
"title": "放假君的鬼畜私房歌",
1817
"fav_state": 0,
1818
"media_count": 2
1819
}, {
1820
"id": 845218621,
1821
"fid": 8452186,
1822
"mid": 7792521,
1823
"attr": 22,
1824
"title": "♪一言不合就开唱♪",
1825
"fav_state": 0,
1826
"media_count": 4
1827
}, {
1828
"id": 844998121,
1829
"fid": 8449981,
1830
"mid": 7792521,
1831
"attr": 22,
1832
"title": "个人作品精选",
1833
"fav_state": 0,
1834
"media_count": 25
1835
}, {
1836
"id": 381779121,
1837
"fid": 3817791,
1838
"mid": 7792521,
1839
"attr": 22,
1840
"title": "鬼畜小课堂",
1841
"fav_state": 0,
1842
"media_count": 25
1843
}]
1844
}
1845
}
1846
```
1847
1848
1849
1850
### 查询用户收藏的收藏夹
1851
1852
> http://api.bilibili.com/x/v3/fav/folder/collected/list
1853
1854
*方式:GET*
1855
1856
**参数:**
1857
1858
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
1859
| ------ | ---- | ----------- | ------ | ---- |
1860
| ps | url | 每页项数 | 必要 | |
1861
| pn | url | 页码 | 必要 | |
1862
| up_mid | url | 目标用户UID | 必要 | |
1863
1864
**json回复:**
1865
1866
根对象:
1867
1868
| 字段 | 类型 | 内容 | 备注 |
1869
| ------- | ----------------------------- | -------- | ------------------------------------------------------------ |
1870
| code | num | 返回值 | 0:成功<br />-101:账号未登录<br />-111:csrf校验失败<br />40022:签名过长 |
1871
| message | str | 错误信息 | 默认为0 |
1872
| ttl | num | 1 | 作用尚不明确 |
1873
| data | 隐藏时:null<br />公开时:obj | 信息本体 | |
1874
1875
`data`对象:
1876
1877
| 字段 | 类型 | 内容 | 备注 |
1878
| ----- | ---------------------------------------- | -------------- | ---- |
1879
| count | num | 创建的收藏夹数 | |
1880
| list | 无收藏夹时:null<br />有收藏夹时:arrary | 收藏夹列表 | |
1881
1882
`data`中的`list`数组:
1883
1884
| 项 | 类型 | 内容 | 备注 |
1885
| ---- | ---- | ----------- | --------------------- |
1886
| 0 | obj | 收藏夹1 | |
1887
| n | obj | 收藏夹(n+1) | 项数取决于`count`的值 |
1888
| …… | obj | …… | |
1889
1890
`data`中的`list`数组中的对象:
1891
1892
| 字段 | 类型 | 内容 | 备注 |
1893
| ----------- | ---- | ------------------ | ----------------------------------------- |
1894
| id | num | 收藏夹mlID | |
1895
| fid | num | 原始收藏夹ID | 去除两位UID尾号 |
1896
| mid | num | 创建用户UID | |
1897
| attr | num | 收藏夹属性 | 转换成8-bit二进制处理<br />详细说明见下表 |
1898
| title | str | 收藏夹标题 | |
1899
| cover | str | 收藏夹封面图片url | |
1900
| upper | obj | 收藏夹创建用户信息 | |
1901
| cover_type | num | 2 | 作用尚不明确 |
1902
| intro | str | 空 | 作用尚不明确 |
1903
| ctime | num | 创建时间 | 时间戳 |
1904
| mtime | num | 审核时间 | 时间戳 |
1905
| state | num | 0 | 作用尚不明确 |
1906
| fav_state | num | 0 | 作用尚不明确 |
1907
| media_count | num | 收藏夹总计视频数 | |
1908
1909
`attr`属性二进制值表:
1910
1911
| 其他有待补充... | 1:默认收藏夹 | 0:公开性 |
1912
| --------------- | -------------------------------- | -------------------- |
1913
| | 0:默认收藏夹<br />1:其他收藏夹 | 0:公开<br />1:私有 |
1914
1915
`data`中的`list`数组中的对象中的`upper`对象:
1916
1917
| 字段 | 类型 | 内容 | 备注 |
1918
| ---- | ---- | ---------- | ------------ |
1919
| mid | num | 创建人UID | |
1920
| name | str | 创建人昵称 | |
1921
| face | str | 空 | 作用尚不明确 |
1922
1923
**示例:**
1924
1925
查询用户`UID=293793435`的收藏夹收藏列表
1926
1927
http://api.bilibili.com/x/v3/fav/folder/collected/list?pn=1&ps=20&up_mid=293793435
1928
1929
```json
1930
{
1931
"code": 0,
1932
"message": "0",
1933
"ttl": 1,
1934
"data": {
1935
"count": 2,
1936
"list": [{
1937
"id": 496307088,
1938
"fid": 4963070,
1939
"mid": 412466388,
1940
"attr": 22,
1941
"title": "入站必刷",
1942
"cover": "http://i0.hdslb.com/bfs/archive/baae2b4050363c0ab45465b7cf696b8304fdaca8.jpg",
1943
"upper": {
1944
"mid": 412466388,
1945
"name": "热门菌",
1946
"face": ""
1947
},
1948
"cover_type": 2,
1949
"intro": "",
1950
"ctime": 1563394571,
1951
"mtime": 1563394571,
1952
"state": 0,
1953
"fav_state": 0,
1954
"media_count": 55
1955
}, {
1956
"id": 381779121,
1957
"fid": 3817791,
1958
"mid": 7792521,
1959
"attr": 22,
1960
"title": "鬼畜小课堂",
1961
"cover": "http://i2.hdslb.com/bfs/archive/09a668cfdb38fb3a85f905c10f48a2947e36a695.jpg",
1962
"upper": {
1963
"mid": 7792521,
1964
"name": "还有一天就放假了",
1965
"face": ""
1966
},
1967
"cover_type": 2,
1968
"intro": "",
1969
"ctime": 1553700224,
1970
"mtime": 1557291666,
1971
"state": 0,
1972
"fav_state": 0,
1973
"media_count": 25
1974
}]
1975
}
1976
}
1977
```
1978
1979
1980
1732
1981
1733
1982
1734
1983
## 设置相关