53 lines
32 KiB
JavaScript
53 lines
32 KiB
JavaScript
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><title></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 çš„æŸ�
|
||||
|
|
<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>&</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;">></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;"> 'https://api.bilibili.com/x/web-interface/view'</span><span style="color:#D7BA7D;"> \\</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"> --data-urlencode 'aid=85440373'</span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;">\`\`\`</span></span>
|
|||
|
|
<span class="line"></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"><details></span></span>
|
|||
|
|
<span class="line"><span style="color:#D4D4D4;"><summary>查看�应示例:</summary></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;"> "code"</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;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> "ttl"</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;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> "bvid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BV117411r7R1"</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> "aid"</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;"> "videos"</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;"> "tid"</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;"> "tname"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"原创音�"</span><span style="color:#D4D4D4;">,</span></span>
|
|||
|
|
<span class="line"><span style="color:#9CDCFE;"> "copyright"</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;"></details></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 & 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)
|