bilibili-API-collect/assets/CONTRIBUTING.html-Dg5RrJ0s.js
github-actions 1424f73d2e generated
2026-01-22 17:37:01 +00:00

53 lines
32 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as t,c as l,a,b as n,d as s,e as d,w as r,r as i,o as p}from"./app-Dgsdh8A6.js";const c={};function u(m,e){const o=i("RouteLink");return p(),l("div",null,[e[17]||(e[17]=a('<h1 id="贡献指南" tabindex="-1"><a class="header-anchor" href="#贡献指南"><span>贡献指南</span></a></h1><p>欢迎来到 bilibili-API-collect 社区贡献指南,本文主要面向想要对本项目参与贡献的用户, 请务必认真阅读本文正文与潜在的注释</p><h2 id="总则" tabindex="-1"><a class="header-anchor" href="#总则"><span>总则</span></a></h2><p><a href="https://github.com/SocialSisterYi/bilibili-API-collect" target="_blank" rel="noopener noreferrer">bilibili-API-collect</a> 项目(简称 BAC 或 b-a-c是一个仅用于学习研究、社区开源、公益性质的 <a href="https://www.bilibili.com/" target="_blank" rel="noopener noreferrer">B 站(哔哩哔哩)</a>API应用程序接口文档使用 <a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE" target="_blank" rel="noopener noreferrer">CC-BY-NC 4.0 协议</a>开源,它将无差别收集整理相关的<strong>主站业务接口</strong>。</p><p>该项目使用 <a href="https://zh.wikipedia.org/zh-cn/Markdown" target="_blank" rel="noopener noreferrer">Markdown</a> 语法进行文档书写,按照业务类型及功能以<strong>路径</strong><strong>文件</strong>形式索引,任何用户都可通过 Issue、Pull Request 与 Discussion 提供自己分析出的接口地址与使用说明。</p><p>本项目收集的接口类型包括但不限于 REST API、gRPC、WebSocket文档内统一优先使用安全套接字协议如 <code>https</code>、<code>securityRpc</code>、<code>wss</code>。</p><h2 id="issue、discussion-与社群讨论" tabindex="-1"><a class="header-anchor" href="#issue、discussion-与社群讨论"><span>Issue、Discussion 与社群讨论</span></a></h2><p>对文档内容存在<strong>不理解</strong>之处、以及发现文档内容有所<strong>缺失</strong>或<strong>错误</strong>,可直接提出,强烈建议以提交 <strong>Issue</strong> 的形式 添加 / 补充 / 更新 文档中的说明,以发起 <strong>Discussion</strong> 的形式提出问题、代码用例、情报分享,并希望关于本项目的各种交流都是<strong>公开进行</strong>的,因为这样才可以保证关键信息的一致性。</p><p>提交 Issue 请遵守以下原则:</p><ol><li>标题需要点明 API 的用处, <code>&lt;title&gt;</code> 要替换为标题主要内容而不是保留不动,切勿仅填写 <code>补充</code>、<code>修复</code>,形式良好的标题可以是 <code>[新增请求] 新增 xx 接口</code>、<code>[更新请求] xx 接口地址已失效</code>、<code>[更新请求] xx 接口的参数有变化</code></li><li>正文请按照 Issue 模板进行填写,标明 API 来源Web、Android、iOS、TV 等、API 类型REST、gRPC、WebSocket 等、API 地址</li><li>详情描述需要提供该 API 的使用场景、请求及响应字段等,可附上原始抓包记录 (文本格式优先);在更新时还需指出原文档中与最新 API 行为不符之处,并附上已知的最新改动。例如:“在前端页面某地址 / APP 某界面访问某 API标明地址它的某参数与文档中不符标明文档地址”</li></ol><p>发起 Discussion 请遵守以下原则:</p><ol><li>标题言简意骇,说明欲提出的问题要点,如 <code>如何通过 xx 接口获取 yy</code>、<code>关于 xx 字段意义的探讨</code>、<code>建议将 xx 加入 yy 分类</code> 等标题;切勿使用表意含糊不清或索取性的标题,如 <code>怎么解决风控</code>、<code>搜索的接口是什么</code>、<code>好兄弟有没有投稿的接口</code> 等标题</li><li>Discussion 正文应对遇到的问题进行尽可能详细的描述,展开并聚焦有关的信息,例如: “按照文档中某位置的说明进行了某操作,为什么无法获得预期结果”、“请问某 API 的某字段的具体含义是什么”</li><li>提出问题时注意<a href="https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md" target="_blank" rel="noopener noreferrer">提问的智慧</a>并且<a href="https://github.com/tangx/Stop-Ask-Questions-The-Stupid-Ways" target="_blank" rel="noopener noreferrer">别像弱智一样提问</a></li></ol><p>同时,您还可以通过加入社群的方式参与讨论</p><ul><li>QQ 交流群:<a href="https://qm.qq.com/cgi-bin/qm/qr?_wv=1027&amp;k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&amp;authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&amp;noverify=0&amp;group_code=191187164" target="_blank" rel="noopener noreferrer">邀请链接</a></li><li>Telegram 交流群:<a href="https://t.me/bilibili_API_collect_community" target="_blank" rel="noopener noreferrer">@bilibili_API_collect_community</a></li></ul><div class="hint-container tip"><p class="hint-container-title">提示</p><p>QQ 交流群为综合技术交流群(兼 Owner 的粉丝群),可交流探讨任何技术,包括但不限于 <a href="https://github.com/SocialSisterYi/bilibili-API-collect" target="_blank" rel="noopener noreferrer">BAC 项目</a></p><p>Telegram 交流群主要用作 <a href="https://github.com/SocialSisterYi/bilibili-API-collect" target="_blank" rel="noopener noreferrer">BAC 项目</a>的 Github Bot 接收,也可以进行项目相关的讨论,但不建议在此讨论交流其他内容(公开群)</p></div><div class="hint-container warning"><p class="hint-container-title">注意</p><p>群内讨论同样需要遵守<strong>公开交流</strong>的原则,以及群内会定期清理不活跃成员。</p><p><strong>QQ 交流群</strong>的加群问题答案可以去 <a href="https://github.com/SocialSisterYi" target="_blank" rel="noopener noreferrer">Owner 的主页</a> Contact 部分找到,如果您填写“我不知道,从 Github 来的”那么管理员将有理由禁止您进群讨论!</p></div><div class="hint-container caution"><p class="hint-container-title">禁止</p><p>项目 Issue 及其相关社群中<strong>禁止</strong>询问讨论 风控解除、爬虫(采集)、破解、漏洞利用、买卖代码和账号 相关内容,抵制基于本项目进行的一切黑产行为!</p></div><h2 id="目录与路径结构" tabindex="-1"><a class="header-anchor" href="#目录与路径结构"><span>目录与路径结构</span></a></h2><h3 id="目录" tabindex="-1"><a class="header-anchor" href="#目录"><span>目录</span></a></h3>',19)),n("p",null,[e[1]||(e[1]=s("文档目录以 ")),e[2]||(e[2]=n("strong",null,"Markdown 无序列表",-1)),e[3]||(e[3]=s("语法写在 ")),d(o,{to:"/"},{default:r(()=>e[0]||(e[0]=[s("README.md")])),_:1,__:[0]}),e[4]||(e[4]=s(" 中,使用缩进标识文档的层级,如 ")),e[5]||(e[5]=n("code",null,"视频",-1)),e[6]||(e[6]=s(" 下存在 ")),e[7]||(e[7]=n("code",null,"基本信息",-1)),e[8]||(e[8]=s("、")),e[9]||(e[9]=n("code",null,"快照",-1)),e[10]||(e[10]=s("、")),e[11]||(e[11]=n("code",null,"视频推荐",-1)),e[12]||(e[12]=s("、")),e[13]||(e[13]=n("code",null,"TAG",-1)),e[14]||(e[14]=s(" 等子分类,使用 ")),e[15]||(e[15]=n("strong",null,"Markdown 复选框",-1)),e[16]||(e[16]=s("语法该标注文档是否编写完成, 新文档写完后记得在目录添加入口"))]),e[18]||(e[18]=a(`<div class="language-markdown line-numbers-mode" data-highlighter="shiki" data-ext="markdown" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-markdown"><span class="line"><span style="color:#6796E6;">-</span><span style="color:#D4D4D4;"> [ ] 视频</span></span>
<span class="line"><span style="color:#6796E6;"> -</span><span style="color:#D4D4D4;"> [</span><span style="color:#CE9178;">x</span><span style="color:#D4D4D4;">] 基本信息</span></span>
<span class="line"><span style="color:#6796E6;"> -</span><span style="color:#D4D4D4;"> [</span><span style="color:#CE9178;">x</span><span style="color:#D4D4D4;">] 快照</span></span>
<span class="line"><span style="color:#6796E6;"> -</span><span style="color:#D4D4D4;"> [</span><span style="color:#CE9178;">x</span><span style="color:#D4D4D4;">] 视频推荐</span></span>
<span class="line"><span style="color:#6796E6;"> -</span><span style="color:#D4D4D4;"> [ ] TAG</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="路径" tabindex="-1"><a class="header-anchor" href="#路径"><span>路径</span></a></h3><p>路径层级应当与文档目录一致,以文件夹的形式存放在项目中的 <code>/docs</code> 路径下,命名统一使用英文小写,如 <code>video</code>、<code>danmaku</code>、<code>comment</code>, 不建议出现 <code>&amp;</code> 等特殊字符</p><p>二级、三级路径应当存在二级三级目录,可选添加 <code>README.md</code> 以描述该子目录</p><h3 id="文件" tabindex="-1"><a class="header-anchor" href="#文件"><span>文件</span></a></h3><p>各个子接口集整理为 Markdown (.md) 文件,命名统一使用英文小写,如 <code>info.md</code>、<code>action.md</code>、<code>list.md</code></p><p>文档文件中用于存放相关的接口的说明,如 <code>video/</code> 下的 <code>info.md</code>,存在 <code>查询视频基本信息</code>、<code>查询视频简介</code>、<code>查询视频分P列表</code> 等内容</p><h2 id="markdown-文档内容格式" tabindex="-1"><a class="header-anchor" href="#markdown-文档内容格式"><span>Markdown 文档内容格式</span></a></h2><p>文档使用 <a href="https://vuepress.vuejs.org/" target="_blank" rel="noopener noreferrer">VuePress</a> 生成,可以使用 <a href="https://vuepress.vuejs.org/guide/markdown.html" target="_blank" rel="noopener noreferrer">VuePress Markdown 扩展语法</a>编写</p><p>注:以下文档范式主要针对接口类文档, 可根据<strong>实际情况</strong>进行调整, 你也可以使用 <a href="https://github.com/SessionHu/json-apidoc-gen" target="_blank" rel="noopener noreferrer"><code>json-apidoc-gen</code></a> 工具直接生成模板自行填充内容. 非接口类文档, 如算法等, 可以参考已有的内容</p><h3 id="头部" tabindex="-1"><a class="header-anchor" href="#头部"><span>头部</span></a></h3><p>文档首行为<strong>一级标签</strong>格式标题,如 <code># 用户基本信息</code></p><p><strong>文档头部不需要手写索引</strong>,索引由 VuePress 自动生成</p><h3 id="接口说明" tabindex="-1"><a class="header-anchor" href="#接口说明"><span>接口说明</span></a></h3><p>文档中可存在多个接口说明,应当遵守同一范式,依次排列在文档中</p><p>接口说明分为 <code>标题</code>、<code>地址</code>、<code>说明</code>、<code>请求参数</code>、<code>响应正文</code>、<code>示例</code> 这些部分</p><p>接口标题为<strong>二级以下</strong>的标签,接口地址使用<strong>块引用</strong>语法,地址只保留 REST API 路径,不应携带 query 等内容</p><p>接口地址下方需要注明接口的请求方法,如 <code>GET</code>、<code>POST</code>、<code>PUT</code> 等,使用<em>斜体</em>语法</p><p>若接口存在认证或鉴权,需要在说明中注明,如 <code>Cookie (SESSDATA)</code>、<code>APP</code>(认证是针对用户的,鉴权是针对接口使用的)</p><p>其他使用说明也可写在这里,如 <code>限制游客访问的视频需要登录</code></p><p>e.g.</p><div class="language-markdown line-numbers-mode" data-highlighter="shiki" data-ext="markdown" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-markdown"><span class="line"><span style="color:#569CD6;font-weight:bold;">## 获取视频详细信息_web端</span></span>
<span class="line"></span>
<span class="line"><span style="color:#6A9955;">&gt;</span><span style="color:#D4D4D4;"> https://api.bilibili.com/x/web-interface/view</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;font-style:italic;">*请求方法: GET*</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">认证方式: Cookie (SESSDATA)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">限制游客访问的视频需要登录</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>请求参数</strong>应在<strong>接口说明</strong>的下方,应注明参数类型 URL 参数或正文参数(正文参数应注明 <code>Content-Type</code>,如 <code>application/x-www-form-urlencoded</code> 或 <code>multipart/form-data</code>),使用<strong>加粗</strong>语法</p><p>对象的字段及其含义使用<strong>表格</strong>进行整理,表头统一依次为 <code>参数名</code>、<code>类型</code>、<code>内容</code>、<code>必要性</code>、<code>备注</code>,使用 <code>object</code>、<code>number</code>、<code>string</code>、<code>boolean</code>、<code>number[]</code>、<code>string[]</code>、<code>file</code> 等这种类似 TypeScript 的类型系统,必要性为 <code>必要</code>、<code>非必要</code>、<code>必要 (可选)</code> 等,表格内每个字段为一行</p><p>e.g.</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>稿件 avid</td><td>必要 (可选)</td><td>avid 与 bvid 任选</td></tr><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td>必要 (可选)</td><td>avid 与 bvid 任选</td></tr></tbody></table><p><strong>响应正文</strong>应在<strong>请求参数</strong>的下方,接口响应的数据格式应标注,如 <code>JSON 回复</code>、<code>XML 回复</code>、<code>ProtoBuf 回复</code>,使用<strong>加粗</strong>语法</p><p>JSON Object 或 ProtoBuf Message 应以对象的<strong>表格</strong>形式书写,表头为 <code>根对象</code> 或 <code>xx 中的 yy 对象</code> 或 <code>xx.yy.zz 对象</code>,若对象位于数组中则为 <code>xx 数组中的对象</code> 或 <code>xx[] 中的对象</code></p><p>表头统一依次为 <code>字段</code>、<code>类型</code>、<code>内容</code>、<code>备注</code>,类型为 JSON / Protobuf 的标准类型,具体同请求参数一致</p><p>不明确定义的字段说明在内容的末尾添加问号,如 <code>播放数?</code>;定义尚未明确的字段使用 <code></code> 在内容中占位,并在备注中填写 <code>作用尚不明确</code></p><p>多个对象及数组,使用<strong>遍历树</strong>的顺序进行排列, 若数组中的每一项结构均相同也可以直接省略为像 <code>xxx 数组中的对象</code> 这样的格式</p><p>e.g.</p><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>bvid</td><td>str</td><td>稿件 bvid</td><td></td></tr><tr><td>aid</td><td>num</td><td>稿件 avid</td><td></td></tr><tr><td>videos</td><td>num</td><td>稿件分P总数</td><td>默认为 1</td></tr><tr><td>tid</td><td>num</td><td>分区 tid</td><td></td></tr><tr><td>no_cache</td><td>bool</td><td></td><td>作用尚不明确</td></tr></tbody></table><p>Json Array 或 ProtoBuf Repeated 类型使用数组的<strong>表格</strong>形式书写,表头统一依次为 <code>项</code>、<code>类型</code>、<code>内容</code>、<code>备注</code>,无限长度数组表尾需要添加<strong>省略号</strong></p><p>数组每项内容若与实际数据有关联,<code>内容</code> 字段则可标为 <code>(n+1)P 视频内容</code> 这样的形式</p><p>e.g.</p><p><code>data</code> 中的 <code>pages</code> 数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>1P 视频内容</td><td>无分 P 仅有此项</td></tr><tr><td>n</td><td>obj</td><td>(n+1)P 视频内容</td><td></td></tr><tr><td>……</td><td>obj</td><td>……</td><td>……</td></tr></tbody></table><p><strong>示例</strong>部分位于所有<strong>响应正文</strong>部分下方,需要<strong>加粗</strong>格式,分为请求命令示例与响应体示例两部分</p><p>请求命令示例为一段可测试该接口的 cURL 命令或某种编程语言的代码,使用<strong>代码块</strong>语法书写,命令应当尽可能简短、便于使人阅读, 代码缩进为 <strong>2</strong> 个 <strong>空格 (U+0020)</strong></p><p>示例命令中的认证信息应做<strong>脱敏处理</strong>,如 Cookie、Token、access_key 等,可替换为 <code>xxx</code> 占位</p><p>示例命令前后可以适当添加一些文字说明</p><p>响应体示例为一段格式化后的 JSON 或 ProtoBuf Message使用<strong>代码块</strong>语法书写, 代码块语言填写清楚, 注意 <code>json</code> <code>jsonc</code> 区别. 并使用 <code>&lt;details&gt;</code> 标签进行折叠, 仍一律使用 <strong>2</strong> 个 <strong>空格</strong> 进行缩进</p><p>e.g.</p><div class="language-markdown line-numbers-mode" data-highlighter="shiki" data-ext="markdown" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-markdown"><span class="line"><span style="color:#569CD6;font-weight:bold;">**示例:**</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">获取视频 </span><span style="color:#CE9178;">\`av85440373\`</span><span style="color:#D4D4D4;"> 的基本信息</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">\`\`\`shell</span></span>
<span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> &#39;https://api.bilibili.com/x/web-interface/view&#39;</span><span style="color:#D7BA7D;"> \\</span></span>
<span class="line"><span style="color:#D4D4D4;"> --data-urlencode &#39;aid=85440373&#39;</span></span>
<span class="line"><span style="color:#D4D4D4;">\`\`\`</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">&lt;details&gt;</span></span>
<span class="line"><span style="color:#D4D4D4;">&lt;summary&gt;查看响应示例:&lt;/summary&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">\`\`\`jsonc</span></span>
<span class="line"><span style="color:#D4D4D4;">{</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;code&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;message&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">&quot;0&quot;</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;ttl&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;data&quot;</span><span style="color:#D4D4D4;">: {</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;bvid&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">&quot;BV117411r7R1&quot;</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;aid&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">85440373</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;videos&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;tid&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">28</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;tname&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">&quot;原创音乐&quot;</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#9CDCFE;"> &quot;copyright&quot;</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
<span class="line"><span style="color:#6A9955;"> // ...</span></span>
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span>
<span class="line"><span style="color:#D4D4D4;">\`\`\`</span></span>
<span class="line"></span>
<span class="line"><span style="color:#D4D4D4;">&lt;/details&gt;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="枚举值与属性位" tabindex="-1"><a class="header-anchor" href="#枚举值与属性位"><span>枚举值与属性位</span></a></h3><p>接口返回或请求中若存在一些 enum 类型或二进制属性位,应当单独进行探讨,如视频的属性位 <code>attribute</code> 或视频清晰度 <code>qn</code></p><p>这些值及其说明使用<strong>表格</strong>进行整理,表头统一为 <code>位</code> / <code>代码</code> / <code>值</code>、<code>含义</code>、<code>备注</code></p><p>这些枚举值或属性位的用法应附加文字说明</p><p>e.g.</p><table><thead><tr><th>值</th><th>含义</th><th>备注</th></tr></thead><tbody><tr><td>6</td><td>240P 极速</td><td>仅 MP4 格式支持<br>仅 <code>platform=html5</code> 时有效</td></tr><tr><td>16</td><td>360P 流畅</td><td></td></tr><tr><td>32</td><td>480P 清晰</td><td></td></tr><tr><td>64</td><td>720P 高清</td><td>WEB 端默认值<br>B 站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址<br><strong>无 720P 时则为 720P60</strong></td></tr><tr><td>74</td><td>720P60 高帧率</td><td>需要登录认证</td></tr><tr><td>80</td><td>1080P 高清</td><td>TV 端与 APP 端默认值<br>需要登录认证</td></tr></tbody></table><h2 id="proto-定义格式" tabindex="-1"><a class="header-anchor" href="#proto-定义格式"><span>Proto 定义格式</span></a></h2><p>proto 文件为 <a href="https://protobuf.dev/" target="_blank" rel="noopener noreferrer">Protocol Buffers</a> 以及 <a href="https://grpc.io/docs/" target="_blank" rel="noopener noreferrer">gRPC</a> 的数据结构体定义,多用于客户端的接口,本文档也做相关的收集</p><p>存放于项目的 <code>/grpc_api</code> 路径下,使用包名进行路径层级的组织,如:</p><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-"><span class="line"><span>/grpc_api/bilibili/main/community/reply/v1/reply.proto</span></span>
<span class="line"><span>/grpc_api/bilibili/app/archive/v1/archive.proto</span></span>
<span class="line"><span>/grpc_api/bilibili/app/view/v1/view.proto</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>proto 文件内使用<strong>单行注释</strong>标注字段或对象的含义,如:</p><div class="language-protobuf line-numbers-mode" data-highlighter="shiki" data-ext="protobuf" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-protobuf"><span class="line"><span style="color:#6A9955;">// UP主信息</span></span>
<span class="line"><span style="color:#569CD6;">message</span><span style="color:#4EC9B0;"> Author</span><span style="color:#D4D4D4;"> {</span></span>
<span class="line"><span style="color:#6A9955;"> // UP主mid</span></span>
<span class="line"><span style="color:#569CD6;"> int64</span><span style="color:#9CDCFE;"> mid</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">;</span></span>
<span class="line"><span style="color:#6A9955;"> // UP主昵称</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> name</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">;</span></span>
<span class="line"><span style="color:#6A9955;"> // UP主头像url</span></span>
<span class="line"><span style="color:#569CD6;"> string</span><span style="color:#9CDCFE;"> face</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">;</span></span>
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="文档提交" tabindex="-1"><a class="header-anchor" href="#文档提交"><span>文档提交</span></a></h2><h3 id="拉取-pull-与-提交-commit" tabindex="-1"><a class="header-anchor" href="#拉取-pull-与-提交-commit"><span>拉取 (Pull) 与 提交 (Commit)</span></a></h3><p>本项目仓库仅托管于 GitHub, 使用 Git 作为版本控制系统, 你需要对两者有基础的了解</p><p>请先 fork, 然后在自己的 fork 上进行修改</p><p>提交的标题不要使用默认的 <code>Update xxx</code>, 请遵循 <a href="https://www.conventionalcommits.org/zh-hans/v1.0.0/" target="_blank" rel="noopener noreferrer">Conventional Commits (约定式提交) 规范</a>, 标题语言可根据个人习惯</p><p>当发现远程与本地仓库不一致时, 若你操作的 fork 的 branch 无打开的 PR, 建议使用变基拉取, 而不是生成一个额外的合并提交的合并拉取, 反之则相反</p><p>移动文件请使用 <code>git mv</code>, 而不是删除并添加同一个文件于不同位置 (该问题在 VSCode 的 GUI 版 Git 中存在), 以便后续 blame 操作</p><h3 id="拉取请求-pull-request" tabindex="-1"><a class="header-anchor" href="#拉取请求-pull-request"><span>拉取请求 (Pull Request)</span></a></h3><p>使用 拉取请求 (Pull Request, PR) 将修改后的文档提交到 <code>master</code> 分支,标题需写明修改或新增的内容, 同样也需要遵循约定式提交规范, <code>gh_pages</code> 分支将在 PR 合并后自动更新</p><p>如果你还没有完成计划的全部修改, 请创建 Draft Pull Request 表示你还没有做好被合并的准备 <s>(抢占先机, 精神可嘉, 值得鼓励)</s></p><p>PR 正文使用 <strong>无序列表</strong> 写明更改的每一项内容, 可以使用复选框表明进度, 需要关闭的 Issue 请使用 <code>close #xxxx</code> 这样的格式一并包含在内</p><p>如果内容包含代码等, 请一并提供测试的输入与输出的文本或截图, 最好可以附上完整的测试环境及相关可执行文件等</p><p>PR 合并后, 请及时删除或更新分支. 特别是在使用压缩合并或变基合并后, 请 <code>Discard changes</code> 或直接删除分支, 以免在下一次 PR 后出现重复相同提交的问题</p>`,71))])}const b=t(c,[["render",u]]),g=JSON.parse('{"path":"/CONTRIBUTING.html","title":"贡献指南","lang":"zh-CN","frontmatter":{},"git":{"updatedTime":1752448376000,"contributors":[{"name":"SocialSisterYi","username":"SocialSisterYi","email":"1440239038@qq.com","commits":4,"url":"https://github.com/SocialSisterYi"},{"name":"LaMerChiang","username":"LaMerChiang","email":"catlair@qq.com","commits":1,"url":"https://github.com/LaMerChiang"},{"name":"wuziqian211","username":"wuziqian211","email":"65224318+wuziqian211@users.noreply.github.com","commits":3,"url":"https://github.com/wuziqian211"},{"name":"SessionHu","username":"SessionHu","email":"102411014+SessionHu@users.noreply.github.com","commits":7,"url":"https://github.com/SessionHu"}],"changelog":[{"hash":"2eae485e9949f9ae71b9f57f3416c8d7034573bd","time":1752448376000,"email":"102411014+SessionHu@users.noreply.github.com","author":"Session小胡","message":"JSONC highlighting &#x26; Upgrade VuePress (#1091)"},{"hash":"2eeda0f468b527254b15675f954698c0ef84bc5b","time":1748661604000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(CONTRIBUTING.md): 确认类型系统更改"},{"hash":"612d59101f078991f0c570a42400b0fabe2242b0","time":1746372671000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(CONTRIBUTING.md): 更加严谨的表述"},{"hash":"85defd7b3620f2b9ea9dc48798e898ceb8071e2f","time":1745515578000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(CONTRIBUTING.md): code block desc about json jsonc"},{"hash":"654e296a05864e3be68a3871c16ae72b45294bff","time":1745148096000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(CONTRIBUTING.md): add link to json-apidoc-gen"},{"hash":"ac01f83cfff6509b166e4d63d6a5d8e1247f84e1","time":1745060980000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(CONTRIBUTING.md): add non-api doc info"},{"hash":"65c88d57205c3da55e2d9f36386bd4e8544b4f77","time":1745002629000,"email":"102411014+SessionHu@users.noreply.github.com","author":"SessionHu","message":"feat(CONTRIBUTING.md): Commit and PR"},{"hash":"41d73f1a20d856ffc5468243fbf17e5a35dc1a92","time":1726838526000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"晨叶梦春","message":"feat: 添加消息中心接口相关说明 (#983)"},{"hash":"6521e3fea37a348230426c36499fc083d7887a21","time":1714761544000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"Update CONTRIBUTING.md"},{"hash":"392dc2b0bec43171e205e3265a8f7c9d9c6d3963","time":1714722663000,"email":"65224318+wuziqian211@users.noreply.github.com","author":"wuziqian211","message":"Update CONTRIBUTING.md"},{"hash":"edb72085434afaa7daae092b8d98f62aebd99808","time":1706782992000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"Update CONTRIBUTING Guide"},{"hash":"ef919a61efd0a4813d95585fa0ebd24ce1d2988e","time":1693981546000,"email":"catlair@qq.com","author":"LaMerChiang","message":"chore: 升级为 vuepress@2 (#807)"},{"hash":"f6760f4be38d5b592d396b211e48c666286524de","time":1677124138000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"🔨remove header index"},{"hash":"75ee9d976ee565ad43ac193099c5580cb5ce7692","time":1674310725000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"update【contributing】"},{"hash":"3893a323d750de669bec7bc13a1d16867fa0b03f","time":1674230287000,"email":"1440239038@qq.com","author":"SocialSisterYi","message":"add contributing guide"}]},"filePathRelative":"CONTRIBUTING.md"}');export{b as comp,g as data};