返回提交历史
Modified
CONTRIBUTING.md
+51
-51
XFEstudio/bilibili-API-collect
Update CONTRIBUTING.md
392dc2b
代码差异
1 个文件
+51
-51
@@ -1,24 +1,24 @@
1
# bilibili-API-collect
1
# 贡献指南
2
2
3
3
欢迎来到 bilibili-API-collect 社区贡献指南,本文主要面向需要进行提交贡献文档内容的用户。
4
4
5
5
## 总则
6
6
7
[bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect) 项目(简称 BAC 或 b-a-c)是一个仅用于学习研究、社区开源、公益性质的 [B站(哔哩哔哩)](https://www.bilibili.com/) API(应用程序接口) 文档,使用 [CC-BY-NC 4.0 协议](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE) 开源,它将无差别收集整理相关的**主站业务接口**。
7
[bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect) 项目(简称 BAC 或 b-a-c)是一个仅用于学习研究、社区开源、公益性质的 [B 站(哔哩哔哩)](https://www.bilibili.com/)API(应用程序接口)文档,使用 [CC-BY-NC 4.0 协议](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE)开源,它将无差别收集整理相关的**主站业务接口**。
8
8
9
该项目使用 [MarkDown](https://zh.wikipedia.org/zh-cn/Markdown) 语法进行文档书写,按照业务类型及功能以 **路径** + **文件** 形式索引,任何用户都可通过 Pull Request 提供自己分析出的接口地址与使用说明。
9
该项目使用 [MarkDown](https://zh.wikipedia.org/zh-cn/Markdown) 语法进行文档书写,按照业务类型及功能以**路径**+**文件**形式索引,任何用户都可通过 Pull Request 提供自己分析出的接口地址与使用说明。
10
10
11
本项目收集的接口类型包括但不限于 REST API、gRPC、WebSocket,文档内统一优先使用安全套接字协议,如`https`、`securityRpc`、`wss`。
11
本项目收集的接口类型包括但不限于 REST API、gRPC、WebSocket,文档内统一优先使用安全套接字协议,如 `https`、`securityRpc`、`wss`。
12
12
13
## Issue与社群讨论
13
## Issue 与社群讨论
14
14
15
15
对文档内容存在**不理解**之处、以及发现文档内容有所**缺失**或**错误**,可直接提出,强烈建议以发 **Issue** 的形式参与用户反馈,并希望关于本项目的各种交流都是**公开进行**的,因为这样才可以保证关键信息的一致性。
16
16
17
17
由于本项目属于文档型项目,故不设置 Issue 模板,同时允许中英文标题,但提交 Issue 请遵守以下原则:
18
18
19
1. 标题言简意骇,说明欲提出的问题要点,如`如何通过xx接口获取yy`、`xx接口地址已失效`、`关于xx字段意义的探讨`、` 建议将xx加入yy分类`等标题;切勿使用表意含糊不清或索取性的标题,如`怎么解决风控`、`补充`、`搜索的接口是什么`、`好兄弟有没有投稿的接口`等标题
19
1. 标题言简意骇,说明欲提出的问题要点,如 `如何通过 xx 接口获取 yy `、`xx 接口地址已失效`、`关于 xx 字段意义的探讨`、`建议将 xx 加入 yy 分类` 等标题;切勿使用表意含糊不清或索取性的标题,如 `怎么解决风控`、`补充`、`搜索的接口是什么`、`好兄弟有没有投稿的接口` 等标题
20
20
2. Issue 正文应对问题进行尽可能详细的描述,展开并聚焦有关的信息,例如:“在前端页面某地址 / APP 某界面会访问某 API(标明地址),它的某参数与文档中不符(标明文档地址)”
21
3. 提出问题时注意 [提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md) 并且 [别像弱智一样提问](https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways)
21
3. 提出问题时注意[提问的智慧](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md)并且[别像弱智一样提问](https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways)
22
22
23
23
同时,您还可以通过加入社群的方式参与讨论
24
24
@@ -29,7 +29,7 @@
29
29
30
30
QQ 交流群为综合技术交流群(兼 Owner 的粉丝群),可交流探讨任何技术,包括但不限于 [BAC 项目](https://github.com/SocialSisterYi/bilibili-API-collect)
31
31
32
Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bilibili-API-collect) 的 Github Bot 接收,也可以进行项目相关的讨论,但不建议在此讨论交流其他内容(公开群)
32
Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bilibili-API-collect)的 Github Bot 接收,也可以进行项目相关的讨论,但不建议在此讨论交流其他内容(公开群)
33
33
34
34
:::
35
35
@@ -37,13 +37,13 @@ Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bi
37
37
38
38
群内讨论同样需要遵守**公开交流**的原则,以及群内会定期清理不活跃成员。
39
39
40
**QQ 交流群** 的加群问题答案可以去 [Owner 的主页](https://github.com/SocialSisterYi) Contact 部分找到,如果您填写“我不知道,从 Github 来的“那么管理员将有理由禁止您进群讨论!
40
**QQ 交流群**的加群问题答案可以去 [Owner 的主页](https://github.com/SocialSisterYi) Contact 部分找到,如果您填写“我不知道,从 Github 来的“那么管理员将有理由禁止您进群讨论!
41
41
42
42
:::
43
43
44
44
::: danger 🈲禁止
45
45
46
项目 Issue 及其相关社群中 **禁止** 询问讨论 风控解除、爬虫(采集)、破解、漏洞利用、买卖代码和账号 相关内容,抵制基于本项目进行的一切黑产行为!
46
项目 Issue 及其相关社群中**禁止**询问讨论 风控解除、爬虫(采集)、破解、漏洞利用、买卖代码和账号 相关内容,抵制基于本项目进行的一切黑产行为!
47
47
48
48
:::
49
49
@@ -51,7 +51,7 @@ Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bi
51
51
52
52
### 目录
53
53
54
文档目录以 **Markdown无序列表** 语法写在 [README.md](README.md) 中,使用缩进标识文档的层级,如`视频`下存在`基本信息`、`快照`、`推荐`等子分类,使用 **Markdown 复选框** 语法该标注文档是否编写完成
54
文档目录以 **Markdown 无序列表**语法写在 [README.md](README.md) 中,使用缩进标识文档的层级,如 `视频` 下存在 `基本信息`、`快照`、`推荐` 等子分类,使用 **Markdown 复选框**语法该标注文档是否编写完成
55
55
56
56
```markdown
57
57
- [x] 视频
@@ -62,17 +62,17 @@ Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bi
62
62
63
63
### 路径
64
64
65
路径层级应当与文档目录一致,以文件夹的形式存放在项目中的`/docs`路径下,命名统一使用英文,如`video`、`danmaku`、`comment`
65
路径层级应当与文档目录一致,以文件夹的形式存放在项目中的 `/docs` 路径下,命名统一使用英文,如 `video`、`danmaku`、`comment`
66
66
67
二级、三级路径应当存在二级三级目录,以`README.md`的形式
67
二级、三级路径应当存在二级三级目录,以 `README.md` 的形式
68
68
69
69
### 文件
70
70
71
各个子接口集整理为 md 文件,命名统一使用英文,如`info.md`、`action.md`、`list.md`
71
各个子接口集整理为 md 文件,命名统一使用英文,如 `info.md`、`action.md`、`list.md`
72
72
73
文档文件中用于存放相关的接口的说明,如`video/`下的`info.md`,存在`查询视频基本信息`、`查询视频简介`、`查询视频分P列表`等内容
73
文档文件中用于存放相关的接口的说明,如 `video/` 下的 `info.md`,存在 `查询视频基本信息`、`查询视频简介`、`查询视频分P列表` 等内容
74
74
75
## Markdown文档内容格式
75
## Markdown 文档内容格式
76
76
77
77
文档使用 [Vuepress](https://vuepress.vuejs.org/) 生成,可以使用 [Vuepress md 扩展语法](https://vuepress.vuejs.org/guide/markdown.html)编写
78
78
@@ -80,7 +80,7 @@ Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bi
80
80
81
81
### 头部
82
82
83
文档首行为 **一级标签** 格式标题
83
文档首行为**一级标签**格式标题
84
84
85
85
**文档头部不再需要手写索引**
86
86
@@ -88,15 +88,15 @@ Telegram 交流群主要用作 [BAC 项目](https://github.com/SocialSisterYi/bi
88
88
89
89
文档中可存在多个接口说明,应当遵守同一范式,依次排列在文档中
90
90
91
接口说明分为`标题`、`地址`、`说明`、`请求参数`、`响应正文`、`示例`这些部分
91
接口说明分为 `标题`、`地址`、`说明`、`请求参数`、`响应正文`、`示例` 这些部分
92
92
93
接口标题为 **二级以下** 的标签,接口地址使用 **引用** 语法,地址只保留 REST API 路径,不应携带 query 等内容
93
接口标题为**二级以下**的标签,接口地址使用**引用**语法,地址只保留 REST API 路径,不应携带 query 等内容
94
94
95
接口地址下方需要注明接口的请求方式,如`GET`、`POST`、`PUT`等,使用 **斜体** 语法
95
接口地址下方需要注明接口的请求方式,如 `GET`、`POST`、`PUT` 等,使用*斜体*语法
96
96
97
若接口存在认证或鉴权,需要在说明中注明,如`Cookie(SESSDATA)`、`APP`(认证是针对用户的,鉴权是针对接口使用的
97
若接口存在认证或鉴权,需要在说明中注明,如 `Cookie (SESSDATA)`、`APP`(认证是针对用户的,鉴权是针对接口使用的)
98
98
99
其他使用说明也可写在这里,如`限制游客访问的视频需要登录`
99
其他使用说明也可写在这里,如 `限制游客访问的视频需要登录`
100
100
101
101
eg:
102
102
@@ -107,14 +107,14 @@ eg:
107
107
108
108
*请求方式:GET*
109
109
110
认证方式:Cookie(SESSDATA)
110
认证方式:Cookie (SESSDATA)
111
111
112
112
限制游客访问的视频需要登录
113
113
```
114
114
115
**请求参数**应在**接口说明**的下方,应注明参数类型 url 参数或 正文参数(正文参数应注明 content-type,如`application/x-www-form-urlencoded`或`multipart/form-data`),使用 **加粗** 语法
115
**请求参数**应在**接口说明**的下方,应注明参数类型 url 参数或正文参数(正文参数应注明 content-type,如 `application/x-www-form-urlencoded` 或 `multipart/form-data`),使用**加粗**语法
116
116
117
对象的字段及其含义使用 **表格** 进行整理,表头统一为`参数名`、`类型`、`内容`、`必要性`、`备注`,类型为`num`、`str`、`bool`、`nums`、`strs`、`file`等,必要性为`必要`、`非必要`、`必要(可选)`等,表格内每个字段为一行
117
对象的字段及其含义使用**表格**进行整理,表头统一为 `参数名`、`类型`、`内容`、`必要性`、`备注`,类型为 `num`、`str`、`bool`、`nums`、`strs`、`file` 等,必要性为 `必要`、`非必要`、`必要 (可选)` 等,表格内每个字段为一行
118
118
119
119
eg:
120
120
@@ -123,19 +123,19 @@ eg:
123
123
| aid | num | 稿件 avid | 必要 (可选) | avid 与 bvid 任选 |
124
124
| bvid | str | 稿件 bvid | 必要 (可选) | avid 与 bvid 任选 |
125
125
126
**响应正文**应在**请求参数**的下方,接口响应的数据格式应标注,如`JSON回复`、`XML回复`、`Protobuf回复`,使用 **加粗** 语法
126
**响应正文**应在**请求参数**的下方,接口响应的数据格式应标注,如 `JSON 回复`、`XML 回复`、`Protobuf 回复`,使用**加粗**语法
127
127
128
json object 或 protobuf message 应以对象的 **表格** 形式书写,表头为`根对象`或`xx中的yy对象`,若对象位于数组中为`xx数组中的对象`
128
json object 或 protobuf message 应以对象的**表格**形式书写,表头为 `根对象` 或 `xx 中的 yy 对象`,若对象位于数组中为 `xx 数组中的对象`
129
129
130
表头统一为`字段`、`类型`、`内容`、`备注`,类型为 JSON / Protobuf 的标准类型
130
表头统一为 `字段`、`类型`、`内容`、`备注`,类型为 JSON / Protobuf 的标准类型
131
131
132
不明确定义的字段说明在末尾添加问号,如`播放数?`;定义尚未明确的字段使用问号包于括号中占位,如`(?)`
132
不明确定义的字段说明在末尾添加问号,如 `播放数?`;定义尚未明确的字段使用问号包于括号中占位,如 `(?)`
133
133
134
134
多个对象及数组,使用**遍历树**的顺序进行排列
135
135
136
136
eg:
137
137
138
`data`对象:
138
`data` 对象:
139
139
140
140
| 字段 | 类型 | 内容 | 备注 |
141
141
| ------ | ---- | ----------- | -------- |
@@ -144,47 +144,46 @@ eg:
144
144
| videos | num | 稿件分P总数 | 默认为 1 |
145
145
| tid | num | 分区 tid | |
146
146
147
json array 或 protobuf repeated 类型使用数组的 **表格** 形式书写,表头统一为`项`、`类型`、`内容`、`备注`,无限长度数组表尾需要添加**省略号**
147
json array 或 protobuf repeated 类型使用数组的**表格**形式书写,表头统一为 `项`、`类型`、`内容`、`备注`,无限长度数组表尾需要添加**省略号**
148
148
149
数组每项内容若与实际数据有关联,`内容`字段则可标为`(n+1)P 视频内容`这样的形式
149
数组每项内容若与实际数据有关联,`内容` 字段则可标为 `(n+1)P 视频内容` 这样的形式
150
150
151
151
eg:
152
152
153
`data`中的`pages`数组:
153
`data` 中的 `pages` 数组:
154
154
155
155
| 项 | 类型 | 内容 | 备注 |
156
156
| ---- | ---- | --------------- | ------------- |
157
| 0 | obj | 1P 视频内容 | 无分P仅有此项 |
157
| 0 | obj | 1P 视频内容 | 无分 P 仅有此项 |
158
158
| n | obj | (n+1)P 视频内容 | |
159
159
| …… | obj | …… | …… |
160
160
161
161
**示例**部分位于所有**响应正文**部分下方,需要**加粗**格式,分为请求命令示例与响应体示例两部分
162
162
163
请求命令示例为一段可测试该接口的 curl 命令或 Python 脚本,使用 **代码块** 语法书写,命令应当尽可能简短、便于使人阅读
163
请求命令示例为一段可测试该接口的 curl 命令或 Python 脚本,使用**代码块**语法书写,命令应当尽可能简短、便于使人阅读
164
164
165
示例命令中的认证信息应做**脱敏处理**,如 Cookie、Token、access_key 等,可替换为`xxx`占位
165
示例命令中的认证信息应做**脱敏处理**,如 Cookie、Token、access_key 等,可替换为 `xxx` 占位
166
166
167
167
示例命令前后可以适当添加一些文字说明
168
168
169
响应体示例为一段格式化后的 JSON 或 protobuf message,使用 **代码块** 语法书写,并使用`<details>`标签进行折叠
169
响应体示例为一段格式化后的 JSON 或 protobuf message,使用**代码块**语法书写,并使用 `<details>` 标签进行折叠
170
170
171
171
eg:
172
172
173
````markdown
173
174
**示例:**
174
175
175
获取视频`av85440373`的基本信息
176
获取视频 `av85440373` 的基本信息
176
177
177
178
```shell
178
179
curl -G 'https://api.bilibili.com/x/web-interface/view' \
179
180
--data-urlencode 'aid=85440373'
180
181
```
181
182
182
```html
183
183
<details>
184
184
<summary>查看响应示例:</summary>
185
```
186
185
187
```json
186
```jsonc
188
187
{
189
188
"code": 0,
190
189
"message": "0",
@@ -196,18 +195,19 @@ curl -G 'https://api.bilibili.com/x/web-interface/view' \
196
195
"tid": 28,
197
196
"tname": "原创音乐",
198
197
"copyright": 1,
199
...
198
// ...
199
}
200
}
200
201
```
201
202
202
```html
203
203
</details>
204
```
204
````
205
205
206
206
### 枚举值与属性位
207
207
208
接口返回或请求中若存在一些 enum 类型或二进制属性位,应当单独进行探讨,如视频的属性位`attribute`或视频清晰度`qn`
208
接口返回或请求中若存在一些 enum 类型或二进制属性位,应当单独进行探讨,如视频的属性位 `attribute` 或视频清晰度 `qn`
209
209
210
这些值及其说明使用 **表格** 进行整理,表头统一为`位` / `代码` / `值`、`含义`、`备注`
210
这些值及其说明使用**表格**进行整理,表头统一为 `位` / `代码` / `值`、`含义`、`备注`
211
211
212
212
这些枚举值或属性位的用法应附加文字说明
213
213
@@ -215,18 +215,18 @@ eg:
215
215
216
216
| 值 | 含义 | 备注 |
217
217
| ---- | ------------- | ------------------------------------------------------------ |
218
| 6 | 240P 极速 | 仅 MP4 格式支持<br />仅`platform=html5`时有效 |
218
| 6 | 240P 极速 | 仅 MP4 格式支持<br />仅 `platform=html5` 时有效 |
219
219
| 16 | 360P 流畅 | |
220
220
| 32 | 480P 清晰 | |
221
| 64 | 720P 高清 | WEB 端默认值<br />B站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址<br />**无 720P 时则为 720P60** |
221
| 64 | 720P 高清 | WEB 端默认值<br />B 站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址<br />**无 720P 时则为 720P60** |
222
222
| 74 | 720P60 高帧率 | 登录认证 |
223
223
| 80 | 1080P 高清 | TV 端与 APP 端默认值<br />登录认证 |
224
224
225
## Proto定义格式
225
## Proto 定义格式
226
226
227
227
proto 文件为 [Protocol Buffers](https://protobuf.dev/) 以及 [gRPC](https://grpc.io/docs/) 的数据结构体定义,多用于客户端的接口,本文档也做相关的收集
228
228
229
存放于项目的`/grpc_api`路径下,使用包名进行路径层级的组织,如
229
存放于项目的 `/grpc_api` 路径下,使用包名进行路径层级的组织,如
230
230
231
231
```
232
232
/grpc_api/bilibili/main/community/reply/v1/reply.proto
@@ -234,7 +234,7 @@ proto 文件为 [Protocol Buffers](https://protobuf.dev/) 以及 [gRPC](https://
234
234
/grpc_api/bilibili/app/view/v1/view.proto
235
235
```
236
236
237
proto 文件内使用 **单行注释** 标注字段或对象的含义,如
237
proto 文件内使用**单行注释**标注字段或对象的含义,如
238
238
239
239
```protobuf
240
240
// UP主信息