Files
bilibili-API-collect/CONTRIBUTING.html
T

95 lines
57 KiB
HTML
Raw Normal View History

2026-01-22 17:37:01 +00:00
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.24" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme='dark'] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background-color: var(--vp-c-bg);
}
</style>
<script>
const useChoice = localStorage.getItem('vuepress-color-scheme')
const systemStatus =
'matchMedia' in window
? window.matchMedia('(prefers-color-scheme: dark)').matches
: false
if (useChoice === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (useChoice === 'dark' || systemStatus) {
document.documentElement.dataset.theme = 'dark'
}
</script>
<link rel="icon" href="/bilibili-API-collect/logo2.jpg"><title>贡献指南 | BAC Document</title><meta name="description" content="社区开源的第三方哔哩哔哩 API 文档">
<link rel="preload" href="/bilibili-API-collect/assets/style-D1PJH1oj.css" as="style"><link rel="stylesheet" href="/bilibili-API-collect/assets/style-D1PJH1oj.css">
<link rel="modulepreload" href="/bilibili-API-collect/assets/app-Dgsdh8A6.js"><link rel="modulepreload" href="/bilibili-API-collect/assets/CONTRIBUTING.html-Dg5RrJ0s.js">
<link rel="prefetch" href="/bilibili-API-collect/assets/index.html-CyFjrwOB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-DfGFo93u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/splash.html-DTxmsPVe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ver.html-BK7Hl968.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CRFYL4xy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-67H6b90D.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-CkX_wc45.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/activity_list.html-Bekn3Lxe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DMnsBsuq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-CBuhzqhd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend_author.html-DBwItBdc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-C0ql065z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/articles.html-zLkcz3pu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card.html-wL4C5GKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/category.html-Xldy-aPs.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CB0fSHFP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/view.html-COrufaKB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BeujPZDG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DvFa4PRS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/music_list.html-DeijlME4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/musicstream_url.html-qq6CNfyp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rank.html-DT2C28KO.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-DEiPXucy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow.html-DOVJW4CZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BLypTc8g.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season_index.html-BSNCSXU1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/timeline.html-CzpzQzIG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DlvjAVi_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banlist.html-Bx6m-UTQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BMdR7u31.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_room.html-CJ-aNxn7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BHbw7wWp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DnLcd0On.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ip.html-BZmNmhHk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D_ydhzqh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-D36gw51A.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BN64GETH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/opus.html-CoQ5EdO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/railgun.html-2O05GCD4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season.html-B_fCwBA8.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/statistics_data.html-BWH8OqIZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/upload.html-DvDEkxhj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videos.html-4_uXrA4K.js" as="script"><link rel="prefetch" href="/bilibili-API-collec
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/bilibili-API-collect/"><img class="vp-site-logo" src="/bilibili-API-collect/logo2.jpg" alt="BAC Document"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">BAC Document</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&amp;k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&amp;authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&amp;noverify=0&amp;group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0
<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 视��
<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></div><!--[--><!--]--></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link label" href="https://github.com/SocialSisterYi/bilibili-API-collect/edit/master/CONTRIBUTING.md" aria-label="在 GitHub 上编辑此页" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><svg class="edit-icon" viewbox="0 0 1024 1024"><g fill="currentColor"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></g></svg><!--]--><!--]-->在 GitHub 上编辑此页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">最近更新: </span><time class="meta-item-info" datetime="2025-07-13T23:12:56.000Z" data-allow-mismatch>2025/7/13 23:12</time></div><div
<script type="module" src="/bilibili-API-collect/assets/app-Dgsdh8A6.js" defer></script>
</body>
</html>