diff --git a/.gitignore b/.gitignore index 384b4d6..0464b72 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1 @@ - -login/password&SMS.md -B站API.txt -live/info_flow.md -bangumi/info.md -bangumi/ststus_number.md -live/live_manage.md +mkdocs/html/* \ No newline at end of file diff --git a/APP_widget/splash.md b/APP_widget/splash.md new file mode 100644 index 0000000..4f86983 --- /dev/null +++ b/APP_widget/splash.md @@ -0,0 +1,138 @@ +# APP端开屏图片 + +## 获取APP端开屏图片列表 + +> http://app.bilibili.com/x/v2/splash/brand/list + +*请求方式:GET* + +鉴权方式:APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ---------- | ----------- | ---- | +| appkey | str | APP密钥 | APP方式必要 | | +| ts | num | 当前时间戳 | APP方式必要 | | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---------------------------------------------------- | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ----- | ------------ | ------------ | +| pull_interval | num | 1800 | 作用尚不明确 | +| forcibly | bool | false | 作用尚不明确 | +| rule | str | order | 作用尚不明确 | +| list | array | 开屏图片列表 | | +| show | array | 默认显示项 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 开屏图片1 | | +| n | obj | 开屏图片(n+1) | | +| …… | obj | …… | …… | + +`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | --------------------- | ---- | +| id | num | 开屏图片ID | | +| thumb | str | 开屏图片url | | +| logo_url | str | “bilibili”logo图片url | | + +`data`中的`show`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------- | ---- | +| 0 | obj | 套了个娃? | | + +`show`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------- | ------------ | +| id | num | 开屏图片ID | | +| begin_time | num | 起始时间? | 时间戳 | +| end_time | num | 结束时间? | 时间戳 | +| probability | num | 0 | 作用尚不明确 | +| duration | num | 显示时间? | 单位为毫秒 | + +**示例:** + +```shell +curl -G 'http://app.bilibili.com/x/v2/splash/brand/list' \ +--data-urlencode 'appkey=1d8b6e7d45233436' \ +--data-urlencode 'ts=0' \ +--data-urlencode 'sign=78a89e153cd6231a4a4d55013aa063ce' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "pull_interval": 1800, + "forcibly": false, + "rule": "order", + "list": [ + { + "id": 10, + "thumb": "http://i0.hdslb.com/bfs/archive/e2d2f57e08b511d1a47203859f7bddb4ef9d4e16.png", + "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" + }, + { + "id": 11, + "thumb": "http://i0.hdslb.com/bfs/archive/fe737da5cdedf9dad038e5fd30e957be8a063bc2.png", + "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" + }, + { + "id": 12, + "thumb": "http://i0.hdslb.com/bfs/archive/574469a4a20f41ba4dc9ecd41d15f94eea875ed9.png", + "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" + }, + { + "id": 13, + "thumb": "http://i0.hdslb.com/bfs/archive/af0f4f611faa34340bd4f91def1973ccbfb8fbb3.png", + "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" + }, + { + "id": 14, + "thumb": "http://i0.hdslb.com/bfs/archive/1d40e975b09d5c87b11b3ae0c9ce6c6b82f63d9e.png", + "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" + } + ], + "show": [ + { + "id": 12, + "begin_time": 1597564800, + "end_time": 1630753108, + "probability": 0, + "duration": 700 + } + ] + } +} +``` + +
+ +如ID=11的图片为: + +![]( http://i0.hdslb.com/bfs/archive/fe737da5cdedf9dad038e5fd30e957be8a063bc2.png ) + diff --git a/LICENSE b/LICENSE index d4b8b4e..c43ce71 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,99 @@ -MIT License +Creative Commons Attribution 4.0 International -Copyright (c) 2020 社会易姐QwQ +Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Using Creative Commons Public Licenses -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors : wiki.creativecommons.org/Considerations_for_licensors + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public : wiki.creativecommons.org/Considerations_for_licensees + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + +a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. +b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. +c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. +d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. +e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. +f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. +g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. +h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. +i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. +j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. +k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. +Section 2 – Scope. + +a. License grant. +1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: +A. reproduce and Share the Licensed Material, in whole or in part; and +B. produce, reproduce, and Share Adapted Material. +2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. +3. Term. The term of this Public License is specified in Section 6(a). +4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. +5. Downstream recipients. +A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. +B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. +6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). +b. Other rights. +1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. +2. Patent and trademark rights are not licensed under this Public License. +3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +a. Attribution. +1. If You Share the Licensed Material (including in modified form), You must: +A. retain the following if it is supplied by the Licensor with the Licensed Material: +i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); +ii. a copyright notice; +iii. a notice that refers to this Public License; +iv. a notice that refers to the disclaimer of warranties; +v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; +B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and +C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. +2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. +3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. +4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; +b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and +c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. +b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. +c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. +Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. +b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: +1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or +2. upon express reinstatement by the Licensor. +c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. +d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. +e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. +Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. +b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. +Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. +b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. +c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. +d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the "Licensor." The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/README.md b/README.md index 9cce73d..dbf1dd1 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,55 @@ - +

+ +

+

哔哩哔哩-API收集整理

+

+ + GitHub issues + + + GitHub stars + + + GitHub forks + + + GitHub license + +

-# 哔哩哔哩-API收集整理 -**野生API文档** +

野生API文档

+

不断更新中....

+本项目旨在对B站web端、移动端以及TV端散落在世界各地的野生api进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、js逆向分析法、网络抓包法等研究办法 -**不断更新中....** +所有api均为标准http协议,返回数据大都为json或protobuf -本项目对B站web端散落在世界各地的野生api进行收集整理,以及研究使用方法并对其进行说明 +PS:所有http协议地址均可使用https,文档中为了统一写作`http`,为了数据安全建议所有接口使用https -所有api均为标准http协议,返回值大都为json +小小的Demo:[av583785685](https://www.bilibili.com/video/av583785685) - +--- -计划整理分类&目录:(√代表已完成,x代表正在施工...) +计划整理分类&目录:(√代表已完成,x代表正在施工...)二级目录正在建设中..... -- cookie +- [API认证与鉴权(APP与Cookie方式)](other/API_auth.md)× +- [公共错误码](other/errcode.md)√ - [图片格式化](other/picture.md)√ +- [bvID说明](other/bvID.md)√ - [登录](login) - - [二维码登录](login/QR.md)√ - - 密码&短信登录 - - qq&微博登录 + - [登录操作(人机认证)](login/login_action)√ + + [短信登录](login/login_action/SMS.md)√ + + [密码登录](login/login_action/password.md)√ + + [二维码登录](login/login_action/QR.md)√ + + SNS登录(QQ&微博) - [登录基本信息](login/login_info.md)√ - - 在线用户 - - [消息](login/msg.md)x - - [私信](login/private_msg.md)x + - [个人中心](login/member_center.md)× + - [注销登录](login/exit.md)× + - [登录记录](login/login_notice.md)√ +- [消息中心](message) + - [通知类消息](message/msg.md)× + - [私信](message/private_msg.md)× + - [设置](message/config.md)× - [用户](user) - [基本信息](user/info.md)√ - [状态数](user/status_number.md)√ @@ -38,76 +64,112 @@ - [点赞&投币&收藏](video/like_coin_fav.md)√ - [TAG](video/tags.md)x - [视频推荐](video/recommend.md)√ - - 播放&下载地址 - - 互动视频 - - 实时观看人数 - - 高能进度条 -- 番剧(影视) - - 基本信息 + - [播放&下载地址(视频流)](video/videostream_url.md)√ + - [互动视频](video/interact_video.md)× + - [高能进度条](video/pbp.md)√ + - [信息上报(心跳及记录历史)](video/report.md)× +- [剧集(番剧、影视)](bangumi) + - [基本信息](bangumi/info.md)× - 状态数 - 操作 - [视频弹幕](danmaku) - - [实时弹幕&弹幕格式](danmaku/danmaku.md)√ - - [历史弹幕](danmaku/history.md)√ + - [protobuf实时弹幕](danmaku/danmaku_proto.md)√ + - [protobuf弹幕元数据(BAS弹幕/互动弹幕)](danmaku/danmaku_view_proto.md)√ + - [xml实时弹幕](danmaku/danmaku_xml.md)√ + - [xml历史弹幕](danmaku/history.md)√ - [快照](danmaku/snapshot.md)√ - - 弹幕操作 -- 专栏 - - 基本信息 - - 点赞&投币&收藏 - - 文集基本信息 -- 音频 - - 歌曲相关 - - 歌单相关 + - [弹幕操作](danmaku/action.md)× + - 高级弹幕 + - 屏蔽管理 + - 智能防挡弹幕 + - 弹幕个人配置修改 +- [专栏](article) + - 分区 + - [基本信息](article/info.md)× + - [点赞&投币&收藏](article/like_coin_fav.md)× + - [文集基本信息](article/articles.md)× +- [音频](audio) + - [歌曲基本信息](audio/info.md)√ + - [歌单&音频收藏夹详细信息](audio/music_list.md)× + - [状态数](audio/status_number.md)× + - [投币&收藏](audio/coin&fav.md)× + - [播放&下载地址(音频流)](audio/musicstream_url.md)√ - 音频榜单 -- [排行榜&最新动态](ranking&dynamic) - - [排行榜](ranking&dynamic/ranking.md)x - - [最新动态](ranking&dynamic/dynamic.md)x -- 搜索 - - 普通搜索 - - 热搜 +- [排行榜&最新视频](ranking&dynamic) + - [排行榜](ranking&dynamic/ranking.md)× + - [最新视频](ranking&dynamic/dynamic.md)× +- [搜索](search) + - [搜索请求](search/search_request.md)√ + - [搜索结果](search/search_response.md)√ + - [默认搜索&热搜](search/hot.md)√ + - [搜索建议](search/suggest.md)√ - [小黑屋](blackroom) + - 基本信息 - [封禁公示](blackroom/banlist.md)√ - - 仲裁信息 -- 评论区 - - 评论区明细 - - 表情 - - 发表评论 - - 评论操作 + - [风纪委员及众裁案件相关](blackroom/jury) + - [风纪委员基本信息](blackroom/jury/base_info.md)√ + - [众裁案件基本信息](blackroom/jury/judgement_info.md)√ + - [裁决操作](blackroom/jury/action.md)√ +- [评论区](comment)√ + - [评论区明细](comment/list.md)√ + - [操作](comment/action.md)√ +- [表情](emote) + - [表情及表情包信息](emote/emote_list.md)√ + - [操作](emote/action.md)√ - [创作中心](creativecenter) - - [统计与数据](creativecenter/statistics&data.md)x + - [统计与数据](creativecenter/statistics&data.md)× - 列表查询相关 - - 电磁力相关 + - [电磁力数据](creativecenter/railgun.md)√ +- [实时广播(通讯协议)](broadcast)√ + - [视频内广播](broadcast/video_room.md)√ - [充电](electric) - [B币方式](electric/Bcoin.md)√ - [微信&支付宝方式](electric/WeChat&Alipay.md)√ - [充电留言](electric/charge_msg.md)√ + - [充电列表](electric/charge_list.md)√ - [动态](dynamic) - - [发送&转载动态](dynamic/publish.md)x + - [发送&转载动态](dynamic/publish.md)× - 动态列表 - 动态内容 - 小视频 - 操作 -- 历史记录&稍后再看 - - 历史记录 - - 稍后再看 +- [历史记录&稍后再看](history&toview) + - [历史记录](history&toview/history.md)√ + - [稍后再看](history&toview/toview.md)√ - 收藏夹 -- 课程 +- [课程](cheese) + - [课程基本信息](cheese/info.md)√ + - 已购课程 + - 分区推荐列表 + - 操作 + - [播放&下载地址(视频流)](cheese/videostream_url.md)√ - [直播](live) - - [直播间基本信息](live/info.md)x - - 直播间管理 + - [直播间基本信息](live/info.md)× + - [直播分区](live/live_area.md)× + - [直播间管理](live/manage.md)× - 直播间操作 - - 直播视频流 - - 直播信息流 + - [直播视频流](live/live_stream.md)× + - [直播信息流](live/message_stream.md)× +- 答题 - B币钱包 - 基本信息 - B币充值 - 贝壳相关 - 哔哩哔哩漫画 - 哔哩哔哩游戏 +- 轻视频 - [其他](other) - - [ip位置查询](other/ip.md)√ + - [基于ip的地理位置查询](other/ip.md)√ + - [获取当前时间戳](other/time_stamp.md)√ +- [web端组件](web_widget) + - [分区当日上传数](web_widget/zone_upload.md)√ +- [APP端组件](APP_widget) + - [开屏图片](APP_widget/splash.md)√ +- [个性装扮](garb) + - [主题及加载动画](garb/skin.md)√ + - [主题色](garb/color.md)√ -B站专栏同步推出[《B站api研究记》](https://www.bilibili.com/read/readlist/rl207146)系列,欢迎关注 +B站专栏同步推出[《B站api研究记》](https://www.bilibili.com/read/readlist/rl207146)系列(更新状态:咕咕......),~~欢迎关注~~ **注意:请勿滥用,仅用于学习和测试!** @@ -117,7 +179,7 @@ B站专栏同步推出[《B站api研究记》](https://www.bilibili.com/read/rea (重要的话说三遍,本人不承担任何责任) - + **--by [社会易姐QwQ](https://space.bilibili.com/293793435)** @@ -127,9 +189,9 @@ B站专栏同步推出[《B站api研究记》](https://www.bilibili.com/read/rea 不了解json的请移步,[传送门](https://www.sojson.com/json/json_index.html) +不了解protobuf的请移步,[传送门](https://www.jianshu.com/p/a24c88c0526a ) - -**相关项目**: +# 相关项目: 库及文档: @@ -143,10 +205,26 @@ https://github.com/Vespa314/bilibili-api https://github.com/Hsury/Bilibili-Toolkit +https://github.com/whjstc/openbilibili-go-common-1 + +https://github.com/wnstar/bili-utils + +https://github.com/lovelyyoshino/Bilibili-Live-API + +https://github.com/flaribbit/bilibili-manga-spider + +https://github.com/simon300000/bili-api + 成品: +https://github.com/3Shain/BiliChat + +https://github.com/AncientLysine/BiliLocal + https://github.com/zyzsdy/biliroku +https://github.com/otakustay/danmaku-to-ass + https://github.com/bilibili-helper/bilibili-helper-o https://github.com/apachecn/BiliDriveEx @@ -157,8 +235,20 @@ https://github.com/Hsury/BiliDrive https://github.com/Tsuk1ko/bilibili-live-chat +https://github.com/ironmanic/crawler_target_users_good + +https://github.com/dd-center/DDatElectron + +https://github.com/dd-center/vtbs.moe + +https://github.com/JunzhouLiu/BILIBILI-HELPER + +https://github.com/the1812/Bilibili-Evolved + 其他: +https://github.com/kuresaru/geetest-validator + https://github.com/Hsury/Geetest3-Crack https://github.com/SocialSisterYi/bv2av_convert diff --git a/article/articles.md b/article/articles.md new file mode 100644 index 0000000..8f3d300 --- /dev/null +++ b/article/articles.md @@ -0,0 +1,311 @@ +# 文集基本信息 + +## 获取文集基本信息 + +> http://api.bilibili.com/x/article/list/web/articles + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| id | num | 文集rlID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此信息 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | ---------------- | ------------------------------------------------------------ | +| list | obj | 文集概览 | | +| articles | array | 文集内的文章列表 | | +| author | obj | 文集作者信息 | | +| last | obj | - | 作用尚不明确
结构与data.articles[]中相似 | +| attention | bool | 是否关注文集作者 | false:未关注
true:已关注
需要登录(Cookie)
未登录为false | + +`data`中的`list`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | --------------- | ------------ | +| id | num | 文集rlID | | +| mid | num | 文集作者UID | | +| name | str | 文集名称 | | +| image_url | str | 文集封面图片url | | +| update_time | num | 文集更新时间 | 时间戳 | +| ctime | num | 文集创建时间 | 时间戳 | +| publish_time | num | 文集发布时间 | 时间戳 | +| summary | str | 文集简介 | | +| words | num | 文集字数 | | +| read | num | 文集阅读量 | | +| articles_count | num | 文集内文章数量 | | +| state | num | 1或3 | 作用尚不明确 | +| reason | str | 空 | 作用尚不明确 | +| apply_time | str | 空 | 作用尚不明确 | +| check_time | str | 空 | 作用尚不明确 | + +`data`中的`articles`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---- | +| 0 | obj | 文集中第1篇文章 | | +| n | obj | 文集中第(n+1)篇文章 | | + +`data`中的`articles`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ----- | -------------- | ------------------------------------------------------------ | +| id | num | 专栏cvID | | +| title | str | 文章标题 | | +| state | num | 0 | 作用尚不明确 | +| publish_time | num | 发布时间 | 秒时间戳 | +| words | num | 文章字数 | | +| image_urls | array | 文章封面 | | +| category | obj | 文章标签 | | +| categories | array | 文章标签列表 | | +| summary | str | 文章摘要 | | +| stats | obj | 文章状态数信息 | | +| like_state | num | 是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie)
未登录为0 | + +`articles`数组中的对象中的`stats`: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ---------- | ---- | +| view | num | 阅读数 | | +| favorite | num | 收藏数 | | +| like | num | 点赞数 | | +| dislike | num | 点踩数 | | +| reply | num | 评论数 | | +| share | num | 分享数 | | +| coin | num | 投币数 | | +| dynamic | num | 动态转发数 | | + +`articles`数组中的对象中的`author`: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | -------------- | ---- | +| mid | num | 作者UID | | +| name | str | 作者昵称 | | +| face | str | 作者头像url | | +| official_verify | obj | 作者认证信息 | | +| nameplate | obj | 作者勋章 | | +| vip | obj | 作者大会员状态 | | + +**示例:** + +查询文集`rl207146`的基本信息 + +```shell +curl -G 'http://api.bilibili.com/x/article/list/web/articles' \ +--data-urlencode 'id=207146' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "list": { + "id": 207146, + "mid": 293793435, + "name": "B站api研究笔记", + "image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png", + "update_time": 1585036952, + "ctime": 1582718126, + "publish_time": 1585045493, + "summary": "", + "words": 8697, + "read": 1654, + "articles_count": 3, + "state": 1, + "reason": "", + "apply_time": "", + "check_time": "" + }, + "articles": [ + { + "id": 4815593, + "title": "【B站API】api研究笔记ep1-视频基本信息", + "state": 0, + "publish_time": 1582643908, + "words": 2906, + "image_urls": [ + "https://i0.hdslb.com/bfs/article/00497c8df7130f22e5b953694b8931a22d32f133.jpg" + ], + "category": { + "id": 26, + "parent_id": 17, + "name": "数码" + }, + "categories": [ + { + "id": 17, + "parent_id": 0, + "name": "科技" + }, + { + "id": 26, + "parent_id": 17, + "name": "数码" + } + ], + "summary": "各位小可爱们大家好啊,终于可以结束我长达一年的咕咕了.........在这蝠想联翩的日子里也闲的没事,除了上课就是睡觉,还不如搞点事情哪个猿不想拥有自己的B站爬虫呢(误),当然自制一个B站的综合信息台也是可以的,比如显示粉丝数 获赞数(掉粉警告)于是就萌生了这个研究B站api的想法,以后也会继续不定期分享我的主体思路是利用Chrome中的F12工具进行分析,再用curl进行验证先从视频下手吧qwq我们以av2075941为例network检测下,有各种图片、视频、网页、js。。。。。的传输记录", + "stats": { + "view": 578, + "favorite": 19, + "like": 26, + "dislike": 0, + "reply": 19, + "share": 6, + "coin": 10, + "dynamic": 0 + }, + "like_state": 0 + }, + { + "id": 4820548, + "title": "【B站API】api研究笔记ep2-视频其他信息", + "state": 0, + "publish_time": 1582688189, + "words": 4319, + "image_urls": [ + "https://i0.hdslb.com/bfs/article/2416ee72759a5c2c8bba0f10d42e789fc0c0ae2b.jpg" + ], + "category": { + "id": 26, + "parent_id": 17, + "name": "数码" + }, + "categories": [ + { + "id": 17, + "parent_id": 0, + "name": "科技" + }, + { + "id": 26, + "parent_id": 17, + "name": "数码" + } + ], + "summary": "大家中午好鸭昨天我们研究了B站api的获取方法和使用方法 这一期我们继续分享另一个从网页中寻找api的方法以及研究视频的其他api接口以av170001为例首先打开视频,在F12的network下的监控中加载页面筛选XHR对象用搜索法的效率较低,不如我们直接进行筛选&观察通过对资源路径的观察可以猜到某些有关的项比如playurl有可能是播放的地址,pagelist可能是分P列表,view不就是昨天研究的『视频基本信息』吗通过继续分析我总结出了以下api这个可以在只想获取简介时应用,而不用处理多余", + "stats": { + "view": 737, + "favorite": 14, + "like": 18, + "dislike": 0, + "reply": 14, + "share": 1, + "coin": 1, + "dynamic": 0 + }, + "like_state": 0 + }, + { + "id": 5263184, + "title": "【B站API】api研究笔记Special-AV与BV互转", + "state": 0, + "publish_time": 1585045493, + "words": 1472, + "image_urls": [ + "https://i0.hdslb.com/bfs/article/b520939046899303cfcac1511308eb87ede760d7.jpg" + ], + "category": { + "id": 26, + "parent_id": 17, + "name": "数码" + }, + "categories": [ + { + "id": 17, + "parent_id": 0, + "name": "科技" + }, + { + "id": 26, + "parent_id": 17, + "name": "数码" + } + ], + "summary": "昨天视频新编号BV上线了,所有视频的编号默认都变成了BVxxx,不再是avxxx,兼容在链接和搜索中输入av号,评论区和动态av和bv都可以一键传送显然日益增长的投稿量对于编号是个问题,int是有上限的,但一串“乱码”缺少了灵魂,还会让我们想到磁力链接或者熊掌盘的链接(手动狗头)看到av170001,我会想到“法克儿~~”,但看到BV17x411w7KC,我?????其实av号并没有消失,只不过它已经隐藏于大众的视野里了,av和bv本质上是可以双向转换的方法一(电脑版推荐):打开一个视频,会发现", + "stats": { + "view": 343, + "favorite": 9, + "like": 13, + "dislike": 0, + "reply": 9, + "share": 0, + "coin": 2, + "dynamic": 0 + }, + "like_state": 0 + } + ], + "author": { + "mid": 293793435, + "name": "社会易姐QwQ", + "face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0 + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i1.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "vip": { + "type": 2, + "status": 1, + "due_date": 0, + "vip_pay_type": 0, + "theme_type": 0, + "label": null + } + }, + "last": { + "id": 0, + "title": "", + "state": 0, + "publish_time": 0, + "words": 0, + "image_urls": [ ], + "category": { + "id": 0, + "parent_id": 0, + "name": "" + }, + "categories": [ ], + "summary": "" + }, + "attention": true + } +} +``` + +
\ No newline at end of file diff --git a/article/info.md b/article/info.md new file mode 100644 index 0000000..bc3dc09 --- /dev/null +++ b/article/info.md @@ -0,0 +1,166 @@ +# 专栏基本信息 + +## 获取专栏文章基本信息 + +> http://api.bilibili.com/x/article/viewinfo + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| id | num | 专栏cvID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此信息 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------- | ------ | ---------------- | ------------------------------------------------------------ | +| like | num | 是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie)
未登录为0 | +| attention | bool | 是否关注文章作者 | false:未关注
true:已关注
需要登录(Cookie)
未登录为false | +| favorite | bool | 是否收藏 | false:未收藏
true:已收藏
需要登录(Cookie)
未登录为false | +| coin | num | 为文章投币数 | | +| stats | obj | 状态数信息 | | +| title | str | 文章标题 | | +| banner_url | str | 文章头图url | | +| mid | num | 文章作者UID | | +| author_name | str | 文章作者昵称 | | +| is_author | bool | true | 作用尚不明确 | +| image_urls | array | 动态封面 | | +| origin_image_urls | array | 封面图片 | | +| shareable | bool | true | 作用尚不明确 | +| show_later_watch | bool | true | 作用尚不明确 | +| show_small_window | bool | true | 作用尚不明确 | +| in_list | bool | 是否收于文集 | false:否
true:是 | +| pre | num | 上一篇文章cvID | 无为0 | +| next | num | 下一篇文章cvID | 无为0 | +| share_channels | array | 分享方式列表 | | + +`stats`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ---------- | ---- | +| view | num | 阅读数 | | +| favorite | num | 收藏数 | | +| like | num | 点赞数 | | +| dislike | num | 点踩数 | | +| reply | num | 评论数 | | +| share | num | 分享数 | | +| coin | num | 投币数 | | +| dynamic | num | 动态转发数 | | + +`data`中的`image_urls`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 动态封面图片url | | + +`data`中的`origin_image_urls`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 文章封面图片url | | + +`data`中的`share_channels`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------- | ---- | +| 0 | obj | 分享项:qq | | +| 1 | obj | 分享项:qq空间 | | +| 2 | obj | 分享项:微信 | | +| 3 | obj | 分享项:朋友圈 | | +| 4 | obj | 分享项:微博 | | + +`data`中的`share_channels`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ----------- | ---- | +| name | str | 分享名称 | | +| picture | str | 分享图片url | | +| share_channel | str | 分享代号 | | + +**示例:** + +查询文章`cv2`的基本信息 + +```shell +curl -G 'http://api.bilibili.com/x/article/viewinfo' \ +--data-urlencode 'id=2' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "like": 1, + "attention": true, + "favorite": false, + "coin": 0, + "stats": { + "view": 317712, + "favorite": 3249, + "like": 10176, + "dislike": 0, + "reply": 1333, + "share": 302, + "coin": 2002, + "dynamic": 28 + }, + "title": "专栏行为准则 ", + "banner_url": "https://i0.hdslb.com/bfs/article/131b1d41b857d5308f5bff36591d117bddc48d96.jpg@90p.webp", + "mid": 144900660, + "author_name": "专栏小天使", + "is_author": true, + "image_urls": ["https://i0.hdslb.com/bfs/article/0a72422ce8e77d8512f010d93b1b7f9bc4e64e52.jpg"], + "origin_image_urls": ["https://i0.hdslb.com/bfs/article/131b1d41b857d5308f5bff36591d117bddc48d96.jpg"], + "shareable": true, + "show_later_watch": true, + "show_small_window": true, + "in_list": false, + "pre": 115914, + "next": 38575, + "share_channels": [{ + "name": "QQ", + "picture": "https://i0.hdslb.com/bfs/album/114ccfb3a999df9c4d11f274c8c61a804c8f8803.png", + "share_channel": "QQ" + }, { + "name": "QQ空间", + "picture": "https://i0.hdslb.com/bfs/album/30e9608bbce725bca45b5910866f60ab4d5e18b3.png", + "share_channel": "QZONE" + }, { + "name": "微信", + "picture": "https://i0.hdslb.com/bfs/album/658af3c22431cd78bb7c50be3394f7c032eba12c.png", + "share_channel": "WEIXIN" + }, { + "name": "朋友圈", + "picture": "https://i0.hdslb.com/bfs/album/c1ebcec8c5302f29f792d15f04e0d6dcef53ec27.png", + "share_channel": "WEIXIN_MONMENT" + }, { + "name": "微博", + "picture": "https://i0.hdslb.com/bfs/album/3707fc23f7d3e24022712320284b0de9aa78c87d.png", + "share_channel": "SINA" + }] + } +} +``` + +
diff --git a/article/like_coin_fav.md b/article/like_coin_fav.md new file mode 100644 index 0000000..6705fa5 --- /dev/null +++ b/article/like_coin_fav.md @@ -0,0 +1,172 @@ +# 专栏投币&点赞&收藏 + +**本页所有操作均需登录(Cookie)** + +## 点赞文章 + + + +> http://api.bilibili.com/x/article/like + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------- | ------ | ---------------------- | +| id | num | 文章cvID | 必要 | | +| type | num | 操作方式 | 必要 | 1:点赞
2:取消赞 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
65006:已赞过
65004:取消点赞失败 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +为文章`cv5806746`点赞 + +```shell +curl 'http://api.bilibili.com/x/article/like' \ +--data-urlencode 'id=5806746' \ +--data-urlencode 'type=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 投币文章 + + + +> http://api.bilibili.com/x/web-interface/coin/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ------------------- | ------ | ------- | +| aid | num | 文章cvID | 必要 | | +| multiply | num | 投币数量 | 必要 | 上限为2 | +| avtype | num | 2 | 必要 | 必须为2 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34005:超过投币上限 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +data 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ----------------------------------------------------- | +| like | bool | 是否点赞成功 | true:成功
false:失败
已赞过则附加点赞失败 | + +**示例:** + +为文章`cv5806746`投币1枚 + +```shell +curl 'http://api.bilibili.com/x/web-interface/coin/add' \ +--data-urlencode 'aid=5806746' \ +--data-urlencode 'multiply=1' \ +--data-urlencode 'avtype=2' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "like": false + } +} +``` + +
+ +## 收藏文章 + + + +>http://api.bilibili.com/x/article/favorites/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------- | ------ | ---- | +| id | num | 文章cvID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项 | +| message | str | 错误信息 | 正确为success | +| data | obj | 信息本体 | | + +**示例:** + +收藏文章`cv5806746` + +```shell +curl 'http://api.bilibili.com/x/article/favorites/add' \ +--data-urlencode 'id=5806746' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
diff --git a/audio/coin&fav.md b/audio/coin&fav.md new file mode 100644 index 0000000..c4509aa --- /dev/null +++ b/audio/coin&fav.md @@ -0,0 +1,101 @@ +# 音频投币&收藏 + +本页所有操作均需登录(SESSDATA) + +## 查询音频收藏状态 + +> http://www.bilibili.com/audio/music-service-c/web/collections/songs-coll + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`存在且不为0 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:账号未登陆
7201006:该音频不存在或已被下架 | +| msg | str | 错误信息 | 默认为success | +| data | bool | 是否收藏 | false:未收藏
true:已收藏 | + +**示例:** + +查询音频`au13598`的收藏状态 + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/collections/songs-coll' \ +--data-urlencode 'sid=13598' \ +-b 'SESSDATA=xxx;DedeUserID=1;' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": true +} +``` + +
+ +## 查询音频投币数 + +> http://www.bilibili.com/audio/music-service-c/web/coin/audio + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`存在且不为0 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:账号未登陆
7201006:该音频不存在或已被下架 | +| msg | str | 错误信息 | 默认为success | +| data | num | 投币数量 | 0为未投币,上限为2 | + +**示例:** + +查询音频`au13598`的投币数 + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/coin/audio' \ +--data-urlencode 'sid=15664' \ +-b 'SESSDATA=xxx;DedeUserID=1;' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": 1 +} +``` + +
diff --git a/audio/info.md b/audio/info.md new file mode 100644 index 0000000..aa7ad44 --- /dev/null +++ b/audio/info.md @@ -0,0 +1,425 @@ +# 歌曲基本信息 + +## 查询歌曲基本信息 + +> http://www.bilibili.com/audio/music-service-c/web/song/info + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
72000000:参数错误
7201006:该音频不存在或已被下架
72010027:版权音乐重定向 | +| msg | str | 错误信息 | 默认为success | +| data | 正确时:obj
错误时:null | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ------ | ------------------ | ------------------ | +| id | num | 音频auID | | +| uid | num | UP主UID | | +| uname | str | UP主昵称 | | +| author | str | 作者名 | | +| title | str | 歌曲标题 | | +| cover | str | 封面图片url | | +| intro | str | 歌曲简介 | | +| lyric | str | lrc歌词url | | +| crtype | num | 1 | **作用尚不明确** | +| duration | num | 歌曲时间长度 | 单位为秒 | +| passtime | num | 歌曲发布时间 | 时间戳 | +| curtime | num | 当前请求时间 | 时间戳 | +| aid | num | 关联稿件avID | 无为0 | +| bvid | str | 关联稿件bvID | 无为空 | +| cid | num | 关联视频CID | 无为0 | +| msid | num | 0 | **作用尚不明确** | +| attr | num | 0 | **作用尚不明确** | +| limit | num | 0 | **作用尚不明确** | +| activityId | num | 0 | **作用尚不明确** | +| limitdesc | str | 空 | **作用尚不明确** | +| ctime | null | - | **作用尚不明确** | +| statistic | obj | 状态数 | | +| vipInfo | obj | UP主会员状态 | | +| collectIds | array | 歌曲所在的收藏夹ID | 需要登录(SESSDATA) | +| coin_num | num | 投币数 | | + +`data`中的`statistic`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---- | +| sid | num | 音频auID | | +| play | num | 播放次数 | | +| collect | num | 收藏数 | | +| comment | num | 评论数 | | +| share | num | 分享数 | | + +`data`中的`vipInfo`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ------------ | ----------------------------------- | +| type | num | 会员类型 | 0:无
1:月会员
2:年会员 | +| status | num | 会员状态 | 0:无
1:有 | +| due_date | num | 会员到期时间 | 时间戳 毫秒 | +| vip_pay_type | num | 会员开通状态 | 0:无
1:有 | + +`data`中的`collectIds`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------------- | ---- | +| 0 | num | 第1个所在的收藏夹ID | | +| n | num | 第(n+1)个所在的收藏夹ID | | +| …… | num | …… | …… | + +**示例:** + +查询音频`au13598`的基本信息 + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/song/info' \ +--data-urlencode 'sid=13598' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": { + "id": 13598, + "uid": 486183, + "uname": "排骨教主", + "author": "排骨教主", + "title": "牵丝戏", + "cover": "http://i0.hdslb.com/bfs/music/cf50d93b4dc08bfc6d3112041d6de0e56045ac5b.jpg", + "intro": "自制 这次要特别感谢山东省京剧院的各位年轻的老师们对我戏腔发声的悉心指导\n关注排骨的微博@排骨节操收割机\n排骨QQ群456237456\n感谢@妄北没睡够(新浪微博) 画的视频图,太美了!!!!!\n", + "lyric": "http://i0.hdslb.com/bfs/music/150587810313598.lrc", + "crtype": 1, + "duration": 239, + "passtime": 1501640683, + "curtime": 1590154258, + "aid": 2554020, + "bvid": "BV1us411S7E6", + "cid": 3990196, + "msid": 0, + "attr": 0, + "limit": 0, + "activityId": 0, + "limitdesc": "", + "ctime": null, + "statistic": { + "sid": 13598, + "play": 1028516, + "collect": 30914, + "comment": 523, + "share": 384 + }, + "vipInfo": { + "type": 2, + "status": 1, + "due_date": 1620316800000, + "vip_pay_type": 0 + }, + "collectIds": [ + 15967839 + ], + "coin_num": 1777 + } +} +``` + +
+ +## 查询歌曲TAG + +> http://www.bilibili.com/audio/music-service-c/web/tag/song + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ------ | -------- | ------------- | +| code | num | 返回值 | 0:成功 | +| msg | str | 错误信息 | 默认为success | +| data | array | TAG列表 | 无为空 | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| 0 | str | TAG1 | | +| n | str | TAG(n+1) | | +| …… | str | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---------- | ---------------- | +| type | str | song | **作用尚不明确** | +| subtype | num | ??? | **作用尚不明确** | +| key | num | TAG ID?? | **作用尚不明确** | +| info | str | TAG名 | | + +**示例:** + +查询音频`au15664`的TAG + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/tag/song' \ +--data-urlencode 'sid=15664' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": [ + { + "type": "song", + "subtype": 0, + "key": 1, + "info": "音乐" + }, + { + "type": "song", + "subtype": 1, + "key": 3, + "info": "人声" + }, + { + "type": "song", + "subtype": 2, + "key": 2, + "info": "翻唱" + }, + { + "type": "song", + "subtype": 3, + "key": 33, + "info": "日语" + }, + { + "type": "song", + "subtype": 5, + "key": 41, + "info": "网络歌曲" + }, + { + "type": "song", + "subtype": 4, + "key": 7, + "info": "流行" + } + ] +} +``` + +
+ +## 查询歌曲创作成员列表 + +> http://www.bilibili.com/audio/music-service-c/web/member/song + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ------ | ------------ | ------------- | +| code | num | 返回值 | 0:成功 | +| msg | str | 错误信息 | 默认为success | +| data | array | 成员类型列表 | 无为空 | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | str | 成员类型1 | | +| n | str | 成员类型(n+1) | | +| …… | str | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ------ | ------------ | ------------------------------------------------------------ | +| list | array | 成员列表 | | +| type | num | 成员类型代码 | 1:歌手
2:作词
3:作曲
4:编曲
5:后期/混音
7:封面制作
8:音源
9:调音
10:演奏
11:乐器
127:UP主 | + +`data`数组中的对象中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------- | ---- | +| 0 | str | 成员1 | | +| n | str | 成员(n+1) | | +| …… | str | …… | …… | + +`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ---------- | ---------------- | +| mid | num | 0 | **作用尚不明确** | +| name | str | 成员名 | | +| member_id | num | 成员ID?? | **作用尚不明确** | + +**示例:** + +查询音频`au815861`的创作成员信息 + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/member/song' \ +--data-urlencode 'sid=815861' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": [ + { + "list": [ + { + "mid": 0, + "name": "匀子Cyrena", + "member_id": 164341 + } + ], + "type": 1 + }, + { + "list": [ + { + "mid": 0, + "name": "圣月樱泪 ", + "member_id": 12349 + } + ], + "type": 2 + }, + { + "list": [ + { + "mid": 0, + "name": "Days的Wing翼", + "member_id": 13777 + } + ], + "type": 3 + }, + { + "list": [ + { + "mid": 0, + "name": "Days的Wing翼", + "member_id": 13777 + } + ], + "type": 4 + }, + { + "list": [ + { + "mid": 0, + "name": "嘟比Dubi", + "member_id": 40902 + } + ], + "type": 5 + }, + { + "list": [ + { + "mid": 0, + "name": "匀子Cyrena", + "member_id": 164222 + } + ], + "type": 127 + } + ] +} +``` + +
+ +## 获取歌曲歌词 + +> http://www.bilibili.com/audio/music-service-c/web/song/lyric + +*请求方式:GET* + +同「查询歌曲基本信息」中的lrc歌词 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----------------------------- | --------------- | ------------- | +| code | num | 返回值 | 0:成功 | +| msg | str | 错误信息 | 默认为success | +| data | 正确时:str
错误时:null | lrc格式歌词信息 | 无为空 | + +**示例:** + +获取音频`au15664`的歌词信息 + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/song/lyric' \ +--data-urlencode 'sid=15664' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": "[ar:萧忆情]\n\n[ti:威风堂堂]\n\n[00:26.64]引诱谁去摘下禁果\n\n[00:28.11]甜美滋味偷咬一口\n\n[00:30.03]触及到了最深处果核\n\n[00:31.82]身体开始颤抖\n\n[00:33.85]舌尖已濡湿双腿内侧\n\n[00:35.55]神经末梢警报响彻\n\n[00:37.39]自内而外逐渐变得火热\n\n[00:39.14]现在无须再遵守规则\n\n[00:42.14]还故作矜持说违心的话\n\n[00:45.84]为何动作不停下\n\n[00:47.85]停下来\n\n[00:48.39]已经快停不下来\n\n[00:49.42]还想索取更多\n\n[00:50.46]踩碎那PRIDE\n\n[00:51.41]忘记毫无意义的理智存在\n\n[00:53.27]让暧昧因子在四处的徘徊\n\n[00:55.19]给我收起你那\n\n[00:56.21]太虚伪的STYLE\n\n[00:57.01]直白赤裸的爱\n\n[00:58.00]最原始的DIVE\n\n[00:58.86]喘息中断续的声音叫期待\n\n[01:00.65]别掩饰此刻\n\n[01:01.50]那让人意乱情迷的SMILE\n\n[01:10.90]缓慢吐息迷惑双眼的雾\n\n[01:12.49]强制禁锢身下轻舔锁骨\n\n[01:14.23]就让封锁的心渐渐领悟\n\n[01:15.97]别继续装无辜\n\n[01:17.54]开始脱下的衬衫\n\n[01:19.08]最后的纽扣解开它\n\n[01:20.98]快感get\n\n[01:21.85]从此不顾一切\n\n[01:23.32]还在犹豫什么\n\n[01:24.78]Darling\n\n[01:26.54]站在自由世界的正中央\n\n[01:30.09]窥探你幻想的是否太过浪荡\n\n[01:33.99]太难耐\n\n[01:34.41]分分秒秒太难耐\n\n[01:35.61]床笫间的狩猎\n\n[01:36.63]充满野心的TRY\n\n[01:37.66]不承认口头上无理的摊牌\n\n[01:39.58]只想要在身体里深埋\n\n[01:41.34]现在由我掌控\n\n[01:42.36]随心所欲的LIFE\n\n[01:43.40]给你要的未来\n\n[01:44.41]永远不腐坏\n\n[01:45.32]所有的阴暗面统统藏起来\n\n[01:46.70]仅为你一人展现那能骄傲夸耀的MIND\n\n[01:49.90]将不安的情绪碾至粉末\n\n[01:53.14]抹在你胸口印上最鲜艳的红\n\n[02:21.06]别打算缩起来置身之外\n\n[02:22.64]无论何时\n\n[02:23.27]NO TIME\n\n[02:23.58]ALL RIGHT\n\n[02:24.21]打破一切的羞耻值\n\n[02:25.43]哪里奇怪\n\n[02:26.06]哪里奇怪\n\n[02:26.68]哪里奇怪\n\n[02:27.30]BURN BURN BURN\n\n[02:28.22]想要的就是那\n\n[02:29.17]啊 没错\n\n[02:29.87]再给我更多的触摸\n\n[02:31.62]顺位交换贴近肌肤的DANCE\n\n[02:33.34]好吧 肆无忌惮\n\n[02:34.98]停下来\n\n[02:35.35]已经快停不下来\n\n[02:36.50]还想索取更多\n\n[02:37.68]踩碎那PRIDE\n\n[02:38.38]忘记毫无意义的理智存在\n\n[02:40.27]让暧昧因子在四处的徘徊\n\n[02:42.11]给我收起你那\n\n[02:43.16]太虚伪的STYLE\n\n[02:44.00]直白赤裸的爱\n\n[02:45.06]最原始的DIVE\n\n[02:45.90]喘息中断续的声音叫期待\n\n[02:47.76]别掩饰此刻那让人意乱情迷的SMILE\n\n[02:50.64]将不安的情绪碾至粉末\n\n[02:54.09]抹在你胸口印上最鲜艳的红\n\n[02:58.35]抛弃所有只想拥有此刻\n\n" +} +``` + +
diff --git a/audio/music_list.md b/audio/music_list.md new file mode 100644 index 0000000..c861c0a --- /dev/null +++ b/audio/music_list.md @@ -0,0 +1,290 @@ +# 歌单&音频收藏夹详细信息 + +## 查询自己创建的歌单 + +> http://www.bilibili.com/audio/music-service-c/web/collections/list + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`存在且不为0 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| pn | num | 页码 | 必要 | | +| ps | num | 每页项数 | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----------------------------- | -------- | ----------------------------------------------------- | +| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:未登录 | +| msg | str | 错误信息 | 默认为success | +| data | 正确时:obj
错误时:null | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ------ | ------------ | ---- | +| curPage | num | 当前页码 | | +| pageCount | num | 总计页数 | | +| totalSize | num | 总计收藏夹数 | | +| pageSize | num | 当前页面项数 | | +| data | array | 歌单列表 | | + +`data`中的`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | obj | 音频收藏夹ID1 | | +| n | obj | 音频收藏夹ID(n+1) | | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ------ | ------------------------ | -------------------------------- | +| id | num | 音频收藏夹ID | | +| uid | num | 创建用户UID | | +| uname | str | 创建用户昵称 | | +| title | str | 歌单标题 | | +| type | num | 收藏夹属性 | 0:普通收藏夹
1:默认收藏夹 | +| published | num | 是否公开 | 0:不公开
1:公开 | +| cover | str | 歌单封面图片url | | +| ctime | num | 歌单创建时间 | 时间戳 | +| song | num | 歌单中的音乐数量 | | +| desc | str | 歌单备注信息 | | +| sids | array | 歌单中的音乐 | | +| menuId | num | 音频收藏夹对应的歌单amID | | +| statistic | obj | 歌单状态数信息 | | + +`data`中的`sids`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---------------- | +| 0 | num | 收藏的音频auID1 | | +| n | num | 收藏的音频auID(n+1) | 按照歌单顺序排列 | +| …… | num | …… | …… | + +`data`中的`statistic`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------------------------ | ---- | +| sid | num | 音频收藏夹对应的歌单amID | | +| play | num | 播放次数 | | +| collect | num | 点赞次数 | | +| comment | null | - | | +| share | num | 分享次数 | | + +**示例:** + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/collections/list' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx;DedeUserID=1;' +``` + +共计创建了两个歌单,如下 + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": { + "curPage": 1, + "pageCount": 1, + "totalSize": 2, + "pageSize": 2, + "data": [ + { + "id": 15967839, + "uid": 293793435, + "uname": "社会易姐QwQ", + "title": "默认歌单", + "type": 1, + "published": 1, + "cover": "http://i0.hdslb.com/bfs/music/1e079693701d2f525850c288fcc48fa4259a73f6.jpg", + "ctime": 1519295502, + "song": 13, + "desc": "", + "sids": [ + 11673, + 276404, + 15664, + 737904, + 108588, + 1286999, + 658085, + 682118, + 736952, + 48716, + 15711, + 13598, + 57744 + ], + "menuId": 15958713, + "statistic": { + "sid": 15958713, + "play": 0, + "collect": 0, + "comment": null, + "share": 0 + } + }, + { + "id": 30894022, + "uid": 293793435, + "uname": "社会易姐QwQ", + "title": "test", + "type": 0, + "published": 1, + "cover": "", + "ctime": 1590154346, + "song": 0, + "desc": "test1", + "sids": [], + "menuId": 30866686, + "statistic": { + "sid": 30866686, + "play": 0, + "collect": 0, + "comment": 0, + "share": 0 + } + } + ] + } +} +``` + +
+ +## 查询音频收藏夹(默认歌单)信息 + +> https://www.bilibili.com/audio/music-service-c/web/collections/info + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`存在且不为0 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------ | ------ | ------------------ | +| sid | num | 音频收藏夹ID | 必要 | 必须为默认收藏夹ID | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----------------------------- | -------- | ----------------------------------------------------- | +| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:未登录 | +| msg | str | 错误信息 | 默认为success | +| data | 正确时:obj
错误时:null | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ------ | ------------------------ | ---------------------- | +| id | num | 音频收藏夹ID | | +| uid | num | 创建用户UID | | +| uname | str | 创建用户昵称 | | +| title | str | 默认歌单 | 恒为`默认歌单` | +| type | num | 1 | 恒为`1` | +| published | num | 是否公开 | 0:不公开
1:公开 | +| cover | str | 歌单封面图片url | | +| ctime | num | 歌单创建时间 | 时间戳 | +| song | num | 歌单中的音乐数量 | | +| desc | str | 空 | 恒为空 | +| sids | array | 歌单中的音乐 | | +| menuId | num | 音频收藏夹对应的歌单amID | 与普通歌单不同通用 | +| statistic | obj | 歌单状态数信息 | | + +`data`中的`sids`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---------------- | +| 0 | num | 收藏的音频auID1 | | +| n | num | 收藏的音频auID(n+1) | 按照歌单顺序排列 | +| …… | num | …… | …… | + +`data`中的`statistic`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------------------------ | ---- | +| sid | num | 音频收藏夹对应的歌单amID | | +| play | num | 0 | | +| collect | num | 0 | | +| comment | null | - | | +| share | num | 0 | | + +**示例:** + +查询我的默认歌单,ID为` 15967839 ` + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/collections/info' \ +--data-urlencode 'sid=15967839 ' \ +-b 'SESSDATA=xxx;DedeUserID=1;' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": { + "id": 15967839, + "uid": 293793435, + "uname": "社会易姐QwQ", + "title": "默认歌单", + "type": 1, + "published": 1, + "cover": "http://i0.hdslb.com/bfs/music/1e079693701d2f525850c288fcc48fa4259a73f6.jpg", + "ctime": 1519295502, + "song": 13, + "desc": "", + "sids": [ + 11673, + 276404, + 15664, + 737904, + 108588, + 1286999, + 658085, + 682118, + 736952, + 48716, + 15711, + 13598, + 57744 + ], + "menuId": 15958713, + "statistic": { + "sid": 15958713, + "play": 0, + "collect": 0, + "comment": null, + "share": 0 + } + } +} +``` + +
+ + diff --git a/audio/musicstream_url.md b/audio/musicstream_url.md new file mode 100644 index 0000000..1b865b3 --- /dev/null +++ b/audio/musicstream_url.md @@ -0,0 +1,276 @@ +# 音频流URL + + + +音质`qn`参数: + +| 代码 | 含义 | +| ---- | -------------------- | +| 0 | 流畅 128K | +| 1 | 标准 192K | +| 2 | 高品质 320K | +| 3 | 无损 FLAC (大会员) | + +## 获取音频流URL(无法获取付费音频)(web端) + +> http://www.bilibili.com/audio/music-service-c/web/url + +*请求方式:GET* + +**注:web端无法播放完整付费歌曲,付费歌曲为30s试听片段** + +本接口仅能获取192K音质的音频 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ----------------------------------------------------------- | +| code | num | 返回值 | 0:成功
7201006:未找到或已下架
72000000:请求错误 | +| msg | str | 错误信息 | 默认为success | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | --------- | --------------------------------------- | +| sid | num | 音频auID | | +| type | num | 音质标识 | -1:试听片段(192K)
1:192K | +| info | str | 空 | **作用尚不明确** | +| timeout | num | 有效时长 | 单位为秒
一般为3h | +| size | num | 文件大小 | 单位为字节
当`type`为-1时`size`为0 | +| cdns | array | 音频流url | | +| qualities | null | - | | +| title | null | - | | +| cover | null | - | | + +`data`对象的`cdns`数组: + + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | str | 音频流url | | +| 1 | str | 备用音频流url | | + +**示例:** + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/url' \ +--data-urlencode 'sid=sid=15664' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": { + "sid": 15664, + "type": 1, + "info": "", + "timeout": 10800, + "size": 4853263, + "cdns": [ + "https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=0ecd3c7a8d9539f260239d8fa4c093db", + "https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=f3fe53aff56655b1b7264ae4ab65872e" + ], + "qualities": null, + "title": null, + "cover": null + } +} +``` + +
+ +## 获取音频流URL(可获取付费音频)(双端) + +> http://api.bilibili.com/audio/music-service-c/url + +*请求方式:GET* + +认证方式:APP或Cookie(SESSDATA) + +**注:付费音乐需要有带大会员或音乐包的账号登录(Cookie或APP),否则为试听片段** + +无损音质需要登录的用户为会员 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | -------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| songid | num | 音频auID | 必要 | | +| quality | num | 音质代码 | 必要 | **详情见上表** | +| privilege | num | 必须为`2` | 必要 | | +| mid | num | 当前用户UID | 必要 | 可为任意值 | +| platform | str | 平台标识 | 必要 | 可为任意值 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ----------------------------------------------------------- | +| code | num | 返回值 | 0:成功
7201006:未找到或已下架
72000000:请求错误 | +| msg | str | 错误信息 | 默认为success | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | ----------- | ------------------------------------------------------------ | +| sid | num | 音频auID | | +| type | num | 音质标识 | -1:试听片段(192K)
0:128K
1:192K
2:320K
3:FLAC | +| info | str | 空 | **作用尚不明确** | +| timeout | num | 有效时长 | 单位为秒
一般为3h | +| size | num | 文件大小 | 单位为字节
当`type`为-1时`size`为0 | +| cdns | array | 音频流url | | +| qualities | array | 音质列表 | | +| title | str | 音频标题 | | +| cover | str | 音频封面url | | + +`data`对象的`cdns`数组: + + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | str | 音频流url | | +| 1 | str | 备用音频流url | | + +`data`对象的`qualities`数组: + + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---------------- | +| 0 | obj | 音质1 | 音质由高向低顺序 | +| n | obj | 音质(n+1) | | + +`qualities`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | ---------------------- | +| type | num | 音质代码 | **详情见上表** | +| desc | str | 音质名称 | | +| size | num | 该音质的文件大小 | 单位为字节 | +| bps | str | 比特率标签 | | +| tag | str | 音质标签 | | +| require | num | 是否需要会员权限 | 0:不需要
1:需要 | +| requiredesc | str | 会员权限标签 | | + +**示例:** + +获取音频`au682118`的音频流url,音质为`3(无损)` + +Cookie方式: + +```shell +curl -G 'http://api.bilibili.com/audio/music-service-c/url +--data-urlencode 'songid=682118' \ +--data-urlencode 'quality=3' \ +--data-urlencode 'privilege=2' \ +--data-urlencode 'platform=android' \ +--data-urlencode 'mid=293793435' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/audio/music-service-c/url +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'songid=682118' \ +--data-urlencode 'quality=3' \ +--data-urlencode 'privilege=2' \ +--data-urlencode 'platform=android' \ +--data-urlencode 'mid=293793435' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": { + "sid": 682118, + "type": 3, + "info": "", + "timeout": 10800, + "size": 34456494, + "cdns": [ + "https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d", + "https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=3ac7d94dda5664f6f95dbfffeb289744" + ], + "qualities": [ + { + "type": 3, + "desc": "无损音质", + "size": 34456494, + "bps": "", + "tag": "SQ", + "require": 1, + "requiredesc": "付费享受" + }, + { + "type": 2, + "desc": "高品质", + "size": 10788682, + "bps": "320kbit/s", + "tag": "HQ", + "require": 0, + "requiredesc": "" + }, + { + "type": 1, + "desc": "标准", + "size": 6491973, + "bps": "192kbit/s", + "tag": "", + "require": 0, + "requiredesc": "" + }, + { + "type": 0, + "desc": "流畅", + "size": 4343667, + "bps": "128kbit/s", + "tag": "", + "require": 0, + "requiredesc": "" + } + ], + "title": "aLIEz", + "cover": "http://i0.hdslb.com/bfs/music/61d3f8cfdce14d2d1b006af59559c9bd22a2d21b.jpg" + } +} +``` + +
+ +## 音频流的获取 + +将`data`.`cdns`.`[0]`或`data`.`cdns`.`[1]`中的内容作为url进行GET操作 + +需要验证请求`user-agent` 不为空 + +**user-agent错误的情况会返回403 Forbidden**故无法获取** + +**以上述音频url为例:** + +```shell +wget 'https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d' \ +-O 'Download_music.flac' +``` + +响应正文将返回一个flac文件 \ No newline at end of file diff --git a/audio/status_number.md b/audio/status_number.md new file mode 100644 index 0000000..0e73ee1 --- /dev/null +++ b/audio/status_number.md @@ -0,0 +1,63 @@ +# 音频状态数 + +## 歌曲状态数 + +>http://www.bilibili.com/audio/music-service-c/web/stat/song + +*请求方式:GET* + +唯缺投币数2333333 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| sid | num | 音频auID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------------------------------- | +| code | num | 返回值 | 0:成功
72000000:参数错误 | +| msg | str | 错误信息 | 默认为success | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---- | +| sid | num | 音频auID | | +| play | num | 播放次数 | | +| collect | num | 收藏数 | | +| comment | num | 评论数 | | +| share | num | 分享数 | | + +**示例:** + +查询歌曲`au15664`的状态数 + +```shell +curl -G 'http://www.bilibili.com/audio/music-service-c/web/stat/song' \ +--data-urlencode 'sid=15664' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "data": { + "sid": 15664, + "play": 1377390, + "collect": 44340, + "comment": 2756, + "share": 4114 + } +} +``` + +
diff --git a/bangumi/info.md b/bangumi/info.md new file mode 100644 index 0000000..05ec62c --- /dev/null +++ b/bangumi/info.md @@ -0,0 +1,417 @@ +# 剧集基本信息 + +## 剧集基本信息(mdID方式) + + +> http://api.bilibili.com/pgc/review/user + +*请求方式:GET* + +鉴权方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | -------- | ------ | ---- | +| media_id | str | 剧集mdID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:错误 | +| message | str | 错误信息 | 默认为success | +| result | obj | 信息本体 | | + +`result`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------ | ---------------- | +| media | obj | 剧集信息 | | +| review | obj | 用户操作信息 | 仅登录时存在此项 | + +`result`中的`media`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | -------------- | -------------------------- | +| areas | array | 地区 | | +| cover | str | 封面图片url | | +| media_id | num | 剧集mdID | | +| new_ep | obj | 最新一话信息 | | +| rating | obj | 评分信息 | | +| season_id | int | 剧集ssID | | +| share_url | url | 剧集详情页连接 | | +| title | str | 标题 | | +| type_name | str | 剧集类型 | `番剧`、`国创`、`电影`等等 | + +`media`中的`areas`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 地区信息1 | | +| n | obj | 地区信息(n+1) | | +| …… | obj | …… | | + +`areas`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ------------------------------------------------------------ | +| id | num | 所属地区编号 | 1:中国大陆
2:日本
3:美国
4:英国
6:中国香港
8:韩国
9:法国
10:泰国
13:西班牙
15:德国
35:意大利
39:新西兰
43:澳大利亚 | +| name | str | 所属地区名称 | | + +`media`中的`new_ep`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ---------------- | -------------------------- | +| id | int | 最新一话的epID | | +| index | str | 最新一话名称 | | +| index_show | str | 最新一话显示名称 | eg. `第1话`、`更新至第4话` | + +`media`中的`rating`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------ | ---- | +| count | num | 总计评分人数 | | +| score | num | 评分 | | + +`result`中的`review`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---- | ------------ | +| is_coin | num | 0 | 作用尚不明确 | +| is_open | num | 1 | 作用尚不明确 | + +**示例:** + +查询剧集`md28220978`的基本信息 + +```shell +curl -G 'http://api.bilibili.com/pgc/review/user' \ +--data-urlencode 'media_id=28220978' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "success", + "result": { + "media": { + "areas": [ + { + "id": 2, + "name": "日本" + } + ], + "cover": "http://i0.hdslb.com/bfs/bangumi/8aa0bfce050c72c6626b63d3093a88527c251026.jpg", + "media_id": 28220978, + "new_ep": { + "id": 21278, + "index": "14", + "index_show": "全14话" + }, + "rating": { + "count": 53376, + "score": 9.9 + }, + "season_id": 1172, + "share_url": "https://www.bilibili.com/bangumi/media/md28220978", + "title": "轻音少女 第一季", + "type_name": "番剧" + }, + "review": { + "is_coin": 0, + "is_open": 1 + } + } +} +``` + +
+ +## 获取剧集明细(web端)(ssID/epID方式) + +> http://api.bilibili.com/pgc/view/web/season + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | -------- | ------------ | ------------------------ | +| season_id | num | 番剧ssID | 必要(可选) | season_id与ep_id任选其一 | +| ep_id | num | 剧集epID | 必要(可选) | season_id与ep_id任选其一 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------- | +| code | num | 返回值 | 0:成功
-404:错误 | +| message | str | 错误信息 | 默认为success | +| ttl | num | 1 | 作用尚不明确 | +| result | obj | 信息本体 | | + +`result`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ------ | -------------------------- | ------------------------------------------ | +| activity | obj | 参与的活动 | | +| alias | str | 空 | 作用尚不明确 | +| bkg_cover | str | 网页背景图片url | 无则为空 | +| cover | str | 剧集封面图片url | | +| episodes | array | 正片剧集列表 | | +| evaluate | str | 简介 | | +| jp_title | str | 空 | 作用尚不明确 | +| link | str | 简介页面url | | +| media_id | num | 剧集mdID | | +| mode | num | 2 | 作用尚不明确 | +| new_ep | obj | 更新信息 | | +| payment | obj | 会员&付费信息 | 若无相关内容则无此项 | +| positive | obj | | | +| publish | obj | 发布信息 | | +| rating | obj | 评分信息 | 若无相关内容则无此项 | +| record | str | 备案号 | 无则为空 | +| rights | obj | 属性标志信息 | | +| season_id | num | 番剧ssID | | +| season_title | str | 剧集标题 | | +| seasons | array | 同系列所以季信息 | | +| section | array | 花絮、PV、番外等非正片内容 | 若无相关内容则无此项 | +| series | obj | 系列信息 | | +| share_copy | str | 《{标题}》+{备注} | | +| share_sub_title | str | 备注 | | +| share_url | str | 番剧播放页面url | | +| show | obj | 网页全屏标志 | | +| square_cover | str | 方形封面图片url | | +| stat | obj | 状态数 | | +| status | num | | | +| subtitle | str | 剧集副标题 | | +| title | str | 剧集标题 | | +| total | num | 总计正片集数 | 未完结:大多为-1
已完结:正整数 | +| type | num | 剧集类型 | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | +| up_info | obj | UP主信息 | 若无相关内容则无此项 | + +`result`中的`activity`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | -------- | ------------ | +| head_bg_url | str | 空 | 作用尚不明确 | +| id | num | 活动id | | +| title | str | 活动标题 | | + +`result`中的`episodes`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------ | +| 0 | obj | 正片第1集 | | +| n | obj | 正片第(n+1)集 | 按照顺序排列 | +| …… | obj | | | + +`episodes`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | --------------------------------- | -------------------- | +| aid | num | 单集稿件avID | | +| badge | str | 标签文字 | 例如`会员`、`限免`等 | +| badge_info | obj | | | +| badge_type | num | | | +| bvid | str | 单集稿件bvID | | +| cid | num | 视频CID | | +| cover | str | 单集封面url | | +| dimension | obj | 分辨率信息 | | +| from | str | | | +| id | num | 单集epID | | +| link | str | 单集网页url | | +| long_title | str | 单集完整标题 | | +| pub_time | num | 发布时间 | 时间戳 | +| pv | num | 0 | 作用尚不明确 | +| release_date | str | 空 | 作用尚不明确 | +| rights | obj | | | +| share_copy | str | 《{标题}》+第n话+{单集完整标题} | | +| share_url | str | 单集网页url | | +| short_link | str | 单集网页url短链接 | | +| status | num | | | +| subtitle | str | 单集副标题 | 观看次数文字 | +| title | str | 单集标题 | | +| vid | str | 单集vID | vupload_+{CID} | + + + + + + + +`result`中的`new_ep`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------ | ---------------- | +| desc | str | 更新备注 | | +| id | num | 最新一话epID | | +| is_new | num | 是否最新发布 | 0:否
1:是 | +| title | str | 最新一话标题 | | + +`result`中的`payment`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ---- | ---- | ---- | +| discount | num | | | +| pay_type | obj | | | +| price | str | | | +| promotion | str | | | +| tip | str | | | +| vip_discount | num | | | +| vip_first_promotion | str | | | +| vip_promotion | str | | | + + + +`result`中的`positive`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---- | ---- | +| id | num | | | +| title | str | | | + +`result`中的`publish`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | ---------------- | ------------------------ | +| is_finish | num | 完结状态 | 0:未完结
1:已完结 | +| is_started | num | 是否发布 | 0:未发布
1:已发布 | +| pub_time | str | 发布时间 | YYYY-MM-DDD hh:mm:ss | +| pub_time_show | str | 发布时间文字介绍 | | +| unknow_pub_date | num | 0 | 作用尚不明确 | +| weekday | num | 0 | 作用尚不明确 | + +`result`中的`rating`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------ | ---- | +| count | num | 总计评分人数 | | +| score | num | 评分 | | + +`result`中的`rights`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------- | ---- | -------- | ------------------------------- | +| allow_bp | num | | | +| allow_bp_rank | num | | | +| allow_download | num | | | +| allow_review | num | | | +| area_limit | num | | | +| ban_area_show | num | | | +| can_watch | num | | | +| copyright | str | 版权标志 | bilibili:授权
dujia:独家 | +| forbid_pre | num | | | +| is_cover_show | num | | | +| is_preview | num | | | +| only_vip_download | num | | | +| resource | str | | | +| watch_platform | num | | | + +`result`中的`seasons`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ------------ | +| 0 | obj | 同系列剧集1 | | +| n | obj | 同系列剧集(n+1) | 按照顺序排列 | +| …… | obj | | | + +`seasons`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ---- | ---- | +| badge | str | | | +| badge_info | obj | | | +| badge_type | num | | | +| cover | str | | | +| media_id | str | | | +| new_ep | num | | | +| season_id | obj | | | +| season_title | num | | | +| season_type | str | | | +| stat | obj | | | + + + + + + + + + +`result`中的`section`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ------------ | +| 0 | obj | 其他内容块1 | | +| n | obj | 其他内容块(n+1) | 按照顺序排列 | +| …… | obj | | | + +`section`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ----- | -------- | ---- | +| episode_id | num | 0 | | +| episodes | array | 板块内容 | | +| id | num | 板块ID? | | +| title | str | 板块标题 | | +| type | num | ? | | + + + + + + + + + + + +`result`中的`series`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ------ | ---- | +| series_id | num | 系列ID | | +| series_title | str | 系列名 | | + +`result`中的`show`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | -------- | -------------------- | +| wide_screen | num | 是否全屏 | 0:正常
1:全屏 | + +`result`中的`stat`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------ | ---- | +| coins | num | 投币数 | | +| danmakus | num | 弹幕数 | | +| favorites | num | 收藏数 | | +| likes | num | 点赞数 | | +| reply | num | 评论数 | | +| share | num | 分享数 | | +| views | num | 播放数 | | + +`result`中的`up_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ----------- | ---- | +| avatar | str | 头像图片url | | +| follower | num | 粉丝数 | | +| is_follow | num | 0 | | +| mid | num | UP主UID | | +| pendant | obj | | | +| theme_type | num | 0 | | +| uname | str | UP主昵称 | | +| verify_type | num | | | +| vip_status | num | | | +| vip_type | num | | | + +## \ No newline at end of file diff --git a/blackroom/banlist.md b/blackroom/banlist.md index a4598da..789624f 100644 --- a/blackroom/banlist.md +++ b/blackroom/banlist.md @@ -1,48 +1,71 @@ -# 封禁用户公示 +# 封禁公示 -**违规类型总览:** +**已知的违规类型代码总览:** | 代码 | 含义 | | ---- | -------------------- | +| 1 | 刷屏 | +| 2 | 抢楼 | +| 3 | 发布色情低俗信息 | | 4 | 发布赌博诈骗信息 | | 5 | 发布违禁相关信息 | | 6 | 发布垃圾广告信息 | | 7 | 发布人身攻击言论 | | 8 | 发布侵犯他人隐私信息 | | 9 | 发布引战言论 | +| 10 | 发布剧透信息 | | 11 | 恶意添加无关标签 | | 12 | 恶意删除他人标签 | | 13 | 发布色情信息 | | 14 | 发布低俗信息 | | 15 | 发布暴力血腥信息 | | 16 | 涉及恶意投稿行为 | +| 17 | 发布非法网站信息 | | 18 | 发布传播不实信息 | | 19 | 发布怂恿教唆信息 | +| 20 | 恶意刷屏 | | 21 | 账号违规 | +| 22 | 恶意抄袭 | | 23 | 冒充自制原创 | | 24 | 发布青少年不良内容 | +| 25 | 破坏网络安全 | | 26 | 发布虚假误导信息 | | 27 | 仿冒官方认证账号 | +| 28 | 发布不适宜内容 | +| 29 | 违反运营规则 | +| 30 | 恶意创建话题 | | 31 | 发布违规抽奖 | | 32 | 恶意冒充他人 | +**已知的违规来源代码:** +| 代码 | 含义 | +| ---- | -------- | +| 1 | 评论 | +| 2 | 弹幕 | +| 3 | 私信 | +| 4 | 标签 | +| 5 | 个人资料 | +| 6 | 投稿 | +| 8 | 专栏 | +| 10 | 动态 | +| 11 | 相簿 | ## 获取封禁用户公示列表 > http://api.bilibili.com/x/credit/blocked/list -*方式:GET* +*请求方式:GET* 每页最多10项 -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------------------------------------------------ | -| btype | url | 来源筛选 | 非必要 | 空:全部类型
0:系统封禁
1:风纪仲裁 | -| otype | url | 类型筛选 | 非必要 | 0:全部类型
1:评论
2:弹幕
3:私信
4:标签
5:个人资料
6:投稿
8:专栏
10:动态
11:相簿 | -| pn | url | 页码 | 非必要 | 默认为1 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---------------------------------------------- | +| btype | num | 来源筛选 | 非必要 | 空:全部类型
0:系统封禁
1:风纪仲裁 | +| otype | num | 类型筛选 | 非必要 | **见上表**
**0:全部类型** | +| pn | num | 页码 | 非必要 | 默认为1 | **json回复:** @@ -52,8 +75,8 @@ | ------- | ------ | -------- | ------------ | | code | num | 返回值 | 0:成功 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 公示列表 | | +| ttl | num | 1 | | +| data | array | 公示列表 | | `data`数组: @@ -65,39 +88,47 @@ `data`数组中的对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ---- | --------------- | ------------------------------------------------------------ | -| id | num | 封禁公示ID | | -| uname | str | 对象用户名 | | -| face | str | 对象用户头像url | | -| uid | num | 对象用户UID | | -| originTitle | str | 来源标题 | | -| blockedRemark | str | | | -| originUrl | str | 来源url | | -| originContentModify | str | 裁决正文 | | -| originType | num | 来源类型 | 0:全部类型
1:评论
2:弹幕
3:私信
4:标签
5:个人资料
6:投稿
8:专栏
10:动态
11:相簿 | -| originTypeName | str | 来源名 | | -| punishTitle | str | 公示标题 | | -| punishTime | num | 处罚时间 | 时间戳 | -| punishType | num | 处理手段类型 | 2:封禁
3:永久封禁 | -| punishTypeName | str | 处理手段名 | | -| moralNum | num | 0 | 作用尚不明确 | -| blockedDays | num | 封禁天数 | 永封为0 | -| publishStatus | num | 1 | 作用尚不明确 | -| blockedType | num | 处理来源 | 0:系统封禁
1:风纪仲裁 | -| blockedForever | num | 是否永封 | 0:非永封
1:永封 | -| reasonType | num | 违规类型 | **违规类型见表** | -| reasonTypeName | str | 违规类型名称 | | -| operatorName | str | 空 | 作用尚不明确 | -| caseId | num | 仲裁信息 | 心态封禁时为0 | -| ctime | num | 创建时间 | 时间戳 | -| commentSum | num | 该条目评论数 | | +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ---- | --------------- | ---------------------------- | +| id | num | 封禁公示ID | | +| uname | str | 对象用户名 | | +| face | str | 对象用户头像url | | +| uid | num | 对象用户UID | | +| originTitle | str | 来源标题 | | +| blockedRemark | str | | | +| originUrl | str | 来源url | | +| originContentModify | str | 裁决正文 | | +| originType | num | 来源类型 | **见上表** | +| originTypeName | str | 来源名 | | +| punishTitle | str | 公示标题 | | +| punishTime | num | 处罚时间 | 时间戳 | +| punishType | num | 处理手段类型 | 2:封禁
3:永久封禁 | +| punishTypeName | str | 处理手段名 | | +| moralNum | num | 0 | 作用尚不明确 | +| blockedDays | num | 封禁天数 | 永封为0 | +| publishStatus | num | 1 | 作用尚不明确 | +| blockedType | num | 处理来源 | 0:系统封禁
1:风纪仲裁 | +| blockedForever | num | 是否永封 | 0:非永封
1:永封 | +| reasonType | num | 违规类型 | **见上表** | +| reasonTypeName | str | 违规类型名称 | | +| operatorName | str | 空 | 作用尚不明确 | +| caseId | num | 仲裁信息ID | 系统封禁时固定为0 | +| ctime | num | 创建时间 | 时间戳 | +| commentSum | num | 该条目评论数 | | **示例:** 查询所有类型,所有来源的第1页的封禁公示列表 -http://api.bilibili.com/x/credit/blocked/list?btype=&otype=0&pn=1 +```shell +curl -G 'http://api.bilibili.com/x/credit/blocked/list' \ +--data-urlencode 'btype=' \ +--data-urlencode 'otype=0' \ +--data-urlencode 'pn=1' +``` + +
+查看响应示例: ```json { @@ -129,26 +160,52 @@ http://api.bilibili.com/x/credit/blocked/list?btype=&otype=0&pn=1 "operatorName": "", "caseId": 0, "ctime": 1587494264, - "commentSum": 566 + "commentSum": 606 + }, { + "id": 1091621, + "uname": "风纪委员会会长零八", + "face": "http://i1.hdslb.com/bfs/face/6ea4296f7591b9a724f540a41d48df728a0881b0.jpg", + "uid": 305542374, + "originTitle": "巅峰赛大乔游走辅助,队友说自家法师湖南卫视都不敢像法师这么演哈哈!", + "blockedRemark": "内容涉及传播不实信息", + "originUrl": "https://www.bilibili.com/video/av882552073", + "originContentModify": "

具体违规情况说明:

  1. 经查实确认,该账号从未申请从未担任过风纪委员职务。

  2. 发布多条 “您的稿件/评论涉及违规,即将下架/删除”的恐吓性言论。

  3. 谎称曾经封禁了某个up主,事实上风纪委员无法封禁up主投稿,且该up也从未被封禁。

  4. 威胁他人“要不要到小黑屋坐坐”,事实上风纪委员无法直接封禁用户。通过管理员封禁或风纪委员投票封禁的账号亦有据实申诉的机会。

  5. 故意挑衅他人“那你可以试着骂我,我们试试(举报)有没有用”。

  6. 误导他人“此评论区和弹幕无需保持礼仪”。

批注:

如您发现:假冒风纪委员身份招摇撞骗、炫耀风纪委员身份、借风纪委员职务之便威胁恐吓他人、在风纪观点中发布违规内容等违规行为,请及时联系我们进行举报。您可直接将举报材料发送至judgement@bilibili.com。

(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)

【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】

", + "originType": 1, + "originTypeName": "评论", + "punishTitle": "在评论中发布传播不实信息", + "punishTime": 1585560309, + "punishType": 2, + "punishTypeName": "封禁", + "moralNum": 0, + "blockedDays": 15, + "publishStatus": 1, + "blockedType": 0, + "blockedForever": 0, + "reasonType": 18, + "reasonTypeName": "发布传播不实信息", + "operatorName": "", + "caseId": 0, + "ctime": 1585560309, + "commentSum": 2379 }, - …… - ] + ………… + ] } ``` - +
## 封禁处理公示详情 > http://api.bilibili.com/x/credit/blocked/info -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ---------- | ------ | ---- | -| id | url | 封禁公示ID | 必要 | | +| id | num | 封禁公示ID | 必要 | | **json回复:** @@ -158,44 +215,50 @@ http://api.bilibili.com/x/credit/blocked/list?btype=&otype=0&pn=1 | ------- | ---- | -------- | ----------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
-404:无此信息 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ---- | --------------- | ------------------------------------------------------------ | -| id | num | 封禁公示ID | | -| uname | str | 对象用户名 | | -| face | str | 对象用户头像url | | -| uid | num | 对象用户UID | | -| originTitle | str | 来源标题 | | -| blockedRemark | str | | | -| originUrl | str | 来源url | | -| originContentModify | str | 裁决正文 | | -| originType | num | 来源类型 | 0:全部类型
1:评论
2:弹幕
3:私信
4:标签
5:个人资料
6:投稿
8:专栏
10:动态
11:相簿 | -| originTypeName | str | 来源名 | | -| punishTitle | str | 公示标题 | | -| punishTime | num | 处罚时间 | 时间戳 | -| punishType | num | 处理手段类型 | 2:封禁
3:永久封禁 | -| punishTypeName | str | 处理手段名 | | -| moralNum | num | 0 | 作用尚不明确 | -| blockedDays | num | 封禁天数 | 永封为0 | -| publishStatus | num | 1 | 作用尚不明确 | -| blockedType | num | 处理来源 | 0:系统封禁
1:风纪仲裁 | -| blockedForever | num | 是否永封 | 0:非永封
1:永封 | -| reasonType | num | 违规类型 | **违规类型见表** | -| reasonTypeName | str | 违规类型名称 | | -| operatorName | str | 空 | 作用尚不明确 | -| caseId | num | 仲裁信息 | 心态封禁时为0 | -| ctime | num | 创建时间 | 时间戳 | -| commentSum | num | 该条目评论数 | | +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ---- | --------------- | ---------------------------- | +| id | num | 封禁公示ID | | +| uname | str | 对象用户名 | | +| face | str | 对象用户头像url | | +| uid | num | 对象用户UID | | +| originTitle | str | 来源标题 | | +| blockedRemark | str | | | +| originUrl | str | 来源url | | +| originContentModify | str | 裁决正文 | | +| originType | num | 来源类型 | **见上表** | +| originTypeName | str | 来源名 | | +| punishTitle | str | 公示标题 | | +| punishTime | num | 处罚时间 | 时间戳 | +| punishType | num | 处理手段类型 | 2:封禁
3:永久封禁 | +| punishTypeName | str | 处理手段名 | | +| moralNum | num | 0 | 作用尚不明确 | +| blockedDays | num | 封禁天数 | 永封为0 | +| publishStatus | num | 1 | 作用尚不明确 | +| blockedType | num | 处理来源 | 0:系统封禁
1:风纪仲裁 | +| blockedForever | num | 是否永封 | 0:非永封
1:永封 | +| reasonType | num | 违规类型 | **违规类型见表** | +| reasonTypeName | str | 违规类型名称 | | +| operatorName | str | 空 | 作用尚不明确 | +| caseId | num | 仲裁信息 | 系统封禁时固定为0 | +| ctime | num | 创建时间 | 时间戳 | +| commentSum | num | 该条目评论数 | | **示例:** 查询公示ID为`1091621`的公示详情 -http://api.bilibili.com/x/credit/blocked/info?id=1091621 +```shell +curl -G 'http://api.bilibili.com/x/credit/blocked/info' \ +--data-urlencode 'id=1091621' +``` + +
+查看响应示例: ```json { @@ -227,8 +290,9 @@ http://api.bilibili.com/x/credit/blocked/info?id=1091621 "operatorName": "", "caseId": 0, "ctime": 1585560309, - "commentSum": 2358 + "commentSum": 2379 } } ``` +
diff --git a/blackroom/jury/action.md b/blackroom/jury/action.md new file mode 100644 index 0000000..0c65fae --- /dev/null +++ b/blackroom/jury/action.md @@ -0,0 +1,211 @@ +# 仲裁操作 + +**本页所有操作均需登录(Cookie或APP)** + +## 申请加入风纪委员会 + +> http://api.bilibili.com/x/credit/jury/apply + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +只有用户会员等级≥Lv4、90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会 + +每日10:00开放新名额 + +申请成功后可获得30天资格 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------ | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
25001:申请等级限制(会员等级<3)
25002:没有实名认证
25003:90天内有封禁记录
25013:不能重复申请风纪委资格
25016:当日风纪委员名额已发完 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/apply' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/apply' \ +--data-urlencode 'access_key=xxx' +``` +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 拉取新案件 + +> http://api.bilibili.com/x/credit/jury/caseObtain + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
25005:不是风纪委员
25008:没有案件
25014:已审满 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | 作用尚不明确 | +| data | object | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------- | ---- | +| id | num | 仲裁案件ID | | + +**示例:** + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/caseObtain' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/caseObtain' \ +--data-urlencode 'access_key=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 1239790 + } +} +``` + +
+ +## 进行仲裁投票 + +> http://api.bilibili.com/x/credit/jury/vote + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------- | ---- | ------------------------ | -------------- | --------------------------------------- | +| cid | num | 案件ID | 必要 | | +| vote | num | 投票类型 | 必要 | 见「[众裁信息](judgement_info.md)」中表 | +| content | str | 理由 | 非必要 | 见「[众裁信息](judgement_info.md)」中表 | +| likes | nums | 支持的观点 | 非必要 | | +| hates | nums | 反对的观点 | 非必要 | | +| attr | num | 是否匿名 | 非必要 | 0:匿名
1:不匿名 | +| apply_type | num | 是否更改原因 | 非必要 | 0:保持原来原因
1:投票给新原因 | +| origin_reason | num | 原始原因 | 非必要 | 见「封禁公示」中表 | +| apply_reason | num | 新原因 | 非必要 | 见「封禁公示」中表 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------ | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:未登录
-111:csrf 错误
-400:请求错误(投票类型错误)
25005:不是风纪委员
25009: 案件不存在
25011:投票类型错误
25012:重复投票 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | 作用尚不明确 | + +**示例:** + +为案件`2333`投票,建议封禁,无理由,不匿名,无支持/反对观点,不修改投票原因 + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/vote' \ +--data-urlencode 'cid=2333' \ +--data-urlencode 'vote=1' \ +--data-urlencode 'content=' \ +--data-urlencode 'likes=' \ +--data-urlencode 'hates=' \ +--data-urlencode 'attr=1' \ +--data-urlencode 'apply_type=0' \ +--data-urlencode 'origin_reason=' \ +--data-urlencode 'apply_reason=' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/vote' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'cid=2333' \ +--data-urlencode 'vote=1' \ +--data-urlencode 'content=' \ +--data-urlencode 'likes=' \ +--data-urlencode 'hates=' \ +--data-urlencode 'attr=1' \ +--data-urlencode 'apply_type=0' \ +--data-urlencode 'origin_reason=' \ +--data-urlencode 'apply_reason=' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
diff --git a/blackroom/jury/base_info.md b/blackroom/jury/base_info.md new file mode 100644 index 0000000..344cb5f --- /dev/null +++ b/blackroom/jury/base_info.md @@ -0,0 +1,250 @@ +# 风纪委员会用户基本信息 + +**本页所有操作均需登录(Cookie或APP)** + +## 基本数据 + +> http://api.bilibili.com/x/credit/jury/jury + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | object | 数据本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------------------- | ---------------------------- | +| caseTotal | num | 总众裁数 | | +| face | str | 用户头像url | | +| restDays | num | 当前资格剩余天数 | | +| rightRadio | num | 当前裁决正确率百分比 | 裁决数小于3时固定为50 | +| status | num | 当前状态 | 1:具有资格
2:资格失效 | +| uname | str | 用户昵称 | | + +**示例:** + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/jury' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/jury' \ +--data-urlencode 'access_key=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "caseTotal": 7, + "face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", + "restDays": 30, + "rightRadio": 80, + "status": 1, + "uname": "社会易姐QwQ" + } +} +``` + +
+ +## 统计信息 + +> http://api.bilibili.com/x/credit/jury/kpi + +*方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 数据本体 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | obj | 第1个月统计 | | +| n | obj | 第(n+1)个月统计 | | +| …… | obj | …… | …… | + +`data` 数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------- | ---- | +| id | num | 0 | | +| mid | num | 用户id | | +| number | num | 尚不明确 | | +| day | num | 开始时间 | | +| rate | num | 尚不明确 | | +| rank | num | 尚不明确 | | +| rankper | num | 尚不明确 | | +| rankTotal | num | 尚不明确 | | +| point | num | 32767 | | +| activeDays | num | 活跃天数 | | +| voteTotal | num | 投票总数 | | +| voteRadio | num | 尚不明确 | | +| blockedTotal | num | 尚不明确 | | +| termStart | num | 尚不明确 | | +| termEnd | num | 尚不明确 | | +| opinion_likes | num | 观点获赞 | | + +**示例:** + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/kpi' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/kpi' \ +--data-urlencode 'access_key=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "id": 0, + "mid": 114343368, + "number": 199046, + "day": 1539792000, + "rate": 1, + "rank": 0, + "rankper": 1, + "rankTotal": 39584, + "point": 32767, + "activeDays": 23, + "voteTotal": 422, + "voteRadio": 0, + "blockedTotal": 0, + "termStart": 1537200000, + "termEnd": 1539792000, + "opinion_likes": 18 + } + ] +} +``` + +
+ +## 检查申请风纪委员会资格 + +> http://api.bilibili.com/x/credit/jury/requirement + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +只有用户会员等级≥Lv4、90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | object | 数据本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---------------- | ------------------------------------- | +| blocked | bool | 是否被封禁 | true:是
false:否
**下同** | +| cert | bool | 是否实名认证 | | +| level | bool | 等级是否>=4 | | +| rule | bool | 是否90天内无违规 | | + +**示例:** + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/credit/jury/requirement' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/requirement' \ +--data-urlencode 'access_key=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "blocked": false, + "cert": true, + "level": true, + "rule": true + } +} +``` + +
diff --git a/blackroom/jury/judgement_info.md b/blackroom/jury/judgement_info.md new file mode 100644 index 0000000..bb9acc0 --- /dev/null +++ b/blackroom/jury/judgement_info.md @@ -0,0 +1,544 @@ +# 众裁信息 + +投票类型码总览: + +| 代码 | 含义 | +| - | ---- | +| 0 | 未投票 | +| 1 | 封禁 | +| 2 | 否 | +| 3 | 弃权 | +| 4 | 删除 | + +## 查询投票过的单个案件 + +> http://api.bilibili.com/x/credit/jury/juryCase + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +只能查询自己参与众裁的 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ------------ | ------ | ------------- | ------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| cid | num | 案件ID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
25010:没有权限查看案件 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ------ | -------- | ------------ | +| id | num | 案件ID | | +| mid | num | 被举报用户UID | | +| status | num | 裁决状态 | 1:投票中
2:停止发放
3:复核中(结案中)
4:已裁决
5:待重启
6:未裁决
7:冻结中
8:队列中 | +| statusTitle | str | 封禁时间文字 | `judgeType`=1时有效 | +| originType | num | 来源类型 | 见「封禁公示」中表 | +| reasonType | num | 原因类型 | 见「封禁公示」中表 | +| originContent | str | 被举报的原文 | | +| punishResult | num | 处理结果 | 0:无
1:封禁3天
2:封禁7天
3:永封
4:其他封禁天数
5:封禁15天
6:仅删除不封禁 | +| punishTitle | str | 处罚原因 | | +| judgeType | num | 裁决类型 | `status`=4时有效
0:未裁决
1:违规
2:不违规 | +| originUrl | str | 来源url | | +| blockedDays | num | 封禁时间 | `judgeType`=1时有效 | +| putTotal | num | ??? | 作用尚不明确 | +| voteRule | num | 投票不违规人数 | | +| voteBreak | num | 投票建议封禁人数 | | +| voteDelete | num | 投票建议删除人数 | | +| startTime | num | 裁决起始时间 | 时间戳 | +| endTime | num | 裁决截止时间 | 时间戳
未结案固定为24小时 | +| ctime | num | 举报创建时间 | 时间戳 | +| mtime | num | 开始拉取时间 | 时间戳 | +| originTitle | str | 来源标题 | | +| relationId | str | 违规关系标识字 | {评论rpID}-{违规类型ID}-{来源对象ID} | +| face | str | 被举报用户头像url | | +| uname | str | 被举报用户昵称 | | +| vote | num | 我的投票 | **见上表** | +| case_type | num | 众裁类型 | 0:小众众裁
1:大众众裁 | + +**示例:** + +查询案件`1239790`的信息 + +Cookie方式: + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/juryCase' \ +--data-urlencode 'cid=1239790' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/juryCase' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'cid=1239790' \ +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 1239790, + "mid": 351783425, + "status": 4, + "statusTitle": "封禁7天", + "originType": 1, + "reasonType": 9, + "originContent": "up主,在和平精英里的喷子是霰(xian)弹枪,不是散(san)弹枪。", + "punishResult": 0, + "punishTitle": "在评论中发布引战言论", + "judgeType": 2, + "originUrl": "https://www.bilibili.com/video/BV15x411X7eV/#reply1728344012", + "blockedDays": 7, + "putTotal": 272, + "voteRule": 409, + "voteBreak": 17, + "voteDelete": 89, + "startTime": 1594467941, + "endTime": 1594471525, + "ctime": 1594464499, + "mtime": 1594471678, + "originTitle": "和平精英揭秘真相68:氪金试水最新抽奖活动,到底是亏了还是赚了?", + "relationId": "1728344012-1-57465308", + "face": "http://i2.hdslb.com/bfs/face/e1018566c615059b664dc6eae3a5235c31cd92fe.jpg", + "uname": "零酱a", + "vote": 4, + "case_type": 0 + } +} +``` + +
+ +## 查询案件众裁信息 + +> http://api.bilibili.com/x/credit/jury/caseInfo + +*请求方式:GET* + +注:该接口无需登录 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------ | ------ | ---- | +| cid | num | 案件ID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | 有效时:obj
无效时:null | 数据本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ----------------- | ------------------------------------------------------------ | +| id | num | 案件ID | | +| mid | num | 被举报用户UID | | +| status | num | 裁决状态 | 1:投票中
2:停止发放
3:复核中(结案中)
4:已裁决
5:待重启
6:未裁决
7:冻结中
8:队列中 | +| originType | num | 来源类型 | 见「封禁公示」中表 | +| reasonType | num | 原因类型 | 见「封禁公示」中表 | +| originContent | str | 被举报的原文 | | +| punishResult | num | 处理结果 | 0:无
1:封禁3天
2:封禁7天
3:永封
4:其他封禁天数
5:封禁15天
6:仅删除不封禁 | +| judgeType | num | 裁决类型 | `status`=4时有效
0:未裁决
1:违规
2:不违规 | +| originUrl | str | 来源url | | +| blockedDays | num | 封禁时间 | `judgeType`=1时有效 | +| putTotal | num | ??? | 作用尚不明确 | +| voteRule | num | 投票不违规人数 | | +| voteBreak | num | 投票建议封禁人数 | | +| voteDelete | num | 投票建议删除人数 | | +| startTime | num | 裁决起始时间 | 时间戳 | +| endTime | num | 裁决截止时间 | 时间戳
未结案固定为24小时 | +| ctime | num | 举报创建时间 | 时间戳 | +| mtime | num | 开始拉取时间 | 时间戳 | +| originTitle | str | 来源标题 | | +| relationId | str | 违规关系标识字 | {评论rpID}-{违规类型ID}-{来源对象ID} | +| face | str | 被举报用户头像url | | +| uname | str | 被举报用户昵称 | | +| vote | num | 0 | 固定为0 | +| case_type | num | 众裁类型 | 0:小众众裁
1:大众众裁 | + +**示例:** + +查询案件`1239790`的信息 + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/juryCase' \ +--data-urlencode 'cid=1239790' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 1239790, + "mid": 351783425, + "status": 4, + "originType": 1, + "reasonType": 9, + "originContent": "up主,在和平精英里的喷子是霰(xian)弹枪,不是散(san)弹枪。", + "punishResult": 0, + "judgeType": 2, + "originUrl": "https://www.bilibili.com/video/BV15x411X7eV/#reply1728344012", + "blockedDays": 7, + "putTotal": 272, + "voteRule": 409, + "voteBreak": 17, + "voteDelete": 89, + "startTime": 1594467941, + "endTime": 1594471525, + "ctime": 1594464499, + "mtime": 1594471678, + "originTitle": "和平精英揭秘真相68:氪金试水最新抽奖活动,到底是亏了还是赚了?", + "relationId": "1728344012-1-57465308", + "face": "http://i2.hdslb.com/bfs/face/e1018566c615059b664dc6eae3a5235c31cd92fe.jpg", + "uname": "零酱a", + "vote": 0, + "case_type": 0 + } +} +``` + +
+ +## 查询我的众裁记录 + +> http://api.bilibili.com/x/credit/jury/caseList + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ------------ | ------ | ------------- | ------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页显示数量 | 非必要 | 默认为30
最大30 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 仲裁记录列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------ | +| 0 | obj | 仲裁记录1 | | +| n | obj | 仲裁记录(n+1) | 按照时间顺序 | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ----------------- | ------------------------------------------------------------ | +| id | num | 案件ID | | +| mid | num | 被举报用户UID | | +| status | num | 裁决状态 | 1:投票中
2:停止发放
3:复核中(结案中)
4:已裁决
5:待重启
6:未裁决
7:冻结中
8:队列中 | +| originType | num | 来源类型 | 见「封禁公示」中表 | +| reasonType | num | 原因类型 | 见「封禁公示」中表 | +| originContent | str | 被举报的原文 | | +| punishResult | num | 处理结果 | 0:无
1:封禁3天
2:封禁7天
3:永封
4:其他封禁天数
5:封禁15天
6:仅删除不封禁 | +| punishTitle | str | 处罚原因 | | +| judgeType | num | 裁决类型 | `status`=4时有效
0:未裁决
1:违规
2:不违规 | +| originUrl | str | 来源url | | +| blockedDays | num | 封禁时间 | `judgeType`=1时有效 | +| putTotal | num | ??? | 作用尚不明确 | +| voteRule | num | 投票不违规人数 | | +| voteBreak | num | 投票建议封禁人数 | | +| voteDelete | num | 投票建议删除人数 | | +| startTime | num | 裁决起始时间 | 时间戳 | +| endTime | num | 裁决截止时间 | 时间戳
未结案固定为24小时 | +| ctime | num | 举报创建时间 | 时间戳 | +| mtime | num | 开始拉取时间 | 时间戳 | +| originTitle | str | 来源标题 | | +| relationId | str | 违规关系标识字 | {评论rpID}-{违规类型ID}-{来源对象ID} | +| face | str | 被举报用户头像url | | +| uname | str | 被举报用户昵称 | | +| vote | num | 我的投票 | **见上表** | +| voteTime | num | 我的裁决时间 | 毫秒 时间戳 | +| case_type | num | 众裁类型 | 0:小众众裁
1:大众众裁 | + +**示例:** + +查询我的历史众裁,第1页,每页显示1个案件 + +Cookie方式: + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/caseList' \ +--data-urlencode 'ps=1' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +APP方式: +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/caseList' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'ps=1' \ +--data-urlencode 'pn=1' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "id": 1241808, + "mid": 298264370, + "status": 4, + "originType": 1, + "reasonType": 9, + "originContent": "别在发这种傻逼视频了好吗?真要搞到禁摩才甘心。", + "punishResult": 6, + "punishTitle": "在评论中发布引战言论", + "judgeType": 1, + "originUrl": "https://www.bilibili.com/video/av328669697/#reply3165369965", + "blockedDays": 7, + "putTotal": 251, + "voteRule": 14, + "voteBreak": 140, + "voteDelete": 373, + "startTime": 1594528662, + "endTime": 1594530687, + "ctime": 1594528108, + "mtime": 1594530802, + "originTitle": "我这里有记录仪!略略略略略略哈哈哈,干得漂亮!", + "relationId": "3165369965-1-328669697", + "face": "http://i1.hdslb.com/bfs/face/d69912bb2a51f08176bcdbf4ba15e4c2b0962ad9.jpg", + "uname": "MyLSTicKnight", + "vote": 4, + "voteTime": 1594528700000, + "case_type": 0 + } + ] +} +``` + +
+ +## 众议观点 + +> http://api.bilibili.com/x/credit/jury/case/opinion + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ------------ | ------ | ------------- | ------------- | +| cid | num | 案件id | 必要 | | +| ps | num | 每页项数 | 非必要 | 默认为10 | +| pn | num | 页码 | 非必要 | 默认为1 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ------------ | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ------ | -------- | ------------ | +| count | num | 观点总数 | | +| opinion | 有效时:array
无效时:null | 观点列表 | | + +`data` 中的`opinion` 数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ------------ | +| 0 | obj | 观点1 | | +| n | obj | 观点(n+1) | 按照时间顺序 | +| …… | obj | …… | …… | + +`opinion` 数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ------ | -------- | ------------ | +| mid | num | 用户UID | 仅非匿名有此项 | +| face | str | 用户头像 | 仅非匿名有此项 | +| name | str | 用户昵称 | 仅非匿名有此项 | +| opid | num | 观点ID | | +| vote | num | 投票选择 | **见上表** | +| content | str | 观点内容 | | +| attr | num | 是否匿名 | 0:匿名
1:不匿名 | +| hate | num | 喜欢人数 | | +| like | num | 不喜欢人数 | | + +**示例:** + +查看案件`1239790`的众议观点,每页10项,查看第一页 + +```shell +curl -G 'http://api.bilibili.com/x/credit/jury/case/opinion' \ +--data-urlencode 'cid=1239790' \ +--data-urlencode 'ps=10' \ +--data-urlencode 'pn=1' \ +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 23, + "opinion": [ + { + "opid": 250943982, + "vote": 2, + "content": "不懂,正常的科普也有人杠吗?没文化真可怕", + "attr": 0, + "hate": 0, + "like": 0 + }, + { + "mid": 59894, + "face": "http://i2.hdslb.com/bfs/face/0cc48fc40867537d5a09a125e90f76183efbfdfa.gif", + "name": "雷歐諾斯", + "opid": 250956267, + "vote": 2, + "content": "这个虽然不是正确的说法,但本身是一种观点。而且已经成为一种梗了。不属于引战。", + "attr": 1, + "hate": 0, + "like": 0 + }, + { + "opid": 250956259, + "vote": 2, + "content": "正常科普,不构成引战。", + "attr": 0, + "hate": 0, + "like": 0 + }, + { + "mid": 215020429, + "face": "http://i1.hdslb.com/bfs/face/1d43c302e67db4d21b9c5c0f0dc0b8786e8086d5.jpg", + "name": "瞎子广_广告歌41", + "opid": 250955160, + "vote": 2, + "content": "这个其实也没啥事真的", + "attr": 1, + "hate": 0, + "like": 0 + }, + { + "mid": 108194360, + "face": "http://i0.hdslb.com/bfs/face/b78c92a69ff9977b7d08d4f7edc0a051a3d6ea3e.jpg", + "name": "籽云奕", + "opid": 250953998, + "vote": 2, + "content": "仅仅是科普评论,无过激言论", + "attr": 1, + "hate": 0, + "like": 0 + }, + { + "mid": 34503714, + "face": "http://i2.hdslb.com/bfs/face/eb2d0853235a56d035303f4f3614dcb6e0cf66fa.jpg", + "name": "十六夜紅月丶", + "opid": 250950982, + "vote": 2, + "content": "无过激言论,正常科普罢了", + "attr": 1, + "hate": 0, + "like": 0 + }, + { + "opid": 250950973, + "vote": 2, + "content": "其实两种读法都是正确的,虽然想要纠正别人的错误。不过自己本身就错了。还是保留吧,没什么引战的", + "attr": 0, + "hate": 0, + "like": 0 + }, + { + "mid": 436136443, + "face": "http://i1.hdslb.com/bfs/face/6b4151d8e030eddd073add6ef18ccbb00aa48d0f.jpg", + "name": "兄弟好牛啤", + "opid": 250950417, + "vote": 2, + "content": "有点经典的争议,但可能还会有人不知道", + "attr": 1, + "hate": 0, + "like": 0 + }, + { + "mid": 87385400, + "face": "http://i2.hdslb.com/bfs/face/0f567e7fa49bcef22010f3ff78e90553d8fffb09.jpg", + "name": "小学生de王者荣耀", + "opid": 250950402, + "vote": 2, + "content": "合理纠正up主的错误,建议追究恶意举报者的责任", + "attr": 1, + "hate": 0, + "like": 0 + }, + { + "opid": 250949840, + "vote": 2, + "content": "正常科普,没有过激言论,建议保留", + "attr": 0, + "hate": 0, + "like": 0 + } + ] + } +} +``` + +
\ No newline at end of file diff --git a/broadcast/readme.md b/broadcast/readme.md new file mode 100644 index 0000000..e625bb0 --- /dev/null +++ b/broadcast/readme.md @@ -0,0 +1,184 @@ +# 全站广播 + +可用的广播服务: + +- [视频实时信息](video_room.md)√ + +## 获取广播服务器地址 + +> http://api.bilibili.com/x/web-interface/broadcast/servers + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | -------- | ------ | --------------------------------- | +| platform | str | 平台选择 | 必要 | 为web时输出域名
其他时输出ip | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ------ | ------------------ | ---- | +| domain | str | 广播服务器url | | +| tcp_port | num | tcp端口 | | +| ws_port | num | websocket端口 | | +| wss_port | num | websocket ssl端口 | | +| heartbeat | num | 最大心跳包间隔时间 | | +| nodes | array | 服务节点地址列表 | | +| backoff | obj | ??? | | +| heartbeat_max | num | ??? | | + +`data`中的`nodes`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | str | 服务节点1 | | +| n | str | 服务节点(n+1) | | +| …… | str | …… | | + +`data`中的`backoff`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------ | ---- | +| max_delay | num | ??? | | +| base_delay | num | ??? | | +| factor | num | ??? | | +| jitter | num | ??? | | + +示例: + +当`platform`=`web`时,不显示节点ip + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/broadcast/servers' \ +--data-urlencode 'platform=web' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "domain": "broadcast.chat.bilibili.com", + "tcp_port": 7821, + "ws_port": 7822, + "wss_port": 7823, + "heartbeat": 30, + "nodes": ["broadcast.chat.bilibili.com"], + "backoff": { + "max_delay": 300, + "base_delay": 3, + "factor": 1.8, + "jitter": 0.3 + }, + "heartbeat_max": 3 + } +} +``` + +
+ +当`platform`=其他时,显示节点ip + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/broadcast/servers' \ +--data-urlencode 'platform=1' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "domain": "broadcast.chat.bilibili.com", + "tcp_port": 7821, + "ws_port": 7822, + "wss_port": 7823, + "heartbeat": 30, + "nodes": ["134.175.207.130", "120.92.150.90", "120.92.150.212", "192.144.173.136", "154.8.217.108"], + "backoff": { + "max_delay": 300, + "base_delay": 3, + "factor": 1.8, + "jitter": 0.3 + }, + "heartbeat_max": 3 + } +} +``` + +
+ +## 服务器数据包 + +连接服务器分为三种方式,分别是ws wss tcp,数据包分为上行和下行 + +单个数据包分为头部和正文 + +其中上行的有认证包 心跳包,下行的有认证包回复 心跳包回复 普通包 + +建立连接后超过30s内未发送认证包,或握手后30s内未发送心跳包,或发送了错误的认证包,都会被强制断开连接 + +操作流程: + +1.发送认证包,等待接收认证回复 + +2.确认握手成功后,每30s内发送心跳包,并立即接收心跳包回复 + +3.空闲时间接收普通包 + +### 数据包结构 + +头部通用于上行和下行数据包 + +头部格式: + +| 偏移量 | 长度(字节) | 类型 | 含义 | +| ------ | ------------ | ------ | ---------------------------------------------------- | +| 0x00 | 4 | uint32 | 封包总大小(头部大小+正文大小) | +| 0x04 | 2 | uint16 | 头部大小(一般为0x0012,18字节) | +| 0x06 | 2 | uint16 | 协议版本,可取常数1 | +| 0x08 | 4 | uint32 | 操作码(包类型)
**见下表** | +| 0x0C | 4 | uint32 | sequence(请求次数),可取常数1
对于普通包恒为0 | +| 0x10 | 2 | uint16 | 保留,一般为0 | + +操作码: + +| 代码 | 含义 | +| ---- | -------- | +| 2 | 心跳 | +| 3 | 心跳回复 | +| 7 | 认证 | +| 8 | 认证回复 | +| 1000 | 实时弹幕 | + +**示例:** + +以下为一个认证包示例,正文为文本`test` + +``` +00000000 00 00 00 16 00 12 00 01 00 00 00 07 00 00 00 01 |................| +00000010 00 00 74 65 73 74 |..test| +``` + + diff --git a/broadcast/video_room.md b/broadcast/video_room.md new file mode 100644 index 0000000..4772d1e --- /dev/null +++ b/broadcast/video_room.md @@ -0,0 +1,144 @@ +# 视频实时信息 + +## 认证包(上行) + +**正文内容json:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ------ | -------- | ------------------------------ | +| room_id | str | 目标视频 | `video://{稿件avID}/{视频CID}` | +| platform | str | 平台标识 | 默认为`web` | +| accepts | array | 操作标识 | | + +`array`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ------------ | +| 0 | num | 1000 | 作用尚不明确 | +| 1 | num | 1015 | 作用尚不明确 | + +**示例:** + +发送视频`av706`(1P的CID为` 3724723 `)的认证包 + +``` +00000000 00 00 00 55 00 12 00 01 00 00 00 07 00 00 00 01 |...U............| +00000010 00 00 7b 22 72 6f 6f 6d 5f 69 64 22 3a 22 76 69 |..{"room_id":"vi| +00000020 64 65 6f 3a 2f 2f 37 30 36 2f 33 37 32 34 37 32 |deo://706/372472| +00000030 33 22 2c 22 70 6c 61 74 66 72 6f 6d 22 3a 22 77 |3","platfrom":"w| +00000040 65 62 22 2c 22 61 63 63 65 70 74 73 22 3a 5b 31 |eb","accepts":[1| +00000050 30 30 30 2c 31 30 31 35 5d 7d |000,1015]}| +``` + +## 认证包回复(下行) + +**正文内容json:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | -------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为OK | +| version | num | 版本号 | | + +示例: + +``` +00000000 00 00 00 37 00 12 00 01 00 00 00 08 00 00 00 01 |...7............| +00000010 00 00 7b 22 63 6f 64 65 22 3a 30 2c 22 6d 65 73 |..{"code":0,"mes| +00000020 73 61 67 65 22 3a 22 4f 4b 22 2c 22 76 65 72 73 |sage":"OK","vers| +00000030 69 6f 6e 22 3a 31 7d |ion":1}| +``` + +## 心跳包(上行) + +正文可为任意内容或为空 + +**示例:** + +正文为空的示例 + +``` +00000000 00 00 00 12 00 12 00 01 00 00 00 02 00 00 00 01 |................| +00000010 00 00 |..| +``` + +正文为`[object Object]`的示例 + +``` +00000000 00 00 00 21 00 12 00 01 00 00 00 02 00 00 00 01 |...!............| +00000010 00 00 5b 6f 62 6a 65 63 74 20 4f 62 6a 65 63 74 |..[object Object| +00000020 5d |]| +``` + +## 心跳包回复(实时观看数)(下行) + +**正文内容json:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | -------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为OK | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------------- | ---- | +| room | obj | 视频实时观看信息 | | + +`data`中的`room`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------------ | ------------------------------ | +| online | num | 实时观看人数 | | +| room_id | str | 目标视频 | `video://{稿件avID}/{视频CID}` | + +**示例:** + +当前视频`av706`实时观看人数为13 + +``` +00000000 00 00 00 68 00 12 00 01 00 00 00 03 00 00 00 01 |...h............| +00000010 00 00 7b 22 63 6f 64 65 22 3a 30 2c 22 6d 65 73 |..{"code":0,"mes| +00000020 73 61 67 65 22 3a 22 30 22 2c 22 64 61 74 61 22 |sage":"0","data"| +00000030 3a 7b 22 72 6f 6f 6d 22 3a 7b 22 6f 6e 6c 69 6e |:{"room":{"onlin| +00000040 65 22 3a 31 33 2c 22 72 6f 6f 6d 5f 69 64 22 3a |e":13,"room_id":| +00000050 22 76 69 64 65 6f 3a 2f 2f 37 30 36 2f 33 37 32 |"video://706/372| +00000060 34 37 32 33 22 7d 7d 7d |4723"}}}| +``` + +## 普通包(实时弹幕)(下行) + +**正文内容json:** + +根数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ------------------------------------------------------------ | +| 0 | str | 弹幕属性信息 | 详见[「弹幕」中的属性 p](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku_xml.md) | +| 1 | str | 弹幕内容 | | + +**示例:** + +弹幕属性为`0.25,1,25,16777215,1588433046,1588431486568150,0,33ad5d91,32134068443807747` + +弹幕内容为`此生无悔入东方,来世愿生幻想乡` + +``` +00000000 00 00 00 91 00 12 00 01 00 00 03 e8 00 00 00 00 |................| +00000010 00 00 5b 22 30 2e 32 35 2c 31 2c 32 35 2c 31 36 |..["0.25,1,25,16| +00000020 37 37 37 32 31 35 2c 31 35 38 38 34 33 33 30 34 |777215,158843304| +00000030 36 2c 31 35 38 38 34 33 31 34 38 36 35 36 38 31 |6,15884314865681| +00000040 35 30 2c 30 2c 33 33 61 64 35 64 39 31 2c 33 32 |50,0,33ad5d91,32| +00000050 31 33 34 30 36 38 34 34 33 38 30 37 37 34 37 22 |134068443807747"| +00000060 2c 22 e6 ad a4 e7 94 9f e6 97 a0 e6 82 94 e5 85 |,"此 生 无 悔| +00000070 a5 e4 b8 9c e6 96 b9 ef bc 8c e6 9d a5 e4 b8 96 |入 东 方 ,来 世 | +00000080 e6 84 bf e7 94 9f e5 b9 bb e6 83 b3 e4 b9 a1 22 |愿 生 幻 想 乡"| +00000090 5d |]| +``` diff --git a/cheese/info.md b/cheese/info.md new file mode 100644 index 0000000..b50a93a --- /dev/null +++ b/cheese/info.md @@ -0,0 +1,640 @@ +# 课程基本信息 + +课程ssID与epID和番剧不互通 + +课程avID与普通视频绝大部分api接口不能互通,少部分互通接口如下: + +1. 获取视频简介 +2. 查询视频状态数 +3. 查询分P列表 +4. 视频快照 +5. 获取弹幕(使用CID) +6. 发送弹幕 +7. 高能进度条(使用CID) + +## 获取课程基本信息 + +> http://api.bilibili.com/pugv/view/web/season + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +鉴权方式:referer为 `.bilibili.com`域名下 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | -------- | ------------ | -------------------------------------------------- | +| season_id | num | 课程ssID | 必要(可选) | season_id与ep_id任选其一
**与番剧ssID不互通** | +| ep_id | num | 课程epID | 必要(可选) | season_id与ep_id任选其一
**与番剧epID不互通** | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------- | +| code | num | 返回值 | 0:成功
-404:错误 | +| message | str | 错误信息 | 默认为success | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ------ | ----------------------------- | ------------------------------------------------------------ | +| brief | obj | 课程概述信息 | | +| coupon | obj | 优惠信息 | 若无优惠则无此项 | +| cover | str | 课程封面url | | +| episode_page | obj | 课程分集信息 | | +| episode_sort | num | 1 | **作用尚不明确** | +| episodes | array | 课程分集列表 | | +| faq | obj | 常见问题信息1 | 合并格式 | +| faq1 | obj | 常见问题信息2 | 分离格式 | +| payment | obj | 付费信息 | | +| purchase_note | obj | 购买须知信息 | | +| purchase_protocol | obj | 付费内容协议信息 | | +| release_bottom_info | str | 底部更新状态文字 | | +| release_info | str | 更新状态文字+更新连载状态文字 | | +| release_info2 | str | 更新连载状态文字 | | +| release_status | str | 更新状态文字 | | +| season_id | num | 课程ssID | **与番剧ssID不互通** | +| share_url | str | 页面url | | +| short_link | str | bilibili uri链接 | | +| stat | obj | 播放数信息 | | +| status | num | 10 | **作用尚不明确** | +| subtitle | str | 课程简介信息 | | +| title | str | 课程标题 | | +| up_info | obj | UP主信息 | | +| user_status | obj | 用户状态信息 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** | + +`data`中的`brief`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ---- | +| content | str | 空 | | +| img | array | 简介图片 | | +| title | str | 课程概述 | | +| type | num | 2 | | + +`brief`中的`img`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 简介图片1 | | +| n | obj | 简介图片(n+1) | | +| …… | obj | …… | …… | + +`img`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ----------- | ---------------- | +| aspect_ratio | num | ??? | **作用尚不明确** | +| url | str | 简介图片url | | + +`data`中的`coupon`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | --------- | ------------------- | +| amount | num | 折扣乘数 | | +| expire_time | str | 结束时间 | YYYY-MM-DD HH:MM:SS | +| start_time | str | 起始时间 | YYYY-MM-DD HH:MM:SS | +| status | num | ??? | **作用尚不明确** | +| title | str | 优惠标题 | | +| token | str | 领取token | | + +`data`中的`episode_page`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------- | ---- | +| next | bool | false | | +| num | num | 1 | | +| size | num | 总计集数 | | +| total | num | 总计集数 | | + +`data`中的`episodes`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 课程分集1 | | +| n | obj | 课程分集(n+1) | | +| …… | obj | …… | …… | + +`episodes`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ---------------- | ------------------------------------------------------------ | +| aid | num | 课程分集avID | **与普通稿件avID部分不互通** | +| cid | num | 课程分集CID | **与普通视频CID部分不互通** | +| duration | num | 课程分集时间长度 | 单位为秒 | +| from | str | pugv | | +| id | num | 课程分集epID | **与番剧epID不互通** | +| index | num | 课程分集数 | | +| page | num | 1 | | +| play | num | 课程分集播放量 | | +| release_date | num | 课程分集发布时间 | 时间戳 | +| status | num | 分集权限属性 | 1:可观看
2:不可观看 | +| title | str | 课程分集标题 | | +| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
false:未观看
true:已观看 | +| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** | + +`data`中的`faq`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | --------------- | ---- | +| content | str | 常见问题信息 | | +| link | str | 常见问题页面url | | +| title | str | 常见问题 | | + +`data`中的`faq1`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ------ | ------------ | ---- | +| items | array | 常见问题列表 | | +| title | str | 常见问题 | | + +`faq1`中的`items`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 常见问题1 | | +| n | obj | 常见问题(n+1) | | +| …… | obj | …… | …… | + +`items`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | ---- | +| answer | str | 回答信息 | | +| question | str | 问题信息 | | + +`data`中的`payment`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | -------------------- | ----------------------- | +| desc | str | 付费价格说明 | | +| discount_desc | str | 折扣说明信息 | 若无优惠则无此项 | +| discount_prefix | str | 折扣类型前缀 | 若无优惠则无此项 | +| pay_shade | str | 观看所有视频付费说明 | | +| price | num | 课程价格 | 单位为B币(折扣后价格) | +| price_format | str | 课程价格 | 单位为B币折扣后价格) | + +`data`中的`purchase_note`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------------------- | ---- | +| content | str | 购买须知信息文字内容 | | +| link | str | 购买须知页面url | | +| title | str | 购买须知 | | + +`data`中的`purchase_protocol`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------------- | ---- | +| link | str | 付费内容协议页面url | | +| title | str | 付费内容协议 | | + +`data`中的`stat`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | -------------- | ---- | +| play | num | 播放量 | | +| play_desc | str | 播放量文字信息 | | + +`data`中的`up_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------------ | ------------------------------------------------------------ | +| avatar | str | UP主头像url | | +| brief | str | UP主备注 | 非个人签名 | +| follower | num | UP主粉丝数 | | +| is_follow | num | 是否关注UP主 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
0:未关注
1:已关注 | +| link | str | UP主空间url | | +| mid | num | UP主uid | | +| pendant | obj | ??? | **作用尚不明确** | +| uname | str | UP主昵称 | | + +`up_info`中的`pendant`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ---- | ---------------- | +| image | str | 空 | **作用尚不明确** | +| name | str | 空 | **作用尚不明确** | +| follower | num | 0 | **作用尚不明确** | + +`data`中的`user_status`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------- | ------------------------ | +| favored | num | 是否收藏 | 0:未收藏
1:已收藏 | +| favored_count | num | 1 | **作用尚不明确** | +| payed | num | 是否购买 | 0:未购买
1:已购买 | +| progress | obj | 课程进度 | 未登录无此项 | + +`user_status`中的`progress`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------------ | -------- | +| last_ep_id | num | 最后观看的epID | | +| last_ep_index | str | 最后观看的标题 | | +| last_time | num | 最后观看的时间进度 | 单位为秒 | + +**示例:** + +查询课程`ss61`或分集`ep790`的信息 + +ssID方式: + +```shell +curl -G 'http://api.bilibili.com/pugv/view/web/season' \ +--data-urlencode 'season_id=61' \ +-b 'SESSDATA=xxx' \ +-e 'https://www.bilibili.com' +``` + +epID方式: + +```shell +curl -G 'http://api.bilibili.com/pugv/view/web/season' \ +--data-urlencode 'ep_id=790' \ +-b 'SESSDATA=xxx' \ +-e 'https://www.bilibili.com' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "brief": { + "content": "", + "img": [ + { + "aspect_ratio": 0.9375, + "url": "http://i0.hdslb.com/bfs/archive/29942f338ee570632838403a09871bad130cfe9a.jpg" + }, + { + "aspect_ratio": 0.9375, + "url": "http://i0.hdslb.com/bfs/archive/913e5c37d836d7954ae9ca19da62a43ba5b34219.jpg" + }, + { + "aspect_ratio": 1.3359375, + "url": "http://i0.hdslb.com/bfs/archive/a974555bd4a52f0aa865bd192c1e3401ed4cb0ad.jpg" + }, + { + "aspect_ratio": 1.3359375, + "url": "http://i0.hdslb.com/bfs/archive/73cd7669b251db9d2b62b921bee49a137c3d65dc.jpg" + }, + { + "aspect_ratio": 1.0625, + "url": "http://i0.hdslb.com/bfs/archive/b084ac8f6710c8eddbc58770a4254508de75eb02.jpg" + }, + { + "aspect_ratio": 1.2890625, + "url": "http://i0.hdslb.com/bfs/archive/44e32c2cf64b894563829ce65bbef199220f4121.jpg" + }, + { + "aspect_ratio": 1.3203125, + "url": "http://i0.hdslb.com/bfs/archive/90764fd095810565713b92606dc9cd0cfb25adae.jpg" + }, + { + "aspect_ratio": 1.15234375, + "url": "http://i0.hdslb.com/bfs/archive/c35ca0ced0ad075a2c13b8fdc1e47b88573bce45.jpg" + } + ], + "title": "课程概述", + "type": 2 + }, + "coupon": { + "amount": 0.66, + "expire_time": "2020-06-30 00:00:00", + "start_time": "2020-05-21 00:00:00", + "status": 1, + "title": "【上新限时6.6折】《唐盾:0-N4日语精讲》", + "token": "B20200521135929161905873" + }, + "cover": "http://i0.hdslb.com/bfs/archive/95d4de9e6691ccc2b18f087f5f654652dee3c01b.jpg", + "episode_page": { + "next": false, + "num": 1, + "size": 66, + "total": 66 + }, + "episode_sort": 1, + "episodes": [ + { + "aid": 76973173, + "cid": 132105993, + "duration": 2223, + "from": "pugv", + "id": 790, + "index": 1, + "page": 1, + "play": 2406406, + "release_date": 1574762407, + "status": 1, + "title": "唐盾:一起从0基础学日语吧(含50音 词汇试听)", + "watched": false, + "watchedHistory": 0 + }, + { + "aid": 77114885, + "cid": 132110244, + "duration": 3003, + "from": "pugv", + "id": 795, + "index": 2, + "page": 1, + "play": 49100, + "release_date": 1574766759, + "status": 2, + "title": "50音あ行假名/音调/送气与不送气音", + "watched": false, + "watchedHistory": 0 + }, + { + "aid": 77120689, + "cid": 131913553, + "duration": 3253, + "from": "pugv", + "id": 797, + "index": 3, + "page": 1, + "play": 49518, + "release_date": 1574770029, + "status": 2, + "title": "50音图的か行、さ行、た行假名", + "watched": false, + "watchedHistory": 0 + }, + ………… + ], + "faq": { + "content": "Q:课程在什么时间更新?\nA:课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。\n\nQ:课程购买后有收看时间限制吗?\nA:购买后除不可抗力因素外,课程均可永久收看,请您放心购买。\n\nQ:原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?\nA:虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。\n\nQ:购买课程后是否可以加入老师的粉丝群或者用户群?\nA:如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。", + "link": "http://m.bilibili.com", + "title": "常见问题" + }, + "faq1": { + "items": [ + { + "answer": "课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。", + "question": "课程在什么时间更新?" + }, + { + "answer": "购买后除不可抗力因素外,课程均可永久收看,请您放心购买。", + "question": "课程购买后有收看时间限制吗?" + }, + { + "answer": "虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。", + "question": "原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?" + }, + { + "answer": "如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。", + "question": "购买课程后是否可以加入老师的粉丝群或者用户群?" + } + ], + "title": "常见问题" + }, + "payment": { + "desc": "券后 262.68 B币起/53期", + "discount_desc": "262.68 B币", + "discount_prefix": "券后", + "pay_shade": "券后支付 262.68 B币即可观看所有视频", + "price": 398.0, + "price_format": "398" + }, + "purchase_note": { + "content": "1. 本内容为付费内容,购买成功后方可观看。
2. 本内容为虚拟服务,已购买内容不支持退款,敬请谅解。
3. 实际购买价格以页面展示的价格及订单结算页显示价格为准。
4. 如您在购买付费内容时有任何疑问,可随时咨询在线客服。
完整的购买协议,请点击阅读《bilibili付费内容购买协议》", + "link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html", + "title": "购买须知" + }, + "purchase_protocol": { + "link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html", + "title": "bilibili付费内容购买协议" + }, + "release_bottom_info": "没有更多啦~", + "release_info": "已完结,共53期", + "release_info2": "共53期", + "release_status": "已完结", + "season_id": 61, + "share_url": "https://m.bilibili.com/cheese/play/ss61", + "short_link": "bilibili://cheese/season/61", + "stat": { + "play": 2878146, + "play_desc": "287.8万播放" + }, + "status": 10, + "subtitle": "新东方名师唐盾的精品日语课,包含50音/N5/N4的词汇/语法/课文/练习精讲,让我们一起轻松学日语~", + "title": "唐盾:0-N4日语精讲", + "up_info": { + "avatar": "http://i1.hdslb.com/bfs/face/564421428d1f74314ed50e16a8f570ad968828b0.jpg", + "brief": "唐盾:前新东方日语名师,倾注日语教学、翻译14年。曾任新东方欧亚教育长沙中心总监。", + "follower": 21333, + "is_follow": 0, + "link": "https://space.bilibili.com/19452605", + "mid": 19452605, + "pendant": { + "image": "", + "name": "", + "pid": 0 + }, + "uname": "盾盾桑教你学日语" + }, + "user_status": { + "favored": 1, + "favored_count": 1, + "payed": 0, + "progress": { + "last_ep_id": 790, + "last_ep_index": "唐盾:一起从0基础学日语吧(含50音 词汇试听)", + "last_time": 1 + } + } + }, + "message": "success" +} +``` + +
+ +## 获取课程分集列表 + +> http://api.bilibili.com/pugv/view/web/ep/list + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +鉴权方式:referer为 `.bilibili.com`域名下 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | -------- | ------ | -------------------- | +| season_id | num | 课程ssID | 必要 | **与番剧ssID不互通** | +| ps | num | 每页项数 | 非必要 | 默认为50 | +| pn | num | 页码 | 非必要 | 默认为1 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------- | +| code | num | 返回值 | 0:成功
-404:错误 | +| message | str | 错误信息 | 默认为success | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ------ | ------------ | ---- | +| items | array | 课程分集列表 | | +| page | obj | 列表分页信息 | | + +`data`中的`items`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 课程分集1 | | +| n | obj | 课程分集(n+1) | | +| …… | obj | …… | …… | + +`items`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ---------------- | ------------------------------------------------------------ | +| aid | num | 课程分集avID | **与普通稿件avID部分不互通** | +| cid | num | 课程分集CID | **与普通视频CID部分不互通** | +| duration | num | 课程分集时间长度 | 单位为秒 | +| from | str | pugv | | +| id | num | 课程分集epID | **与番剧epID不互通** | +| index | num | 课程分集数 | | +| page | num | 1 | | +| play | num | 课程分集播放量 | | +| release_date | num | 课程分集发布时间 | 时间戳 | +| status | num | 分集权限属性 | 1:可观看
2:不可观看 | +| title | str | 课程分集标题 | | +| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
false:未观看
true:已观看 | +| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** | + +`data`中的`page`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------------- | ----------------------------------------- | +| next | bool | 是否存在下一页 | false:不存在下一页
true:存在下一页 | +| num | num | 当前页码 | | +| size | num | 每页项数 | | +| total | num | 总价项数 | | + +**示例:** + +按照每页5项查询课程`ss61`的分集列表第1页 + +```shell +curl -G 'http://api.bilibili.com/pugv/view/web/ep/list' \ +--data-urlencode 'season_id=61' \ +--data-urlencode 'ps=5 ' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' \ +-e 'https://www.bilibili.com' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "items": [ + { + "aid": 76973173, + "cid": 132105993, + "duration": 2223, + "from": "pugv", + "id": 790, + "index": 1, + "page": 1, + "play": 2406951, + "release_date": 1574762407, + "status": 1, + "title": "唐盾:一起从0基础学日语吧(含50音 词汇试听)", + "watched": false, + "watchedHistory": 0 + }, + { + "aid": 77114885, + "cid": 132110244, + "duration": 3003, + "from": "pugv", + "id": 795, + "index": 2, + "page": 1, + "play": 49106, + "release_date": 1574766759, + "status": 2, + "title": "50音あ行假名/音调/送气与不送气音", + "watched": false, + "watchedHistory": 0 + }, + { + "aid": 77120689, + "cid": 131913553, + "duration": 3253, + "from": "pugv", + "id": 797, + "index": 3, + "page": 1, + "play": 49522, + "release_date": 1574770029, + "status": 2, + "title": "50音图的か行、さ行、た行假名", + "watched": false, + "watchedHistory": 0 + }, + { + "aid": 77606110, + "cid": 132897199, + "duration": 2823, + "from": "pugv", + "id": 806, + "index": 4, + "page": 1, + "play": 35800, + "release_date": 1575128696, + "status": 2, + "title": "50音图的な行、は行、ま行假名", + "watched": false, + "watchedHistory": 0 + }, + { + "aid": 78015255, + "cid": 133651764, + "duration": 2165, + "from": "pugv", + "id": 812, + "index": 5, + "page": 1, + "play": 25842, + "release_date": 1575446218, + "status": 2, + "title": "や行、ら行、わ行假名、拨音", + "watched": false, + "watchedHistory": 0 + } + ], + "page": { + "next": true, + "num": 1, + "size": 5, + "total": 66 + } + }, + "message": "success" +} +``` + +
diff --git a/cheese/videostream_url.md b/cheese/videostream_url.md new file mode 100644 index 0000000..8b60022 --- /dev/null +++ b/cheese/videostream_url.md @@ -0,0 +1,265 @@ +# 课程视频流URL + + + +## 获取课程视频流URL(web端) + +> http://api.bilibili.com/pugv/player/web/playurl + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**注:本接口为课程视频专用,故与普通视频不互通** + +--- + +关于视频流会员鉴权: + +- 获取720P及以上清晰度视频时需要登录(Cookie) + +- 获取高帧率(1080P60)/高码率(1080P+)视频时需要有大会员的账号登录(Cookie) +- 获取正式课程视频(非试看)时需要有已经购买的账号登录(Cookie) + +--- + +获取的url有效时间为120min,超时失效需要重新获取 + +**部分视频**会有**分段**,需要特别注意 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------------- | ------ | ------------------------------------------------------------ | +| avid | num | 课程avID | 必要 | | +| ep_id | num | 课程epID | 必要 | | +| cid | num | 视频CID | 必要 | | +| qn | num | 视频清晰度选择 | 非必要 | 未登录默认32(480P)
登录默认64(720P)
**值含义见下表** | +| fourk | num | 是否允许4K视频 | 非必要 | 默认为0
画质最高1080P:0
画质最高4K:1 | + +分辨率代码: + +| 值 | 含义 | +| ---- | ---------------------- | +| 16 | 360P 流畅 | +| 32 | 480P 清晰 | +| 64 | 720P 高清(登录) | +| 74 | 720P60 高清(大会员) | +| 80 | 1080P 高清(登录) | +| 112 | 1080P+ 高清(大会员) | +| 116 | 1080P60 高清(大会员) | +| 120 | 4K 超清(大会员) | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频
-403:权限不足(未购买) | +| message | str | 错误信息 | 默认为success | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------ | ------ | ---------------------- | ---------------------------------------- | +| accept_format | str | 视频支持的分辨率的格式 | | +| code | num | 0 | | +| durl | array | 视频分段 | | +| seek_param | str | start | | +| no_rexcode | num | 0 | | +| format | str | 视频格式 | | +| fnval | num | 0 | | +| video_project | bool | true | | +| fnver | num | 0 | | +| message | str | 空 | | +| type | str | 视频格式 | | +| accept_quality | array | 视频支持的分辨率列表 | | +| quality | num | 视频分辨率代码 | **值含义见上表** | +| timelength | num | 视频长度 | 单位为毫秒
不同分辨率可能有略微差异 | +| result | str | suee | **作用尚不明确** | +| seek_type | str | offset | **作用尚不明确** | +| has_paid | bool | false | **作用尚不明确** | +| supportFormats | array | 视频分辨率详细列表 | | +| from | str | local | **作用尚不明确** | +| video_codecid | num | ??? | **作用尚不明确** | +| accept_description | array | 视频支持的分辨率列表 | | +| status | num | 0 | **作用尚不明确** | + +`data`中的`durl`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | obj | 视频分段1信息 | | +| n | obj | 视频分段(n+1)信息 | | +| …… | obj | …… | | + +`durl`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ------ | ------------ | ---------------------------------- | +| size | num | 视频大小 | 单位为Byte | +| ahead | str | 空 | 作用尚不明确 | +| length | num | 视频长度 | 单位为毫秒 | +| vhead | str | 空 | 作用尚不明确 | +| backup_url | array | 备用视频流 | | +| url | str | 视频流url | 链接有效时间为120min | +| order | num | 视频分段序号 | 某些视频会分为多个片段 | + +`durl`数组中的对象中的`backup_url`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---------------- | +| 0 | str | 备用视频流url | 有效时间为120min | + +`data`中的`supportFormats`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---- | +| 0 | obj | 分辨率详细信息1 | | +| n | obj | 分辨率详细信息(n+1) | | +| …… | obj | …… | …… | + +`supportFormats`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------- | ---- | +| format | str | 分辨率名称 | | +| description | atr | 分辨率备注 | | +| quality | num | 分辨率代码 | | + +`data`中的`accept_description`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 分辨率名称1 | | +| n | str | 分辨率名称(n+1) | | +| …… | str | …… | …… | + +**示例:** + +获取课程`ep790`(CID=`132105993`,avID=`76973173`)的视频流url,清晰度为1080P60 + +```shell +curl -G 'http://api.bilibili.com/pugv/player/web/playurl' \ +--data-urlencode 'ep_id=790' \ +--data-urlencode 'avid=76973173' \ +--data-urlencode 'cid=132105993' \ +--data-urlencode 'qn=116' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "accept_format": "flv_p60,flv720_p60,flv,flv720,flv480,flv360", + "code": 0, + "durl": [ + { + "size": 1105854161, + "ahead": "", + "length": 2222204, + "vhead": "", + "backup_url": [ + "https://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3cbv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=b271bf493bff32ffe62969582c8d18b4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=1,2&logo=40000000" + ], + "url": "https://upos-sz-mirrorks3.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3bv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=6a8ae3711bd0bb2a484ec2427d659b14&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,2&logo=80000000", + "order": 1, + "md5": "" + } + ], + "seek_param": "start", + "no_rexcode": 0, + "format": "flv_p60", + "fnval": 0, + "video_project": true, + "fnver": 0, + "message": "", + "type": "FLV", + "accept_quality": [ + 116, + 74, + 80, + 64, + 32, + 16 + ], + "quality": 116, + "timelength": 2222204, + "result": "suee", + "seek_type": "offset", + "has_paid": false, + "supportFormats": [ + { + "format": "flv_p60", + "description": "高清 1080P60", + "quality": 116 + }, + { + "format": "flv720_p60", + "description": "高清 720P60", + "quality": 74 + }, + { + "format": "flv", + "description": "高清 1080P", + "quality": 80 + }, + { + "format": "flv720", + "description": "高清 720P", + "quality": 64 + }, + { + "format": "flv480", + "description": "清晰 480P", + "quality": 32 + }, + { + "format": "flv360", + "description": "流畅 360P", + "quality": 16 + } + ], + "from": "local", + "video_codecid": 7, + "accept_description": [ + "高清 1080P60", + "高清 720P60", + "高清 1080P", + "高清 720P", + "清晰 480P", + "流畅 360P" + ], + "status": 0 + }, + "message": "success" +} +``` + +
+ + + +## 视频的获取 + +将`data`.`durl`.`[1-n]`.`url`或`data`.`durl`.`[1-n]`.`backup_url`.`[0]`中的内容作为url进行GET操作, 如果有多个视频, 需要手动合并处理 + +需要验证请求`referer`为 `.bilibili.com`域名下(防盗链),且`user-agent` 不为空 + +**referer或user-agent错误的情况会返回403 Forbidden**故无法获取 + +**以上述视频url为例:** + +```shell +wget 'https://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3cbv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=b271bf493bff32ffe62969582c8d18b4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=1,2&logo=40000000' \ +-e 'https://www.bilibili.com' \ +-O 'Download_video.flv' +``` + +响应正文将返回一个flv文件 \ No newline at end of file diff --git a/comment/action.md b/comment/action.md new file mode 100644 index 0000000..1b23248 --- /dev/null +++ b/comment/action.md @@ -0,0 +1,539 @@ +# 评论区操作 + +**本页所有操作均需登录(Cookie或APP)** + +使用该登录token识别用户身份 + +## 发表评论 + +> http://api.bilibili.com/x/v2/reply/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | +| root | num | 根评论rpID | 非必要 | 二级评论以上使用 | +| parent | num | 父评论rpID | 非必要 | 二级评论同根评论ID
大于二级评论为要回复的评论ID | +| message | str | 发送评论内容 | 必要 | 最大1000字符
表情使用表情转义符 | +| plat | num | 发送平台标识 | 非必要 | 1:web端
2:安卓客户端
3:ios客户端
4:wp客户端
默认为1 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-509:请求过于频繁
12001:已经存在评论主题
12002:评论区已关闭
12003:禁止回复
12006:没有该评论
12009:评论主体的type不合法
12015:需要评论验证码
12016:评论内容包含敏感信息
12025:评论字数过多
12035:该账号被UP主列入评论黑名单
12051:重复评论,请勿刷屏
**(其他错误码有待补充)** | +| message | str | 错误信息 |
| +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ----------------------------- | -------------- | ------------------------------------------------------------ | +| success_action | num | 0 | **作用尚不明确** | +| success_toast | str | 状态文字 | | +| need_captcha | bool | false | 评论需要验证码(未证实) | +| url | str | 空 | **作用尚不明确** | +| rpid | num | 评论rpID | | +| rpid_str | str | 评论rpID | 字串格式 | +| dialog | num | 回复对方rpID | 若为一级评论则为0
若为二级评论则为该评论ID
大于二级评论为上一级评论ID | +| dialog_str | str | 回复对方rpID | 字串格式 | +| root | num | 根评论rpID | 若为一级评论则为0
大于一级评论则为根评论ID | +| root_str | str | 根评论rpID | 字串格式 | +| parent | num | 回复父评论rpID | 若为一级评论则为0
若为二级评论则为根评论ID
大于二级评论为上一级评论ID | +| parent_str | str | 回复父评论rpID | 字串格式 | +| emote | obj | 表情转义符信息 | [对象定义见表](readme.md#评论条目对象) | +| reply | 有效时:obj
无效时:null | | [对象定义见表](readme.md#评论条目对象) | + +**示例:** + +给视频`av243322853`发送内容为`测试test[泠鸢yousa_awsl]`的评论(带有表情转义符),平台标识为1(web端) + +```shell +curl 'http://api.bilibili.com/x/v2/reply/add' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=243322853' \ +--data-urlencode 'message=测试test[泠鸢yousa_awsl]' \ +--data-urlencode 'plat=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "success_action": 0, + "success_toast": "发送成功", + "need_captcha": false, + "url": "", + "rpid": 3043212039, + "rpid_str": "3043212039", + "dialog": 0, + "dialog_str": "0", + "root": 0, + "root_str": "0", + "parent": 0, + "parent_str": "0", + "emote": { + "[泠鸢yousa_awsl]": { + "id": 2086, + "package_id": 93, + "state": 0, + "type": 3, + "attr": 0, + "text": "[泠鸢yousa_awsl]", + "url": "http://i0.hdslb.com/bfs/emote/7663b729161bd4556c2ec318c07791000743eb56.png", + "meta": { + "size": 2 + }, + "mtime": 1589776042 + } + }, + "reply": { + "rpid": 3043212039, + "oid": 243322853, + "type": 1, + "mid": 293793435, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1592233764, + "rpid_str": "3043212039", + "root_str": "0", + "parent_str": "0", + "like": 0, + "action": 0, + "member": { + "mid": "293793435", + "uname": "社会易姐QwQ", + "sex": "男", + "sign": "高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨", + "avatar": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1888, + "name": "泠鸢yousa", + "image": "http://i0.hdslb.com/bfs/garb/item/3e66e712b8e70c6b02393c54ad5fd8d993eb39f9.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/garb/item/3e66e712b8e70c6b02393c54ad5fd8d993eb39f9.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1612454400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1888, + "name": "泠鸢yousa", + "image": "http://i0.hdslb.com/bfs/garb/item/3e66e712b8e70c6b02393c54ad5fd8d993eb39f9.png", + "jump_url": "", + "type": "suit" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "测试test[泠鸢yousa_awsl]", + "plat": 1, + "device": "", + "members": [], + "emote": { + "[泠鸢yousa_awsl]": { + "id": 2086, + "package_id": 93, + "state": 0, + "type": 3, + "attr": 0, + "text": "[泠鸢yousa_awsl]", + "url": "http://i0.hdslb.com/bfs/emote/7663b729161bd4556c2ec318c07791000743eb56.png", + "meta": { + "size": 2 + }, + "mtime": 1589776042 + } + }, + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + } +} +``` + +
+ +## 点赞评论 + +> http://api.bilibili.com/x/v2/reply/action + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +点赞成功后会同时消去该评论的点踩 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | +| rpid | num | 目标评论rpID | 必要 | | +| action | num | 操作代码 | 非必要 | 默认为0
0:取消赞
1:点赞 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12004:禁止操作 赞或踩
12006:没有该评论
12009:评论主体的type不合法
12011:不合法的赞或踩
**(其他错误码有待补充)** | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +点赞视频`av243322853`下评论`rpID=3039053308` + +```shell +curl 'http://api.bilibili.com/x/v2/reply/action' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=243322853' \ +--data-urlencode 'rpid=3039053308' \ +--data-urlencode 'action=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 点踩评论 + +> http://api.bilibili.com/x/v2/reply/hate + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +点踩成功后会同时消去该评论的点赞 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | +| rpid | num | 目标评论rpID | 必要 | | +| action | num | 操作代码 | 非必要 | 默认为0
0:取消踩
1:点踩 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12004:禁止操作 赞或踩
12006:没有该评论
12009:评论主体的type不合法
12011:不合法的赞或踩
**(其他错误码有待补充)** | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +点踩视频`av243322853`下评论`rpID=3039053308` + +```shell +curl 'http://api.bilibili.com/x/v2/reply/hate' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=243322853' \ +--data-urlencode 'rpid=3039053308' \ +--data-urlencode 'action=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 删除评论 + +> http://api.bilibili.com/x/v2/reply/del + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +只能删除自己的评论,或自己管理的评论区下的评论 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | +| rpid | num | 目标评论rpID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-403:权限不足
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12009:评论主体的type不合法
12022:已经被删除了
**(其他错误码有待补充)** | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | **作用尚不明确** | + +**示例:** + +删除`av243322853`下评论`rpID=3039053308` + +```shell +curl 'http://api.bilibili.com/x/v2/reply/del' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=243322853' \ +--data-urlencode 'rpid=3039053308' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 置顶评论 + +> http://api.bilibili.com/x/v2/reply/top + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +只能置顶自己管理的评论区中的一级评论 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | +| rpid | num | 目标评论rpID | 必要 | | +| action | num | 操作代码 | 非必要 | 默认为0
0:取消置顶
1:设为置顶 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-403:权限不足
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12006:没有该评论
12009:评论主体的type不合法
12029:已经有置顶评论
12030:不能置顶非一级评论
**(其他错误码有待补充)** | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +置顶视频`av243322853`下评论`rpID=2940645593` + +```shell +curl 'http://api.bilibili.com/x/v2/reply/top' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=243322853' \ +--data-urlencode 'rpid=2940645593' \ +--data-urlencode 'action=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 举报评论 + +> http://api.bilibili.com/x/v2/reply/report + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | +| rpid | num | 目标评论rpID | 必要 | | +| reason | num | 举报类型 | 必要 | **类型代码见下表** | +| content | str | 其他举报备注 | 非必要 | `reason=0`时有效 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +举报类型`reason`: + +| 代码 | 含义 | +| ---- | -------------- | +| 0 | 其他 | +| 1 | 垃圾广告 | +| 2 | 色情 | +| 3 | 刷屏 | +| 4 | 引战 | +| 5 | 剧透 | +| 6 | 政治 | +| 7 | 人身攻击 | +| 8 | 内容不相关 | +| 9 | 违法违规 | +| 10 | 低俗 | +| 11 | 非法网站 | +| 12 | 赌博诈骗 | +| 13 | 传播不实信息 | +| 14 | 怂恿教唆信息 | +| 15 | 侵犯隐私 | +| 16 | 抢楼 | +| 17 | 青少年不良信息 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-403:权限不足
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12006:没有该评论
12008:已经举报过了
12009:评论主体的type不合法
12019:举报过于频繁
**(其他错误码有待补充)** | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +举报视频` av752881391 `下评论`rpID=3062537442`,理由是`引战` + +```shell +curl 'http://api.bilibili.com/x/v2/reply/report' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=752881391' \ +--data-urlencode 'rpid=3062537442' \ +--data-urlencode 'reason=4' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
diff --git a/comment/list.md b/comment/list.md new file mode 100644 index 0000000..1032e1c --- /dev/null +++ b/comment/list.md @@ -0,0 +1,7126 @@ +# 评论区明细 + +## 获取评论区明细1(无楼层号) + +> http://api.bilibili.com/x/v2/reply + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | -------------- | ----------- | -------------------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | +| oid | num | 目标评论区ID | 必要 | | +| sort | num | 排序方式 | 非必要 | 默认为0
0:按时间
1:按点赞数
2:按回复数 | +| nohot | num | 是否不显示热评 | 非必要 | 默认为0
1:不显示
0:显示 | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页项数 | 非必要 | 默认为20
定义域:1-49 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | -------------------------------- | -------- | ---------------- | +| page | obj | 页信息 | | +| config | obj | 属性信息 | | +| replies | 禁用时:null
正常时:array | 评论根列表 | | +| hots | 禁用时:null
正常时:array | 热评根列表 | | +| upper | obj | 置顶评论 | | +| top | null | - | **作用尚不明确** | +| notice | 无效时:null
有效时:obj | 评论区公告信息 | | +| vote | num | 0 | **作用尚不明确** | +| blacklist | num | 0 | **作用尚不明确** | +| assist | num | 0 | **作用尚不明确** | +| mode | num | 3 | **作用尚不明确** | +| support_mode | array | ??? | **作用尚不明确** | +| folder | obj | ??? | **作用尚不明确** | +| lottery_card | null | - | **作用尚不明确** | +| show_bvid | bool | true | **作用尚不明确** | +| control | obj | 评论区输入属性 | | + +`data`中的`page`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------ | ---- | +| num | num | 当前页码 | | +| size | num | 每页项数 | | +| count | num | 根评论条数 | | +| acount | num | 总计评论条数 | | + +`data`中的`config`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ----- | ---------------- | +| showadmin | num | 1 | **作用尚不明确** | +| showentry | num | 1 | **作用尚不明确** | +| showfloor | num | 0 | **作用尚不明确** | +| showtopic | num | 1 | **作用尚不明确** | +| show_up_flag | bool | true | **作用尚不明确** | +| read_only | bool | false | **作用尚不明确** | +| show_del_log | bool | false | **作用尚不明确** | + +`data`中的`replies`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | -------------------------------------- | +| 0 | obj | 评论条目1 | [对象定义见表](readme.md#评论条目对象) | +| n | obj | 评论条目(n+1) | 按照指定的顺序排列 | +| …… | obj | …… | …… | + +`data`中的`hots`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | -------------------------------------- | +| 0 | obj | 热评条目1 | [对象定义见表](readme.md#评论条目对象) | +| n | obj | 热评条目(n+1) | 按照热评热度排列 | +| …… | obj | …… | …… | + +`data`中的`upper`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----------------------------- | -------- | -------------------------------------- | +| mid | num | UP主UID | | +| top | 有效时:obj
无效时:null | 置顶条目 | [对象定义见表](readme.md#评论条目对象) | +| vote | null | - | | + +`data`中的`notice`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | --------------- | ---- | +| content | str | 公告正文 | | +| id | num | 公告ID | | +| link | str | 公告页面链接url | | +| title | str | 公告标题 | | + +`data`中的`support_mode`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---------------- | +| 0 | num | 1 | **作用尚不明确** | +| 1 | num | 2 | **作用尚不明确** | +| 2 | num | 3 | **作用尚不明确** | + +`data`中的`folder`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------ | ---------------- | +| has_folded | bool | false | **作用尚不明确** | +| is_folded | bool | false | **作用尚不明确** | +| rule | str | ??? | **作用尚不明确** | + +`data`中的`control`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------------ | ---- | ------------------ | ----------------------------------- | +| input_disable | bool | false | **作用尚不明确** | +| root_input_text | str | 评论框文字 | | +| child_input_text | str | 评论框文字 | | +| bg_text | str | 空评论区文字 | | +| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | +| answer_guide_text | str | 答题页面链接文字 | | +| answer_guide_icon_url | str | 答题页面图标url | | +| answer_guide_ios_url | str | 答题页面ios url | | +| answer_guide_android_url | str | 答题页面安卓url | | + +**示例:** + +获取视频`av2`的评论区明细,不显示热评,按照热度排序,每页5项,查看第1页 + +```shell +curl -G 'http://api.bilibili.com/x/v2/reply' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=2' \ +--data-urlencode 'sort=1' \ +--data-urlencode 'ps=5' \ +--data-urlencode 'pn=1' \ +--data-urlencode 'nohot=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "page": { + "num": 1, + "size": 5, + "count": 14988, + "acount": 65115 + }, + "config": { + "showadmin": 1, + "showentry": 1, + "showfloor": 0, + "showtopic": 1, + "show_up_flag": true, + "read_only": false, + "show_del_log": false + }, + "replies": [ + { + "rpid": 476670, + "oid": 2, + "type": 1, + "mid": 58426, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 1889, + "rcount": 1839, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1291350931, + "rpid_str": "476670", + "root_str": "0", + "parent_str": "0", + "like": 53536, + "action": 0, + "member": { + "mid": "58426", + "uname": "残星什么的就是残星", + "sex": "男", + "sign": "少说话多做事 _微博@残星", + "avatar": "http://i0.hdslb.com/bfs/face/56ac36b37662e3746228f30eb4acf2cd332b66a5.jpg", + "rank": "20000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 30, + "name": "字幕君", + "image": "http://i0.hdslb.com/bfs/face/383c3fed3dc162c93a8d616a272693f6650e98f1.png", + "image_small": "http://i2.hdslb.com/bfs/face/7ad18084e40b725210e22696e0efdae408cd378c.png", + "level": "稀有勋章", + "condition": "弹幕大赛获得" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1550851200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "貌似没人来", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 568785293, + "oid": 2, + "type": 1, + "mid": 52987877, + "root": 476670, + "parent": 476670, + "dialog": 568785293, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1514903586, + "rpid_str": "568785293", + "root_str": "476670", + "parent_str": "476670", + "like": 3123, + "action": 0, + "member": { + "mid": "52987877", + "uname": "Mr-Shadow", + "sex": "男", + "sign": "重灾区话题回避", + "avatar": "http://i0.hdslb.com/bfs/face/ea3eede05ad51c34f382534793f0bf20fa6e79e8.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 457, + "name": "少女前线", + "image": "http://i2.hdslb.com/bfs/face/295cd9505bfe2edd360becd1ffd70f1870505696.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/295cd9505bfe2edd360becd1ffd70f1870505696.png" + }, + "nameplate": { + "nid": 61, + "name": "饭圈楷模", + "image": "http://i1.hdslb.com/bfs/face/5a90f715451325c642a6ac39e01195cb6d075734.png", + "image_small": "http://i2.hdslb.com/bfs/face/5bfc1b4fb3f4b411495dddb0b2127ad80f6fbcac.png", + "level": "普通勋章", + "condition": "当前持有粉丝勋章最高等级>=10级" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1618502400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 457, + "name": "少女前线", + "image": "http://i0.hdslb.com/bfs/face/295cd9505bfe2edd360becd1ffd70f1870505696.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "你可能抢到了整个b站最难抢到的沙发(`・ω・´)", + "plat": 6, + "device": "pad", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214198733, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198733, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888369, + "rpid_str": "214198733", + "root_str": "476670", + "parent_str": "476670", + "like": 1183, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i1.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214198179, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198179, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888303, + "rpid_str": "214198179", + "root_str": "476670", + "parent_str": "476670", + "like": 1080, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i1.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "可怜的二楼(=・ω・=)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 2576184175, + "oid": 2, + "type": 1, + "mid": 24512285, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 836, + "rcount": 801, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584945297, + "rpid_str": "2576184175", + "root_str": "0", + "parent_str": "0", + "like": 27408, + "action": 1, + "member": { + "mid": "24512285", + "uname": "霁歆", + "sex": "男", + "sign": "", + "avatar": "http://i1.hdslb.com/bfs/face/9cb18f0a8e9cae048dfa816972ee247111a8e22d.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 994, + "name": "格兰芬多", + "image": "http://i2.hdslb.com/bfs/face/2dee633139ce7c6b0dca657236240cc399c090be.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/2dee633139ce7c6b0dca657236240cc399c090be.png" + }, + "nameplate": { + "nid": 58, + "name": "收集达人", + "image": "http://i2.hdslb.com/bfs/face/3f5539e1486303422ffc8595862ccb6606e0b745.png", + "image_small": "http://i1.hdslb.com/bfs/face/cf85e7908095d256e595ec9759f4e7795f23bc22.png", + "level": "普通勋章", + "condition": "同时拥有粉丝勋章>=15个" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1613577600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 994, + "name": "格兰芬多", + "image": "http://i0.hdslb.com/bfs/face/2dee633139ce7c6b0dca657236240cc399c090be.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "人类最古のav号(挂了的不算)也变成bv了[大哭][大哭][大哭]青春结束了", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[大哭]": { + "id": 5, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[大哭]", + "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 2578082161, + "oid": 2, + "type": 1, + "mid": 407225717, + "root": 2576184175, + "parent": 2576184175, + "dialog": 2578082161, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584964926, + "rpid_str": "2578082161", + "root_str": "2576184175", + "parent_str": "2576184175", + "like": 1000, + "action": 0, + "member": { + "mid": "407225717", + "uname": "渣男5107号", + "sex": "保密", + "sign": "", + "avatar": "http://i2.hdslb.com/bfs/face/b7af802409026c6534441eb5298434feed41fd1d.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583942400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "先留个名,估计以后av会被当成冷知识放出来[大哭]", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[大哭]": { + "id": 5, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[大哭]", + "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 2576348604, + "oid": 2, + "type": 1, + "mid": 172853390, + "root": 2576184175, + "parent": 2576184175, + "dialog": 2576348604, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584947227, + "rpid_str": "2576348604", + "root_str": "2576184175", + "parent_str": "2576184175", + "like": 244, + "action": 0, + "member": { + "mid": "172853390", + "uname": "剑惊风雨丶", + "sex": "男", + "sign": "这个人勤快死了,什么都没有写(ー_ー)!!", + "avatar": "http://i0.hdslb.com/bfs/face/41c25392a4f96f48c499cc68dd9ad3215227c5ed.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av号还是可以搜啊", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 2579961512, + "oid": 2, + "type": 1, + "mid": 329965337, + "root": 2576184175, + "parent": 2576184175, + "dialog": 2579961512, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584982846, + "rpid_str": "2579961512", + "root_str": "2576184175", + "parent_str": "2576184175", + "like": 134, + "action": 0, + "member": { + "mid": "329965337", + "uname": "积极发言的刘同学", + "sex": "男", + "sign": "化学世界真奇妙,学好化学炸学校。", + "avatar": "http://i1.hdslb.com/bfs/face/3b586d7dbe8c2dba32b213e0a474fe6d86921b85.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1585324800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "10个小时就有6500多赞?你是魔鬼?", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 495059, + "oid": 2, + "type": 1, + "mid": 2, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 555, + "rcount": 530, + "state": 2, + "fansgrade": 0, + "attr": 0, + "ctime": 1291918239, + "rpid_str": "495059", + "root_str": "0", + "parent_str": "0", + "like": 15910, + "action": 0, + "member": { + "mid": "2", + "uname": "碧诗", + "sex": "男", + "sign": "kami.im 直男过气网红 # av362830 “We Are Star Dust”", + "avatar": "http://i0.hdslb.com/bfs/app/3e60b20604b6fdc7d081eb6a1ec72aa47c5a3964.jpg", + "rank": "20000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1141, + "name": "如果历史是一群喵", + "image": "http://i2.hdslb.com/bfs/garb/item/cd3e9a6fa18db9ebdc128b0fef64cb32c5aab854.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/garb/item/cd3e9a6fa18db9ebdc128b0fef64cb32c5aab854.png" + }, + "nameplate": { + "nid": 10, + "name": "见习偶像", + "image": "http://i1.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png", + "image_small": "http://i2.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png", + "level": "普通勋章", + "condition": "所有自制视频总播放数>=10万" + }, + "official_verify": { + "type": 0, + "desc": "bilibili创始人(站长)" + }, + "vip": { + "vipType": 2, + "vipDueDate": 3848745600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "十年大会员", + "label_theme": "ten_annual_vip" + } + }, + "fans_detail": null, + "following": 1, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1141, + "name": "如果历史是一群喵", + "image": "http://i0.hdslb.com/bfs/garb/item/cd3e9a6fa18db9ebdc128b0fef64cb32c5aab854.png", + "jump_url": "", + "type": "suit" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "wwwww", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 164517433, + "oid": 2, + "type": 1, + "mid": 3476504, + "root": 495059, + "parent": 495059, + "dialog": 164517433, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1479570959, + "rpid_str": "164517433", + "root_str": "495059", + "parent_str": "495059", + "like": 206, + "action": 0, + "member": { + "mid": "3476504", + "uname": "麦斯科桑", + "sex": "保密", + "sign": "淡ACG的比例比例是屑.", + "avatar": "http://i2.hdslb.com/bfs/face/7bf954d807cbda4de4221d78f3b425534042ac02.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 194, + "name": "黑白无双", + "image": "http://i2.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i0.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i1.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1732204800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 194, + "name": "黑白无双", + "image": "http://i0.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "拉了半天总算是见了底", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 464424502, + "oid": 2, + "type": 1, + "mid": 37145412, + "root": 495059, + "parent": 495059, + "dialog": 464424502, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 1, + "attr": 0, + "ctime": 1509257961, + "rpid_str": "464424502", + "root_str": "495059", + "parent_str": "495059", + "like": 115, + "action": 0, + "member": { + "mid": "37145412", + "uname": "边走边发呆", + "sex": "男", + "sign": "这个人懒死了,什么都不发=_= 头像是素晴日", + "avatar": "http://i0.hdslb.com/bfs/face/4dfe0f1b0bfc9b1afea9e3bacbc5a92221fe9b09.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 60, + "name": "饭圈萌新", + "image": "http://i1.hdslb.com/bfs/face/51ca16136e570938450bca360f28761ceb609f33.png", + "image_small": "http://i1.hdslb.com/bfs/face/9abfa4769357f85937782c2dbc40fafda4f57217.png", + "level": "普通勋章", + "condition": "当前持有粉丝勋章最高等级>=5级" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1559836800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": { + "uid": 37145412, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 7, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "5000多楼6225评论(;¬_¬)手有点酸,如果不是特殊方法进来的话是要大会员吧(● ̄(エ) ̄●)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214199123, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 495059, + "parent": 495059, + "dialog": 214199123, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888421, + "rpid_str": "214199123", + "root_str": "495059", + "parent_str": "495059", + "like": 41, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i1.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 208000425, + "oid": 2, + "type": 1, + "mid": 30976371, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 544, + "rcount": 511, + "state": 2, + "fansgrade": 0, + "attr": 12, + "ctime": 1487772179, + "rpid_str": "208000425", + "root_str": "0", + "parent_str": "0", + "like": 16839, + "action": 0, + "member": { + "mid": "30976371", + "uname": "紫荆7x", + "sex": "保密", + "sign": "寒山渐远渐明薄,未知前路几迢遥。 \n", + "avatar": "http://i1.hdslb.com/bfs/face/0939e21818bf913b4ee35aaa0e604fc9938047ce.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": 0, + "desc": "音乐人紫荆7x" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1650988800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "jump_url": "", + "type": "pay" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av1是“公告”,主要是公布B站的部分升级内容、活动预告相关事件等信息。范围是2010年6月7日-2011年7月26日,UP主是ANA,整个合集共计1886P。内容以文本显示没有视频,现已无法进入,不过B站的官方微博、微信和*******可以查阅到相关内容。\n原稿请搜索知乎,有图,侵删【B站av1-6有人看过吗?】", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 208106601, + "oid": 2, + "type": 1, + "mid": 33202778, + "root": 208000425, + "parent": 208000425, + "dialog": 208106601, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1487781338, + "rpid_str": "208106601", + "root_str": "208000425", + "parent_str": "208000425", + "like": 4659, + "action": 0, + "member": { + "mid": "33202778", + "uname": "Adnini983", + "sex": "保密", + "sign": "Twitter:@adnini983 汤不热:https://adnini983.tumblr.com/", + "avatar": "http://i0.hdslb.com/bfs/face/8b11f5635b78cc5cdbd8245048405f52d24f187a.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 6, + "name": "高级搬运工", + "image": "http://i2.hdslb.com/bfs/face/a9af39ab7ed08e078c45d58dd96a6411aba1a9d3.png", + "image_small": "http://i2.hdslb.com/bfs/face/46e5aae4667c72c379b46b51fac4b4426d9214e7.png", + "level": "高级勋章", + "condition": "转载视频投稿通过总数>=100" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1521043200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "这个就是我在知乎写的,我就是知乎上的Adnini983。但考虑到你标注了出处,我允许你予以保留。", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 208002062, + "oid": 2, + "type": 1, + "mid": 30976371, + "root": 208000425, + "parent": 208000425, + "dialog": 208002062, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1487772305, + "rpid_str": "208002062", + "root_str": "208000425", + "parent_str": "208000425", + "like": 1862, + "action": 0, + "member": { + "mid": "30976371", + "uname": "紫荆7x", + "sex": "保密", + "sign": "寒山渐远渐明薄,未知前路几迢遥。 \n", + "avatar": "http://i1.hdslb.com/bfs/face/0939e21818bf913b4ee35aaa0e604fc9938047ce.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": 0, + "desc": "音乐人紫荆7x" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1650988800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "jump_url": "", + "type": "pay" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av4无法使用任何方式访问", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 208000986, + "oid": 2, + "type": 1, + "mid": 30976371, + "root": 208000425, + "parent": 208000425, + "dialog": 208000986, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1487772222, + "rpid_str": "208000986", + "root_str": "208000425", + "parent_str": "208000425", + "like": 1572, + "action": 0, + "member": { + "mid": "30976371", + "uname": "紫荆7x", + "sex": "保密", + "sign": "寒山渐远渐明薄,未知前路几迢遥。 \n", + "avatar": "http://i1.hdslb.com/bfs/face/0939e21818bf913b4ee35aaa0e604fc9938047ce.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": 0, + "desc": "音乐人紫荆7x" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1650988800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "jump_url": "", + "type": "pay" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av2是一部名叫“字幕君交流场所”的视频,里面包含了东方Project的图片和音乐,UP主是碧诗。通常情况下无法打开,但可以使用唧唧下载视频。(现在可以打开了,恭喜你们)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 917945205, + "oid": 2, + "type": 1, + "mid": 34762090, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 124, + "rcount": 104, + "state": 0, + "fansgrade": 1, + "attr": 0, + "ctime": 1532071373, + "rpid_str": "917945205", + "root_str": "0", + "parent_str": "0", + "like": 7488, + "action": 0, + "member": { + "mid": "34762090", + "uname": "某不科学的瓜皮", + "sex": "男", + "sign": "持杯拱天,谓无言,静沉眠", + "avatar": "http://i2.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i2.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583164800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": { + "uid": 34762090, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 1, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "7.20日,站长被封7天\n\n历史性留名[2233娘_卖萌]", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[2233娘_卖萌]": { + "id": 140, + "package_id": 6, + "state": 0, + "type": 2, + "attr": 0, + "text": "[2233娘_卖萌]", + "url": "http://i0.hdslb.com/bfs/emote/ea893aa25355de95ab4f03c2dad3f0c58d0c159e.png", + "meta": { + "size": 2 + }, + "mtime": 1586316683 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 1781253749, + "oid": 2, + "type": 1, + "mid": 34762090, + "root": 917945205, + "parent": 917945205, + "dialog": 1781253749, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 1, + "attr": 0, + "ctime": 1563598609, + "rpid_str": "1781253749", + "root_str": "917945205", + "parent_str": "917945205", + "like": 374, + "action": 0, + "member": { + "mid": "34762090", + "uname": "某不科学的瓜皮", + "sex": "男", + "sign": "持杯拱天,谓无言,静沉眠", + "avatar": "http://i2.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i2.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583164800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": { + "uid": 34762090, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 1, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "站长被封一周年 [小电视_笑]", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[小电视_笑]": { + "id": 121, + "package_id": 5, + "state": 0, + "type": 2, + "attr": 0, + "text": "[小电视_笑]", + "url": "http://i0.hdslb.com/bfs/emote/f80d384875183dfe2e24be13011c595c0210d273.png", + "meta": { + "size": 2 + }, + "mtime": 1591272851 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 1387109941, + "oid": 2, + "type": 1, + "mid": 317451026, + "root": 917945205, + "parent": 917945205, + "dialog": 1387109941, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1550139263, + "rpid_str": "1387109941", + "root_str": "917945205", + "parent_str": "917945205", + "like": 294, + "action": 0, + "member": { + "mid": "317451026", + "uname": "草_grass", + "sex": "男", + "sign": "NOTHING", + "avatar": "http://i1.hdslb.com/bfs/face/c4569f98034a7810063bc52eef9d446711688c12.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "头七还行?", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 1781556726, + "oid": 2, + "type": 1, + "mid": 417437969, + "root": 917945205, + "parent": 1781253749, + "dialog": 1781253749, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1563605321, + "rpid_str": "1781556726", + "root_str": "917945205", + "parent_str": "1781253749", + "like": 116, + "action": 0, + "member": { + "mid": "417437969", + "uname": "理查奈德", + "sex": "男", + "sign": "手殘的屑玩家兼見習音罵製作者,有正常麥克風了可能會搞手書配音?", + "avatar": "http://i0.hdslb.com/bfs/face/6923f6414503413f292a1cfad13ac483683a77d6.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @某不科学的瓜皮 :这是件值得庆祝的日子啊(滑稽保命)[滑稽]", + "plat": 2, + "device": "", + "members": [ + { + "mid": "34762090", + "uname": "某不科学的瓜皮", + "sex": "男", + "sign": "持杯拱天,谓无言,静沉眠", + "avatar": "http://i2.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i2.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583164800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + } + } + ], + "emote": { + "[滑稽]": { + "id": 27, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[滑稽]", + "url": "http://i0.hdslb.com/bfs/emote/d15121545a99ac46774f1f4465b895fe2d1411c3.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "hots": null, + "upper": { + "mid": 2, + "top": null, + "vote": null + }, + "top": null, + "notice": { + "id": 923, + "title": "你的钱包被什么掏空了?回血红包拿好!>>", + "content": "你的钱包被什么掏空了?回血红包拿好!>>", + "link": "https://www.bilibili.com/blackboard/6181-m.html?mscource=xht" + }, + "vote": 0, + "blacklist": 0, + "assist": 0, + "mode": 3, + "support_mode": [ + 1, + 2, + 3 + ], + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "lottery_card": null, + "show_bvid": true, + "control": { + "input_disable": false, + "root_input_text": "", + "child_input_text": "", + "bg_text": "看看下面~来发评论吧", + "web_selection": false, + "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", + "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", + "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", + "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6" + } + } +} +``` + +
+ +## 获取评论区明细2(带有楼层号 ) + +> http://api.bilibili.com/x/v2/reply/main + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | -------------- | ----------- | ------------------------------------------------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | +| oid | num | 目标评论区ID | 必要 | | +| mode | num | 排序方式 | 非必要 | 默认为0
0 3:仅按热度
1:按热度+按时间
2:仅按时间 | +| next | num | 评论页选择 | 非必要 | 按热度时:热度顺序页码(0为第一页)
按时间时:时间倒序楼层号
默认为0 | +| ps | num | 每页项数 | 非必要 | 默认为20
定义域:1-49 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | -------------------------------- | -------- | ---------------- | +| cursor | obj | 页信息 | | +| hots | 禁用时:null
正常时:array | 热评根列表 | | +| notice | 无效时:null
有效时:obj | 评论区公告信息 | | +| replies | 禁用时:null
正常时:array | 评论根列表 | | +| top | obj | - | **作用尚不明确** | +| lottery_card | null | - | **作用尚不明确** | +| folder | obj | ??? | **作用尚不明确** | +| assist | num | 0 | **作用尚不明确** | +| blacklist | num | 0 | **作用尚不明确** | +| vote | num | 0 | **作用尚不明确** | +| lottery | num | 0 | **作用尚不明确** | +| config | obj | 属性信息 | | +| upper | obj | UP主信息 | | +| mode | num | 3 | **作用尚不明确** | +| support_mode | array | ??? | **作用尚不明确** | +| show_bvid | bool | true | **作用尚不明确** | +| control | obj | 评论区输入属性 | | + +`data`中的`cursor`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ----- | ------------ | ----------------------- | +| all_count | num | 全部评论条数 | | +| is_begin | bool | 是否为第一页 | false:否
true:是 | +| prev | num | 上页页码 | | +| next | num | 下页页码 | | +| is_end | bool | 是否为最后页 | false:否
true:是 | +| mode | num | 排序方式 | | +| show_type | num | 1 | **作用尚不明确** | +| support_mode | array | ??? | | +| name | str | 评论区类型名 | | + +`cursor`中的`support_mode`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---------------- | +| 0 | num | 1 | **作用尚不明确** | +| 1 | num | 2 | **作用尚不明确** | +| 2 | num | 3 | **作用尚不明确** | + +`data`中的`top`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----------------------------- | -------- | -------------------------------------- | +| admin | null | - | | +| upper | 有效时:obj
无效时:null | 置顶条目 | [对象定义见表](readme.md#评论条目对象) | +| vote | null | - | | + +`data`中的`config`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ----- | ---------------- | +| showadmin | num | 1 | **作用尚不明确** | +| showentry | num | 1 | **作用尚不明确** | +| showfloor | num | 0 | **作用尚不明确** | +| showtopic | num | 1 | **作用尚不明确** | +| show_up_flag | bool | true | **作用尚不明确** | +| read_only | bool | false | **作用尚不明确** | +| show_del_log | bool | false | **作用尚不明确** | + +`data`中的`replies`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | -------------------------------------- | +| 0 | obj | 评论条目1 | [对象定义见表](readme.md#评论条目对象) | +| n | obj | 评论条目(n+1) | 按照指定的顺序排列 | +| …… | obj | …… | …… | + +`data`中的`hots`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | -------------------------------------- | +| 0 | obj | 热评条目1 | [对象定义见表](readme.md#评论条目对象) | +| n | obj | 热评条目(n+1) | 按照热评热度排列 | +| …… | obj | …… | …… | + +`data`中的`upper`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------- | ---- | +| mid | num | UP主UID | | + +`data`中的`notice`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | --------------- | ---- | +| content | str | 公告正文 | | +| id | num | 公告ID | | +| link | str | 公告页面链接url | | +| title | str | 公告标题 | | + +`data`中的`support_mode`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---------------- | +| 0 | num | 1 | **作用尚不明确** | +| 1 | num | 2 | **作用尚不明确** | +| 2 | num | 3 | **作用尚不明确** | + +`data`中的`folder`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------ | ---------------- | +| has_folded | bool | false | **作用尚不明确** | +| is_folded | bool | false | **作用尚不明确** | +| rule | str | ??? | **作用尚不明确** | + +`data`中的`control`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------------ | ---- | ------------------ | ----------------------------------- | +| input_disable | bool | false | **作用尚不明确** | +| root_input_text | str | 评论框文字 | | +| child_input_text | str | 评论框文字 | | +| bg_text | str | 空评论区文字 | | +| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | +| answer_guide_text | str | 答题页面链接文字 | | +| answer_guide_icon_url | str | 答题页面图标url | | +| answer_guide_ios_url | str | 答题页面ios url | | +| answer_guide_android_url | str | 答题页面安卓url | | + +**示例:** + +获取视频`av2`的评论区明细(显示楼层号),按照热度排序,每页5项,查看第1页 + +```shell +curl -G 'http://api.bilibili.com/x/v2/reply/main' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=2' \ +--data-urlencode 'mode=3' \ +--data-urlencode 'next=0' \ +--data-urlencode 'ps=5' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "cursor": { + "all_count": 65150, + "is_begin": true, + "prev": 1, + "next": 2, + "is_end": false, + "mode": 3, + "show_type": 1, + "support_mode": [ + 1, + 2, + 3 + ], + "name": "热门评论" + }, + "hots": null, + "notice": null, + "replies": [ + { + "rpid": 476670, + "oid": 2, + "type": 1, + "mid": 58426, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 1891, + "rcount": 1841, + "floor": 2, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1291350931, + "rpid_str": "476670", + "root_str": "0", + "parent_str": "0", + "like": 53624, + "action": 0, + "member": { + "mid": "58426", + "uname": "残星什么的就是残星", + "sex": "男", + "sign": "少说话多做事 _微博@残星", + "avatar": "http://i1.hdslb.com/bfs/face/56ac36b37662e3746228f30eb4acf2cd332b66a5.jpg", + "rank": "20000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 30, + "name": "字幕君", + "image": "http://i2.hdslb.com/bfs/face/383c3fed3dc162c93a8d616a272693f6650e98f1.png", + "image_small": "http://i0.hdslb.com/bfs/face/7ad18084e40b725210e22696e0efdae408cd378c.png", + "level": "稀有勋章", + "condition": "弹幕大赛获得" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1550851200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "貌似没人来", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 568785293, + "oid": 2, + "type": 1, + "mid": 52987877, + "root": 476670, + "parent": 476670, + "dialog": 568785293, + "count": 0, + "rcount": 0, + "floor": 20, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1514903586, + "rpid_str": "568785293", + "root_str": "476670", + "parent_str": "476670", + "like": 3136, + "action": 0, + "member": { + "mid": "52987877", + "uname": "Mr-Shadow", + "sex": "男", + "sign": "重灾区话题回避", + "avatar": "http://i1.hdslb.com/bfs/face/40c52920c0285080df5bde72765b1e181d05fb17.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 457, + "name": "少女前线", + "image": "http://i2.hdslb.com/bfs/face/295cd9505bfe2edd360becd1ffd70f1870505696.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/295cd9505bfe2edd360becd1ffd70f1870505696.png" + }, + "nameplate": { + "nid": 61, + "name": "饭圈楷模", + "image": "http://i1.hdslb.com/bfs/face/5a90f715451325c642a6ac39e01195cb6d075734.png", + "image_small": "http://i0.hdslb.com/bfs/face/5bfc1b4fb3f4b411495dddb0b2127ad80f6fbcac.png", + "level": "普通勋章", + "condition": "当前持有粉丝勋章最高等级>=10级" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1618502400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 457, + "name": "少女前线", + "image": "http://i0.hdslb.com/bfs/face/295cd9505bfe2edd360becd1ffd70f1870505696.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "你可能抢到了整个b站最难抢到的沙发(`・ω・´)", + "plat": 6, + "device": "pad", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214198733, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198733, + "count": 0, + "rcount": 0, + "floor": 2, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888369, + "rpid_str": "214198733", + "root_str": "476670", + "parent_str": "476670", + "like": 1185, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i0.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i1.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214198179, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198179, + "count": 0, + "rcount": 0, + "floor": 1, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888303, + "rpid_str": "214198179", + "root_str": "476670", + "parent_str": "476670", + "like": 1082, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i0.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i1.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "可怜的二楼(=・ω・=)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": true + }, + { + "rpid": 2576184175, + "oid": 2, + "type": 1, + "mid": 24512285, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 838, + "rcount": 801, + "floor": 40932, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584945297, + "rpid_str": "2576184175", + "root_str": "0", + "parent_str": "0", + "like": 27469, + "action": 1, + "member": { + "mid": "24512285", + "uname": "霁歆", + "sex": "男", + "sign": "", + "avatar": "http://i2.hdslb.com/bfs/face/9cb18f0a8e9cae048dfa816972ee247111a8e22d.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 994, + "name": "格兰芬多", + "image": "http://i2.hdslb.com/bfs/face/2dee633139ce7c6b0dca657236240cc399c090be.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/2dee633139ce7c6b0dca657236240cc399c090be.png" + }, + "nameplate": { + "nid": 58, + "name": "收集达人", + "image": "http://i1.hdslb.com/bfs/face/3f5539e1486303422ffc8595862ccb6606e0b745.png", + "image_small": "http://i0.hdslb.com/bfs/face/cf85e7908095d256e595ec9759f4e7795f23bc22.png", + "level": "普通勋章", + "condition": "同时拥有粉丝勋章>=15个" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1613577600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 994, + "name": "格兰芬多", + "image": "http://i0.hdslb.com/bfs/face/2dee633139ce7c6b0dca657236240cc399c090be.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "人类最古のav号(挂了的不算)也变成bv了[大哭][大哭][大哭]青春结束了", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[大哭]": { + "id": 5, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[大哭]", + "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 2578082161, + "oid": 2, + "type": 1, + "mid": 407225717, + "root": 2576184175, + "parent": 2576184175, + "dialog": 2578082161, + "count": 0, + "rcount": 0, + "floor": 68, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584964926, + "rpid_str": "2578082161", + "root_str": "2576184175", + "parent_str": "2576184175", + "like": 1005, + "action": 0, + "member": { + "mid": "407225717", + "uname": "渣男5107号", + "sex": "保密", + "sign": "", + "avatar": "http://i2.hdslb.com/bfs/face/b7af802409026c6534441eb5298434feed41fd1d.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583942400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "先留个名,估计以后av会被当成冷知识放出来[大哭]", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[大哭]": { + "id": 5, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[大哭]", + "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 2576348604, + "oid": 2, + "type": 1, + "mid": 172853390, + "root": 2576184175, + "parent": 2576184175, + "dialog": 2576348604, + "count": 0, + "rcount": 0, + "floor": 1, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584947227, + "rpid_str": "2576348604", + "root_str": "2576184175", + "parent_str": "2576184175", + "like": 245, + "action": 0, + "member": { + "mid": "172853390", + "uname": "剑惊风雨丶", + "sex": "男", + "sign": "这个人勤快死了,什么都没有写(ー_ー)!!", + "avatar": "http://i1.hdslb.com/bfs/face/41c25392a4f96f48c499cc68dd9ad3215227c5ed.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av号还是可以搜啊", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 2579961512, + "oid": 2, + "type": 1, + "mid": 329965337, + "root": 2576184175, + "parent": 2576184175, + "dialog": 2579961512, + "count": 0, + "rcount": 0, + "floor": 188, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1584982846, + "rpid_str": "2579961512", + "root_str": "2576184175", + "parent_str": "2576184175", + "like": 135, + "action": 0, + "member": { + "mid": "329965337", + "uname": "积极发言的刘同学", + "sex": "男", + "sign": "化学世界真奇妙,学好化学炸学校。", + "avatar": "http://i2.hdslb.com/bfs/face/3b586d7dbe8c2dba32b213e0a474fe6d86921b85.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1585324800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "10个小时就有6500多赞?你是魔鬼?", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": true + }, + { + "rpid": 495059, + "oid": 2, + "type": 1, + "mid": 2, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 556, + "rcount": 531, + "floor": 5, + "state": 2, + "fansgrade": 0, + "attr": 0, + "ctime": 1291918239, + "rpid_str": "495059", + "root_str": "0", + "parent_str": "0", + "like": 15960, + "action": 0, + "member": { + "mid": "2", + "uname": "碧诗", + "sex": "男", + "sign": "kami.im 直男过气网红 # av362830 “We Are Star Dust”", + "avatar": "http://i0.hdslb.com/bfs/app/3e60b20604b6fdc7d081eb6a1ec72aa47c5a3964.jpg", + "rank": "20000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1141, + "name": "如果历史是一群喵", + "image": "http://i2.hdslb.com/bfs/garb/item/cd3e9a6fa18db9ebdc128b0fef64cb32c5aab854.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/garb/item/cd3e9a6fa18db9ebdc128b0fef64cb32c5aab854.png" + }, + "nameplate": { + "nid": 10, + "name": "见习偶像", + "image": "http://i0.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png", + "image_small": "http://i0.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png", + "level": "普通勋章", + "condition": "所有自制视频总播放数>=10万" + }, + "official_verify": { + "type": 0, + "desc": "bilibili创始人(站长)" + }, + "vip": { + "vipType": 2, + "vipDueDate": 3848745600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 1, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1141, + "name": "如果历史是一群喵", + "image": "http://i0.hdslb.com/bfs/garb/item/cd3e9a6fa18db9ebdc128b0fef64cb32c5aab854.png", + "jump_url": "", + "type": "suit" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "wwwww", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 164517433, + "oid": 2, + "type": 1, + "mid": 3476504, + "root": 495059, + "parent": 495059, + "dialog": 164517433, + "count": 0, + "rcount": 0, + "floor": 1, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1479570959, + "rpid_str": "164517433", + "root_str": "495059", + "parent_str": "495059", + "like": 207, + "action": 0, + "member": { + "mid": "3476504", + "uname": "麦斯科桑", + "sex": "保密", + "sign": "淡ACG的比例比例是屑.", + "avatar": "http://i0.hdslb.com/bfs/face/7bf954d807cbda4de4221d78f3b425534042ac02.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 194, + "name": "黑白无双", + "image": "http://i2.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i2.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1732204800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 194, + "name": "黑白无双", + "image": "http://i0.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "拉了半天总算是见了底", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 464424502, + "oid": 2, + "type": 1, + "mid": 37145412, + "root": 495059, + "parent": 495059, + "dialog": 464424502, + "count": 0, + "rcount": 0, + "floor": 8, + "state": 0, + "fansgrade": 1, + "attr": 0, + "ctime": 1509257961, + "rpid_str": "464424502", + "root_str": "495059", + "parent_str": "495059", + "like": 115, + "action": 0, + "member": { + "mid": "37145412", + "uname": "边走边发呆", + "sex": "男", + "sign": "这个人懒死了,什么都不发=_= 头像是素晴日", + "avatar": "http://i1.hdslb.com/bfs/face/4dfe0f1b0bfc9b1afea9e3bacbc5a92221fe9b09.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 60, + "name": "饭圈萌新", + "image": "http://i1.hdslb.com/bfs/face/51ca16136e570938450bca360f28761ceb609f33.png", + "image_small": "http://i0.hdslb.com/bfs/face/9abfa4769357f85937782c2dbc40fafda4f57217.png", + "level": "普通勋章", + "condition": "当前持有粉丝勋章最高等级>=5级" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1559836800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": { + "uid": 37145412, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 7, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "5000多楼6225评论(;¬_¬)手有点酸,如果不是特殊方法进来的话是要大会员吧(● ̄(エ) ̄●)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214199123, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 495059, + "parent": 495059, + "dialog": 214199123, + "count": 0, + "rcount": 0, + "floor": 5, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888421, + "rpid_str": "214199123", + "root_str": "495059", + "parent_str": "495059", + "like": 41, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i0.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i1.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": true + }, + { + "rpid": 208000425, + "oid": 2, + "type": 1, + "mid": 30976371, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 544, + "rcount": 511, + "floor": 3569, + "state": 2, + "fansgrade": 0, + "attr": 12, + "ctime": 1487772179, + "rpid_str": "208000425", + "root_str": "0", + "parent_str": "0", + "like": 16857, + "action": 0, + "member": { + "mid": "30976371", + "uname": "紫荆7x", + "sex": "保密", + "sign": "寒山渐远渐明薄,未知前路几迢遥。 \n", + "avatar": "http://i1.hdslb.com/bfs/face/0939e21818bf913b4ee35aaa0e604fc9938047ce.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": 0, + "desc": "音乐人紫荆7x" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1650988800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "jump_url": "", + "type": "pay" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av1是“公告”,主要是公布B站的部分升级内容、活动预告相关事件等信息。范围是2010年6月7日-2011年7月26日,UP主是ANA,整个合集共计1886P。内容以文本显示没有视频,现已无法进入,不过B站的官方微博、微信和*******可以查阅到相关内容。\n原稿请搜索知乎,有图,侵删【B站av1-6有人看过吗?】", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 208106601, + "oid": 2, + "type": 1, + "mid": 33202778, + "root": 208000425, + "parent": 208000425, + "dialog": 208106601, + "count": 0, + "rcount": 0, + "floor": 7, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1487781338, + "rpid_str": "208106601", + "root_str": "208000425", + "parent_str": "208000425", + "like": 4663, + "action": 0, + "member": { + "mid": "33202778", + "uname": "Adnini983", + "sex": "保密", + "sign": "Twitter:@adnini983 汤不热:https://adnini983.tumblr.com/", + "avatar": "http://i0.hdslb.com/bfs/face/8b11f5635b78cc5cdbd8245048405f52d24f187a.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 6, + "name": "高级搬运工", + "image": "http://i1.hdslb.com/bfs/face/a9af39ab7ed08e078c45d58dd96a6411aba1a9d3.png", + "image_small": "http://i0.hdslb.com/bfs/face/46e5aae4667c72c379b46b51fac4b4426d9214e7.png", + "level": "高级勋章", + "condition": "转载视频投稿通过总数>=100" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1521043200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "这个就是我在知乎写的,我就是知乎上的Adnini983。但考虑到你标注了出处,我允许你予以保留。", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 208002062, + "oid": 2, + "type": 1, + "mid": 30976371, + "root": 208000425, + "parent": 208000425, + "dialog": 208002062, + "count": 0, + "rcount": 0, + "floor": 3, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1487772305, + "rpid_str": "208002062", + "root_str": "208000425", + "parent_str": "208000425", + "like": 1863, + "action": 0, + "member": { + "mid": "30976371", + "uname": "紫荆7x", + "sex": "保密", + "sign": "寒山渐远渐明薄,未知前路几迢遥。 \n", + "avatar": "http://i1.hdslb.com/bfs/face/0939e21818bf913b4ee35aaa0e604fc9938047ce.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": 0, + "desc": "音乐人紫荆7x" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1650988800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "jump_url": "", + "type": "pay" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av4无法使用任何方式访问", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 208000986, + "oid": 2, + "type": 1, + "mid": 30976371, + "root": 208000425, + "parent": 208000425, + "dialog": 208000986, + "count": 0, + "rcount": 0, + "floor": 1, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1487772222, + "rpid_str": "208000986", + "root_str": "208000425", + "parent_str": "208000425", + "like": 1573, + "action": 0, + "member": { + "mid": "30976371", + "uname": "紫荆7x", + "sex": "保密", + "sign": "寒山渐远渐明薄,未知前路几迢遥。 \n", + "avatar": "http://i1.hdslb.com/bfs/face/0939e21818bf913b4ee35aaa0e604fc9938047ce.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "expire": 0, + "image_enhance": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": 0, + "desc": "音乐人紫荆7x" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1650988800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 1635, + "name": "明日方舟-阿米娅", + "image": "http://i0.hdslb.com/bfs/face/34d7b5509d90dbc19f5f7e63788842e0080b00c2.png", + "jump_url": "", + "type": "pay" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "av2是一部名叫“字幕君交流场所”的视频,里面包含了东方Project的图片和音乐,UP主是碧诗。通常情况下无法打开,但可以使用唧唧下载视频。(现在可以打开了,恭喜你们)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 917945205, + "oid": 2, + "type": 1, + "mid": 34762090, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 125, + "rcount": 105, + "floor": 17977, + "state": 0, + "fansgrade": 1, + "attr": 0, + "ctime": 1532071373, + "rpid_str": "917945205", + "root_str": "0", + "parent_str": "0", + "like": 7514, + "action": 0, + "member": { + "mid": "34762090", + "uname": "某不科学的瓜皮", + "sex": "男", + "sign": "持杯拱天,谓无言,静沉眠", + "avatar": "http://i1.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i0.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583164800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": { + "uid": 34762090, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 1, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "7.20日,站长被封7天\n\n历史性留名[2233娘_卖萌]", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[2233娘_卖萌]": { + "id": 140, + "package_id": 6, + "state": 0, + "type": 2, + "attr": 0, + "text": "[2233娘_卖萌]", + "url": "http://i0.hdslb.com/bfs/emote/ea893aa25355de95ab4f03c2dad3f0c58d0c159e.png", + "meta": { + "size": 2 + }, + "mtime": 1586316683 + } + }, + "jump_url": {}, + "max_line": 6 + }, + "replies": [ + { + "rpid": 1781253749, + "oid": 2, + "type": 1, + "mid": 34762090, + "root": 917945205, + "parent": 917945205, + "dialog": 1781253749, + "count": 0, + "rcount": 0, + "floor": 4, + "state": 0, + "fansgrade": 1, + "attr": 0, + "ctime": 1563598609, + "rpid_str": "1781253749", + "root_str": "917945205", + "parent_str": "917945205", + "like": 375, + "action": 0, + "member": { + "mid": "34762090", + "uname": "某不科学的瓜皮", + "sex": "男", + "sign": "持杯拱天,谓无言,静沉眠", + "avatar": "http://i1.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i0.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583164800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": { + "uid": 34762090, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 1, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "站长被封一周年 [小电视_笑]", + "plat": 2, + "device": "", + "members": [], + "emote": { + "[小电视_笑]": { + "id": 121, + "package_id": 5, + "state": 0, + "type": 2, + "attr": 0, + "text": "[小电视_笑]", + "url": "http://i0.hdslb.com/bfs/emote/f80d384875183dfe2e24be13011c595c0210d273.png", + "meta": { + "size": 2 + }, + "mtime": 1591272851 + } + }, + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 1387109941, + "oid": 2, + "type": 1, + "mid": 317451026, + "root": 917945205, + "parent": 917945205, + "dialog": 1387109941, + "count": 0, + "rcount": 0, + "floor": 1, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1550139263, + "rpid_str": "1387109941", + "root_str": "917945205", + "parent_str": "917945205", + "like": 295, + "action": 0, + "member": { + "mid": "317451026", + "uname": "草_grass", + "sex": "男", + "sign": "NOTHING", + "avatar": "http://i0.hdslb.com/bfs/face/c4569f98034a7810063bc52eef9d446711688c12.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "头七还行?", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 1781556726, + "oid": 2, + "type": 1, + "mid": 417437969, + "root": 917945205, + "parent": 1781253749, + "dialog": 1781253749, + "count": 0, + "rcount": 0, + "floor": 5, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1563605321, + "rpid_str": "1781556726", + "root_str": "917945205", + "parent_str": "1781253749", + "like": 116, + "action": 0, + "member": { + "mid": "417437969", + "uname": "理查奈德", + "sex": "男", + "sign": "手殘的屑玩家兼見習音罵製作者,有正常麥克風了可能會搞手書配音?", + "avatar": "http://i0.hdslb.com/bfs/face/6923f6414503413f292a1cfad13ac483683a77d6.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 4, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @某不科学的瓜皮 :这是件值得庆祝的日子啊(滑稽保命)[滑稽]", + "plat": 2, + "device": "", + "members": [ + { + "mid": "34762090", + "uname": "某不科学的瓜皮", + "sex": "男", + "sign": "持杯拱天,谓无言,静沉眠", + "avatar": "http://i1.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i0.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1583164800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + } + } + ], + "emote": { + "[滑稽]": { + "id": 27, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[滑稽]", + "url": "http://i0.hdslb.com/bfs/emote/d15121545a99ac46774f1f4465b895fe2d1411c3.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "top": { + "admin": null, + "upper": null, + "vote": null + }, + "lottery_card": null, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "assist": 0, + "blacklist": 0, + "vote": 0, + "lottery": 0, + "config": { + "showadmin": 1, + "showentry": 1, + "showfloor": 0, + "showtopic": 1, + "show_up_flag": true, + "read_only": false, + "show_del_log": true + }, + "upper": { + "mid": 2 + }, + "show_bvid": true, + "control": { + "input_disable": false, + "root_input_text": "", + "child_input_text": "", + "bg_text": "看看下面~来发评论吧", + "web_selection": false, + "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", + "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", + "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", + "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6" + } + } +} +``` + +
+ +## 获取指定评论条目及二级回复明细1(分离结构 无楼层号) + +> http://api.bilibili.com/x/v2/reply/reply + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +按照热度排列 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ---------------- | ----------- | ---------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | +| oid | num | 目标评论区ID | 必要 | | +| root | num | 目标一级评论rpID | 必要 | | +| pn | num | 二级评论页码 | 非必要 | 默认为1 | +| ps | num | 二级评论每页项数 | 非必要 | 默认为20
定义域:1-49 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | -------------------------------- | -------- | ---------------- | +| config | obj | 属性信息 | | +| control | obj | 评论区输入属性 | | +| page | obj | 页信息 | | +| replies | array | 二级评论列表 | | +| root | obj | 根评论 | [对象定义见表](readme.md#评论条目对象) | +| show_bvid | bool | true | **作用尚不明确** | +| upper | obj | UP主UID | | + +`data`中的`page`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------ | ---- | +| num | num | 当前页码 | | +| size | num | 每页项数 | | +| count | num | 根评论条数 | | +| acount | num | 总计评论条数 | | + +`data`中的`config`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ----- | ---------------- | +| showadmin | num | 0 | **作用尚不明确** | +| showentry | num | 0 | **作用尚不明确** | +| showfloor | num | 0 | **作用尚不明确** | +| showtopic | num | 0 | **作用尚不明确** | +| show_up_flag | bool | false | **作用尚不明确** | +| read_only | bool | false | **作用尚不明确** | +| show_del_log | bool | false | **作用尚不明确** | + +`data`中的`replies`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | -------------------------------------- | +| 0 | obj | 二级评论条目1 | [对象定义见表](readme.md#评论条目对象) | +| n | obj | 二级评论条目(n+1) | 按照热度排列 | +| …… | obj | …… | …… | + +`data`中的`upper`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------- | ---- | +| mid | num | UP主UID | | + +**示例:** + +获取视频`av2`下评论`rpID=476670`的二级评论,每页5项,查看第1页 + +```shell +curl -G 'http://api.bilibili.com/x/v2/reply/reply' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=2' \ +--data-urlencode 'root=476670' \ +--data-urlencode 'ps=5' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "config": { + "showadmin": 0, + "showentry": 0, + "showfloor": 0, + "showtopic": 0, + "show_up_flag": false, + "read_only": false, + "show_del_log": false + }, + "control": { + "input_disable": false, + "root_input_text": "", + "child_input_text": "", + "bg_text": "看看下面~来发评论吧", + "web_selection": false, + "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", + "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", + "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", + "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6" + }, + "page": { + "count": 1843, + "num": 1, + "size": 5 + }, + "replies": [ + { + "rpid": 214198179, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198179, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888303, + "rpid_str": "214198179", + "root_str": "476670", + "parent_str": "476670", + "like": 1087, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i0.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "可怜的二楼(=・ω・=)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214198733, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198733, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888369, + "rpid_str": "214198733", + "root_str": "476670", + "parent_str": "476670", + "like": 1189, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i0.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 225269192, + "oid": 2, + "type": 1, + "mid": 15094738, + "root": 476670, + "parent": 476670, + "dialog": 225269192, + "count": 0, + "rcount": 0, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1490666434, + "rpid_str": "225269192", + "root_str": "476670", + "parent_str": "476670", + "like": 235, + "action": 0, + "member": { + "mid": "15094738", + "uname": "御坂妹妹10492號", + "sex": "保密", + "sign": "", + "avatar": "http://i1.hdslb.com/bfs/face/6484b0e77b554f43237c78f383199ad211e8b3bd.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 326, + "name": "圣诞节快乐", + "image": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "expire": 0, + "image_enhance": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1621958400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 326, + "name": "圣诞节快乐", + "image": "http://i0.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "可怜二楼没人", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 451059061, + "oid": 2, + "type": 1, + "mid": 41075238, + "root": 476670, + "parent": 476670, + "dialog": 451059061, + "count": 0, + "rcount": 0, + "state": 6, + "fansgrade": 1, + "attr": 4, + "ctime": 1508168753, + "rpid_str": "451059061", + "root_str": "476670", + "parent_str": "476670", + "like": 111, + "action": 0, + "member": { + "mid": "41075238", + "uname": "废爪萌狼", + "sex": "保密", + "sign": "赫萝是天!!!!!!!!!!!!!!!!", + "avatar": "http://i0.hdslb.com/bfs/face/4e3b1610b40d3901516b09ba6d593e8cf68cf8f1.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 61, + "name": "饭圈楷模", + "image": "http://i2.hdslb.com/bfs/face/5a90f715451325c642a6ac39e01195cb6d075734.png", + "image_small": "http://i0.hdslb.com/bfs/face/5bfc1b4fb3f4b411495dddb0b2127ad80f6fbcac.png", + "level": "普通勋章", + "condition": "当前持有粉丝勋章最高等级>=10级" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1643385600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": { + "uid": 41075238, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 3, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "好可怜啊(=・ω・=)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 451154733, + "oid": 2, + "type": 1, + "mid": 15094738, + "root": 476670, + "parent": 451059061, + "dialog": 451059061, + "count": 0, + "rcount": 0, + "state": 6, + "fansgrade": 0, + "attr": 4, + "ctime": 1508175639, + "rpid_str": "451154733", + "root_str": "476670", + "parent_str": "451059061", + "like": 107, + "action": 0, + "member": { + "mid": "15094738", + "uname": "御坂妹妹10492號", + "sex": "保密", + "sign": "", + "avatar": "http://i1.hdslb.com/bfs/face/6484b0e77b554f43237c78f383199ad211e8b3bd.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 326, + "name": "圣诞节快乐", + "image": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "expire": 0, + "image_enhance": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i1.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1621958400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 326, + "name": "圣诞节快乐", + "image": "http://i0.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @负能量使者:你你你..你是怎么找到这里来的Σ(゚д゚;)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "root": { + "rpid": 476670, + "oid": 2, + "type": 1, + "mid": 58426, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 1893, + "rcount": 1843, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1291350931, + "rpid_str": "476670", + "root_str": "0", + "parent_str": "0", + "like": 53759, + "action": 0, + "member": { + "mid": "58426", + "uname": "残星什么的就是残星", + "sex": "男", + "sign": "少说话多做事 _微博@残星", + "avatar": "http://i1.hdslb.com/bfs/face/56ac36b37662e3746228f30eb4acf2cd332b66a5.jpg", + "rank": "20000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 30, + "name": "字幕君", + "image": "http://i1.hdslb.com/bfs/face/383c3fed3dc162c93a8d616a272693f6650e98f1.png", + "image_small": "http://i1.hdslb.com/bfs/face/7ad18084e40b725210e22696e0efdae408cd378c.png", + "level": "稀有勋章", + "condition": "弹幕大赛获得" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1550851200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "貌似没人来", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 0 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + "show_bvid": true, + "upper": { + "mid": 2 + } + } +} +``` + +
+ + + +## 获取指定评论条目及二级回复明细2(嵌套结构 带有楼层号) + +> http://api.bilibili.com/x/v2/reply/detail + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +按照楼层排列 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | -------------- | ----------- | ---------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | +| oid | num | 目标评论区ID | 必要 | | +| root | num | 根回复rpID | 必要 | | +| next | num | 评论页选择 | 非必要 | 第一页为0
默认为0
顺序楼层号 | +| ps | num | 每页项数 | 非必要 | 默认为0 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | -------------- | -------------------------------------- | +| cursor | obj | 页信息 | | +| assist | num | 0 | **作用尚不明确** | +| blacklist | num | 0 | **作用尚不明确** | +| vote | num | 0 | **作用尚不明确** | +| lottery | num | 0 | **作用尚不明确** | +| config | obj | 属性信息 | | +| upper | obj | UP主UID | | +| show_bvid | bool | true | **作用尚不明确** | +| control | obj | 评论区输入属性 | | +| root | obj | 根评论 | [对象定义见表](readme.md#评论条目对象) | +| Mid | num | 0 | **作用尚不明确** | + +`data`中的`cursor`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------ | ----------------------- | +| is_begin | bool | 是否为第一页 | false:否
true:是 | +| prev | num | 上页楼层 | | +| next | num | 下页楼层 | | +| is_end | bool | 是否为最后页 | false:否
true:是 | + +`data`中的`config`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ----- | ---------------- | +| showadmin | num | 1 | **作用尚不明确** | +| showentry | num | 1 | **作用尚不明确** | +| showfloor | num | 0 | **作用尚不明确** | +| showtopic | num | 1 | **作用尚不明确** | +| show_up_flag | bool | true | **作用尚不明确** | +| read_only | bool | false | **作用尚不明确** | +| show_del_log | bool | false | **作用尚不明确** | + +`data`中的`upper`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------- | ---- | +| mid | num | UP主UID | | + +`data`中的`control`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------------ | ---- | ------------------ | ----------------------------------- | +| input_disable | bool | false | **作用尚不明确** | +| root_input_text | str | 评论框文字 | | +| child_input_text | str | 评论框文字 | | +| bg_text | str | 空评论区文字 | | +| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | +| answer_guide_text | str | 答题页面链接文字 | | +| answer_guide_icon_url | str | 答题页面图标url | | +| answer_guide_ios_url | str | 答题页面ios url | | +| answer_guide_android_url | str | 答题页面安卓url | | + +**示例:** + +获取视频`av2`下评论`rpID=476670`的二级评论,每页5项,查看第1页 + +```shell +curl -G 'http://api.bilibili.com/x/v2/reply/detail' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=2' \ +--data-urlencode 'root=476670' \ +--data-urlencode 'ps=5' \ +--data-urlencode 'next=0' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "cursor": { + "is_begin": true, + "prev": 0, + "next": 6, + "is_end": false + }, + "assist": 0, + "blacklist": 0, + "vote": 0, + "lottery": 0, + "config": { + "showadmin": 1, + "showentry": 1, + "showfloor": 0, + "showtopic": 1, + "show_up_flag": true, + "read_only": false, + "show_del_log": true + }, + "upper": { + "mid": 2 + }, + "show_bvid": true, + "control": { + "input_disable": false, + "root_input_text": "", + "child_input_text": "", + "bg_text": "看看下面~来发评论吧", + "web_selection": false, + "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", + "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", + "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", + "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6" + }, + "root": { + "rpid": 476670, + "oid": 2, + "type": 1, + "mid": 58426, + "root": 0, + "parent": 0, + "dialog": 0, + "count": 1922, + "rcount": 1871, + "floor": 2, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1291350931, + "rpid_str": "476670", + "root_str": "0", + "parent_str": "0", + "like": 54765, + "action": 0, + "member": { + "mid": "58426", + "uname": "残星什么的就是残星", + "sex": "男", + "sign": "少说话多做事 _微博@残星", + "avatar": "http://i0.hdslb.com/bfs/face/56ac36b37662e3746228f30eb4acf2cd332b66a5.jpg", + "rank": "20000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 30, + "name": "字幕君", + "image": "http://i1.hdslb.com/bfs/face/383c3fed3dc162c93a8d616a272693f6650e98f1.png", + "image_small": "http://i1.hdslb.com/bfs/face/7ad18084e40b725210e22696e0efdae408cd378c.png", + "level": "稀有勋章", + "condition": "弹幕大赛获得" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1550851200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "貌似没人来", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": [ + { + "rpid": 214198179, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198179, + "count": 0, + "rcount": 0, + "floor": 1, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888303, + "rpid_str": "214198179", + "root_str": "476670", + "parent_str": "476670", + "like": 1113, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i1.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i0.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "可怜的二楼(=・ω・=)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 214198733, + "oid": 2, + "type": 1, + "mid": 18370638, + "root": 476670, + "parent": 476670, + "dialog": 214198733, + "count": 0, + "rcount": 0, + "floor": 2, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1488888369, + "rpid_str": "214198733", + "root_str": "476670", + "parent_str": "476670", + "like": 1208, + "action": 0, + "member": { + "mid": "18370638", + "uname": "初音ハク", + "sex": "保密", + "sign": "我是艾尔的利刃", + "avatar": "http://i1.hdslb.com/bfs/face/50b3a20369f4358beca8078ef6ac652093ce7414.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i0.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1620403200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 225269192, + "oid": 2, + "type": 1, + "mid": 15094738, + "root": 476670, + "parent": 476670, + "dialog": 225269192, + "count": 0, + "rcount": 0, + "floor": 3, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1490666434, + "rpid_str": "225269192", + "root_str": "476670", + "parent_str": "476670", + "like": 240, + "action": 0, + "member": { + "mid": "15094738", + "uname": "御坂妹妹10492號", + "sex": "保密", + "sign": "", + "avatar": "http://i1.hdslb.com/bfs/face/6484b0e77b554f43237c78f383199ad211e8b3bd.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 326, + "name": "圣诞节快乐", + "image": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "expire": 0, + "image_enhance": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i2.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1621958400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 326, + "name": "圣诞节快乐", + "image": "http://i0.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "可怜二楼没人", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 451059061, + "oid": 2, + "type": 1, + "mid": 41075238, + "root": 476670, + "parent": 476670, + "dialog": 451059061, + "count": 0, + "rcount": 0, + "floor": 4, + "state": 6, + "fansgrade": 1, + "attr": 4, + "ctime": 1508168753, + "rpid_str": "451059061", + "root_str": "476670", + "parent_str": "476670", + "like": 112, + "action": 0, + "member": { + "mid": "41075238", + "uname": "废爪萌狼", + "sex": "保密", + "sign": "赫萝是天!!!!!!!!!!!!!!!!", + "avatar": "http://i2.hdslb.com/bfs/face/4e3b1610b40d3901516b09ba6d593e8cf68cf8f1.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 61, + "name": "饭圈楷模", + "image": "http://i0.hdslb.com/bfs/face/5a90f715451325c642a6ac39e01195cb6d075734.png", + "image_small": "http://i2.hdslb.com/bfs/face/5bfc1b4fb3f4b411495dddb0b2127ad80f6fbcac.png", + "level": "普通勋章", + "condition": "当前持有粉丝勋章最高等级>=10级" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1643385600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": { + "uid": 41075238, + "medal_id": 29058, + "medal_name": "逸国", + "score": 0, + "level": 3, + "intimacy": 0, + "master_status": 1, + "is_receive": 1 + }, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "好可怜啊(=・ω・=)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 451154733, + "oid": 2, + "type": 1, + "mid": 15094738, + "root": 476670, + "parent": 451059061, + "dialog": 451059061, + "count": 0, + "rcount": 0, + "floor": 5, + "state": 6, + "fansgrade": 0, + "attr": 4, + "ctime": 1508175639, + "rpid_str": "451154733", + "root_str": "476670", + "parent_str": "451059061", + "like": 108, + "action": 0, + "member": { + "mid": "15094738", + "uname": "御坂妹妹10492號", + "sex": "保密", + "sign": "", + "avatar": "http://i1.hdslb.com/bfs/face/6484b0e77b554f43237c78f383199ad211e8b3bd.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 326, + "name": "圣诞节快乐", + "image": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "expire": 0, + "image_enhance": "http://i1.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png" + }, + "nameplate": { + "nid": 74, + "name": "大会员2018年度勋章", + "image": "http://i2.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", + "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", + "level": "稀有勋章", + "condition": "2018.6.26-7.8某一天是年度大会员" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1621958400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 326, + "name": "圣诞节快乐", + "image": "http://i0.hdslb.com/bfs/face/b72dbf785e810e94fce2481265e71b6f16c64681.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @负能量使者:你你你..你是怎么找到这里来的Σ(゚д゚;)", + "plat": 2, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "https://www.bilibili.com/blackboard/foldingreply.html" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": true + }, + "Mid": 0 + } +} +``` + +
+ +## 获取指定评论对话树(带有楼层) + +> http://api.bilibili.com/x/v2/reply/dialog/cursor + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +按照楼层排列 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | -------------- | ----------- | ---------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | +| oid | num | 目标评论区ID | 必要 | | +| root | num | 根回复rpID | 必要 | | +| dialog | num | 对话树根rpID | 必要 | | +| size | num | 每页最大项数 | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | -------------- | ---------------- | +| cursor | obj | 页楼层信息 | | +| dialog | obj | 对话楼层信息 | | +| replies | array | 评论对话树列表 | | +| assist | num | 0 | **作用尚不明确** | +| blacklist | num | 0 | **作用尚不明确** | +| vote | num | 0 | **作用尚不明确** | +| lottery | num | 0 | **作用尚不明确** | +| config | obj | 属性信息 | | +| upper | obj | UP主UID | | +| show_bvid | bool | true | **作用尚不明确** | +| control | obj | 评论区输入属性 | | + +`data`中的`cursor`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ---------------- | ---- | +| min_floor | num | 本页最低对话楼层 | | +| max_floor | num | 本页最高对话楼层 | | +| size | num | 本页项数 | | + +`data`中的`dialog`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | -------------------- | ---- | +| min_floor | num | 二级评论最低对话楼层 | | +| max_floor | num | 二级评论最高对话楼层 | | + +`data`中的`replies`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | -------------------------------------- | +| 0 | obj | 对话评论条目1 | [对象定义见表](readme.md#评论条目对象) | +| n | obj | 对话评论条目(n+1) | 按照对话顺序排列 | +| …… | obj | …… | …… | + +`data`中的`config`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ----- | ---------------- | +| showadmin | num | 1 | **作用尚不明确** | +| showentry | num | 1 | **作用尚不明确** | +| showfloor | num | 0 | **作用尚不明确** | +| showtopic | num | 1 | **作用尚不明确** | +| show_up_flag | bool | true | **作用尚不明确** | +| read_only | bool | false | **作用尚不明确** | +| show_del_log | bool | false | **作用尚不明确** | + +`data`中的`upper`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------- | ---- | +| mid | num | UP主UID | | + +`data`中的`control`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------------ | ---- | ------------------ | ----------------------------------- | +| input_disable | bool | false | **作用尚不明确** | +| root_input_text | str | 评论框文字 | | +| child_input_text | str | 评论框文字 | | +| bg_text | str | 空评论区文字 | | +| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | +| answer_guide_text | str | 答题页面链接文字 | | +| answer_guide_icon_url | str | 答题页面图标url | | +| answer_guide_ios_url | str | 答题页面ios url | | +| answer_guide_android_url | str | 答题页面安卓url | | + +**示例:** + +获取视频`av201022189`下评论`rpID=3030790837`的对话`rpID=3030978856`,每页最大5项 + +```shell +curl -G 'http://api.bilibili.com/x/v2/reply/dialog/cursor' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=201022189' \ +--data-urlencode 'root=3030790837' \ +--data-urlencode 'dialog=3030978856' \ +--data-urlencode 'size=5' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "cursor": { + "min_floor": 5, + "max_floor": 94, + "size": 5 + }, + "dialog": { + "min_floor": 5, + "max_floor": 243 + }, + "replies": [ + { + "rpid": 3030978856, + "oid": 201022189, + "type": 1, + "mid": 11814633, + "root": 3030790837, + "parent": 3030790837, + "dialog": 3030978856, + "count": 0, + "rcount": 0, + "floor": 5, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1592020635, + "rpid_str": "3030978856", + "root_str": "3030790837", + "parent_str": "3030790837", + "like": 55, + "action": 0, + "member": { + "mid": "11814633", + "uname": "我到四川省来", + "sex": "保密", + "sign": "保持half-sugar-life", + "avatar": "http://i2.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i2.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1617638400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "看有机化学考研视频", + "plat": 1, + "device": "", + "members": [], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 3032092982, + "oid": 201022189, + "type": 1, + "mid": 80396483, + "root": 3030790837, + "parent": 3030978856, + "dialog": 3030978856, + "count": 0, + "rcount": 0, + "floor": 7, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1592036860, + "rpid_str": "3032092982", + "root_str": "3030790837", + "parent_str": "3030978856", + "like": 210, + "action": 0, + "member": { + "mid": "80396483", + "uname": "緑箭口香糖", + "sex": "保密", + "sign": "交个朋友吧。", + "avatar": "http://i1.hdslb.com/bfs/face/ca4b00a0e68f61559812ddc146b627ed6dd4d481.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 58, + "name": "收集达人", + "image": "http://i0.hdslb.com/bfs/face/3f5539e1486303422ffc8595862ccb6606e0b745.png", + "image_small": "http://i2.hdslb.com/bfs/face/cf85e7908095d256e595ec9759f4e7795f23bc22.png", + "level": "普通勋章", + "condition": "同时拥有粉丝勋章>=15个" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @我到四川省来 :有一说一,上p站看原本要收费或者不好找的考研视频真的香[吃瓜]", + "plat": 2, + "device": "", + "members": [ + { + "mid": "11814633", + "uname": "我到四川省来", + "sex": "保密", + "sign": "保持half-sugar-life", + "avatar": "http://i2.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i2.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1617638400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + } + } + ], + "emote": { + "[吃瓜]": { + "id": 415, + "package_id": 1, + "state": 0, + "type": 1, + "attr": 0, + "text": "[吃瓜]", + "url": "http://i0.hdslb.com/bfs/emote/4191ce3c44c2b3df8fd97c33f85d3ab15f4f3c84.png", + "meta": { + "size": 1 + }, + "mtime": 1577702898 + } + }, + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 3049044835, + "oid": 201022189, + "type": 1, + "mid": 34598825, + "root": 3030790837, + "parent": 3032092982, + "dialog": 3030978856, + "count": 0, + "rcount": 0, + "floor": 54, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1592368714, + "rpid_str": "3049044835", + "root_str": "3030790837", + "parent_str": "3032092982", + "like": 0, + "action": 0, + "member": { + "mid": "34598825", + "uname": "人宇君sayo", + "sex": "男", + "sign": "一个兴趣很乱的人hah", + "avatar": "http://i2.hdslb.com/bfs/face/cd3bf8b9f4b6cc759cf29424c3017c41c8d018d7.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 149, + "name": "快把我哥带走", + "image": "http://i2.hdslb.com/bfs/face/6b45cf8ceb8cd6eeefbbcb202659e62a56356814.png", + "expire": 0, + "image_enhance": "http://i2.hdslb.com/bfs/face/6b45cf8ceb8cd6eeefbbcb202659e62a56356814.png" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1591545600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": { + "id": 149, + "name": "快把我哥带走", + "image": "http://i0.hdslb.com/bfs/face/6b45cf8ceb8cd6eeefbbcb202659e62a56356814.png", + "jump_url": "", + "type": "vip" + }, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @緑箭口香糖 :牛的", + "plat": 3, + "device": "phone", + "members": [ + { + "mid": "80396483", + "uname": "緑箭口香糖", + "sex": "保密", + "sign": "交个朋友吧。", + "avatar": "http://i1.hdslb.com/bfs/face/ca4b00a0e68f61559812ddc146b627ed6dd4d481.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 58, + "name": "收集达人", + "image": "http://i0.hdslb.com/bfs/face/3f5539e1486303422ffc8595862ccb6606e0b745.png", + "image_small": "http://i2.hdslb.com/bfs/face/cf85e7908095d256e595ec9759f4e7795f23bc22.png", + "level": "普通勋章", + "condition": "同时拥有粉丝勋章>=15个" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + } + } + ], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 3049581999, + "oid": 201022189, + "type": 1, + "mid": 479083152, + "root": 3030790837, + "parent": 3030978856, + "dialog": 3030978856, + "count": 0, + "rcount": 0, + "floor": 93, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1592378703, + "rpid_str": "3049581999", + "root_str": "3030790837", + "parent_str": "3030978856", + "like": 1, + "action": 0, + "member": { + "mid": "479083152", + "uname": "转手告别旧生活", + "sex": "保密", + "sign": "无聊...\n", + "avatar": "http://i1.hdslb.com/bfs/face/6b0f326614a787aa83a8a87a3aeb2b90b3976ea1.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 3, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @我到四川省来 :哈哈,考研不考化学吧", + "plat": 2, + "device": "", + "members": [ + { + "mid": "11814633", + "uname": "我到四川省来", + "sex": "保密", + "sign": "保持half-sugar-life", + "avatar": "http://i2.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i2.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1617638400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + } + } + ], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + }, + { + "rpid": 3049578129, + "oid": 201022189, + "type": 1, + "mid": 11814633, + "root": 3030790837, + "parent": 3049581999, + "dialog": 3030978856, + "count": 0, + "rcount": 0, + "floor": 94, + "state": 0, + "fansgrade": 0, + "attr": 0, + "ctime": 1592378760, + "rpid_str": "3049578129", + "root_str": "3030790837", + "parent_str": "3049581999", + "like": 0, + "action": 0, + "member": { + "mid": "11814633", + "uname": "我到四川省来", + "sex": "保密", + "sign": "保持half-sugar-life", + "avatar": "http://i2.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 4, + "name": "青铜殿堂", + "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", + "image_small": "http://i2.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", + "level": "普通勋章", + "condition": "单个自制视频总播放数>=1万" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1617638400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + } + }, + "fans_detail": null, + "following": 0, + "is_followed": 0, + "user_sailing": { + "pendant": null, + "cardbg": null, + "cardbg_with_focus": null + } + }, + "content": { + "message": "回复 @转手告别旧生活 :专业课 考啊", + "plat": 3, + "device": "phone", + "members": [ + { + "mid": "479083152", + "uname": "转手告别旧生活", + "sex": "保密", + "sign": "无聊...\n", + "avatar": "http://i1.hdslb.com/bfs/face/6b0f326614a787aa83a8a87a3aeb2b90b3976ea1.jpg", + "rank": "10000", + "DisplayRank": "0", + "level_info": { + "current_level": 3, + "current_min": 0, + "current_exp": 0, + "next_exp": 0 + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "nameplate": { + "nid": 0, + "name": "", + "image": "", + "image_small": "", + "level": "", + "condition": "" + }, + "official_verify": { + "type": -1, + "desc": "" + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "", + "text": "", + "label_theme": "" + } + } + } + ], + "jump_url": {}, + "max_line": 999 + }, + "replies": null, + "assist": 0, + "folder": { + "has_folded": false, + "is_folded": false, + "rule": "" + }, + "up_action": { + "like": false, + "reply": false + }, + "show_follow": false + } + ], + "assist": 0, + "blacklist": 0, + "vote": 0, + "lottery": 0, + "config": { + "showadmin": 1, + "showentry": 1, + "showfloor": 0, + "showtopic": 1, + "show_up_flag": true, + "read_only": false, + "show_del_log": true + }, + "upper": { + "mid": 92586428 + }, + "show_bvid": true, + "control": { + "input_disable": false, + "root_input_text": "", + "child_input_text": "", + "bg_text": "看看下面~来发评论吧", + "web_selection": false, + "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", + "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", + "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", + "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6" + } + } +} +``` + +
+ +## 获取评论区评论总数 + +> http://api.bilibili.com/x/v2/reply/count + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------------- | ------ | -------------------------------------------- | +| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | +| oid | num | 目标评论区ID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12009:评论主体的type不合法 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------- | ---- | +| count | num | 评论条数 | | + +**示例:** + +获取视频`av2`的评论区总计评论条数 + +```shell +curl -G 'http://api.bilibili.com/x/v2/reply/count' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=2' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 65521 + } +} +``` + +
+ + diff --git a/comment/readme.md b/comment/readme.md new file mode 100644 index 0000000..8424fbe --- /dev/null +++ b/comment/readme.md @@ -0,0 +1,270 @@ +# 评论区 + + + +评论区接口分为**查询**与**操作**两大类 + +- [查询类](list.md) +- [操作类](action.md) + +## 评论区类型代码 + +(PS:以下部分内容来源不明,有待验证) + +| 代码 | 评论区类型 | oid的意义 | +| ---- | ----------------------- | ---------- | +| 1 | 视频稿件 | 稿件avID | +| 2 | 话题 | 话题ID | +| 4 | 活动 | 活动ID | +| 5 | 小视频 | 小视频ID | +| 6 | 小黑屋封禁信息 | 封禁公示ID | +| 7 | 公告信息 | 公告ID | +| 8 | 直播活动 | 直播间ID | +| 9 | 活动稿件 | | +| 10 | 直播公告 | | +| 11 | 相簿(图片动态) | 相簿ID | +| 12 | 专栏 | 专栏cvID | +| 13 | 票务 | | +| 14 | 音频 | 音频auID | +| 15 | 风纪委员会 | 众裁项目ID | +| 16 | 点评 | | +| 17 | 动态(纯文字动态&分享) | 动态ID | +| 18 | 播单 | | +| 19 | 音乐播单 | | +| 20 | 漫画 | | +| 21 | 漫画 | | +| 22 | 漫画 | 漫画mcID | +| 33 | 课程 | 课程epID | + +## 评论条目对象 + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ------------------------------- | ---------------- | ------------------------------------------------------------ | +| rpid | num | 评论rpID | | +| oid | num | 目标评论区rpID | | +| type | num | 评论区类型代码 | **类型代码见上表** | +| mid | num | 评论发送者UID | | +| root | num | 根评论rpID | 若为一级评论则为0
大于一级评论则为根评论ID | +| parent | num | 回复父评论rpID | 若为一级评论则为0
若为二级评论则为根评论rpID
大于二级评论为上一级评论rpID | +| dialog | num | 回复对方rpID | 若为一级评论则为0
若为二级评论则为该评论rpID
大于二级评论为上一级评论rpID | +| count | num | 评论回复条数 | | +| rcount | num | 评论回复条数 | | +| floor | num | 评论楼层号 | **重要:若不支持楼层则无此项** | +| state | num | 0 | **作用尚不明确** | +| fansgrade | num | 是否具有粉丝标签 | 0:无
1:有 | +| attr | num | ??? | **作用尚不明确** | +| ctime | num | 评论发送时间 | 时间戳 | +| rpid_str | str | 评论rpID | 字串格式 | +| root_str | str | 根评论rpID | 字串格式 | +| parent_str | str | 回复父评论rpID | 字串格式 | +| like | num | 评论获赞数 | | +| action | num | 当前用户操作状态 | 需要登录(SESSDATA)
否则恒为0
0:无
1:已点赞
2:已点踩 | +| member | obj | 评论发送者信息 | | +| content | obj | 评论信息 | | +| replies | 无效时:null
有效时:array | 评论回复条目预览 | **仅嵌套一层**
否则为null | +| assist | num | | **作用尚不明确** | +| folder | obj | ??? | | +| up_action | obj | 评论UP主操作信息 | | +| show_follow | bool | false | **作用尚不明确** | + +`评论条目`中的`member`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ----------------------------- | ---------------------- | ------------------------------------------------------------ | +| mid | str | 发送者UID | | +| uname | str | 发送者昵称 | | +| sex | str | 发送者性别 | 男 女 保密 | +| sign | str | 发送者签名 | | +| avatar | str | 发送者头像 | | +| rank | str | 10000 | **作用尚不明确** | +| DisplayRank | str | 0 | **作用尚不明确** | +| level_info | obj | 发送者等级 | | +| pendant | obj | 发送者头像框信息 | | +| nameplate | obj | 发送者勋章信息 | | +| official_verify | obj | 发送者认证信息 | | +| vip | obj | 发送者会员信息 | | +| fans_detail | 无效时:null
有效时:obj | 发送者粉丝标签 | | +| following | num | 是否关注该用户 | 需要登录(SESSDATA)
否则恒为0
0:未关注
1:已关注 | +| is_followed | num | 是否被该用户关注 | 需要登录(SESSDATA)
否则恒为0
0:未关注
1:已关注 | +| user_sailing | obj | 发送者评论条目装扮信息 | | + +`member`中的`level_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------- | ---------------- | +| current_level | num | 用户等级 | | +| current_min | num | 0 | **作用尚不明确** | +| current_exp | num | 0 | **作用尚不明确** | +| next_exp | num | 0 | **作用尚不明确** | + +`member`中的`pendant`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------- | -------------------- | +| pid | num | 头像框id | **详细说明有待补充** | +| name | str | 头像框名称 | | +| image | str | 头像框图片url | | +| expire | num | 0 | **作用尚不明确** | +| image_enhance | str | 头像框图片url | | + +`member`中的`nameplate`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | -------------------- | +| nid | num | 勋章id | **详细说明有待补充** | +| name | str | 勋章名称 | | +| image | str | 挂件图片url 正常 | | +| image_small | str | 勋章图片url 小 | | +| level | str | 勋章等级 | | +| condition | str | 勋章条件 | | + +`member`中的`official_verify`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------------------- | +| type | num | 是否认证 | -1:无
0:认证 | +| desc | str | 认证信息 | 无为空 | + +`member`中的`vip`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------------- | ----------------------------------- | +| vipType | num | 大会员类型 | 0:无
1:月会员
2:年会员 | +| vipDueDate | num | 大会员到期时间 | 毫秒 时间戳 | +| dueRemark | str | 空 | **作用尚不明确** | +| accessStatus | num | 0 | **作用尚不明确** | +| vipStatus | num | 大会员状态 | 0:无
1:有 | +| vipStatusWarn | str | 空 | **作用尚不明确** | +| theme_type | num | 0 | **作用尚不明确** | +| label | obj | ??? | | + +`vip`中的`label`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------ | ---------------- | +| path | str | 空 | **作用尚不明确** | +| text | str | 会员类型信息 | | +| label_theme | str | 会员类型 | | + +`member`中的`fans_detail`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------ | -------------------- | +| uid | num | 用户UID | | +| medal_id | num | 粉丝标签ID | **详细说明有待补充** | +| medal_name | str | 粉丝标签名 | | +| score | num | 0 | **作用尚不明确** | +| level | num | 当前标签等级 | | +| intimacy | num | 0 | **作用尚不明确** | +| master_status | num | 1 | **作用尚不明确** | +| is_receive | num | 1 | **作用尚不明确** | + +`member`中的`user_sailing`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------- | ----------------------------- | ------------ | ---------------- | +| pendant | 无效时:null
有效时:obj | 头像框信息 | | +| cardbg | 无效时:null
有效时:obj | 评论条目装扮 | | +| cardbg_with_focus | null | - | **作用尚不明确** | + +`user_sailing`中的`pendant`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------- | ------------------------------------- | +| id | num | 头像框ID | | +| name | str | 头像框名称 | | +| image | str | 头像框图片url | | +| jump_url | str | 空 | | +| type | str | 装扮类型 | suit:一般装扮
vip_suit:vip装扮 | + +`user_sailing`中的`cardbg`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ----------------------- | ------------------------------------- | +| id | num | 评论条目装扮ID | | +| name | str | 评论条目装扮名称 | | +| image | str | 评论条目装扮图片url | | +| jump_url | str | 评论条目装扮商城页面url | | +| fan | obj | 粉丝专属信息 | | +| type | str | 装扮类型 | suit:一般装扮
vip_suit:vip装扮 | + +`cardbg`中的`fan`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------------ | ---------------- | +| is_fan | num | 是否为粉丝专属装扮 | 0:否
1:是 | +| number | num | 粉丝专属编号 | | +| color | str | 数字颜色 | 颜色码 | +| name | str | 装扮名称 | | +| num_desc | str | 粉丝专属编号 | 字串格式 | + +`评论条目`中的`content`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | -------------------- | ------------------------------------------------------------ | +| message | str | 评论内容 | **重要** | +| plat | num | 评论发送平台 | 1:web端
2:安卓客户端
3:ios客户端
4:wp客户端 | +| device | str | 评论发送平台设备 | | +| members | array | 评论中at到的用户信息 | | +| emote | obj | 表情转义符信息 | 评论内容无表情则无此项 | +| jump_url | obj | 空 | **作用尚不明确** | +| max_line | num | 6 | **作用尚不明确** | + +`content`中的`members`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | -------------------------------- | +| 0 | obj | at到的用户1 | 基本同`评论条目`中的`member`对象 | +| n | obj | at到的用户(n+1) | 项数为at到的不同的用户数 | +| …… | obj | …… | …… | + +`content`中的`emote`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | --------------- | -------- | +| {表情转义符} | obj | 表情转义符信息1 | | +| …… | obj | 表情转义符信息n | 向下扩展 | + +`emote`中的`{表情转义符}`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | -------------------------------------------------------- | +| id | num | 表情ID | | +| package_id | num | 表情包ID | | +| state | num | 0 | | +| type | num | 表情类型 | 1:免费
2:会员专属
3:购买所得
4:颜文字 | +| attr | num | 0 | **作用尚不明确** | +| text | str | 表情转义符 | | +| url | str | 表情图片url | | +| meta | obj | 属性信息 | | +| mtime | num | 表情创建时间 | 时间戳 | + +`{表情转义符}`中的`meta`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------ | ---------------- | +| size | num | 表情尺寸信息 | 1:小
2:大 | +| alias | str | 简写名 | 无则无此项 | + +`评论条目`中的`replies`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------- | ------------------------------------------------------------ | +| 0 | obj | 回复条目1 | **为本对象的递归嵌套**
**仅嵌套一层**
按照热度顺序排列 | +| 1 | obj | 回复条目2 | | +| 2 | obj | 回复条目3 | 最后一项 | + +`评论条目`中的`folder`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------ | ---------------- | +| has_folded | bool | false | **作用尚不明确** | +| is_folded | bool | false | **作用尚不明确** | +| rule | str | ??? | **作用尚不明确** | + +`评论条目`中的`up_action`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---------------- | ----------------------- | +| like | bool | 是否UP主觉得很赞 | false:否
true:是 | +| reply | bool | 是否被UP主回复 | false:否
true:是 | \ No newline at end of file diff --git a/creativecenter/railgun.md b/creativecenter/railgun.md new file mode 100644 index 0000000..26fccca --- /dev/null +++ b/creativecenter/railgun.md @@ -0,0 +1,271 @@ +# 电磁力相关 + +**本页所有操作均需登录(Cookie或APP)** + +电磁力每周日下午刷新 + +## 获取电磁力等级(web端) + +> http://member.bilibili.com/x/web/elec/user + +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ----------- | ---------------- | +| mid | num | 当前用户UID | | +| state | num | 电磁力等级 | | +| reason | str | 空 | **作用尚不明确** | + +**示例:** + +```shell +curl 'http://member.bilibili.com/x/web/elec/user' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "mid": 293793435, + "state": 2, + "reason": "" + } +} +``` + +
+ +## 获取电磁力详细数值(双端) + +> http://api.bilibili.com/studio/up-rating/rating/summary + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------------- | ---- | -------------- | ---- | +| date | str | 数据刷新时间 | YYYY-MM-DD | +| level | obj | 电磁力等级 | | +| creative | obj | 创作力 | | +| influence | obj | 影响力 | | +| credit | obj | 信用分 | | + +`data`中的`level` `creative` `influence` `credit`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | ---- | +| data | num | 数值 | | +| prev | num | ??? | **作用尚不明确** | +| desc | str | 描述 | | +| date | num | 刷新时间 | 时间戳 | + +**示例:** + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/studio/up-rating/rating/summary' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/studio/up-rating/rating/summary' \ +--data-urlencode 'access_key=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "date": "2020-07-05", + "level": { + "data": 1, + "prev": 0, + "desc": "正式开启创作之路,希望未来的路上我们携手相伴,创作更多优质内容~", + "date": 1593878400 + }, + "creative": { + "data": 39, + "prev": 39, + "desc": "考察近一年来的创作行为,良好的原创投稿行为和互动数据有助于提升创作力。", + "date": 1593878400 + }, + "influence": { + "data": 54, + "prev": 54, + "desc": "根据近一年活跃粉丝数据进行评估,良好的粉丝活跃度是影响力的基础。", + "date": 1593878400 + }, + "credit": { + "data": 100, + "prev": 100, + "desc": "良好的投稿记录将维持较高的信用分,违反投稿公约的行为将扣除信用分。", + "date": 1594106147 + } + } +} +``` + +
+ +## 获取电磁力数值历史变化(双端) + +> http://api.bilibili.com/studio/up-rating/rating/history + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | -------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 目标数据类型 | 必要 | 类型代码见下表 | + +类型代码`type`: + +| 代码 | 含义 | +| ---- | ------ | +| 1 | 创作力 | +| 2 | 影响力 | +| 3 | 信用分 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----- | ------------ | -------- | +| date | array | 数据记录时间 | 每周更新 | +| score | array | 电磁力等级 | 每周更新 | + +`data`中的`date`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | -------------- | +| 0 | str | 1周前的日期 | MM-DD | +| n | str | (n+1)周前的日期 | 与数值一一对应 | +| …… | str | …… | …… | +| 7 | str | 8周前的日期 | 最后一条 | + +`data`中的`score`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | -------------- | +| 0 | num | 1周前的数值 | | +| n | num | (n+1)周前的数值 | 与日期一一对应 | +| …… | num | …… | …… | +| 7 | num | 8周前的数值 | 最后一条 | + +**示例:** + +查询创作力的历史变化 + +Cookie方式: + +```shell +curl -G 'http://api.bilibili.com/studio/up-rating/rating/history' \ +--data-urlencode 'type=1' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl -G 'http://api.bilibili.com/studio/up-rating/rating/history' \ +--data-urlencode 'type=1' \ +--data-urlencode 'access_key=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "date": [ + "05-17", + "05-24", + "05-31", + "06-07", + "06-14", + "06-21", + "06-28", + "07-05" + ], + "score": [ + 48, + 48, + 49, + 49, + 49, + 49, + 49, + 49 + ] + } +} +``` + +
diff --git a/creativecenter/statistics&data.md b/creativecenter/statistics&data.md index 8d5374c..ba29b6e 100644 --- a/creativecenter/statistics&data.md +++ b/creativecenter/statistics&data.md @@ -1,6 +1,6 @@ # 统计与数据 -本页所有操作均需登录(SESSDATA) +本页所有操作均需登录(Cookie) 统计与数据次日中午12刷新 @@ -8,7 +8,9 @@ > http://member.bilibili.com/x/web/index/stat -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) **json回复:** @@ -68,7 +70,13 @@ **示例:** -http://member.bilibili.com/x/web/index/stat +```shell +curl 'http://member.bilibili.com/x/web/index/stat' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -154,13 +162,15 @@ http://member.bilibili.com/x/web/index/stat } ``` - +
## UP主专栏状态数据 > http://member.bilibili.com/x/web/data/article -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) **json回复:** @@ -192,7 +202,13 @@ http://member.bilibili.com/x/web/index/stat **示例:** -http://member.bilibili.com/x/web/data/article +```shell +curl 'http://member.bilibili.com/x/web/data/article' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -216,21 +232,23 @@ http://member.bilibili.com/x/web/data/article } ``` - +
## 视频数据增量趋势 > http://member.bilibili.com/x/web/data/article/thirty -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) 数据为前30天 -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------------ | ------ | -------------- | -| type | url | 目标数据类型 | 必要 | 类型代码见下表 | +| type | num | 目标数据类型 | 必要 | 类型代码见下表 | 类型代码`type`: @@ -276,7 +294,14 @@ http://member.bilibili.com/x/web/data/article 查询30天前的视频播放增量趋势,可知`2020-04-05`的播放增量为`46`,`2020-04-04`的播放增量为`58` -http://member.bilibili.com/x/web/data/pandect?type=1 +```shell +curl -G 'http://member.bilibili.com/x/web/data/pandect' \ +--data-urlencode 'type=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -307,21 +332,23 @@ http://member.bilibili.com/x/web/data/pandect?type=1 } ``` - +
## 专栏数据增量趋势 > http://member.bilibili.com/x/web/data/article/thirty -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) 数据为前30天 -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------------ | ------ | -------------- | -| type | url | 目标数据类型 | 必要 | 类型代码见下表 | +| type | num | 目标数据类型 | 必要 | 类型代码见下表 | 类型代码`type`: @@ -365,7 +392,14 @@ http://member.bilibili.com/x/web/data/pandect?type=1 查询30天前的文章阅读增量趋势,可知`2020-04-05`的阅读增量为`6`,`2020-04-04`的阅读增量为`6` -http://member.bilibili.com/x/web/data/article/thirty?type=1 +```shell +curl -G 'http://member.bilibili.com/x/web/data/article/thirty' \ +--data-urlencode 'type=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -393,21 +427,23 @@ http://member.bilibili.com/x/web/data/article/thirty?type=1 } ``` - +
## 稿件操作来源占比情况 > http://member.bilibili.com/x/web/data/survey -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) 数据为上一天的 -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------------ | ------ | -------------- | -| type | url | 目标数据类型 | 必要 | 类型代码见下表 | +| type | num | 目标数据类型 | 必要 | 类型代码见下表 | 类型代码`type`: @@ -443,7 +479,7 @@ http://member.bilibili.com/x/web/data/article/thirty?type=1 | 字段 | 类型 | 内容 | 备注 | | --------- | ------ | ------------ | ---- | -| arc_inc | arrary | 稿件情况 | | +| arc_inc | array | 稿件情况 | | | total_inc | num | 总计增长情况 | | | type_rank | obj | 分区排名情况 | | @@ -478,7 +514,14 @@ http://member.bilibili.com/x/web/data/article/thirty?type=1 查询我的稿件来源占比情况 -http://member.bilibili.com/x/web/data/survey?type=1 +```shell +curl -G 'http://member.bilibili.com/x/web/data/survey' \ +--data-urlencode 'type=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -525,13 +568,15 @@ http://member.bilibili.com/x/web/data/survey?type=1 } ``` - +
## 播放来源占比情况(平台及方式) > http://member.bilibili.com/x/web/data/playsource -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) **json回复:** @@ -553,14 +598,14 @@ http://member.bilibili.com/x/web/data/survey?type=1 `data`中的`page_source`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ---- | -| dynamic | num | 通过动态 | | -| other | num | 其他方式 | | -| related_video | num | 通过推荐列表 | | -| search | num | 通过搜索 | | -| space | num | 空间列表播放 | | -| tenma | num | ??? | | +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------------------- | ---- | +| dynamic | num | 通过动态 | | +| other | num | 其他方式 | | +| related_video | num | 通过推荐列表 | | +| search | num | 通过搜索 | | +| space | num | 空间列表播放 | | +| tenma | num | 天马(APP推荐信息流)来源 | | `data`中的`play_proportion`对象: @@ -574,7 +619,13 @@ http://member.bilibili.com/x/web/data/survey?type=1 **示例:** -http://member.bilibili.com/x/web/data/playsource +```shell +curl 'http://member.bilibili.com/x/web/data/playsource' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -601,13 +652,15 @@ http://member.bilibili.com/x/web/data/playsource } ``` - +
## 播放分布情况(粉丝与路人) > http://member.bilibili.com/x/web/data/base -*方式:GET* +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) **json回复:** @@ -701,7 +754,13 @@ http://member.bilibili.com/x/web/data/playsource **示例:** -http://member.bilibili.com/x/web/data/base +```shell +curl 'http://member.bilibili.com/x/web/data/base' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -819,3 +878,4 @@ http://member.bilibili.com/x/web/data/base } ``` +
diff --git a/danmaku/action.md b/danmaku/action.md new file mode 100644 index 0000000..418c578 --- /dev/null +++ b/danmaku/action.md @@ -0,0 +1,808 @@ +# 弹幕操作 + +## 发送视频弹幕 + +> http://api.bilibili.com/x/v2/dm/post + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +此接口与漫画弹幕相同 + +`mode=6`的逆向弹幕与`mode=8`的代码弹幕不可发送 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 | +| oid | num | 视频CID | 必要 | | +| msg | str | 弹幕内容 | 必要 | 长度小于100字符 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒
默认为0 | +| color | num | 弹幕颜色设置 | 非必要 | 十进制RGB888值
默认为16777215(#FFFFFF)白色 | +| fontsize | num | 弹幕字号设置 | 非必要 | 默认为25
极小:12
超小:16
小:18
标准:25
大:36
超大:45
极大:64 | +| pool | num | 弹幕池选择 | 非必要 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕)
默认为0 | +| mode | num | 弹幕类型选择 | 必要 | 1:普通弹幕
4:底部弹幕
5:顶部弹幕
7:高级弹幕
9:BAS弹幕(`pool`必须为2) | +| rnd | num | 当前时间戳*1000000 | 非必要 | **若无此项,则发送弹幕冷却时间限制为90s**
若有此项,则发送弹幕冷却时间限制为5s | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36700:系统升级中
36701:弹幕包含被禁止的内容
36702:弹幕长度大于100
36703:发送频率过快
36704:禁止向未审核的视频发送弹幕
36705:您的等级不足,不能发送弹幕
36706:您的等级不足,不能发送顶端弹幕
36707:您的等级不足,不能发送底端弹幕
36708:您的等级不足,不能发送彩色弹幕
36709:您的等级不足,不能发送高级弹幕
36710:您的权限不足,不能发送这种样式的弹幕
36711:该视频禁止发送弹幕
36712:level 1用户发送弹幕的最大长度为20
36713:稿件未付费
36714:弹幕发送时间不合法
36715:当日操作数量超过上限 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | ------------ | +| action | str | 空 | 作用尚不明确 | +| dmid | num | 弹幕dmID | | +| dmid_str | str | 弹幕dmID | 字串形式 | +| visible | bool | true | 作用尚不明确 | + +**示例:** + +为视频`av2`/`BV1xx411c7mD`(CID为`62131`)的5000ms位置发送一条弹幕`前来考古`(颜色为#FFFFFF,字号25,普通弹幕,游动弹幕) + +```shell +curl 'http://api.bilibili.com/x/v2/dm/post' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=62131' \ +--data-urlencode 'msg=前来考古' \ +--data-urlencode 'aid=2' \ +--data-urlencode 'progress=5000' \ +--data-urlencode 'color=16777215' \ +--data-urlencode 'fontsize=25' \ +--data-urlencode 'pool=0' \ +--data-urlencode 'mode=1' \ +--data-urlencode 'rnd=3456789987654321' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1, + "data":{ + "action":"", + "dmid":32161968826613767, + "dmid_str":"32161968826613767", + "visible":true + } +} +``` + +
+ +## 发送互动弹幕 + +> http://api.bilibili.com/x/v2/dm/command/post + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +2020-09-25 B站更新了互动弹幕功能,包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能 + +详情见: + +[【客户端更新】6.10版本更新!UP主支持发布关联视频弹幕]( https://www.bilibili.com/read/cv7728299 ) + + [引导关注卡片]( https://www.bilibili.com/blackboard/activity-c8a0iDRQy.html ) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 互动弹幕类型 | 必要 | 1:UP主头像弹幕
2:关联视频弹幕
5:视频内嵌引导关注按钮 | +| aid | num | 稿件avID | 必要 | | +| cid | num | 视频CID | 必要 | | +| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒
默认为0 | +| plat | num | 平台标识 | 必要 | 1:web端
2:安卓端
8:视频管理页面 | +| data | str | json序列 | 必要 | | +| dmid | num | 修改互动弹幕的弹幕ID | 非必要 | 注:修改弹幕`plat`必须为8 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +`data`参数json序列: + +类型为【UP主头像弹幕】时: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| msg | str | 弹幕内容 | | + +类型为【关联视频弹幕】时: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------- | ---- | +| msg | str | 弹幕内容 | | +| bvid | str | 关联视频的bvID | | + +类型为【视频内嵌引导关注按钮】时: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | --------------- | +| duration | num | 持续时间 | 单位为毫秒 | +| posX | num | X坐标 | 区间:[118-549] | +| posY | num | Y坐标 | 区间:[82-293] | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-500:服务器错误
36711:该视频禁止发送弹幕
79026:发送失败,请勿填写当前稿件BVID
79024:发送失败,请输入正确的BVID
79036:该指令弹幕超出限制
79037:关注弹幕坐标溢出 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 正确时:obj
错误时:null | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ---------------------- | ------------------------------------------------------------ | +| command | str | 指令? | UP主头像弹幕:#UP#
关联视频弹幕:#LINK#
视频内嵌引导关注按钮:#ATTENTION# | +| content | str | 弹幕内容 | | +| extra | str | 弹幕数据 | json序列 | +| id | num | 弹幕dmID | | +| idStr | str | 弹幕dmID | 字串形式 | +| mid | num | 用户UID | | +| oid | num | 视频CID | | +| progress | num | 弹幕出现在视频内的时间 | | +| type | num | 互动弹幕类型 | 1:UP主头像弹幕
2:关联视频弹幕
5:视频内嵌引导关注按钮 | + +`extra`序列数据: + +类型为【UP主头像弹幕】时: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| icon | str | UP主头像url | | + +类型为【关联视频弹幕】时: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------------- | ---- | +| aid | num | 关联视频的avID | | +| title | str | 关联视频的标题 | | +| bvid | str | 关联视频的bvID | | + +类型为【视频内嵌引导关注按钮】时: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ----------- | ---------------------------------- | +| duration | num | 持续时间 | 单位为毫秒 | +| posX | num | X坐标 | 区间:[118-549] | +| posY | num | Y坐标 | 区间:[82-293] | +| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 | + +**示例:** + +为视频`av201947622`(CID为`230709860`)的5000ms位置发送一条UP主头像弹幕`test` + +```shell +curl 'http://api.bilibili.com/x/v2/dm/command/post' \ +--data-urlencode 'type=1' \ +--data-urlencode 'aid=201947622' \ +--data-urlencode 'cid=230709860' \ +--data-urlencode 'progress=5000' \ +--data-urlencode 'plat=1' \ +--data-urlencode 'data={"msg":"test"}' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 39053842117558279, + "oid": 230709860, + "mid": 293793435, + "type": 1, + "command": "#UP#", + "content": "test", + "extra": "{\"icon\":\"http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg\"}", + "idStr": "39053842117558279" + } +} +``` + +
+ +为视频`av201947622`(CID为`230709860`)的5000ms位置发送一条发送关联视频弹幕`测试1234`关联视频为`BV1kz4y1X7XP` + +```shell +curl 'http://api.bilibili.com/x/v2/dm/command/post' \ +--data-urlencode 'type=2' \ +--data-urlencode 'aid=201947622' \ +--data-urlencode 'cid=230709860' \ +--data-urlencode 'progress=5000' \ +--data-urlencode 'plat=1' \ +--data-urlencode 'data={"bvid":"BV1kz4y1X7XP","msg":"测试1234"}' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 39054383689236483, + "oid": 230709860, + "mid": 293793435, + "type": 2, + "command": "#LINK#", + "content": "测试1234", + "progress": 11925, + "extra": "{\"aid\":583785685,\"title\":\"【cmd】访问api 命令行也能上B站\",\"bvid\":\"BV1kz4y1X7XP\"}", + "idStr": "39054383689236483" + } +} +``` + +
+ + +为视频`av201947622`(CID为`230709860`)的5000ms位置发送视频内嵌引导关注按钮,X坐标为118,Y坐标为82,持续时间为5000ms + +```shell +curl 'http://api.bilibili.com/x/v2/dm/command/post' \ +--data-urlencode 'type=5' \ +--data-urlencode 'aid=201947622' \ +--data-urlencode 'cid=230709860' \ +--data-urlencode 'progress=5000' \ +--data-urlencode 'plat=1' \ +--data-urlencode 'data={"duration":5000,"posX":118,"posY":82}' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "id": 39055158405496839, + "oid": 230709860, + "mid": 293793435, + "type": 5, + "command": "#ATTENTION#", + "progress": 5000, + "extra": "{\"duration\":5000,\"posX\":118,\"posY\":82}", + "idStr": "39055158405496839" + } +} +``` + +
+ + +## 撤回弹幕 + +> http://api.bilibili.com/x/dm/recall + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +仅能撤回自己两分钟内的弹幕,且每天只有3次机会 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| dmid | num | 弹幕dmID | 必要 | | +| cid | num | 视频CID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36301:撤回失败,弹幕发送已过2分钟
36302:撤回失败,弹幕已经被删除或撤回
36303:撤回失败,今天撤回的机会已经用完
36304:撤回失败,服务器出错 | +| message | str | 错误信息 | 成功后显示剩余次数 | +| ttl | num | 1 | | + +**示例:** + +撤回`CID=168901231`下的弹幕`32310301474947077`的弹幕 + +```shell +curl 'http://api.bilibili.com/x/dm/recall' \ +--data-urlencode 'cid=168901231' \ +--data-urlencode 'dmid=32310301474947077' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "撤回成功,你还有3次撤回机会" +} +``` + +
+ +## 购买高级弹幕发送权限 + +> http://api.bilibili.com/x/dm/adv/buy + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +购买一次需要2硬币,同时向up主发送请求 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| mode | str | sp | 必要 | | +| cid | num | 视频CID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-107:硬币不足
-400:请求错误
36007:不允许购买
36009:正在确认中
36010:已购买 | +| message | str | 返回信息 | | +| ttl | num | 1 | | + +示例: + +购买视频CID为`168901231`的高级弹幕发送权限 + +```shell +curl 'http://api.bilibili.com/x/dm/adv/buy' \ +--data-urlencode 'cid=168901231' \ +--data-urlencode 'mode=sp' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"已成功购买" +} +``` + +
+ +## 检测高级弹幕发送权限 + +> http://api.bilibili.com/x/dm/adv/state + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| mode | str | sp | 必要 | | +| cid | num | 视频CID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | ---------------- | -------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
--400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 有效时:obj
无效时:null | 有效时:信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---------------- | ------------------------------------------ | +| coins | num | 需要支付的硬币数 | | +| confirm | num | 是否同意 | 1:同意
2:未同意
未购买时无此项 | +| accept | bool | 是否允许申请 | true:允许
false:不允许 | +| hasBuy | bool | 是否已购买 | true:已购买
未购买时无此项 | + +**示例:** + +查询视频CID为`168901231`的视频高级弹幕权限购买状态 + +当前状态为已购买且同意 + +```shell +curl -G 'http://api.bilibili.com/x/dm/adv/state' \ +--data-urlencode 'cid=168901231' \ +--data-urlencode 'mode=sp' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "coins": 2, + "confirm": 1, + "accept": true, + "hasBuy": true + } +} +``` + +
+ +## 查询弹幕点赞数 + +> http://api.bilibili.com/x/v2/dm/thumbup/stats + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| oid | num | 视频CID | 必要 | | +| ids | nums | 弹幕dmID列表 | 必要 | 多个ID之间用`,`分隔 | + +**json回复** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ---------------- | --------------------------------- | +| {弹幕ID} | obj | 弹幕id对应的信息 | id分别对应请求参数中的`ids`,下同 | +| …… | obj | 弹幕id对应的信息 | | + +`{弹幕ID}`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | -------- | ------------------------------------------------------------ | +| likes | num | 点赞数 | | +| user_like | num | 是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie或APP)
未登录恒为0 | +| id_str | str | 弹幕dmID | | + +**示例** + +查询`CID=236871317`下的弹幕`35600074482384899`、`38880975220375559`、`39052528418553863`点赞数 + +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/thumbup/stats' \ +--data-urlencode 'oid=236871317' \ +--data-urlencode 'ids=39019145405661191,38880975220375559,39052528418553863' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "38880975220375559": { + "likes": 1, + "user_like": 1, + "id_str": "38880975220375559" + }, + "39019145405661191": { + "likes": 3, + "user_like": 1, + "id_str": "39019145405661191" + }, + "39052528418553863": { + "likes": 2, + "user_like": 0, + "id_str": "39052528418553863" + } + } +} +``` + +
+ +## 点赞弹幕 + +> http://api.bilibili.com/x/v2/dm/thumbup/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| dmid | num | 弹幕dmID | 必要 | | +| oid | num | 视频CID | 必要 | | +| op | num | 操作 | 必要 | 1:点赞
2:取消点赞 | +| platform | str | 平台 | 非必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
65004:取消赞失败 未点赞过
65006:已赞过 | +| message | str | 错误信息 | 默认为0 | +| tll | num | 1 | | + +**示例** + +为`CID=145928946`下的弹幕`35600074482384899`点赞 + +```shell +curl 'http://api.bilibili.com/x/v2/dm/thumbup/add' \ +--data-urlencode 'dmid=35600074482384899' \ +--data-urlencode 'oid=145928946' \ +--data-urlencode 'op=1' \ +--data-urlencode 'platform=web_player' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1 +} +``` + +
+ +## 举报弹幕 + +> http://api.bilibili.com/x/dm/report/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| cid | num | 视频CID | 必要 | | +| dmid | num | 弹幕dmID | 必要 | | +| reason | num | 举报类型 | 必要 | **类型代码见下表** | +| content | str | 其他举报备注 | 非必要 | `reason=11`时有效 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +举报类型`reason`: + +| 代码 | 含义 | +| ---- | ---------- | +| 1 | 违法违禁 | +| 2 | 色情低俗 | +| 3 | 赌博诈骗 | +| 4 | 人身攻击 | +| 5 | 侵犯隐私 | +| 6 | 垃圾广告 | +| 7 | 引战 | +| 8 | 剧透 | +| 9 | 恶意刷屏 | +| 10 | 视频无关 | +| 11 | 其他 | +| 12 | 青少年不良 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
36201:举报弹幕不存在
36203:举报原因类型错误
36204:已举报 | +| message | str | 错误信息 | 默认为空 | +| tll | num | 1 | 举报失败时 | + +**示例** + +举报`CID=145928946`下的弹幕`35600074482384899`,理由是`引战` + +```shell +curl 'http://api.bilibili.com/x/dm/report/add' \ +--data-urlencode 'cid=145928946' \ +--data-urlencode 'dmid=35600074482384899' \ +--data-urlencode 'reason=7' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"" +} +``` + +
+ +## 保护&删除弹幕 + +> http://api.bilibili.com/x/v2/dm/edit/state + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) 或APP + +注:只能操作自己的稿件或有骑士权限的稿件 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | --------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 | +| oid | num | 视频CID | 必要 | | +| dmids | nums | 弹幕dmID | 必要 | 多个ID之间用`,`分隔 | +| state | num | 操作代码 | 必要 | 1:删除弹幕
2:弹幕保护
3:取消保护 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
-403:访问权限不足 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例** + +删除`CID=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531` + +```shell +curl 'http://api.bilibili.com/x/v2/dm/edit/state' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=145928946' \ +--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \ +--data-urlencode 'state=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1 +} +``` + +
+ +## 修改字幕池 + +> http://api.bilibili.com/x/v2/dm/edit/pool + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) 或APP + +注:只能操作自己的稿件或有骑士权限的稿件 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 | +| oid | num | 视频CID | 必要 | | +| dmids | nums | 弹幕dmID | 必要 | 多个ID之间用`,`分隔 | +| pool | num | 操作代码 | 必要 | 0:移出字幕池
1:移入字幕池 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
-403:访问权限不足 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例** + +将`CID=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531`移入字幕池 + +```shell +curl 'http://api.bilibili.com/x/v2/dm/edit/state' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=145928946' \ +--data-urlencode 'pool=1' \ +--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1 +} +``` + +
diff --git a/danmaku/danmaku_proto.md b/danmaku/danmaku_proto.md new file mode 100644 index 0000000..25eed3f --- /dev/null +++ b/danmaku/danmaku_proto.md @@ -0,0 +1,149 @@ +# protobuf弹幕 + +2020年5月23日,哔哩哔哩网页端及移动端启用了新的默认弹幕api,网页端弹幕显示的上限变为原弹幕池上限的两倍。 + +新的api是以6分钟为一个单位加载,即每次加载6分钟内的弹幕 + +## 获取实时弹幕 + +> http://api.bilibili.com/x/v2/dm/web/seg.so (web端) +> +> http://api.bilibili.com/x/v2/dm/list/seg.so (APP端) +> +> http://i0.hdslb.com/bfs/dm/{data}.bin (BAS/代码弹幕专包) + +*请求方式:GET* + +此接口与漫画弹幕相同 + +只能返回普通弹幕(`pool=1` `mode=1-7`)和代码弹幕(`pool=2` `mode=8`),BAS弹幕(`pool=2` `mode=9`)请从[弹幕元数据](danmaku_view_proto.md)中获取 + +互动弹幕(UP主头像弹幕、关联视频、内嵌关注按钮)也不存在这个接口,请从[弹幕元数据](danmaku_view_proto.md)中获取 + +**注:仅获取6min的整数倍时间内的弹幕,6min内最多弹幕数为6000条(如第一包中弹幕`progress`值域为0-360000)** + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------- | ---- | -------- | ------ | ----------- | +| type | num | 弹幕类 | 必要 | 1:视频弹幕 | +| oid | num | 视频CID | 必要 | | +| pid | num | 稿件avID | 非必要 | | +| segment_index | num | 分包 | 必要 | 6分钟一包 | + +**proto回复:** + +消息`DmSegMobileReply`: + +| 名称 | 类型 | 含义 | 备注 | +| ----- | -------------------- | -------- | ---- | +| elems | repeated DanmakuElem | 弹幕条目 | | + +消息`DanmakuElem`: + +| 名称 | 类型 | 含义 | 备注 | +| -------- | ------ | ------------------ | ------------------------------------------------------------ | +| id | int64 | 弹幕dmID | 唯一 可用于操作参数 | +| progress | int32 | 视频内弹幕出现时间 | 毫秒 | +| mode | int32 | 弹幕类型 | 1 2 3:普通弹幕
4:底部弹幕
5:顶部弹幕
6:逆向弹幕
7:高级弹幕
8:代码弹幕
9:BAS弹幕(仅限于特殊弹幕专包) | +| fontsize | int32 | 弹幕字号 | 18:小
25:标准
36:大 | +| color | uint32 | 弹幕颜色 | 十进制RGB888值 | +| midHash | string | 发送者UID的HASH | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户ID | +| content | string | 弹幕内容 | utf-8编码 | +| ctime | int64 | 弹幕发送时间 | 时间戳 | +| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出
范围:[0-10]
值越大权重越高 | +| action | string | 动作? | 作用尚不明确 | +| pool | int32 | 弹幕池 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕) | +| idStr | string | 弹幕dmID | 字串形式
唯一 可用于操作参数 | + +protobuf结构体: + +**bilidm.proto** + +```protobuf +syntax = "proto3"; + +message DanmakuElem { + int64 id = 1; //弹幕dmID + int32 progress = 2; //出现时间 + int32 mode = 3; //弹幕类型 + int32 fontsize = 4; //文字大小 + uint32 color = 5; //弹幕颜色 + string midHash = 6; //发送者UID的HASH + string content = 7; //弹幕内容 + int64 ctime = 8; //发送时间 + int32 weight = 9; //权重 + string action = 10; //动作? + int32 pool = 11; //弹幕池 + string idStr = 12; //弹幕dmID(字串形式) +} + +message DmSegMobileReply { + repeated DanmakuElem elems = 1; //弹幕条目 +} +``` + +**示例:** + +获取视频`av810872(CID=1176840)`的实时弹幕分包1 + +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/web/seg.so' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=1176840' \ +--data-urlencode 'pid=810872' \ +--data-urlencode 'segment_index=1' \ +-o 'danmaku.bin' +``` + +响应正文为protubuf二进制数据 + +## 实例 + +获取炮姐弹幕第1包,[BV1Js411o76u](https://www.bilibili.com/video/BV1Js411o76u) + +编译proto结构文件 + +```shell +protoc --python_out=. bilidm.proto +``` + +生成bilidm_pb2.py + +--- + +以下为python测试代码,输出第一包的第一条弹幕 + +```python +import bilidm_pb2 +import requests + +AVID = 810872 +CID = 1176840 +SEG = 1 +url = 'http://api.bilibili.com/x/v2/dm/web/seg.so?type=1&oid=' + str(CID) + '&pid=' + str(AVID) + '&segment_index=' + str(SEG) + +data = requests.get(url) +target = bilidm_pb2.DmSegMobileReply() +target.ParseFromString(data.content) + +print(target.elems[0]) +print(target.elems[0].content) +``` + +输出: + +``` +id: 682225690 +progress: 44125 +mode: 1 +fontsize: 25 +color: 16777215 +midHash: "af4aa003" +content: "\346\210\221\347\202\256\350\277\230\350\203\275\345\206\215\346\210\230500\345\271\264\357\274\201\357\274\201\357\274\201\346\210\221\347\202\256\350\277\230\350\203\275\345\206\215\346\210\230500\345\271\264\357\274\201\357\274\201\357\274\201\346\210\221\347\202\256\350\277\230\350\203\275\345\206\215\346\210\230500\345\271\264\357\274\201\357\274\201\357\274\201\346\210\221\347\202\256\350\277\230\350\203\275\345\206\215\346\210\230500\345\271\264" +ctime: 1416323487 +weight: 6 +idStr: "682225690" + +我炮还能再战500年!!!我炮还能再战500年!!!我炮还能再战500年!!!我炮还能再战500年 +``` diff --git a/danmaku/danmaku_view_proto.md b/danmaku/danmaku_view_proto.md new file mode 100644 index 0000000..36728fc --- /dev/null +++ b/danmaku/danmaku_view_proto.md @@ -0,0 +1,292 @@ +# 弹幕元数据 + +2020-09-25 B站更新了互动弹幕功能,包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能 + +详情见: + +[【客户端更新】6.10版本更新!UP主支持发布关联视频弹幕]( https://www.bilibili.com/read/cv7728299 ) + + [引导关注卡片](https://www.bilibili.com/blackboard/activity-c8a0iDRQy.html ) + +## 获取弹幕个人配置与互动弹幕及BAS(代码)弹幕专包(web端) + +> http://api.bilibili.com/x/v2/dm/web/view + +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ----------- | +| type | num | 弹幕类 | 必要 | 1:视频弹幕 | +| oid | num | 视频CID | 必要 | | +| pid | num | 稿件avID | 非必要 | | + +**proto回复:** + +消息`DmWebViewReply`: + +| 名称 | 类型 | 含义 | 备注 | +| ---------- | -------------------- | ---------------------- | ---------------------------- | +| state | int32 | 弹幕开放状态 | 0:开放弹幕
1:禁止弹幕 | +| text | string | ? | | +| textSide | string | ? | | +| dmSge | DmSegConfig | 分段弹幕包信息? | | +| flag | DanmakuFlagConfig | ? | | +| specialDms | repeated string | BAS(代码)弹幕专包url | | +| checkBox | bool | ? | | +| count | int64 | 实际弹幕总数 | 具有1500-6000不等的上限 | +| commandDms | repeated CommandDm | 互动弹幕条目 | | +| dmSetting | DanmuWebPlayerConfig | 弹幕个人配置 | 仅登录后存在 | + +消息`dmSge`: + +| 名称 | 类型 | 含义 | 备注 | +| -------- | ----- | ------------ | ---------- | +| pageSize | int64 | 分段时间? | 单位为毫秒 | +| total | int64 | 最大分页数? | | + +消息`flag`: + +| 名称 | 类型 | 含义 | 备注 | +| --------- | ------ | ---- | ---- | +| recFlag | int32 | ? | | +| recText | string | ? | | +| recSwitch | int32 | ? | | + +消息`commandDms`: + +| 名称 | 类型 | 含义 | 备注 | +| -------- | ------ | ------------ | ------------------------------------------------------------ | +| id | int64 | 弹幕dmID | | +| oid | int64 | 视频CID | | +| mid | int64 | 发送者UID | | +| command | string | 弹幕指令 | `#UP#`:UP主头像弹幕
`#LINK#`:关联视频弹幕
`#ATTENTION#`:视频内嵌引导关注按钮 | +| content | string | 弹幕文字 | | +| progress | int32 | 弹幕出现时间 | 单位为毫秒 | +| ctime | string | 创建时间? | 此项为空 | +| mtime | string | 修改时间? | 此项为空 | +| extra | string | 弹幕负载数据 | json序列字串 | +| idStr | string | 弹幕dmID | 字串形式 | + +`extra`json序列: + +类型为【UP主头像弹幕】时: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| icon | str | UP主头像url | | + +类型为【关联视频弹幕】时:类型为【关联视频弹幕】时: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------------- | ---- | +| aid | num | 关联视频的avID | | +| title | str | 关联视频的标题 | | +| icon | str | 关联视频按钮图片url | | +| bvid | str | 关联视频的bvID | | + +类型为【视频内嵌引导关注按钮】时: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ----------- | ---------------------------------- | +| duration | num | 持续时间 | 单位为毫秒 | +| posX | num | X坐标 | 区间:[118-549] | +| posY | num | Y坐标 | 区间:[82-293] | +| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 | + +消息`dmSetting`: + +| 名称 | 类型 | 含义 | 备注 | +| ------------ | ------ | ------------------------ | ------------------------------------------------------------ | +| dmSwitch | bool | 弹幕开关 | true:开启
false:关闭 | +| aiSwitch | bool | 智能云屏蔽 | 同上 | +| aiLevel | int32 | 智能云屏蔽级别 | 区间:[1-10] | +| blocktop | bool | 屏蔽类型-顶部 | true:不屏蔽
false:屏蔽 | +| blockscroll | bool | 屏蔽类型-滚动 | 同上 | +| blockbottom | bool | 屏蔽类型-底部 | 同上 | +| blockcolor | bool | 屏蔽类型-彩色 | 同上 | +| blockspecial | bool | 屏蔽类型-特殊 | 同上 | +| preventshade | bool | 防挡弹幕(底部15%) | true:开启
false:关闭 | +| dmask | bool | 智能防挡弹幕(人像蒙版) | 同上 | +| opacity | float | 弹幕不透明度 | 区间:[0-1] | +| dmarea | int32 | 弹幕显示区域 | 100:不重叠
75:3/4屏
50:半瓶
25:1/4屏
0:不限 | +| speedplus | float | 弹幕速度 | 区间:[0.4-1.6] | +| fontsize | float | 字体大小 | 区间:[0.4-1.6] | +| screensync | bool | 跟随屏幕缩放比例 | | +| speedsync | bool | 根据播放倍速调整速度 | | +| fontfamily | string | 字体类型? | 未启用 | +| bold | bool | 粗体? | 未启用 | +| fontborder | int32 | 描边类型 | 0:重墨
1:描边
2:45°投影 | +| drawType | string | 渲染类型? | 未启用 | + +protobuf结构体: + +**web_dmview.proto** + +```protobuf +syntax = "proto3"; + +//分段弹幕包信息? +message DmSegConfig { + int64 pageSize = 1; //分段时间? + int64 total = 2; //最大分页数? +} + +// +message DanmakuFlagConfig { + int32 recFlag = 1; // + string recText = 2; // + int32 recSwitch = 3; // +} + +// 互动弹幕条目 +message CommandDm { + int64 id = 1; //弹幕dmID + int64 oid = 2; //视频CID + int64 mid = 3; //发送者UID + string command = 4; //弹幕指令 + string content = 5; //弹幕文字 + int32 progress = 6; //弹幕出现时间 + string ctime = 7; // + string mtime = 8; // + string extra = 9; //弹幕负载数据 + string idStr = 10; //弹幕dmID(字串形式) +} + +//弹幕个人配置 +message DanmuWebPlayerConfig{ + bool dmSwitch=1; //弹幕开关 + bool aiSwitch=2; //智能云屏蔽 + int32 aiLevel=3; //智能云屏蔽级别 + bool blocktop=4; //屏蔽类型-顶部 + bool blockscroll=5; //屏蔽类型-滚动 + bool blockbottom=6; //屏蔽类型-底部 + bool blockcolor=7; //屏蔽类型-彩色 + bool blockspecial=8; //屏蔽类型-特殊 + bool preventshade=9; //防挡弹幕(底部15%) + bool dmask=10; //智能防挡弹幕(人像蒙版) + float opacity=11; //弹幕不透明度 + int32 dmarea=12; //弹幕显示区域 + float speedplus=13; //弹幕速度 + float fontsize=14; //字体大小 + bool screensync=15; //跟随屏幕缩放比例 + bool speedsync=16; //根据播放倍速调整速度 + string fontfamily=17; //字体类型? + bool bold=18; //粗体? + int32 fontborder=19; //描边类型 + string drawType=20; //渲染类型? +} + +message DmWebViewReply { + int32 state = 1; //弹幕开放状态 + string text = 2; // + string textSide = 3; // + DmSegConfig dmSge = 4; //分段弹幕包信息? + DanmakuFlagConfig flag = 5; // + repeated string specialDms = 6; //BAS(代码)弹幕专包url + bool checkBox = 7; // + int64 count = 8; //实际弹幕总数 + repeated CommandDm commandDms = 9; //互动弹幕条目 + DanmuWebPlayerConfig dmSetting = 10; //弹幕个人配置 +} +``` + +**示例:** + +获取视频`av797164471(CID=236871317)`的弹幕元数据 + +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/web/view' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=236871317' \ +--data-urlencode 'pid=797164471' \ +-b 'SESSDATA=xxx' \ +-o 'danmaku_view.bin' +``` + +响应正文为protubuf二进制数据 + +## 获取互动弹幕 + +获取视频`av797164471(CID=236871317)`的互动弹幕 + +```python +import web_dmview_pb2 +import requests + +AVID = 797164471 +CID = 236871317 +url = 'http://api.bilibili.com/x/v2/dm/web/view?type=1&oid=' + str(CID) + '&pid=' + str(AVID) + +data = requests.get(url) +target = web_dmview_pb2.DmWebViewReply() +target.ParseFromString(data.content) + +commandDms_len=len(target.commandDms) +print('互动弹幕数=',commandDms_len) +for i in range(commandDms_len): + print('互动弹幕[',i,']:') + print('---弹幕ID=',target.commandDms[i].id) + print('---视频CID=',target.commandDms[i].oid) + print('---发送者UID=',target.commandDms[i].mid) + print('---弹幕指令=',target.commandDms[i].command) + print('---弹幕文字=',target.commandDms[i].content) + print('---弹幕出现时间=',target.commandDms[i].progress) + print('---ctime=',target.commandDms[i].ctime) + print('---mtime=',target.commandDms[i].mtime) + print('---弹幕负载数据=',target.commandDms[i].extra) + print('---弹幕ID(字串)=',target.commandDms[i].idStr) +``` + +输出为: + +``` +互动弹幕数= 1 +互动弹幕[ 0 ]: +---弹幕ID= 38469676112019463 +---视频CID= 236871317 +---发送者UID= 501183549 +---弹幕指令= #UP# +---弹幕文字= 这个视频没有恰饭!别紧张! +---弹幕出现时间= 157818 +---ctime= +---mtime= +---弹幕负载数据= {"icon":"http://i1.hdslb.com/bfs/face/559abe31f561f71f3106d8ee7b2065cac50c1235.jpg"} +---弹幕ID(字串)= 38469676112019463 +``` + +## 获取BAS(代码)弹幕专包 + +BAS弹幕(`pool=2` `mode=9`)只能从此包获取,代码弹幕(`pool=2` `mode=8`)也能从此包获取 + +获取视频`av2(CID=62131)`的BAS(代码)弹幕专包 + +```python +import web_dmview_pb2 +import requests + +AVID = 2 +CID = 62131 +url = 'http://api.bilibili.com/x/v2/dm/web/view?type=1&oid=' + str(CID) + '&pid=' + str(AVID) + +data = requests.get(url) +target = web_dmview_pb2.DmWebViewReply() +target.ParseFromString(data.content) + +specialDms_len=len(target.specialDms) +print('特殊弹幕包数=',specialDms_len) +for i in range(specialDms_len): + print('特殊弹幕包url[',i,']=',target.specialDms[i]) +``` + +输出为: + +``` +特殊弹幕包数= 1 +特殊弹幕包url[ 0 ]= http://i0.hdslb.com/bfs/dm/b0d5f08c12be59292aa0d4e09b6dd8e54c2ba886.bin +``` + +使用[普通分段包弹幕](danmaku_proto.md#获取实时弹幕)的proto结构体反序列化此bin数据 \ No newline at end of file diff --git a/danmaku/danmaku.md b/danmaku/danmaku_xml.md similarity index 74% rename from danmaku/danmaku.md rename to danmaku/danmaku_xml.md index a1faeec..0cd685b 100644 --- a/danmaku/danmaku.md +++ b/danmaku/danmaku_xml.md @@ -1,46 +1,56 @@ -# 弹幕 +# xml弹幕 -获取的均为xml格式标准弹幕文件,下载至本地后加载 - -实时弹幕池容量有限(根据视频类型500-3000条不等),占满后再发送会使实时弹幕池底部的弹幕压入历史弹幕池(类似于堆栈) +实时弹幕池容量有限(根据视频类型500-8000条不等),占满后再发送会使实时弹幕池底部的弹幕压入历史弹幕池(类似于堆栈) ## 获取实时弹幕1 > http://api.bilibili.com/x/v1/dm/list.so -*方式:GET* +*请求方式:GET* **使用deflate压缩,注意解码** -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------- | ------ | ---- | -| oid | url | 视频CID | 必要 | | +| oid | num | 视频CID | 必要 | | **示例:** -http://api.bilibili.com/x/v1/dm/list.so?oid=144541892 +```shell +curl -G 'http://api.bilibili.com/x/v1/dm/list.so' \ +--data-urlencode 'oid=144541892' \ +--compressed -o 'danmaku.xml' +``` ## 获取实时弹幕2 > http://comment.bilibili.com/{cid}.xml -*方式:GET* +*请求方式:GET* 效果与前者相同 **使用deflate压缩,注意解码** -**参数:** +**url路径:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ------- | ------ | ---- | -| cid | url | 视频CID | 必要 | | +| cid | num | 视频CID | 必要 | | **示例:** -http://comment.bilibili.com/144541892.xml +```shell +curl 'http://comment.bilibili.com/144541892.xml' +--compressed -o 'danmaku.xml' +``` + +**xml回复:** + +
+查看响应示例: ```xml @@ -71,7 +81,7 @@ http://comment.bilibili.com/144541892.xml ``` - +
## 弹幕格式 @@ -83,7 +93,7 @@ http://comment.bilibili.com/144541892.xml - 标签 chatid:视频CID - 标签 mission:0 - 标签 maxlimit:实时弹幕池最大容量 - - 标签 state:0 + - 标签 state:弹幕状态(0:正常 1:弹幕已关闭) - 标签 real_name:0 - 标签 source:e-r @@ -91,18 +101,18 @@ http://comment.bilibili.com/144541892.xml ### 属性 p -字符串内每项用","分隔 +字符串内每项用逗号`,`分隔 -| 项 | 含义 | 类型 | 备注 | -| ---- | ------------------ | ----- | ------------------------------------------------------------ | -| 0 | 视频内弹幕出现时间 | float | 秒 | -| 1 | 弹幕类型 | int | 1 2 3普通弹幕
4底部
5顶部
6逆向
7精准定位
8代码弹幕
9BAS弹幕 | -| 2 | 弹幕字号 | int | 18 小
25 标准
36 大 | -| 3 | 弹幕颜色 | int | 十进制RGB888值 | -| 4 | 弹幕发送时间 | int | 时间戳 | -| 5 | 弹幕池类型 | int | 0普通池
1字幕池
2特殊池(高级弹幕) | -| 6 | 编码后的用户ID | HEX | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户ID | -| 7 | 弹幕ID | int | 唯一 可用于操作参数 | +| 项 | 含义 | 类型 | 备注 | +| ---- | ------------------ | ------ | ------------------------------------------------------------ | +| 0 | 视频内弹幕出现时间 | float | 秒 | +| 1 | 弹幕类型 | int32 | 1 2 3:普通弹幕
4:底部弹幕
5:顶部弹幕
6:逆向弹幕
7:高级弹幕
8:代码弹幕
9:BAS弹幕(`pool`必须为2) | +| 2 | 弹幕字号 | int32 | 18:小
25:标准
36:大 | +| 3 | 弹幕颜色 | int32 | 十进制RGB888值 | +| 4 | 弹幕发送时间 | int32 | 时间戳 | +| 5 | 弹幕池类型 | int32 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕) | +| 6 | 发送者UID的HASH | string | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户ID | +| 7 | 弹幕dmID | int64 | 唯一 可用于操作参数 | ```xml 从结尾回来看这里,更感动了! @@ -132,4 +142,3 @@ http://comment.bilibili.com/144541892.xml | 黑色 | 222222 | 2236962 | | 灰色 | 9B9B9B | 10197915 | | 白色 | FFFFFF | 16777215 | - diff --git a/danmaku/history.md b/danmaku/history.md index 5618d80..9293c08 100644 --- a/danmaku/history.md +++ b/danmaku/history.md @@ -1,20 +1,22 @@ # 历史弹幕 -本页所有操作均需登录(SESSDATA) +**本页所有操作均需登录(SESSDATA)** ## 查询历史弹幕日期 > http://api.bilibili.com/x/v2/dm/history/index -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA) + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------- | ------ | ------------ | -| type | url | 1 | 必要 | 作用尚不明确 | -| oid | url | 视频CID | 必要 | | -| month | url | 查询月份 | 必要 | mm-dd | +| type | num | 1 | 必要 | 作用尚不明确 | +| oid | num | 视频CID | 必要 | | +| month | str | 查询月份 | 必要 | mm-dd | **json回复:** @@ -24,7 +26,7 @@ | ------- | ------------------------------- | -------- | ------------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | 有弹幕:array
无弹幕:null | 日期列表 | | `data`数组: @@ -39,7 +41,15 @@ 查询了cid为144541892的视频位于2020年1月中有历史弹幕记录的日期 -http://api.bilibili.com/x/v2/dm/history/index?type=1&oid=144541892&month=2020-01 +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/history/index' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=144541892' \ +--data-urlencode 'month=2020-01' +``` + +
+查看响应示例: ```json { @@ -62,9 +72,19 @@ http://api.bilibili.com/x/v2/dm/history/index?type=1&oid=144541892&month=2020-01 } ``` +
+ 返回结果的 `data` 项说明这些日期有弹幕发送。若查询的月份中视频无弹幕,则 `data` 项为 `null` -http://api.bilibili.com/x/v2/dm/history/index?type=1&oid=144541892&month=2019-12 +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/history/index' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=144541892' \ +--data-urlencode 'month=2019-12' +``` + +
+查看响应示例: ```json { @@ -75,27 +95,40 @@ http://api.bilibili.com/x/v2/dm/history/index?type=1&oid=144541892&month=2019-12 } ``` +
+ ## 获取历史弹幕 > http://api.bilibili.com/x/v2/dm/history -*方式:GET* +*请求方式:GET* -结果为标准xml格式弹幕 +认证方式:Cookie(SESSDATA) + +结果为[标准xml格式弹幕](danmaku_xml.md#弹幕格式) **使用deflate压缩,注意解码** -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------- | ------ | ------------ | -| type | url | 1 | 必要 | 作用尚不明确 | -| oid | url | 视频CID | 必要 | | -| date | url | 弹幕日期 | 必要 | yyyy-mm-dd | +| type | num | 1 | 必要 | 作用尚不明确 | +| oid | num | 视频CID | 必要 | | +| date | str | 弹幕日期 | 必要 | yyyy-mm-dd | **示例:** -https://api.bilibili.com/x/v2/dm/history?type=1&oid=144541892&date=2020-01-21 +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/history' \ +--data-urlencode 'type=1' \ +--data-urlencode 'oid=144541892' \ +--data-urlencode 'date=2020-01-21' \ +--compressed -o 'danmaku.xml' +``` + +
+查看响应示例: ```xml @@ -126,3 +159,5 @@ https://api.bilibili.com/x/v2/dm/history?type=1&oid=144541892&date=2020-01-21 ………… ``` + +
\ No newline at end of file diff --git a/danmaku/snapshot.md b/danmaku/snapshot.md index 22014f6..eaa6f2f 100644 --- a/danmaku/snapshot.md +++ b/danmaku/snapshot.md @@ -1,18 +1,18 @@ -# 弹幕快照 +# 弹幕快照 -## 获取弹幕快照 +# 获取弹幕快照 > http://api.bilibili.com/x/v2/dm/ajax -*方式:GET* +*请求方式:GET* 最近产生的几条弹幕内容,**最多20条** -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------ | ------ | ---- | -| aid | url | 视频avID或视频bvID | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | -------- | ------------------ | ------ | ---- | +| aid | num或str | 稿件avID或稿件bvID | 必要 | | **json回复:** @@ -22,7 +22,7 @@ | ------- | ----- | -------- | --------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | array | 预览列表 | | `data`数组: @@ -38,9 +38,22 @@ 获取视频`av43337021`/`BV1rb411m7gE`的弹幕快照,总计20条 -http://api.bilibili.com/x/v2/dm/ajax?aid=43337021 +avID方式: -同http://api.bilibili.com/x/v2/dm/ajax?aid=BV1rb411m7gE +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/ajax' \ +--data-urlencode 'aid=43337021' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/v2/dm/ajax' \ +--data-urlencode 'aid=BV1rb411m7gE' +``` + +
+查看响应示例: ```json { @@ -72,3 +85,4 @@ http://api.bilibili.com/x/v2/dm/ajax?aid=43337021 } ``` +
diff --git a/dynamic/content.md b/dynamic/content.md new file mode 100644 index 0000000..955629d --- /dev/null +++ b/dynamic/content.md @@ -0,0 +1,1034 @@ +# 动态信息 + +## 获取正在直播的已关注者 + +> http://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users + +*请求方式:GET* + +认证方式:Cookie(SESSDSTA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ---------- | ------ | -------- | +| size | num | 每页显示数 | 非必要 | 默认为10 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------- | +| code | num | 返回值 | 0:成功 | +| data | obj | 信息本体 | | +| message | str | 错误信息 | 默认为0 | +| msg | num | 空 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | ---------- | ------------ | +| count | num | 直播者数量 | | +| group | str | "default" | 作用尚不明确 | +| items | array | 直播者列表 | | +| _gt_ | num | 0 | 作用尚不明确 | + +`data`中的`items`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 第一位直播者 | | +| n | obj | 第(n+1)位直播者 | | +| …… | obj | …… | …… | + +`data`中的`items`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---------- | ---- | +| face | str | 直播者头像 | | +| link | str | 直播链接 | | +| title | str | 直播标题 | | +| uid | num | 直播者ID | | +| uname | str | 直播者昵称 | | + +**示例:** + +```shell +curl -G 'http://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users' \ +--data-urlencode 'size=10' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "", + "message": "", + "data": { + "count": 4, + "group": "default", + "items": [ + { + "uid": 430774867, + "uname": "AIofficial", + "face": "https://i0.hdslb.com/bfs/face/f9a65c15bd1e9871419e6566aeee891eef420c5b.jpg", + "link": "https://live.bilibili.com/21412734", + "title": "【罚站AI】换装24小时AI直播间唱聊~" + }, + { + "uid": 456664753, + "uname": "央视新闻", + "face": "https://i1.hdslb.com/bfs/face/5a6808606bf1f7a2390b77e14df8d0d1d04680d9.jpg", + "link": "https://live.bilibili.com/21686237", + "title": "8.19中国医师节 一起“医”路同行" + }, + { + "uid": 5755666, + "uname": "可爱的大枣子", + "face": "https://i1.hdslb.com/bfs/face/248428206eca5b9ca34514dc2df54d456fbecb9e.jpg", + "link": "https://live.bilibili.com/2116488", + "title": "早上好" + }, + { + "uid": 290515513, + "uname": "地球频道", + "face": "https://i1.hdslb.com/bfs/face/33b60973ae3608beb27189947b02ccc2164a96d5.jpg", + "link": "https://live.bilibili.com/9196015", + "title": "【直播】从太空看地球" + } + ], + "_gt_": 0 + } +} +``` + +
+ +## 获取发布新动态的已关注者 + +> http://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_uplist + +*请求方式:GET* + +认证方式:Cookie(SESSDSTA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------------- | ---- | ------------------ | ------ | ---------------- | +| teenagers_mode | num | 是否开启青少年模式 | 非必要 | 否:0
是:1 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------- | +| code | num | 返回值 | 0:成功
-6:未登录 | +| data | obj | 信息本体 | | +| message | str | 错误信息 | 默认为0 | +| msg | num | 空 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------------- | ----- | ---------- | ------------ | +| button_statement | str | 空 | 作用尚不明确 | +| items | array | 更新者列表 | | +| _gt_ | num | 0 | 作用尚不明确 | + +`data`中的`items`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 第一位更新者 | | +| n | obj | 第(n+1)位更新者 | | +| …… | obj | …… | …… | + +**示例:** + +```shell +curl -G 'http://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_uplist' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "", + "message": "", + "data": { + "button_statement": "", + "items": [{ + "user_profile": { + "info": { + "uid": 332704117, + "uname": "白上吹雪Official", + "face": "https://i1.hdslb.com/bfs/face/26298b21c4a059d95ee9d009bbdf1dca94da951f.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名UP主、直播签约主播" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1634832000000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "hololive一期生,虚拟白发狐狸白上吹雪是也(^・ω・^§)ノ 画师:凪白みと 协力:白上吹雪字幕组 商务合作请私信", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 282994, + "uname": "泠鸢yousa", + "face": "https://i2.hdslb.com/bfs/face/28f95c383f2805dbed32e93007c91ccfda28775f.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 2019百大UP主、直播签约主播" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1649001600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 301, + "name": "实验品家庭", + "image": "https://i1.hdslb.com/bfs/face/6fbee28f782926612eb1ad71d6c8aa7264206fe9.png", + "expire": 0, + "image_enhance": "https://i1.hdslb.com/bfs/face/6fbee28f782926612eb1ad71d6c8aa7264206fe9.png" + }, + "rank": "10000", + "sign": "虚拟艺人团体VirtuaReal Star成员,微博&网易云等搜:泠鸢yousa ", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 13765857, + "uname": "LShang001", + "face": "https://i2.hdslb.com/bfs/face/4bc59f57e6d31fcf868d7e935f643a043dd6b99f.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1599926400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "Excelsior", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 410527811, + "uname": "WhatOnEarth一探究竟", + "face": "https://i0.hdslb.com/bfs/face/0ef3c74f61c4f5f0ef70ddbf3f1f0ebfed18a1b8.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名科普UP主" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1599494400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "硬核人文科普,精彩社会案例,尽在WOE。", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 519253600, + "uname": "火柴人AlanBecker", + "face": "https://i1.hdslb.com/bfs/face/75e1219501e9ca3e82cad2c4a466fb4b5c7d0557.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "Alan Becker官方帐号,动画UP主" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1594137600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "Alan Becker官方频道", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 293793435, + "uname": "社会易姐QwQ", + "face": "https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1612454400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265", + "level_info": { + "current_level": 5, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 5755666, + "uname": "可爱的大枣子", + "face": "https://i1.hdslb.com/bfs/face/248428206eca5b9ca34514dc2df54d456fbecb9e.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1645286400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "檐外清风惊落一池桃花染", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 51270387, + "uname": "挽竹Killer", + "face": "https://i2.hdslb.com/bfs/face/3a9f7b01c8b7d235fa2fa8d761b94520fb82bd20.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1613404800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "(15w粉女装直播嗷)粉丝群:872444546", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 4409391, + "uname": "估读", + "face": "https://i0.hdslb.com/bfs/face/f0d6b44b38eff3ce023b354f692cdb5ae0013772.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1578412800000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "关注一下这只硬核up吧~ 脑洞能开,双手能做,立志把硬核内容做得易于食用ヾ(✿゚▽゚)ノ 粉丝群971392670。微博ID“估读酱”", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 70547713, + "uname": "Dr丶寻一", + "face": "https://i1.hdslb.com/bfs/face/fb2f66c64b1de4da329b8ccdbe4cc2db19bab488.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1598025600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 2360, + "name": "#EveOneCat", + "image": "https://i1.hdslb.com/bfs/garb/item/3a6053f073f979a776e02e088dd7dd7694c5b1f3.png", + "expire": 0, + "image_enhance": "https://i1.hdslb.com/bfs/garb/item/6c7f2ccb92627b11101dfbb616524845cac8f216.webp" + }, + "rank": "10000", + "sign": "准备开黑乐谱的坑,有时还会弄点其他的红石音乐。有什么好的黑乐谱可以私信我下载链接,只要是我电脑上的fl能够成功导入,看实际情况施工。", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 591856754, + "uname": "卢正义的雕刻时光", + "face": "https://i0.hdslb.com/bfs/face/5acc7be5c21c1dc7a4d0ebe8d741e60555971029.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名UP主" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1624377600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "我是卢正义,年方二十有七\n初来贵站,还望各位多多关照\n商务合作⭐ JOJOMONO\n木品咨询⭐ lym11336699\n", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 361818130, + "uname": "是田小浪呀", + "face": "https://i1.hdslb.com/bfs/face/917d7f539e24860a52ccca2e8dbf8d6d6ca0e66b.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "", + "level_info": { + "current_level": 3, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 108572682, + "uname": "月下玄月", + "face": "https://i1.hdslb.com/bfs/face/9cb69b21cd23fce7545c441415db17f2d57af159.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名UP主" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1619712000000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "QQ1群:701762419;QQ2群:1062508843", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 7450650, + "uname": "超果果mc", + "face": "https://i2.hdslb.com/bfs/face/0202ae8b377d750fe3fbeff4f9b8219b48071ee5.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名游戏UP主、直播签约主播" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1645113600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "希望做出大家看了都会开心的视频 微博@超果果mc 商业合作加qq:169113409", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 4958429, + "uname": "Mukyo木西", + "face": "https://i0.hdslb.com/bfs/face/15c9b8360e524332a61b998360dd4958e0d1fd31.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 1, + "vipDueDate": 1582992000000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "各个音乐平台搜 Mukyo木西。微博@Mukyo木西就是狗狗。", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 26321770, + "uname": "和猫住の", + "face": "https://i2.hdslb.com/bfs/face/a0f1e2e8fa05317c12064b7026a20900bdb25b5a.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名UP主" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1627488000000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 303, + "name": "喂,看见耳朵啦", + "image": "https://i1.hdslb.com/bfs/face/09f3180cb0a4a0a479045fe4fad705f9b92a82d2.png", + "expire": 0, + "image_enhance": "https://i1.hdslb.com/bfs/face/09f3180cb0a4a0a479045fe4fad705f9b92a82d2.png" + }, + "rank": "10000", + "sign": "年轻人的猫咪救援领养平台,微博/公众号:和猫住 客服v:公众号和猫住菜单“联系我”", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 37556366, + "uname": "NickZhuOfficial", + "face": "https://i0.hdslb.com/bfs/face/e3a45f58368a70c5277af394bb40e32156ca2a23.jpg" + }, + "card": { + "official_verify": { + "type": -1, + "desc": "" + } + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 2248, + "name": "搞笑专属头像挂件", + "image": "https://i2.hdslb.com/bfs/garb/item/bab219d170a1662c26beede8944c6afbc6bc2bb4.png", + "expire": 0, + "image_enhance": "https://i2.hdslb.com/bfs/garb/item/bab219d170a1662c26beede8944c6afbc6bc2bb4.png" + }, + "rank": "10000", + "sign": "鬼畜人", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 438345816, + "uname": "盲人母亲曹世美", + "face": "https://i2.hdslb.com/bfs/face/61111e0fa1ce0e8224b7aa48cc8b4dddc2ec6046.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名UP主" + } + }, + "vip": { + "vipType": 0, + "vipDueDate": 0, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "来自贵州纳雍大山深处的一家三口,父亲腿脚残疾,母亲看不见,还有一个脑瘫儿子,盲人母亲就这样用她一双手撑起了一个家想了解v:llj104890", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 486633990, + "uname": "我是江无情", + "face": "https://i1.hdslb.com/bfs/face/bf667a09070a9345c881ec8e3e6844d8ecb043ca.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名科普UP主" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1617379200000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "一个做视频的,商务请私信微博:我是江无情", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 1 + }, + { + "user_profile": { + "info": { + "uid": 13337125, + "uname": "GoldenEggs", + "face": "https://i0.hdslb.com/bfs/face/11a78303bf3c69a1bf34cab25bb219eeee47961e.jpg" + }, + "card": { + "official_verify": { + "type": 0, + "desc": "bilibili 知名游戏UP主" + } + }, + "vip": { + "vipType": 2, + "vipDueDate": 1649865600000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + }, + "pendant": { + "pid": 0, + "name": "", + "image": "", + "expire": 0, + "image_enhance": "" + }, + "rank": "10000", + "sign": "脑洞区up主,常借助Minecraft平台实现一些好玩的想法 // 创意交流群:871449268/合作QQ:1558854197", + "level_info": { + "current_level": 6, + "current_min": 0, + "current_exp": 0, + "next_exp": "0" + } + }, + "has_update": 0 + }], + "_gt_": 0 + } +} +``` + +
\ No newline at end of file diff --git a/dynamic/publish.md b/dynamic/publish.md index 769e5c3..f3e6787 100644 --- a/dynamic/publish.md +++ b/dynamic/publish.md @@ -1,23 +1,23 @@ # 发布动态 -## 为动态(画友)上传图片 +## 为图片动态(相簿)上传图片 > http://api.vc.bilibili.com/api/v1/drawImage/upload -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) ~~这是图床?(滑稽保命)~~ 注意:非日常类型像素宽高必须大于420 -**参数(multipart/form-data):** +**正文参数(multipart/form-data):** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | -------- | ---- | ------------------ | ------ | ------------------------------------------------------------ | -| file_up | data | 需要上传的图片文件 | 必要 | 格式仅支持jpg png gif | -| category | data | 图片类型 | 必要 | daily:日常(动态)
draw:绘画(画友)
cos:摄影(COS PLAY) | +| file_up | file | 需要上传的图片文件 | 必要 | 格式仅支持jpg png gif | +| category | str | 图片类型 | 必要 | daily:日常(动态)
draw:绘画(画友)
cos:摄影(COSPLAY) | **json回复:** @@ -41,17 +41,26 @@ 上传了一张图片`test.png`类型为`日常` -curl -b "SESSDATA=xxx" -F "file_up=@test.png" -F "category=daily" "http://api.vc.bilibili.com/api/v1/drawImage/upload" +```shell +curl 'http://api.vc.bilibili.com/api/v1/drawImage/upload' \ +-F 'file_up=@test.png' \ +-F 'category=daily' +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { "code":0, "message":"success", "data":{ - "image_url":"http:\/\/i0.hdslb.com\/bfs\/album\/13f9523efe186a8066b2d72e80283cea2437eb62.png", + "image_url":"http:\/\/i0.hdslb.com\/bfs\/album\/13f9523efe186a8066b2d72e80283cea2437eb62.png", "image_width":1225, "image_height":850 } } ``` +
diff --git a/electric/Bcoin.md b/electric/Bcoin.md index 7b8371e..b2cbd51 100644 --- a/electric/Bcoin.md +++ b/electric/Bcoin.md @@ -6,19 +6,19 @@ > http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------- | ------ | ------------------------------------------------- | -| elec_num | data | 充电电池数量 | 必要 | 必须在20-99990之间 | -| up_mid | data | 充电对象用户UID | 必要 | | -| otype | data | 充电来源 | 必要 | up:空间充电
archive:视频充电 | -| oid | data | 充电来源代码 | 必要 | 空间充电:充电对象用户UID
视频充电:视频avID | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | +| elec_num | num | 充电电池数量 | 必要 | 必须在20-99990之间 | +| up_mid | num | 充电对象用户UID | 必要 | | +| otype | str | 充电来源 | 必要 | up:空间充电
archive:视频充电 | +| oid | num | 充电来源代码 | 必要 | 空间充电:充电对象用户UID
视频充电:稿件avID | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -26,9 +26,9 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功(并不代表充电成功)
-400:请求错误
-111:csrf校验失败
-101:账号未登录 | +| code | num | 返回值 | 0:成功(并不代表充电成功)
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -37,7 +37,7 @@ | -------- | ---- | ----------- | ------------------------------------------------ | | mid | num | 本用户UID | | | up_mid | num | 目标用户UID | | -| order_no | str | 交易编号 | 用于添加充电备注 | +| order_no | str | 留言token | 用于添加充电留言 | | elec_num | num | 充电电池数 | | | exp | num | 获得经验数 | | | status | num | 返回结果 | 4:成功
-2:低于20电池下限
-4:B币不足 | @@ -45,14 +45,24 @@ **示例:** -以空间的方式向用户`UID=293793435`充了20电池,得到2经验,交易编号为`BPRG5CEC3VUPOOANA540` +以空间的方式向用户`UID=293793435`充了20电池,得到2经验,留言token为`BPRG5CEC3VUPOOANA540` 此时`data`.`status`=`4` -~~(自己冲自己QAQ)~~ +~~自己冲自己QAQ~~ -curl -b "SESSDATA=xxx" -d "elec_num=20&u -p_mid=293793435&otype=up&oid=293793435&csrf=xxx" "http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick" +```shell +curl 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick' \ +--data-urlencode 'elec_num=20' \ +--data-urlencode 'up_mid=293793435' \ +--data-urlencode 'otype=up' \ +--data-urlencode 'oid=293793435' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -71,12 +81,24 @@ p_mid=293793435&otype=up&oid=293793435&csrf=xxx" "http://api.bilibili.com/x/ugcp } ``` +
+ 当所充电池数小于20时,充电不会成功 此时`data`.`status`=`-2` -curl -b SESSDATA=xxx -d "elec_num=1&u -p_mid=293793435&otype=up&oid=293793435&csrf=xxx" "http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick" +```shell +curl 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick' \ +--data-urlencode 'elec_num=1' \ +--data-urlencode 'up_mid=293793435' \ +--data-urlencode 'otype=up' \ +--data-urlencode 'oid=293793435' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -95,12 +117,24 @@ p_mid=293793435&otype=up&oid=293793435&csrf=xxx" "http://api.bilibili.com/x/ugcp } ``` +
+ 当所充电池数折合的B币数不足时,充电也不会成功 此时`data`.`status`=`-4` -curl -b SESSDATA=xxx -d "elec_num=999&u -p_mid=293793435&otype=up&oid=293793435&csrf=xxx" "http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick" +```shell +curl 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/quick' \ +--data-urlencode 'elec_num=999' \ +--data-urlencode 'up_mid=293793435' \ +--data-urlencode 'otype=up' \ +--data-urlencode 'oid=293793435' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -119,3 +153,4 @@ p_mid=293793435&otype=up&oid=293793435&csrf=xxx" "http://api.bilibili.com/x/ugcp } ``` +
diff --git a/electric/WeChat&Alipay.md b/electric/WeChat&Alipay.md index 0c244cc..7fd4358 100644 --- a/electric/WeChat&Alipay.md +++ b/electric/WeChat&Alipay.md @@ -1,6 +1,6 @@ # 微信&支付宝方式充电 -本页所有操作均需登录(SESSDATA) +**本页所有操作均需登录(Cookie)** @@ -18,20 +18,22 @@ > http://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/create -*方式:POST* +*请求方式:POST* + +认证方式:Cookie(SESSDATA) 秘钥有效时间为10分钟 -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------------- | ---- | ------------------- | ------ | ------------------------------------------------------------ | -| up_mid | data | 充电对象用户UID | 必要 | | -| elec_num | data | 充电电池数量 | 必要 | 必须在20-99990之间
1-19区间视为充值B币 | -| is_bp_remains_prior | data | 是否优先扣除B币 | 必要 | true:是
false:否
在B币不足时剩余的部分利用支付平台支付 | -| otype | data | 充电来源 | 必要 | up:空间充电
archive:视频充电 | -| oid | data | 充电来源代码 | 必要 | 空间充电:充电对象用户UID
视频充电:视频avID | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| elec_num | num | 充电电池数量 | 必要 | 必须在20-99990之间
1-19区间视为充值B币 | +| up_mid | num | 充电对象用户UID | 必要 | | +| is_bp_remains_prior | bool | 是否优先扣除B币 | 必要 | true:是
false:否
在B币不足时剩余的部分利用支付平台支付 | +| otype | str | 充电来源 | 必要 | up:空间充电
archive:视频充电 | +| oid | num | 充电来源代码 | 必要 | 空间充电:充电对象用户UID
视频充电:稿件avID | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -39,9 +41,9 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-500:服务器错误
-111:csrf校验失败
-101:账号未登录 | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-500:服务器错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -56,7 +58,19 @@ 申请空间的方式向用户23215368充电10电池且不使用B币的支付二维码 -curl -b "SESSDATA=xxx" -d "up_mid=23215368&elec_num=10&is_bp_remains_prior=false&otype=up&oid=23215368&csrf=xxx" "http://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/create" +```shell +curl 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/create' \ +--data-urlencode 'elec_num=10' \ +--data-urlencode 'up_mid=23215368' \ +--data-urlencode 'is_bp_remains_prior=false' \ +--data-urlencode 'otype=up' \ +--data-urlencode 'oid=23215368' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -64,26 +78,28 @@ curl -b "SESSDATA=xxx" -d "up_mid=23215368&elec_num=10&is_bp_remains_prior=false "message": "0", "ttl": 1, "data": { - "qr_code_url": "http://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/gateway?mid=293793435\u0026token=c1cb1d95d2194ba58df6bb0f24ae1aaa", + "qr_code_url": "http://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/gateway?mid=293793435&token=c1cb1d95d2194ba58df6bb0f24ae1aaa", "qr_token": "c1cb1d95d2194ba58df6bb0f24ae1aaa", "exp": 1 } } ``` - +
## 检查扫码支付结果 > http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA) + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | -------- | ---- | -------- | ------ | ---- | -| qr_token | url | 扫码秘钥 | 必要 | | +| qr_token | str | 扫码秘钥 | 必要 | | **json回复:** @@ -93,7 +109,7 @@ curl -b "SESSDATA=xxx" -d "up_mid=23215368&elec_num=10&is_bp_remains_prior=false | ------- | ---- | -------- | ----------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -101,7 +117,7 @@ curl -b "SESSDATA=xxx" -d "up_mid=23215368&elec_num=10&is_bp_remains_prior=false | 字段 | 类型 | 内容 | 备注 | | -------- | ---- | ----------- | ------------------------------------------------------------ | | qr_token | str | 扫码秘钥 | | -| order_no | str | 交易编号 | 未成功则无此项
用于添加充电备注 | +| order_no | str | 留言token | 未成功则无此项
用于添加充电留言 | | mid | num | 当前用户UID | | | status | num | 状态值 | 若秘钥错误则无此项
1:已支付
2:未扫描
3:未确认 | @@ -109,7 +125,14 @@ curl -b "SESSDATA=xxx" -d "up_mid=23215368&elec_num=10&is_bp_remains_prior=false 当申请到的支付二维码未被扫描时,`data`.`ststus`的值为`2` -http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status?qr_token=c7cbdc47fc424cd18f2146db653597b8 +```shell +curl -G 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \ +--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -124,9 +147,18 @@ http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status?qr_token=c7cbdc47fc } ``` +
+ 当申请到的支付二维码已扫描但未确认时,`data`.`ststus`的值为`3` -http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status?qr_token=c7cbdc47fc424cd18f2146db653597b8 +```shell +curl -G 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \ +--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -141,9 +173,18 @@ http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status?qr_token=c7cbdc47fc } ``` -成功支付后,`data`.`ststus`的值为`1`,且`data`.`order_no`存在交易编号 +
-http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status?qr_token=bd649c836c524550bfe22a369334fc05 +成功支付后,`data`.`ststus`的值为`1`,且`data`.`order_no`存在留言token + +```shell +curl -G 'http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \ +--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -159,3 +200,4 @@ http://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status?qr_token=bd649c836c } ``` +
diff --git a/electric/charge_list.md b/electric/charge_list.md new file mode 100644 index 0000000..9bf1e69 --- /dev/null +++ b/electric/charge_list.md @@ -0,0 +1,368 @@ +# 充电列表 + +## 获取空间充电公示列表 + +> http://elec.bilibili.com/api/query.rank.do + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
500011:UID错误 | +| msg | str | 错误信息 | 正确时无此项 | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ------ | ---------------- | ------------ | +| display_num | num | 0 | 作用尚不明确 | +| count | num | 本月充电人数 | | +| total_count | num | 总计充电人数 | | +| list | array | 本月充电用户列表 | | +| user | null | | 作用尚不明确 | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---------------- | +| 0 | obj | 充电用户1 | | +| n | obj | 充电用户(n+1) | 按照充电排名排列 | +| …… | obj | …… | …… | +| 29 | obj | 充电用户30 | 最后一项 | + +`data`中的`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | ---------------- | +| mid | num | 充电对象UID | | +| pay_mid | num | 充电用户UID | | +| rank | num | 充电用户排名 | 取决于充电的多少 | +| uname | str | 充电用户昵称 | | +| avatar | str | 充电用户头像url | | +| message | str | 充电留言 | 无为空 | +| msg_deleted | num | 0 | 作用尚不明确 | +| vip_info | obj | 充电用户会员信息 | | +| trend_type | num | 0 | 作用尚不明确 | + +`data`中的`list`数组中的对象中的`vip_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ---------- | ----------------------------------- | +| vipType | num | 大会员类型 | 0:无
1:月会员
2:年会员 | +| vipDueMsec | num | 0 | 作用尚不明确 | +| vipStatus | num | 大会员状态 | 0:无
1:有 | + +**示例:** + +查询用户`UID=53456`的充电公示列表 + +```shell +curl -G 'http://elec.bilibili.com/api/query.rank.do' \ +--data-urlencode 'mid=53456' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "display_num": 0, + "count": 226, + "total_count": 11528, + "list": [ + { + "mid": 53456, + "pay_mid": 346545025, + "rank": 1, + "uname": "还有什么名字没人用", + "avatar": "http://i1.hdslb.com/bfs/face/76d4b1ecd13e992a6c7303d77bf716dd922ab234.jpg", + "message": "早日康复,五月快乐", + "msg_deleted": 0, + "vip_info": { + "vipType": 2, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 8826056, + "rank": 2, + "uname": "煋痕", + "avatar": "http://i2.hdslb.com/bfs/face/35b7c752d0eb1bb7a924804f240b9bfd9199625f.jpg", + "message": "", + "msg_deleted": 0, + "vip_info": { + "vipType": 2, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 356668487, + "rank": 3, + "uname": "舞象祥", + "avatar": "http://i1.hdslb.com/bfs/face/574f6203ef5bd0d56b95ded6a2736676d9cc5307.jpg", + "message": "warma hayo", + "msg_deleted": 0, + "vip_info": { + "vipType": 1, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + ………… + ], + "user": null + } +} +``` + +
+ +## 获取视频充电鸣谢名单 + +> http://api.bilibili.com/x/web-interface/elec/show + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------ | ------------ | ------------------ | +| mid | num | 目标用户UID | 必要 | | +| aid | num | 目标稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 目标稿件bvID | 必要(可选) | avID与bvID任选一个 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频
62001:不需要展示充电信息 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ------ | ---------------- | ------------ | +| show_info | obj | 展示选项 | | +| av_count | num | 目标视频充电人数 | | +| count | num | 本月充电人数 | | +| total_count | num | 总计充电人数 | | +| special_day | num | 0 | 作用尚不明确 | +| display_num | num | 0 | 作用尚不明确 | +| av_list | array | 目标视频充电列表 | | +| list | array | 本月充电用户列表 | | + +`data`中的`show_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------------------ | ----------------------------- | +| show | bool | 是否展示视频充电鸣谢名单 | false:不展示
true:展示 | +| state | num | 0 | | + +`data`中的`list`数组(`av_list`数组): + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---------------- | +| 0 | obj | 充电用户1 | | +| n | obj | 充电用户(n+1) | 按照充电排名排列 | +| …… | obj | …… | …… | +| 29 | obj | 充电用户30 | 最后一项 | + +`data`中的`list`数组(`av_list`数组)中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | ---------------- | +| mid | num | 充电对象UID | | +| pay_mid | num | 充电用户UID | | +| rank | num | 充电用户排名 | 取决于充电的多少 | +| uname | str | 充电用户昵称 | | +| avatar | str | 充电用户头像url | | +| message | str | 充电留言 | 无为空 | +| msg_deleted | num | 0 | 作用尚不明确 | +| vip_info | obj | 充电用户会员信息 | | +| trend_type | num | 0 | 作用尚不明确 | + +`data`中的`list`数组(`av_list`数组)中的对象中的`vip_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ---------- | ----------------------------------- | +| vipType | num | 大会员类型 | 0:无
1:月会员
2:年会员 | +| vipDueMsec | num | 0 | 作用尚不明确 | +| vipStatus | num | 大会员状态 | 0:无
1:有 | + +**示例:** + +获取视频`av967773538`/` BV1up4y1y77i `,用户`UID=53456`的视频充电鸣谢名单 + +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/elec/show' \ +--data-urlencode 'mid=53456' \ +--data-urlencode 'aid=967773538' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/elec/show' \ +--data-urlencode 'mid=53456' \ +--data-urlencode 'bvid=BV1up4y1y77i ' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "show_info": { + "show": true, + "state": 0 + }, + "av_count": 4, + "count": 226, + "total_count": 11528, + "special_day": 0, + "display_num": 0, + "av_list": [ + { + "mid": 53456, + "pay_mid": 326994943, + "rank": 1, + "uname": "此人不在线hhh", + "avatar": "http://i0.hdslb.com/bfs/face/d2540c20f569554e62dd88cc78cbf2fe07268903.jpg", + "message": "", + "msg_deleted": 0, + "vip_info": { + "vipType": 1, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 328473637, + "rank": 2, + "uname": "SkJ_17", + "avatar": "http://i1.hdslb.com/bfs/face/42b50918e8b7288009e55332322f991dcbce960a.jpg", + "message": "", + "msg_deleted": 0, + "vip_info": { + "vipType": 2, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 31345826, + "rank": 3, + "uname": "Aries梦落", + "avatar": "http://i2.hdslb.com/bfs/face/206a58430c3e11675cacf3b7d7b4a8d9e44de3b2.jpg", + "message": "", + "msg_deleted": 0, + "vip_info": { + "vipType": 2, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 349867059, + "rank": 4, + "uname": "铭月zsm", + "avatar": "http://i0.hdslb.com/bfs/face/b8cd7533376d80a1d8b36092f433c39ba1761cbc.jpg", + "message": "", + "msg_deleted": 0, + "vip_info": { + "vipType": 1, + "vipDueMsec": 0, + "vipStatus": 0 + }, + "trend_type": 0 + } + ], + "list": [ + { + "mid": 53456, + "pay_mid": 346545025, + "rank": 1, + "uname": "还有什么名字没人用", + "avatar": "http://i1.hdslb.com/bfs/face/76d4b1ecd13e992a6c7303d77bf716dd922ab234.jpg", + "message": "早日康复,五月快乐", + "msg_deleted": 0, + "vip_info": { + "vipType": 2, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 8826056, + "rank": 2, + "uname": "煋痕", + "avatar": "http://i2.hdslb.com/bfs/face/35b7c752d0eb1bb7a924804f240b9bfd9199625f.jpg", + "message": "", + "msg_deleted": 0, + "vip_info": { + "vipType": 2, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + { + "mid": 53456, + "pay_mid": 356668487, + "rank": 3, + "uname": "舞象祥", + "avatar": "http://i1.hdslb.com/bfs/face/574f6203ef5bd0d56b95ded6a2736676d9cc5307.jpg", + "message": "warma hayo", + "msg_deleted": 0, + "vip_info": { + "vipType": 1, + "vipDueMsec": 0, + "vipStatus": 1 + }, + "trend_type": 0 + }, + ………… + ] + } +} +``` + +
diff --git a/electric/charge_msg.md b/electric/charge_msg.md index f3e1ef6..e6d4804 100644 --- a/electric/charge_msg.md +++ b/electric/charge_msg.md @@ -2,17 +2,17 @@ > http://api.bilibili.com/x/ugcpay/trade/elec/message -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------- | ------ | ---- | -| order_id | data | 交易编号 | 必要 | | -| message | data | 留言内容 | 必要 | | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ------------------------ | ------ | ---- | +| order_id | str | 留言token | 必要 | | +| message | str | 留言内容 | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -20,16 +20,24 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-111:csrf校验失败
-101:账号未登录
88203:不能重复留言 | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
88203:不能重复留言 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** -成功为交易编号为`BPRG5CEC3VUPOOANA540`的充电操作,添加了内容为`支持一下大佬`的留言 +为留言token为`BPRG5CEC3VUPOOANA540`的充电操作,添加了内容为`支持一下大佬`的留言 -curl -b "SESSDATA=xxx" -d "csrf=xxx&order_id=BPRG -5CEC3VUPOOANA540&message=%e6%94%af%e6%8c%81%e4%b8%80%e4%b8%8b%e5%a4%a7%e4%bd%ac" "http://api.bilibili.com/x/ugcpay/trade/elec/message" +```shell +curl 'http://api.bilibili.com/x/ugcpay/trade/elec/message' \ +--data-urlencode 'order_id=BPRG5CEC3VUPOOANA540' \ +--data-urlencode 'message=支持一下大佬' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -39,3 +47,4 @@ curl -b "SESSDATA=xxx" -d "csrf=xxx&order_id=BPRG } ``` +
diff --git a/emote/action.md b/emote/action.md new file mode 100644 index 0000000..67a59d2 --- /dev/null +++ b/emote/action.md @@ -0,0 +1,107 @@ +# 表情操作 + +**本页所有操作均需登录(Cookie)** + +## 添加表情包 + +> http://api.bilibili.com/x/emote/package/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +只能添加有会员权限或已购买的表情包 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | ------ | -------------------------------- | +| package_id | num | 表情包ID | 必要 | | +| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +添加ID为`25`的表情包,使用场景为评论区 + +```shell +curl 'http://api.bilibili.com/x/emote/package/add' \ +--data-urlencode 'package_id=25' \ +--data-urlencode 'business=reply' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 移除表情包 + +> http://api.bilibili.com/x/emote/package/remove + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | ------ | -------------------------------- | +| package_id | num | 表情包ID | 必要 | | +| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +移除ID为`25`的表情包,使用场景为评论区 + +```shell +curl 'http://api.bilibili.com/x/emote/package/remove' \ +--data-urlencode 'package_id=25' \ +--data-urlencode 'business=reply' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
diff --git a/emote/emote_list.md b/emote/emote_list.md new file mode 100644 index 0000000..0ada33f --- /dev/null +++ b/emote/emote_list.md @@ -0,0 +1,639 @@ +# 表情列表 + +## 获取我的表情列表 + +> http://api.bilibili.com/x/emote/user/panel/web + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +使用登录(Cookie)进行会员专属及已购买表情包的分发,否则全为免费表情包 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | -------- | ------ | -------------------------------- | +| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | ------ | ---- | +| packages | array | 表情包 | | + +`data`中的`packages`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | -------------- | +| 0 | obj | 表情包1 | **详情见附表** | +| n | obj | 表情包(n+1) | **详情见附表** | +| …… | obj | …… | …… | + +**示例:** + +```shell +curl -G 'http://api.bilibili.com/x/emote/user/panel/web' \ +--data-urlencode 'business=reply' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "packages": [ + { + "id": 1, + "text": "小黄脸", + "url": "http://i0.hdslb.com/bfs/emote/81edf17314cea3b48674312b4364df44d5c01f17.png", + "mtime": 1591604235, + "type": 1, + "attr": 66, + "meta": { + "size": 1, + "item_id": 958 + }, + "emote": [ + { + "id": 2126, + "package_id": 1, + "text": "[视频卫星]", + "url": "http://i0.hdslb.com/bfs/emote/dce6fc7d6dfeafff01241924db60f8251cca5307.png", + "mtime": 1590986882, + "type": 1, + "attr": 0, + "meta": { + "size": 1 + }, + "flags": {} + }, + { + "id": 1901, + "package_id": 1, + "text": "[加油武汉]", + "url": "http://i0.hdslb.com/bfs/emote/eb966aaa5b690d3f9308a9f936f5b5a72a7f956b.png", + "mtime": 1580024058, + "type": 1, + "attr": 0, + "meta": { + "size": 1 + }, + "flags": {} + }, + { + "id": 1906, + "package_id": 1, + "text": "[口罩]", + "url": "http://i0.hdslb.com/bfs/emote/3ad2f66b151496d2a5fb0a8ea75f32265d778dd3.png", + "mtime": 1581309529, + "type": 1, + "attr": 0, + "meta": { + "size": 1 + }, + "flags": {} + }, + { + "id": 1, + "package_id": 1, + "text": "[微笑]", + "url": "http://i0.hdslb.com/bfs/emote/685612eadc33f6bc233776c6241813385844f182.png", + "mtime": 1582182040, + "type": 1, + "attr": 0, + "meta": { + "size": 1 + }, + "flags": {} + }, + { + "id": 1958, + "package_id": 1, + "text": "[笑]", + "url": "http://i0.hdslb.com/bfs/emote/81edf17314cea3b48674312b4364df44d5c01f17.png", + "mtime": 1582184940, + "type": 1, + "attr": 0, + "meta": { + "size": 1 + }, + "flags": {} + }, + ………… + }, + { + "id": 53, + "text": "热词系列一", + "url": "http://i0.hdslb.com/bfs/emote/bacd6e17997348873ef89e5f1bcbbda877a1606a.png", + "mtime": 1592205524, + "type": 1, + "attr": 2, + "meta": { + "size": 2, + "item_id": 1039 + }, + "emote": [ + { + "id": 1937, + "package_id": 53, + "text": "[热词系列_知识增加]", + "url": "http://i0.hdslb.com/bfs/emote/142409b595982b8210b2958f3d340f3b47942645.png", + "mtime": 1585202919, + "type": 1, + "attr": 2, + "meta": { + "size": 2, + "alias": "知识增加" + }, + "flags": {} + }, + { + "id": 2147, + "package_id": 53, + "text": "[热词系列_希望没事]", + "url": "http://i0.hdslb.com/bfs/emote/6c0d2e6c486d1ba5afd6204a96e102652464a01d.png", + "mtime": 1591689594, + "type": 1, + "attr": 2, + "meta": { + "size": 2, + "alias": "希望没事" + }, + "flags": {} + }, + { + "id": 2083, + "package_id": 53, + "text": "[热词系列_泪目]", + "url": "http://i0.hdslb.com/bfs/emote/bba3703ab90b7d16fe9dbcb85ed949db687f8331.png", + "mtime": 1588910215, + "type": 1, + "attr": 2, + "meta": { + "size": 2, + "alias": "泪目" + }, + "flags": {} + }, + { + "id": 2082, + "package_id": 53, + "text": "[热词系列_保护]", + "url": "http://i0.hdslb.com/bfs/emote/55f8f6445ca7c3170cdfc5b16036abf639ce9b57.png", + "mtime": 1588910215, + "type": 1, + "attr": 2, + "meta": { + "size": 2, + "alias": "保护" + }, + "flags": {} + }, + ………… + }, + ………… + ] + } +} +``` + +
+ +## 获取指定的表情包明细 + +> http://api.bilibili.com/x/emote/package + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | -------- | ------ | -------------------------------- | +| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | +| ids | nums | 表情包ID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 有效时:obj
无效时:null | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | ------ | ---- | +| packages | array | 表情包 | | + +`data`中的`packages`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | -------------- | +| 0 | obj | 表情包1 | **详情见附表** | +| n | obj | 表情包(n+1) | **详情见附表** | +| …… | obj | …… | …… | + +**示例:** + +获取表情包ID为`93`的表情包明细 + +```shell +curl -G 'http://api.bilibili.com/x/emote/package' \ +--data-urlencode 'ids=93' \ +--data-urlencode 'business=reply' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "packages": [ + { + "id": 93, + "text": "泠鸢yousa", + "url": "http://i0.hdslb.com/bfs/emote/5fa6082e098402d16d58c68e441ae76e40befd2c.png", + "mtime": 1592213522, + "type": 3, + "attr": 28, + "meta": { + "size": 2, + "item_id": 1907, + "item_url": "https://www.bilibili.com/h5/mall/suit/detail?navhide=1&stahide=0&id=1911" + }, + "emote": [ + { + "id": 2086, + "package_id": 93, + "text": "[泠鸢yousa_awsl]", + "url": "http://i0.hdslb.com/bfs/emote/7663b729161bd4556c2ec318c07791000743eb56.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "awsl" + }, + "flags": {} + }, + { + "id": 2087, + "package_id": 93, + "text": "[泠鸢yousa_打call]", + "url": "http://i0.hdslb.com/bfs/emote/718e9495846db4172eb87d2f7f02015a34d35ea2.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "打call" + }, + "flags": {} + }, + { + "id": 2088, + "package_id": 93, + "text": "[泠鸢yousa_沉默]", + "url": "http://i0.hdslb.com/bfs/emote/5e967cf1669743ed92e9a8ff3e5de6d90ca63d3d.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "沉默" + }, + "flags": {} + }, + { + "id": 2089, + "package_id": 93, + "text": "[泠鸢yousa_大哭]", + "url": "http://i0.hdslb.com/bfs/emote/3f757b147b9b1e201470eae7dac9cc0360172569.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "大哭" + }, + "flags": {} + }, + { + "id": 2090, + "package_id": 93, + "text": "[泠鸢yousa_干杯]", + "url": "http://i0.hdslb.com/bfs/emote/5cf5e14101be845233a222ab1bbdc21c63af04c3.png", + "mtime": 1590401422, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "干杯" + }, + "flags": {} + }, + { + "id": 2091, + "package_id": 93, + "text": "[泠鸢yousa_好人卡]", + "url": "http://i0.hdslb.com/bfs/emote/e3907b3bb20b18e7ecb11cd86829c9a4ce5b1b2f.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "好人卡" + }, + "flags": {} + }, + { + "id": 2092, + "package_id": 93, + "text": "[泠鸢yousa_加大力度]", + "url": "http://i0.hdslb.com/bfs/emote/a0393a2d4b522f07a319dfd2e91754a3cdff2c48.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "加大力度" + }, + "flags": {} + }, + { + "id": 2093, + "package_id": 93, + "text": "[泠鸢yousa_滑稽]", + "url": "http://i0.hdslb.com/bfs/emote/a8057c0e0579b93c16010a270e261fd0a64034af.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "滑稽" + }, + "flags": {} + }, + { + "id": 2094, + "package_id": 93, + "text": "[泠鸢yousa_请吃桃]", + "url": "http://i0.hdslb.com/bfs/emote/e92276d9d8c28f85f7dbcc0fbbb6ecb3345ce33e.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "请吃桃" + }, + "flags": {} + }, + { + "id": 2095, + "package_id": 93, + "text": "[泠鸢yousa_惊讶]", + "url": "http://i0.hdslb.com/bfs/emote/9fdc2c5b4b970aded56fe2f326bd4d00e849339d.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "惊讶" + }, + "flags": {} + }, + { + "id": 2096, + "package_id": 93, + "text": "[泠鸢yousa_生气]", + "url": "http://i0.hdslb.com/bfs/emote/9e6ba9ff34101e04d3e321cad486f845f892050e.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "生气" + }, + "flags": {} + }, + { + "id": 2097, + "package_id": 93, + "text": "[泠鸢yousa_贴贴]", + "url": "http://i0.hdslb.com/bfs/emote/dbc177d314231add509501ffc6bc7655fca2c10f.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "贴贴" + }, + "flags": {} + }, + { + "id": 2098, + "package_id": 93, + "text": "[泠鸢yousa_头晕]", + "url": "http://i0.hdslb.com/bfs/emote/49830c1c8a1652f7ee9cb854ac7dbf8e378cdcd6.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "头晕" + }, + "flags": {} + }, + { + "id": 2099, + "package_id": 93, + "text": "[泠鸢yousa_问号]", + "url": "http://i0.hdslb.com/bfs/emote/ab7a543233eff83138c3221c86a762ab36bab7bc.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "问号" + }, + "flags": {} + }, + { + "id": 2100, + "package_id": 93, + "text": "[泠鸢yousa_真棒]", + "url": "http://i0.hdslb.com/bfs/emote/02ea49543a3ac52feee185c156ab08fb2bfdd89e.png", + "mtime": 1589776042, + "type": 3, + "attr": 0, + "meta": { + "size": 2, + "alias": "真棒" + }, + "flags": {} + } + ], + "flags": { + "added": true + } + } + ] + } +} +``` + +
+ +## 获取所有表情包列表 + +> http://api.bilibili.com/x/emote/setting/panel + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | -------- | ------ | -------------------------------- | +| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ----- | ---------------- | ---- | +| user_panel_packages | array | 用户拥有的表情包 | | +| all_packages | array | 所有表情包 | | +| mall | obj | 商城页面 | | + +`data`对象中的`user_panel_packages`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------------- | -------------- | +| 0 | obj | 用户拥有的表情包1 | **详情见附表** | +| n | obj | 用户拥有的表情包(n+1) | **详情见附表** | +| …… | obj | …… | …… | + +`data`对象中的`all_packages`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | -------------- | +| 0 | obj | 所有表情包1 | **详情见附表** | +| n | obj | 所有表情包(n+1) | **详情见附表** | +| …… | obj | …… | …… | + +`data`对象中的`mall`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ----------- | ---- | +| title | str | 商城名称 | | +| url | str | 商城页面url | | + +**示例:** + +```shell +curl -G 'http://api.bilibili.com/x/emote/setting/panel' \ +--data-urlencode 'business=reply' \ +-b 'SESSDATA=xxx' +``` + +**限于篇幅,代码块示例略** + +## 附表-表情包对象 + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----- | ----------------- | -------------------------------------------------------- | +| id | num | 表情包ID | | +| text | str | 表情包名称 | | +| url | str | 表情包标志图片url | | +| mtime | num | 创建时间 | 时间戳 | +| type | num | 表情包类型 | 1:普通
2:会员专属
3:购买所得
4:颜文字 | +| attr | num | ??? | **作用尚不明确** | +| meta | obj | 属性信息 | | +| emote | array | 表情列表 | | +| flags | obj | 是否添加标志 | | + +`表情包对象`中的`flags`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---------- | ------------------------------------------------------------ | +| added | bool | 是否已添加 | true:已添加
false:未添加
需要登录(SESSDATA)
否则恒为false | + +`表情包对象`中的`meta`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | --------------- | ---------------- | +| size | num | 表情尺寸信息 | 1:小
2:大 | +| item_id | num | 购买物品ID | | +| item_url | num | 购买物品页面url | 无则无此项 | + +`表情包对象`中的`emote`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------- | ---- | +| 0 | obj | 表情1 | | +| n | obj | 表情(n+1) | | +| …… | obj | …… | …… | + +`emote`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ----------- | -------------------------------------------------------- | +| id | num | 表情ID | | +| package_id | num | 表情包ID | | +| text | str | 表情转义符 | 颜文字时为该字串 | +| url | str | 表情图片url | 颜文字时为该字串 | +| mtime | num | 创建时间 | 时间戳 | +| type | num | 表情类型 | 1:普通
2:会员专属
3:购买所得
4:颜文字 | +| attr | num | ??? | **作用尚不明确** | +| meta | obj | 属性信息 | | +| flags | obj | 禁用标志 | 无则为空 | + +`emote`数组中的对象中的`flags`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ---------- | ------------------------------------------------------ | +| no_access | bool | 是否为禁用 | true:禁用
需要登录(SESSDATA)
否则恒为true | + +`emote`数组中的对象中的`meta`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------ | ---------------- | +| size | num | 表情尺寸信息 | 1:小
2:大 | +| alias | str | 简写名 | 无则无此项 | diff --git a/garb/color.md b/garb/color.md new file mode 100644 index 0000000..946235a --- /dev/null +++ b/garb/color.md @@ -0,0 +1,311 @@ +# 主题色 + +## 获取主题色基本信息1 + +> http://club.bilibili.com/api/query.skin.list.do + +*请求方式:GET* + +鉴权方式:appkey + +认证方式:仅可APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| appkey | str | APP密钥 | APP方式必要 | | +| build | num | 版本 | APP方式必要 | 可为`6082000` | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----- | ------------ | ---------------------------------------------------- | +| ts | num | 当前时间戳 | | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | +| data | array | 主题颜色列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 主题颜色1 | | +| n | obj | 主题颜色(n+1) | | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | ------------------------------- | +| id | num | 颜色ID | | +| name | str | 颜色名称 | | +| is_free | bool | 是否免费 | false:收费
true:免费 | +| price | num | 价格 | 单位为硬币 | +| is_bought | bool | 是否已购买 | false:未购买
true:已购买 | +| status | num | 状态 | 1:自动续费
4:已退订 | +| buy_time | num | 购买时间 | 毫秒时间戳 | +| due_time | num | 到期时间 | 毫秒时间戳 | +| color_name | str | 颜色类型名称 | | +| is_overdue | bool | 是否已到期 | false:未到期
true:已到期 | + +**示例:** + +```shell +curl -G 'http://club.bilibili.com/api/query.skin.list.do' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'appkey=1d8b6e7d45233436' \ +--data-urlencode 'build=6082000' \ +--data-urlencode 'sign=2d37f2cd6f86337a6a07cb3cf311be86' +``` + +
+查看响应示例: + +```json +{ + "ts": 1599225638239, + "code": 0, + "data": [ + { + "id": 2, + "name": "少女粉", + "is_free": true, + "price": 0, + "is_bought": false, + "color_name": "pink", + "is_overdue": false + }, + { + "id": 1, + "name": "夜间模式", + "is_free": true, + "price": 0, + "is_bought": false, + "color_name": "black", + "is_overdue": false + }, + { + "id": 3, + "name": "姨妈红", + "is_free": false, + "price": 5, + "is_bought": false, + "color_name": "red", + "is_overdue": false + }, + { + "id": 4, + "name": "咸蛋黄", + "is_free": false, + "price": 5, + "is_bought": false, + "color_name": "yellow", + "is_overdue": false + }, + { + "id": 5, + "name": "早苗绿", + "is_free": false, + "price": 5, + "is_bought": false, + "status": 4, + "buy_time": 1599219782000, + "due_time": 1601811782000, + "color_name": "green", + "is_overdue": false + }, + { + "id": 6, + "name": "胖次蓝", + "is_free": false, + "price": 5, + "is_bought": false, + "color_name": "blue", + "is_overdue": false + }, + { + "id": 7, + "name": "基佬紫", + "is_free": false, + "price": 5, + "is_bought": false, + "color_name": "purple", + "is_overdue": false + } + ] +} +``` + +
+ +## 获取主题色基本信息2 + +> http://api.bilibili.com/x/garb/skin/color/list + +*请求方式:GET* + +认证方式:仅可Cookie + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | -------- | ------ | ------------- | +| mobi_app | str | 平台标识 | 非必要 | 可为`android` | +| build | num | 版本 | 非必要 | 可为`6082000` | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | ------------ | ---------------------------------------------------- | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| data | array | 主题颜色列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 主题颜色1 | | +| n | obj | 主题颜色(n+1) | | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | ------------------------------- | +| id | num | 颜色ID | | +| name | str | 颜色名称 | | +| is_free | bool | 是否免费 | false:收费
true:免费 | +| price | num | 价格 | 单位为硬币 | +| is_bought | bool | 是否已购买 | false:未购买
true:已购买 | +| status | num | 状态 | 1:自动续费
4:已退订 | +| buy_time | num | 购买时间 | 毫秒时间戳 | +| due_time | num | 到期时间 | 毫秒时间戳 | +| color_name | str | 颜色类型名称 | | +| is_overdue | bool | 是否已到期 | false:未到期
true:已到期 | + +**示例:** + +```shell +curl -G 'http://api.bilibili.com/x/garb/skin/color/list' \ +--data-urlencode 'mobi_app=android' \ +--data-urlencode 'build=6082000' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "id": 8, + "name": "简洁白", + "is_free": true, + "price": 0, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "white", + "is_overdue": false + }, + { + "id": 2, + "name": "少女粉", + "is_free": true, + "price": 0, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "pink", + "is_overdue": false + }, + { + "id": 1, + "name": "夜间模式", + "is_free": true, + "price": 0, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "black", + "is_overdue": false + }, + { + "id": 3, + "name": "姨妈红", + "is_free": false, + "price": 5, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "red", + "is_overdue": false + }, + { + "id": 4, + "name": "咸蛋黄", + "is_free": false, + "price": 5, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "yellow", + "is_overdue": false + }, + { + "id": 5, + "name": "早苗绿", + "is_free": false, + "price": 5, + "is_bought": false, + "status": 4, + "buy_time": 1599219782000, + "due_time": 1601811782000, + "color_name": "green", + "is_overdue": false + }, + { + "id": 6, + "name": "胖次蓝", + "is_free": false, + "price": 5, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "blue", + "is_overdue": false + }, + { + "id": 7, + "name": "基佬紫", + "is_free": false, + "price": 5, + "is_bought": false, + "status": 0, + "buy_time": 0, + "due_time": 0, + "color_name": "purple", + "is_overdue": false + } + ] +} +``` + +
\ No newline at end of file diff --git a/garb/skin.md b/garb/skin.md new file mode 100644 index 0000000..e8db5dc --- /dev/null +++ b/garb/skin.md @@ -0,0 +1,254 @@ +# 主题及加载动画 + +## 获取主题及加载动画 + +> http://app.bilibili.com/x/resource/show/skin + +*请求方式:GET* + +鉴权方式:appkey + +认证方式:仅可APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| appkey | str | APP密钥 | APP方式必要 | | +| build | num | 版本 | APP方式必要 | 可为`6082000` | +| ts | num | 当前时间戳 | APP方式必要 | 可为`0` | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---------------------------------------------------- | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | ------------ | ------------ | +| user_equip | obj | 个性主题信息 | 有效时有此项 | +| skin_colors | array | 主题颜色列表 | | +| load_equip | obj | 加载动画信息 | 有效时有此项 | + +`data`中的`user_equip`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | --------------- | ------ | +| id | num | 装扮ID | | +| name | str | 装扮名称 | | +| preview | str | 装扮封面url | | +| ver | num | 装扮版本 | 时间戳 | +| package_url | str | 装扮包url | | +| package_md5 | str | 装扮包md5校验值 | | +| data | obj | 装扮配置 | | + +`user_equip`中的`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------- | ---- | -------------- | --------------------------- | +| color_mode | str | 颜色模式 | light:亮色
dark:暗色 | +| color | str | 前景色? | | +| color_second_page | str | 背景色? | | +| side_bg_color | str | ? | | +| tail_color | str | 底边栏颜色? | | +| tail_color_selected | str | ? | | +| tail_icon_ani | bool | 有无底边栏动画 | false:无
true:有 | +| tail_icon_ani_mode | str | once | 作用尚不明确 | + +`skin_colors`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 主题颜色1 | | +| n | obj | 主题颜色(n+1) | | +| …… | obj | …… | …… | + +`skin_colors`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | ------------------------------- | +| id | num | 颜色ID | | +| name | str | 颜色名称 | | +| is_free | bool | 是否免费 | false:收费
true:免费 | +| price | num | 价格 | 单位为硬币 | +| is_bought | bool | 是否已购买 | false:未购买
true:已购买 | +| status | num | 状态 | 1:自动续费
4:已退订 | +| buy_time | num | 购买时间 | 毫秒时间戳 | +| due_time | num | 到期时间 | 毫秒时间戳 | +| color_name | str | 颜色类型名称 | | +| is_overdue | bool | 是否已到期 | false:未到期
true:已到期 | + +`data`中的`load_equip`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | --------------- | ------ | +| id | num | 装扮ID | | +| name | str | 装扮名称 | | +| ver | num | 装扮版本 | 时间戳 | +| loading_url | str | 加载动画图标url | | + +**示例:** + +```shell +curl -G 'http://app.bilibili.com/x/resource/show/skin' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'appkey=1d8b6e7d45233436' \ +--data-urlencode 'build=6082000' \ +--data-urlencode 'ts=0' \ +--data-urlencode 'sign=ea212fea5b00a6278ea6d9938b4c500e' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "user_equip": { + "id": 2529, + "name": "初音未来-日版", + "preview": "http://i0.hdslb.com/bfs/garb/item/2fa16380b31b3cee6c889d645f2699de8e9d9faf.jpg", + "ver": 1598600025, + "package_url": "http://i0.hdslb.com/bfs/garb/zip/9c393edea0c7b7b59685a20cd655363ef573a325.zip", + "package_md5": "7b6d20d998ad543c6a275948a6a1a5fe", + "data": { + "color_mode": "light", + "color": "#212121", + "color_second_page": "#fff2d2", + "side_bg_color": "#ffe7ae", + "tail_color": "#996c00", + "tail_color_selected": "#0d6872", + "tail_icon_ani": true, + "tail_icon_ani_mode": "once" + } + }, + "skin_colors": [ + { + "id": 2, + "name": "少女粉", + "is_free": true, + "color_name": "pink" + }, + { + "id": 1, + "name": "夜间模式", + "is_free": true, + "color_name": "black" + }, + { + "id": 3, + "name": "姨妈红", + "price": 5, + "color_name": "red" + }, + { + "id": 4, + "name": "咸蛋黄", + "price": 5, + "color_name": "yellow" + }, + { + "id": 5, + "name": "早苗绿", + "price": 5, + "status": 4, + "buy_time": 1599219782000, + "due_time": 1601811782000, + "color_name": "green" + }, + { + "id": 6, + "name": "胖次蓝", + "price": 5, + "color_name": "blue" + }, + { + "id": 7, + "name": "基佬紫", + "price": 5, + "color_name": "purple" + } + ], + "load_equip": { + "id": 2531, + "name": "初音未来13周年", + "ver": 1598602035, + "loading_url": "http://i0.hdslb.com/bfs/garb/item/9b12e8b5cc16a4c2e71e91c43796f09d5e132847.webp" + } + } +} +``` + +
+ +## 主题包结构 + +主题包为app端付费主题(套装)的整合包,以zip格式通过url分发 + +包内的图片文件为app对应的资源替换 + +| 文件名 | 说明 | +| ------------------------------ | -------------------------- | +| tail_icon_selected_myself.png | 【我的】按钮(选中状态) | +| head_bg.jpg | 首页顶部栏背景 | +| head_tab_bg.jpg | 顶部栏背景 | +| side_bg.jpg | 侧边栏背景 | +| side_bg_bottom.jpg | 侧边栏底部背景 | +| tail_bg.png | 底部栏背景 | +| tail_icon_main.png | 【首页】按钮 | +| tail_icon_selected_main.png | 【首页】按钮(选中状态) | +| tail_icon_selected_channel.png | 【频道】按钮(选中状态) | +| head_myself_squared_bg.jpg | 【我的】页面头图(大) | +| tail_icon_channel.png | 【频道】按钮 | +| tail_icon_selected_dynamic.png | 【动态】按钮(选中状态) | +| head_myself_bg.jpg | 【我的】页面头图(小) | +| tail_icon_dynamic.png | 【动态】按钮 | +| tail_icon_shop.png | 【会员购】按钮 | +| tail_icon_selected_shop.png | 【会员购】按钮(选中状态) | +| tail_icon_myself.png | 【我的】按钮 | + +以`id=2529(初音未来-日版)`的资源为例 + +```shell +wget http://i0.hdslb.com/bfs/garb/zip/9c393edea0c7b7b59685a20cd655363ef573a325.zip +unzip -l 9c393edea0c7b7b59685a20cd655363ef573a325.zip +``` + +返回为 + +``` +Archive: 9c393edea0c7b7b59685a20cd655363ef573a325.zip + Length Date Time Name +--------- ---------- ----- ---- + 22995 1980-00-00 00:00 tail_icon_selected_myself.png + 18444 1980-00-00 00:00 head_bg.jpg + 3061 1980-00-00 00:00 head_tab_bg.jpg + 188898 1980-00-00 00:00 side_bg.jpg + 2842 1980-00-00 00:00 side_bg_bottom.jpg + 203134 1980-00-00 00:00 tail_bg.png + 27539 1980-00-00 00:00 tail_icon_main.png + 25632 1980-00-00 00:00 tail_icon_selected_main.png + 27415 1980-00-00 00:00 tail_icon_selected_channel.png + 191706 1980-00-00 00:00 head_myself_squared_bg.jpg + 27919 1980-00-00 00:00 tail_icon_channel.png + 27262 1980-00-00 00:00 tail_icon_selected_dynamic.png + 147738 1980-00-00 00:00 head_myself_bg.jpg + 28182 1980-00-00 00:00 tail_icon_dynamic.png + 25878 1980-00-00 00:00 tail_icon_shop.png + 26487 1980-00-00 00:00 tail_icon_selected_shop.png + 21831 1980-00-00 00:00 tail_icon_myself.png +--------- ------- + 1016963 17 files +``` + diff --git a/history&toview/history.md b/history&toview/history.md new file mode 100644 index 0000000..0927c08 --- /dev/null +++ b/history&toview/history.md @@ -0,0 +1,842 @@ +# 历史记录 + + + +**本页所有操作均需登录(Cookie)** + +## 获取历史记录列表(视频、直播、专栏) + +>http://api.bilibili.com/x/web-interface/history/cursor + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ---------------------- | ------ | ------------------------------------------------------------ | +| max | num | 历史记录截止目标ID | 非必要 | 默认为0
稿件:稿件avID
番剧(影视):剧集ssID
直播:直播间ID
文集:文集rlID
文章:文章cvID | +| business | num | 历史记录截止目标ID类型 | 非必要 | 默认为空
archive:稿件
pgc:番剧(影视)
live:直播
article-list:文集
article:文章 | +| view_at | num | 历史记录截止时间 | 非必要 | 时间戳
默认为0
0为当前时间 | +| ps | num | 每页项数 | 非必要 | 默认为20 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | ------------ | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 历史记录列表 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ----- | ---------------- | ---- | +| cursor | obj | 历史记录页面信息 | | +| tab | array | 历史记录筛选类型 | | +| list | array | 分段历史记录列表 | | + +`data`中的`cursor`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------------ | ------------------ | +| max | num | 最后一项目标ID | **详细内容见参数** | +| view_at | num | 最后一项时间节点 | 时间戳 | +| business | str | 最后一项目标ID类型 | **详细内容见参数** | +| ps | num | 每页项数 | | + +`data`中的`tab`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | obj | 历史记录筛选类型1 | | +| 1 | obj | 历史记录筛选类型2 | | +| 2 | obj | 历史记录筛选类型3 | | + +`tab`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | ---- | +| type | str | 类型 | | +| name | str | 类型名 | | + +`data`中的`tab`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---------------- | +| 0 | obj | 历史记录1 | | +| n | obj | 历史记录(n+1) | 按照查看顺序排列 | +| …… | obj | | | + +`tab`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ------------------------------- | -------------------- | ---------------------------------------- | +| title | str | 条目标题 | | +| long_title | str | 条目副标题 | | +| cover | str | 条目封面图url | 用于专栏以外的条目 | +| covers | 有效时:array
无效时:null | 条目封面图组 | 仅用于专栏 | +| uri | str | 重定向url | 仅用于剧集和直播 | +| history | obj | 条目详细信息 | | +| videos | num | 视频分P数目 | 仅用于稿件视频 | +| author_name | str | UP主昵称 | | +| author_face | str | UP主头像url | | +| author_mid | num | UP主UID | | +| view_at | num | 查看时间 | 时间戳 | +| progress | num | 视频观看进度 | 单位为秒
用于稿件视频或剧集 | +| badge | str | 条目备注标识 | 用于稿件视频或剧集 | +| show_title | str | 分P标题 | 用于稿件视频或剧集 | +| duration | num | 视频总时长 | 用于稿件视频或剧集 | +| current | str | 空 | **作用尚不明确** | +| total | num | 总计分集数 | 仅用于剧集 | +| new_desc | str | 最新一话/最新一P标识 | 用于稿件视频或剧集 | +| is_finish | num | 是否已完结 | 仅用于剧集
0:未完结
1:已完结 | +| is_fav | num | 是否收藏 | 0:未收藏
1:已收藏 | +| kid | num | 条目目标ID | **详细内容见参数** | +| tag_name | str | 子分区名 | 用于稿件视频和直播 | +| live_status | num | 直播状态 | 仅用于直播
0:未开播
1:已开播 | + +`tab`数组中的对象中的`covers`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 封面图片1 | | +| n | str | 封面图片(n+1) | | +| …… | str | …… | | + +`tab`数组中的对象中的`history`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------------- | ------------------------------------------------------------ | +| oid | num | 目标ID | 稿件视频&剧集(当`business=archive`或`business=pgc`时):稿件avID
直播(当`business=live`时):直播间ID
文章(当`business=article`时):文章cvID
文集(当`business=article-list`时):文集rlID | +| epid | num | 剧集epID | 仅用于剧集 | +| bvid | str | 稿件bvID | 仅用于稿件视频 | +| page | num | 观看到的视频分P数 | 仅用于稿件视频 | +| cid | num | 观看到的对象ID | 稿件视频&剧集(当`business=archive`或`business=pgc`时):视频CID
文集(当`business=article-list`时):文章cvID | +| part | str | 观看到的视频分P标题 | 仅用于稿件视频 | +| business | str | 条目类型 | **详细内容见参数** | +| dt | num | 查看平台代码 | 1 3 5 7:手机端
2:web端
4 6:pad端
33:TV端
0:其他 | + +**示例:** + +获取当前时间截止的5条历史记录 + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/history/cursor' \ +--data-urlencode 'ps=5' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "cursor": { + "max": 26193, + "view_at": 1592985807, + "business": "pgc", + "ps": 5 + }, + "tab": [ + { + "type": "archive", + "name": "视频" + }, + { + "type": "live", + "name": "直播" + }, + { + "type": "article", + "name": "专栏" + } + ], + "list": [ + { + "title": "韩国漫画如何出海掘金?一年出口额2.8亿元", + "long_title": "", + "cover": "", + "covers": [ + "https://i0.hdslb.com/bfs/article/b170c6fd7429ae205d6cb935e1d431710d82609d.jpg" + ], + "uri": "", + "history": { + "oid": 6470274, + "epid": 0, + "bvid": "", + "page": 0, + "cid": 0, + "part": "", + "business": "article", + "dt": 2 + }, + "videos": 0, + "author_name": "三文娱", + "author_face": "http://i1.hdslb.com/bfs/face/98566839756a8e3de6e183109984b032de6ff2d9.jpg", + "author_mid": 34772409, + "view_at": 1593000539, + "progress": 0, + "badge": "专栏", + "show_title": "", + "duration": 0, + "current": "", + "total": 0, + "new_desc": "", + "is_finish": 0, + "is_fav": 0, + "kid": 6470274, + "tag_name": "", + "live_status": 0 + }, + { + "title": "从国际空间站俯瞰地球,静谧蓝星守护者", + "long_title": "", + "cover": "http://i0.hdslb.com/bfs/live/new_room_cover/f07d8a0c7c5655f81cf1586903a121f2680cf3bc.jpg", + "covers": null, + "uri": "https://live.bilibili.com/14047", + "history": { + "oid": 14047, + "epid": 0, + "bvid": "", + "page": 0, + "cid": 0, + "part": "", + "business": "live", + "dt": 2 + }, + "videos": 0, + "author_name": "Zelo-Balance", + "author_face": "http://i1.hdslb.com/bfs/face/7303b3032d1e13ca7c788cd9c30d4430f8ffd1ea.jpg", + "author_mid": 19193, + "view_at": 1592999822, + "progress": 0, + "badge": "直播中", + "show_title": "", + "duration": 0, + "current": "", + "total": 0, + "new_desc": "", + "is_finish": 0, + "is_fav": 0, + "kid": 14047, + "tag_name": "户外", + "live_status": 1 + }, + { + "title": "许巍 《蓝莲花》吉他Cover,这回你们不用截图抓我了吧", + "long_title": "", + "cover": "http://i2.hdslb.com/bfs/archive/0225b1f1a790393097ceebb51e89796be806d6bc.jpg", + "covers": null, + "uri": "", + "history": { + "oid": 883617049, + "epid": 0, + "bvid": "BV1sK4y147ob", + "page": 1, + "cid": 205017957, + "part": "许巍 《蓝莲花》 Cover_1", + "business": "archive", + "dt": 2 + }, + "videos": 1, + "author_name": "硬核拆解", + "author_face": "http://i1.hdslb.com/bfs/face/4e131c9609299303cdde882792fc62b9f99cdcde.jpg", + "author_mid": 427494870, + "view_at": 1592999572, + "progress": 13, + "badge": "", + "show_title": "", + "duration": 91, + "current": "", + "total": 0, + "new_desc": "", + "is_finish": 0, + "is_fav": 0, + "kid": 883617049, + "tag_name": "演奏", + "live_status": 0 + }, + { + "title": "从清楚与混沌之分看Vtuber形象塑造", + "long_title": "", + "cover": "", + "covers": [ + "https://i0.hdslb.com/bfs/article/5ddb94dd1890c639622717c7083fb2917b4aa475.jpg" + ], + "uri": "", + "history": { + "oid": 268656, + "epid": 0, + "bvid": "", + "page": 0, + "cid": 6233590, + "part": "", + "business": "article-list", + "dt": 2 + }, + "videos": 0, + "author_name": "普天一光", + "author_face": "http://i2.hdslb.com/bfs/face/3702810bdac3d5103d684e61dc5bc8492a74f904.jpg", + "author_mid": 6614889, + "view_at": 1592998686, + "progress": 0, + "badge": "专栏", + "show_title": "", + "duration": 0, + "current": "", + "total": 0, + "new_desc": "", + "is_finish": 0, + "is_fav": 0, + "kid": 268656, + "tag_name": "", + "live_status": 0 + }, + { + "title": "百妖谱", + "long_title": "庆忌(下)", + "cover": "http://i0.hdslb.com/bfs/archive/695a4566d05620a24c51d6eb935fa4767d673b45.jpg", + "covers": null, + "uri": "https://www.bilibili.com/bangumi/play/ss26193", + "history": { + "oid": 370908663, + "epid": 326789, + "bvid": "", + "page": 0, + "cid": 199204975, + "part": "", + "business": "pgc", + "dt": 3 + }, + "videos": 0, + "author_name": "", + "author_face": "", + "author_mid": 0, + "view_at": 1592985807, + "progress": 533, + "badge": "国创", + "show_title": "第8话 庆忌(下)", + "duration": 1402, + "current": "", + "total": 12, + "new_desc": "更新至第10话", + "is_finish": 0, + "is_fav": 0, + "kid": 26193, + "tag_name": "", + "live_status": 0 + } + ] + } +} +``` + +
+ +## 获取全部视频历史记录(旧) + +> http://api.bilibili.com/x/v2/history + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ------- | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页项数 | 非必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | ------------ | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 历史记录列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ------------------------------------------ | +| 0 | obj | 历史观看1 | | +| n | obj | 历史观看(n+1) | 按照观看顺序排列
项数为总计观看视频数 | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------------------------ | ------------------------------------------------------------ | +| aid | num | 稿件avID | | +| videos | num | 视频分P总数 | 默认为1 | +| tid | num | 分区tID | | +| tname | str | 子分区名称 | | +| copyright | num | 是否转载 | 1:原创
2:转载 | +| pic | str | 视频封面图片url | | +| title | str | 稿件标题 | | +| pubdate | num | 稿件发布时间 | 时间戳 | +| ctime | num | 用户提交稿件的时间 | 时间戳 | +| desc | str | 视频简介 | | +| state | num | 视频状态 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`state`备注 | +| attribute | num | 稿件属性位配置 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`attribute`备注 | +| duration | num | 视频总计持续时长(所有分P) | 单位为秒 | +| rights | obj | 视频属性标志 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`rights`对象 | +| owner | obj | 视频UP主信息 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`owner`对象 | +| stat | obj | 视频状态数 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`stat`对象 | +| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | +| cid | num | 视频1P CID | | +| dimension | obj | 视频1P分辨率 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`dimension`对象 | +| bangumi | obj | 番剧/影视信息 | 非番剧/影视无此项 | +| cheese | obj | 课程信息 | 非课程无此项 | +| favorite | bool | 是否已收藏 | true:已收藏
false:未收藏 | +| type | num | 视频属性 | 3:普通视频
4:剧集
10:课程 | +| sub_type | num | 附视频属性 | 0:普通视频
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | +| device | num | 观看平台代码 | 1 3 5 7:手机端
2:web端
4 6:pad端
33:TV端
0:其他 | +| page | obj | 最后观看的分P信息 | | +| count | num | 分P数 | 非投稿视频无此项 | +| progress | num | 观看进度 | 单位为秒 | +| view_at | num | 观看时间 | 时间戳 | +| kid | num | 稿件avID | | +| business | str | 视频类型标识 | archive:用户投稿视频
pgc:番剧/影视
cheese:课程 | +| redirect_link | str | 重定向url | | +| bvid | str | 稿件bvID | | + +`data`数组中的对象`bangumi`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | --------------- | ------------ | +| cover | str | 番剧封面图片url | | +| ep_id | num | 番剧epID | | +| episode_status | num | ??? | | +| follow | num | 0 | 作用尚不明确 | +| long_title | str | 单集标题 | | +| season | obj | 剧集信息 | | +| title | str | 集数 | | + +`bangumi`中的`season`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | ------------ | ---------------------- | +| is_finish | num | 是否完结 | 0:连载中
1:完结 | +| newest_ep_id | num | 最细一话epID | | +| newest_ep_index | str | 最细一话集数 | | +| season_id | num | 番剧ssID | | +| season_status | num | ??? | | +| season_type | num | ??? | | +| title | str | 番剧标题 | | +| total_count | num | 总集数 | | + +`data`数组中的对象`cheese`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | --------------- | ---- | +| cover | str | 课程封面图片url | | +| long_title | str | 完整标题 | | +| number | str | 本集数 | | +| season_id | num | 课程ssID | | +| update_info | str | 总集数 | | + +**示例:** + +查询当前视频历史记录列表 + +```shell +curl -G 'http://api.bilibili.com/x/v2/history' \ +--data-urlencode 'ps=5' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "aid": 96523832, + "videos": 1, + "tid": 33, + "tname": "连载动画", + "copyright": 2, + "pic": "http://i0.hdslb.com/bfs/archive/dfc29be381565ee041a0ec9cfc7a32f8a63f76cd.jpg", + "title": "【1月】异度侵入 ID:INVADED 12【独家正版】", + "pubdate": 1584289800, + "ctime": 1584289800, + "desc": "#12", + "state": 0, + "attribute": 338688, + "duration": 1481, + "redirect_url": "https://www.bilibili.com/bangumi/play/ep307457", + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 1, + "hd5": 1, + "no_reprint": 0, + "autoplay": 0, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 928123, + "name": "哔哩哔哩番剧", + "face": "http://i1.hdslb.com/bfs/face/7a8412cbacb9fd18f40ddbbf0ad183e45afc1365.jpg" + }, + "stat": { + "aid": 96523832, + "view": 4772927, + "danmaku": 108890, + "reply": 48584, + "favorite": 46, + "coin": 61768, + "share": 290, + "now_rank": 0, + "his_rank": 0, + "like": 1241, + "dislike": 0 + }, + "dynamic": "", + "cid": 164789275, + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "favorite": false, + "type": 4, + "sub_type": 1, + "device": 3, + "page": { + "cid": 164789275, + "page": 1, + "from": "vupload", + "part": "ID_INVADED_112.encoded", + "duration": 1481, + "vid": "", + "weblink": "", + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + } + }, + "bangumi": { + "ep_id": 307457, + "title": "12", + "long_title": "CHANNELED", + "episode_status": 13, + "follow": 0, + "cover": "http://i0.hdslb.com/bfs/archive/dfc29be381565ee041a0ec9cfc7a32f8a63f76cd.jpg", + "season": { + "season_id": 29310, + "title": "异度侵入 ID:INVADED", + "season_status": 13, + "is_finish": 1, + "total_count": 13, + "newest_ep_id": 307774, + "newest_ep_index": "13", + "season_type": 1 + } + }, + "progress": 277, + "view_at": 1588831600, + "kid": 29310, + "business": "pgc", + "redirect_link": "https://www.bilibili.com/bangumi/play/ep307457", + "bvid": "BV1K7411f7uu" + }, + { + "aid": 497899395, + "videos": 1, + "tid": 189, + "tname": "电脑装机", + "copyright": 1, + "pic": "http://i0.hdslb.com/bfs/archive/fd4e0893b234ee729cf15198065eced98367ebfe.jpg", + "title": "600元的2007款iMac,如今过时了吗?", + "pubdate": 1587727345, + "ctime": 1587708111, + "desc": "苹果东西是真的保值,酷睿2现在都还能卖的这么贵。第一次使用4K画质进行拍摄,应该比以前清楚一些。如有问题请在评论区指出,谢谢!", + "state": 0, + "attribute": 16768, + "duration": 389, + "mission_id": 13106, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 1, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 3391089, + "name": "数字云糕Official", + "face": "http://i2.hdslb.com/bfs/face/238dfbca5dda5de2d5ba95ee4e99804714e2b5e2.jpg" + }, + "stat": { + "aid": 497899395, + "view": 23325, + "danmaku": 92, + "reply": 115, + "favorite": 195, + "coin": 132, + "share": 23, + "now_rank": 0, + "his_rank": 0, + "like": 555, + "dislike": 0 + }, + "dynamic": "#IMAC##APPLE##MAC# 苹果东西是真的保值,酷睿2现在都还能卖的这么贵。第一次使用4K画质进行拍摄,应该比以前清楚一些。", + "cid": 182570131, + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "favorite": false, + "type": 3, + "sub_type": 0, + "device": 3, + "page": { + "cid": 182570131, + "page": 1, + "from": "vupload", + "part": "iMac", + "duration": 389, + "vid": "", + "weblink": "", + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + } + }, + "count": 1, + "progress": -1, + "view_at": 1588828357, + "kid": 497899395, + "business": "archive", + "redirect_link": "https://www.bilibili.com/video/av497899395", + "bvid": "BV1NK41157EF" + } + ] +} +``` + +
+ +## 删除历史记录 + +> http://api.bilibili.com/x/v2/history/delete + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| kid | str | 删除的目标记录 | 必要 | 视频:archive\_{稿件avID}
直播:live_{直播间ID}
专栏:article\_{专栏cvID}
剧集:pgc\_{剧集ssID}
文集:article-list\_{文集rlID} | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +删除视频`av540580868`的观看历史记录 + +```shell +curl 'http://api.bilibili.com/x/v2/history/delete' \ +--data-urlencode 'kid=archive_540580868' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 清空历史记录 + +> http://api.bilibili.com/x/v2/history/clear + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +清空历史记录 + +```shell +curl 'http://api.bilibili.com/x/v2/history/clear' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 停用历史记录 + +> http://api.bilibili.com/x/v2/history/shadow/set + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +该操作不会影响原有历史记录 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | -------------------------------------------- | +| switch | bool | 停用开关 | 非必要 | true:停用
false:正常
默认为false | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +停用历史记录功能 + +```shell +curl 'http://api.bilibili.com/x/v2/history/shadow/set' \ +--data-urlencode 'switch=true' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 查询历史记录停用状态 + +> http://api.bilibili.com/x/v2/history/shadow + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | bool | 停用状态 | true:停用
false:正常 | + +**示例:** + +当前状态为未停用视频历史记录 + +```shell +curl 'http://api.bilibili.com/x/v2/history/shadow' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": false +} +``` + +
diff --git a/history&toview/toview.md b/history&toview/toview.md new file mode 100644 index 0000000..5f326bd --- /dev/null +++ b/history&toview/toview.md @@ -0,0 +1,554 @@ +# 稍后再看 + + + +## 视频添加稍后再看 + +>http://api.bilibili.com/x/v2/history/toview/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +最多添加100个视频 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
90001:列表已满
90003:稿件已经被删除 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +添加视频`av41687433`/`BV1ht41147kj`到稍后再看列表 + +avID方式: + +```shell +curl 'http://api.bilibili.com/x/v2/history/toview/add' \ +--data-urlencode 'aid=41687433' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/v2/history/toview/add' \ +--data-urlencode 'bvid=BV1ht41147kj' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 添加频道中所有视频到稍后再看 + +> http://space.bilibili.com/ajax/channel/addAllToView + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0,referer为 `.bilibili.com`域名下 + +带有转义 + +超过容量后会截取容量之内的添加 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| cid | num | 目标频道ID | 必要 | | +| mid | num | 目标频道所属的用户UID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | --------------------------- | +| status | bool | 是否成功 | false:失败
true:成功 | +| data | str | 错误信息 | | + +**示例:** + +添加用户`UID=282994`下的频道`4693`中所有视频到稍后再看 + +```shell +curl 'http://space.bilibili.com/ajax/channel/addAllToView' \ +--data-urlencode 'cid=4693' \ +--data-urlencode 'mid=282994' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;' +-e 'https://www.bilibili.com' +``` + +
+查看响应示例: + +```json +{ + "status": true, + "data": "操作成功" +} +``` + +
+ +## 获取稍后再看视频列表 + +> http://api.bilibili.com/x/v2/history/toview + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | data | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ------ | ---------------- | ---- | +| count | num | 稍后再看视频数 | | +| list | array | 稍后再看视频列表 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---------------------------------------------- | +| 0 | obj | 稍后再看1 | | +| n | obj | 稍后再看(n+1) | 按照添加顺序排列
项数为总计稍后再看视频数 | +| …… | obj | …… | …… | +| 99 | obj | 最后一项 | | + +`data`中的`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------------------------------ | ------------------------------------------------------------ | +| aid | num | 稿件avID | | +| videos | num | 稿件分P总数 | 默认为1 | +| tid | num | 分区tID | | +| tname | str | 子分区名称 | | +| copyright | num | 是否转载 | 1:原创
2:转载 | +| pic | str | 稿件封面图片url | | +| title | str | 稿件标题 | | +| pubdate | num | 稿件发布时间 | 时间戳 | +| ctime | num | 用户提交稿件的时间 | 时间戳 | +| desc | str | 视频简介 | | +| state | num | 视频状态 | 0:开放浏览
1:橙色通过
-1:待审
-2:被打回
-3:网警锁定
-4:被锁定
-5:管理员锁定(可浏览)
-6:修复待审
-7:暂缓审核
-8:补档待审
-9:等待转码
-10:延迟审核
-11:视频源待修
-12:转储失败
-13:允许评论待审
-14:临时回收站
-15:分发中
-16:转码失败
-20:创建未提交
-30:创建已提交
-40:定时发布
-100:用户删除 | +| attribute | num | 稿件属性位配置 | | +| duration | num | 稿件总时长(所有分P) | 单位为秒 | +| rights | obj | 稿件属性标志 | | +| owner | obj | 稿件UP主信息 | | +| stat | obj | 稿件状态数 | | +| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | +| dimension | obj | 稿件1P分辨率 | | +| count | num | 稿件分P数 | 非投稿视频无此项 | +| cid | num | 视频CID | | +| progress | num | 观看进度时间 | 单位为秒 | +| add_at | num | 添加时间 | 时间戳 | +| bvid | str | 稿件bvID | | + +`attribute`属性位二进制值表: + +| 位 | 内容 | 备注 | +| ---- | ----------------- | ----------------------- | +| 0 | 禁止排行 | | +| 1 | 动态禁止 | | +| 2 | 禁止网页输出 | | +| 3 | 禁止客户端列表 | | +| 4 | 搜索禁止 | | +| 5 | 海外禁止 | | +| 6 | 禁止推荐 | | +| 7 | 禁止转载 | | +| 8 | 是否高清 | 视频清晰度>=1080P | +| 9 | 是否PGC稿件 | 番剧及影视 | +| 10 | 允许承包 | | +| 11 | 是否番剧 | | +| 12 | 是否私单 | | +| 13 | 是否限制地区 | 大多数番剧 | +| 14 | 允许其他人添加tag | | +| 15 | ? | | +| 16 | 跳转 | 番剧及影视av/bv->ep跳转 | +| 17 | 是否影视 | | +| 18 | 付费 | | +| 19 | 推送动态 | | +| 20 | 家长模式 | | +| 21 | UGC付费 | | +| 22 | ? | | +| 23 | 是否失效 | | + +`data`中的`list`数组中的对象中的`rights`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | ---------------- | ------------ | +| bp | num | 0 | 作用尚不明确 | +| elec | num | 是否支持充电 | | +| download | num | 是否允许下载 | | +| movie | num | 是否电影 | | +| pay | num | 是否PGC付费 | | +| hd5 | num | 是否有高码率 | | +| no_reprint | num | 是否禁止转载 | | +| autoplay | num | 是否可以自动播放 | | +| ugc_pay | num | 是否UGC付费 | | +| is_cooperation | num | 是否联合投稿 | | +| ugc_pay_preview | num | 0 | 作用尚不明确 | +| no_background | num | 0 | 作用尚不明确 | + +`data`中的`list`数组中的对象中的`owner`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| mid | num | UP主UID | | +| name | str | UP主昵称 | | +| face | str | UP主头像 | | + +`data`中的`list`数组中的对象中的`stat`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------------------------ | ------------ | +| aid | num | 稿件avID | | +| view | num | 普通:观看次数
屏蔽时:-1 | | +| danmaku | num | 弹幕条数 | | +| reply | num | 评论条数 | | +| favorite | num | 收藏人数 | | +| coin | num | 投币枚数 | | +| share | num | 分享次数 | | +| now_rank | num | 0 | 作用尚不明确 | +| his_rank | num | 历史最高排行 | | +| like | num | 获赞次数 | | +| dislike | num | 0 | 作用尚不明确 | +| evaluation | str | 视频评分 | 默认为空 | + +`data`中的`list`数组中的对象中的`pages`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | --------------- | ------------------------------------ | +| cid | num | 当前分P CID | | +| page | num | 当前分P | | +| from | str | 视频来源 | vupload:用户上传
hunan:芒果TV | +| part | str | 当前分P标题 | | +| duration | num | 当前分P持续时间 | 单位为秒 | +| vid | str | 空 | 作用尚不明确 | +| weblink | str | 空 | 作用尚不明确 | +| dimension | obj | 当前分P分辨率 | | + +`pages`中的`dimension`对象(同`data`中的`list`数组中的对象中的`dimension`对象): + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------------- | -------------------- | +| width | num | 当前分P 宽度 | 可能为0 | +| height | num | 当前分P 高度 | 可能为0 | +| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | + +**示例:** + +获取稍后再看视频列表 + +```shell +curl 'http://api.bilibili.com/x/v2/history/toview' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 25, + "list": [ + { + "aid": 200333024, + "videos": 1, + "tid": 95, + "tname": "手机平板", + "copyright": 1, + "pic": "http://i1.hdslb.com/bfs/archive/a5e3072e670daec4c01a182aae91c1f85a48001e.jpg", + "title": "【山新】疫情下,配音演员怎么开工录音?", + "pubdate": 1586959137, + "ctime": 1586959137, + "desc": "疫情这段时间,配音演员们是怎么录音的呢=W=", + "state": 0, + "attribute": 16768, + "duration": 218, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 1, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 14082, + "name": "山新", + "face": "http://i0.hdslb.com/bfs/face/74c82caee6d9eb623e56161ea8ed6d68afabfeae.jpg" + }, + "stat": { + "aid": 200333024, + "view": 361123, + "danmaku": 1792, + "reply": 1376, + "favorite": 7571, + "coin": 12129, + "share": 895, + "now_rank": 0, + "his_rank": 0, + "like": 54705, + "dislike": 0 + }, + "dynamic": "疫情这段时间,配音演员们是怎么录音的呢=W=", + "dimension": { + "width": 3840, + "height": 2160, + "rotate": 0 + }, + "page": { + "cid": 178808041, + "page": 1, + "from": "vupload", + "part": "无标题", + "duration": 218, + "vid": "", + "weblink": "", + "dimension": { + "width": 3840, + "height": 2160, + "rotate": 0 + } + }, + "count": 1, + "cid": 178808041, + "progress": 32, + "add_at": 1587041785, + "bvid": "BV1Yz411B7n3" + }, + { + "aid": 710350011, + "videos": 1, + "tid": 124, + "tname": "趣味科普人文", + "copyright": 1, + "pic": "http://i0.hdslb.com/bfs/archive/c5b7e7c07a4abf27029c5afb3ab65fee4475b9a9.jpg", + "title": "不花一分钱建立自己的网站!给硬盘里的小姐姐换个新家!", + "pubdate": 1586919626, + "ctime": 1586898238, + "desc": "制作视频不易,你的点赞是对我最大的支持!\nUP主的个人网站:https://amdradeonrin.github.io/MIKU/\n视频提到的文件在网站有下载\nGitHub上的网站源码:https://github.com/AMDRadeonRin/MIKU", + "state": 0, + "attribute": 16768, + "duration": 169, + "mission_id": 13106, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 1, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 179757857, + "name": "GTX690战术核显卡导弹", + "face": "http://i2.hdslb.com/bfs/face/2504de8c1eeef22d91bbc45803f6b29afcbb0adf.jpg" + }, + "stat": { + "aid": 710350011, + "view": 3293, + "danmaku": 37, + "reply": 117, + "favorite": 355, + "coin": 76, + "share": 11, + "now_rank": 0, + "his_rank": 0, + "like": 325, + "dislike": 0 + }, + "dynamic": "#网页制作##HTML##网页#给你们科普一下怎么弄网站吧,你们也可以考虑整一个XD", + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "count": 1, + "cid": 0, + "progress": 0, + "add_at": 1587012410, + "bvid": "BV1LQ4y1T7Xh" + }, + ………… + ] + } +} +``` + +
+ +## 删除稍后再看视频 + +> http://api.bilibili.com/x/v2/history/toview/del + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| viewed | bool | 是否删除所有已观看的视频 | 非必要 | true:删除已观看视频
false:不删除已观看视频
默认为false | +| aid | num | 删除的目标记录的avID | 非必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +删除视频`av540580868`的稍后再看记录 + +```shell +curl 'http://api.bilibili.com/x/v2/history/toview/del' \ +--data-urlencode 'aid=540580868' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +删除所有已观看的视频 + +```shell +curl 'http://api.bilibili.com/x/v2/history/toview/del' \ +--data-urlencode 'viewed=true' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 清空稍后再看视频列表 + +> http://api.bilibili.com/x/v2/history/toview/clear + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| csrf | num | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +清空稍后再看视频列表 + +```shell +curl 'http://api.bilibili.com/x/v2/history/toview/clear' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
\ No newline at end of file diff --git a/imgs/class.svg b/imgs/class.svg new file mode 100644 index 0000000..51797d1 --- /dev/null +++ b/imgs/class.svg @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/imgs/collect.svg b/imgs/collect.svg new file mode 100644 index 0000000..b382480 --- /dev/null +++ b/imgs/collect.svg @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/imgs/comment.svg b/imgs/comment.svg new file mode 100644 index 0000000..f5cf6b1 --- /dev/null +++ b/imgs/comment.svg @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/imgs/download.svg b/imgs/download.svg new file mode 100644 index 0000000..dca94f2 --- /dev/null +++ b/imgs/download.svg @@ -0,0 +1,7 @@ + + + diff --git a/imgs/history.png b/imgs/history.png new file mode 100644 index 0000000..dc42b04 Binary files /dev/null and b/imgs/history.png differ diff --git a/imgs/home.svg b/imgs/home.svg new file mode 100644 index 0000000..21b5eb9 --- /dev/null +++ b/imgs/home.svg @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/imgs/bangumi_fav.svg b/imgs/sub.svg similarity index 100% rename from imgs/bangumi_fav.svg rename to imgs/sub.svg diff --git a/imgs/toview.png b/imgs/toview.png new file mode 100644 index 0000000..cd1e0ae Binary files /dev/null and b/imgs/toview.png differ diff --git a/imgs/up_face.jpg b/imgs/up_face.jpg new file mode 100644 index 0000000..26b579c Binary files /dev/null and b/imgs/up_face.jpg differ diff --git a/imgs/zone/ad.svg b/imgs/zone/ad.svg index df3e864..3004bbf 100644 --- a/imgs/zone/ad.svg +++ b/imgs/zone/ad.svg @@ -1 +1,14 @@ - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/imgs/zone/anime.svg b/imgs/zone/anime.svg index b14cde2..fd797d3 100644 --- a/imgs/zone/anime.svg +++ b/imgs/zone/anime.svg @@ -1 +1,16 @@ - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/cinephile.svg b/imgs/zone/cinephile.svg index 3b9edec..cad39f4 100644 --- a/imgs/zone/cinephile.svg +++ b/imgs/zone/cinephile.svg @@ -1 +1,14 @@ - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/imgs/zone/comic.svg b/imgs/zone/comic.svg index d06eb4f..bb78da2 100644 --- a/imgs/zone/comic.svg +++ b/imgs/zone/comic.svg @@ -1 +1,20 @@ - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/dance.svg b/imgs/zone/dance.svg index ab10c54..87a5ad1 100644 --- a/imgs/zone/dance.svg +++ b/imgs/zone/dance.svg @@ -1 +1,10 @@ - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/imgs/zone/digital.svg b/imgs/zone/digital.svg index 1af51ac..56ea8f9 100644 --- a/imgs/zone/digital.svg +++ b/imgs/zone/digital.svg @@ -1 +1,13 @@ - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/documentary.svg b/imgs/zone/documentary.svg index 3045302..fcaf707 100644 --- a/imgs/zone/documentary.svg +++ b/imgs/zone/documentary.svg @@ -1 +1,31 @@ - \ No newline at end of file + + + + + + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/douga.svg b/imgs/zone/douga.svg index 4ed0121..5cf324c 100644 --- a/imgs/zone/douga.svg +++ b/imgs/zone/douga.svg @@ -1 +1,14 @@ - \ No newline at end of file + + + + + + \ No newline at end of file diff --git a/imgs/zone/ent.svg b/imgs/zone/ent.svg index e3fa738..d938420 100644 --- a/imgs/zone/ent.svg +++ b/imgs/zone/ent.svg @@ -1 +1,17 @@ - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/imgs/zone/fashion.svg b/imgs/zone/fashion.svg index a2edcac..cfb6621 100644 --- a/imgs/zone/fashion.svg +++ b/imgs/zone/fashion.svg @@ -1 +1,11 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/imgs/zone/food.svg b/imgs/zone/food.svg new file mode 100644 index 0000000..e554eb5 --- /dev/null +++ b/imgs/zone/food.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/game.svg b/imgs/zone/game.svg index f51a616..59a2188 100644 --- a/imgs/zone/game.svg +++ b/imgs/zone/game.svg @@ -1 +1,9 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/imgs/zone/guochuang.svg b/imgs/zone/guochuang.svg index c88ff7d..a10c3e9 100644 --- a/imgs/zone/guochuang.svg +++ b/imgs/zone/guochuang.svg @@ -1 +1,11 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/imgs/zone/information.svg b/imgs/zone/information.svg new file mode 100644 index 0000000..c33d838 --- /dev/null +++ b/imgs/zone/information.svg @@ -0,0 +1,17 @@ + + + + + + + \ No newline at end of file diff --git a/imgs/zone/kichiku.svg b/imgs/zone/kichiku.svg index 79976ca..2d74f85 100644 --- a/imgs/zone/kichiku.svg +++ b/imgs/zone/kichiku.svg @@ -1 +1,16 @@ - \ No newline at end of file + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/life.svg b/imgs/zone/life.svg index e352afc..ad03a79 100644 --- a/imgs/zone/life.svg +++ b/imgs/zone/life.svg @@ -1 +1,8 @@ - \ No newline at end of file + + + + \ No newline at end of file diff --git a/imgs/zone/movie.svg b/imgs/zone/movie.svg index 0556131..5f691a4 100644 --- a/imgs/zone/movie.svg +++ b/imgs/zone/movie.svg @@ -1 +1,11 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/imgs/zone/music.svg b/imgs/zone/music.svg index a0b7540..408c93c 100644 --- a/imgs/zone/music.svg +++ b/imgs/zone/music.svg @@ -1 +1,11 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/imgs/zone/technology.svg b/imgs/zone/technology.svg index 0a31b9b..8ede0d7 100644 --- a/imgs/zone/technology.svg +++ b/imgs/zone/technology.svg @@ -1 +1,18 @@ - \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/imgs/zone/technology_old.svg b/imgs/zone/technology_old.svg new file mode 100644 index 0000000..4c3795b --- /dev/null +++ b/imgs/zone/technology_old.svg @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/imgs/zone/teleplay.svg b/imgs/zone/teleplay.svg index 41a652b..a6a39af 100644 --- a/imgs/zone/teleplay.svg +++ b/imgs/zone/teleplay.svg @@ -1 +1,11 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/live/info.md b/live/info.md index edd14fd..0ecbd41 100644 --- a/live/info.md +++ b/live/info.md @@ -1,16 +1,16 @@ # 直播间基本信息 -## 用户直播间状态 +## 获取用户对应的直播间状态 > http://api.live.bilibili.com/room/v1/Room/getRoomInfoOld -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -20,29 +20,35 @@ | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ------------- | ------------------------ | -| roomStatus | num | 直播间状态 | 0:无房间
1:有房间 | -| roundStatus | num | 轮播状态 | 0:未轮播
1:轮播 | -| liveStatus | num | 直播状态 | 0:未开播
1:直播中 | -| url | str | 直播间网页url | | -| title | str | 直播间标题 | | -| cover | str | 直播间封面 | | -| online | num | 直播间人气 | 值为上次直播刷新 | -| roomid | num | 直播间ID | | -| broadcast_type | num | 0 | | -| online_hidden | num | 0 | | +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ---------------- | ------------------------ | +| roomStatus | num | 直播间状态 | 0:无房间
1:有房间 | +| roundStatus | num | 轮播状态 | 0:未轮播
1:轮播 | +| liveStatus | num | 直播状态 | 0:未开播
1:直播中 | +| url | str | 直播间网页url | | +| title | str | 直播间标题 | | +| cover | str | 直播间封面 | | +| online | num | 直播间人气 | 值为上次直播刷新 | +| roomid | num | 直播间ID(短号) | | +| broadcast_type | num | 0 | | +| online_hidden | num | 0 | | **示例:** 查询用户`UID=322892`的直播间信息 -http://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=322892 +```shell +curl -G 'http://api.live.bilibili.com/room/v1/Room/getRoomInfoOld' \ +--data-urlencode 'mid=322892' +``` + +
+查看响应示例: ```json { @@ -64,3 +70,89 @@ http://api.live.bilibili.com/room/v1/Room/getRoomInfoOld?mid=322892 } ``` +
+ +## 获取房间页初始化信息 + +> http://api.live.bilibili.com/room/v1/Room/room_init + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| id | num | 目标直播间号(短号) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
60004:直播间不存在 | +| msg | str | 错误信息 | 默认为ok | +| message | str | 错误信息 | 默认为ok | +| data | obj | 信息本体 | | + + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ------------- | ------------------------ | +| room_id | num | 直播间真实ID | | +| short_id | num | 直播间ID(短号) | | +| uid | num | 主播用户UID | | +| need_p2p | num | 是否p2p | | +| is_hidden | bool | 是否隐藏 | | +| is_locked | bool | 是否锁定 | | +| is_portrait | bool | 是否竖屏 | | +| live_status | num | 直播状态 | 0:未开播
1:直播中 | +| hidden_till | num | 隐藏时间戳 | | +| lock_till | num | 锁定时间戳 | | +| encrypted | bool | 是否加密 | | +| pwd_verified | bool | 加密房间是否通过密码验证 | `encrypted`=true时才有意义 | +| live_time | num | 开播时长 | | +| room_shield | num | 未知 | | +| is_sp | num | 是否为特殊直播间 | 0:普通直播间
1:付费直播间 | +| special_type | num | 特殊直播间标志 | 0:普通直播间
1:付费直播间
2:拜年祭直播间 | + +**示例:** + +查询直播间`ID=76`的直播间信息 + +```shell +curl -G 'http://api.live.bilibili.com/room/v1/Room/room_init' \ +--data-urlencode 'id=76' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "msg":"ok", + "message":"ok", + "data":{ + "room_id":14073662, + "short_id":76, + "uid":50333369, + "need_p2p":0, + "is_hidden":false, + "is_locked":false, + "is_portrait":false, + "live_status":1, + "hidden_till":0, + "lock_till":0, + "encrypted":false, + "pwd_verified":false, + "live_time":1602151186, + "room_shield":1, + "is_sp":0, + "special_type":0 + } +} +``` + +
diff --git a/live/live_area.md b/live/live_area.md new file mode 100644 index 0000000..115b21f --- /dev/null +++ b/live/live_area.md @@ -0,0 +1,210 @@ +# 直播间分区 + +## 获取全部直播间分区列表 + +> http://api.live.bilibili.com/room/v1/Area/getList + +*请求方式:GET* + +直播分区共有两级,分别是父分区和子分区 + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | ---------- | ------------- | +| code | num | 返回值 | 0:成功 | +| msg | str | 错误信息 | 默认为success | +| message | str | 错误信息 | 默认为success | +| data | array | 父分区列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| 0 | obj | 父分区1 | | +| n | obj | 父分区(n+1) | | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------- | ---- | +| id | num | 父分区ID | | +| name | name | 父分区名 | | +| list | list | 子分区列表 | | + +`data`数组中的对象中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| 0 | obj | 子分区1 | | +| n | obj | 子分区(n+1) | | +| …… | obj | …… | …… | + +`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ----------------- | ---------------- | +| id | str | 子分区ID | | +| parent_id | str | 父分区ID | | +| old_area_id | str | 旧分区ID | | +| name | str | 子分区名 | | +| act_id | str | 0 | **作用尚不明确** | +| pk_status | str | ??? | **作用尚不明确** | +| hot_status | num | 是否为热门分区 | 0:否
1:是 | +| lock_status | str | 0 | **作用尚不明确** | +| pic | str | 子分区标志图片url | | +| parent_name | str | 父分区名 | | +| area_type | num | | | + +**示例:** + +如想在`网游`父分区下的`英雄联盟`分区开播,则查到子分区ID为`86` + +```shell +curl 'http://api.live.bilibili.com/room/v1/Area/getList' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "message": "success", + "data": [ + { + "id": 2, + "name": "网游", + "list": [ + { + "id": "86", + "parent_id": "2", + "old_area_id": "4", + "name": "英雄联盟", + "act_id": "0", + "pk_status": "0", + "hot_status": 1, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/dcfb14f14ec83e503147a262e7607858b05d7ac0.png", + "parent_name": "网游", + "area_type": 0 + }, + { + "id": "252", + "parent_id": "2", + "old_area_id": "3", + "name": "逃离塔科夫", + "act_id": "0", + "pk_status": "0", + "hot_status": 1, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/762a7de3dd5fe8165d1d55b232484a017941592f.png", + "parent_name": "网游", + "area_type": 0 + }, + { + "id": "80", + "parent_id": "2", + "old_area_id": "1", + "name": "绝地求生", + "act_id": "0", + "pk_status": "0", + "hot_status": 1, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/43ca83fdcd10505eaeef1b76cf8ce642a53b94da.png", + "parent_name": "网游", + "area_type": 0 + }, + ………… + ] + }, + { + "id": 3, + "name": "手游", + "list": [ + { + "id": "35", + "parent_id": "3", + "old_area_id": "12", + "name": "王者荣耀", + "act_id": "0", + "pk_status": "0", + "hot_status": 1, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/0fefa924760b2dd492a12dddafe179bfa1216918.png", + "parent_name": "手游", + "area_type": 0 + }, + ………… + ] + }, + { + "id": 6, + "name": "单机", + "list": [ + { + "id": "236", + "parent_id": "6", + "old_area_id": "1", + "name": "主机游戏", + "act_id": "0", + "pk_status": "0", + "hot_status": 1, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/edb636ee59f902e3134a2790545045bddd70978e.png", + "parent_name": "单机", + "area_type": 0 + }, + ………… + ] + }, + { + "id": 1, + "name": "娱乐", + "list": [ + { + "id": "21", + "parent_id": "1", + "old_area_id": "10", + "name": "视频唱见", + "act_id": "0", + "pk_status": "1", + "hot_status": 1, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/72b93ddafdf63c9f0b626ad546847a3c03c92b6f.png", + "cate_id": "12", + "parent_name": "娱乐", + "area_type": 0 + }, + ………… + ] + }, + { + "id": 5, + "name": "电台", + "list": [ + { + "id": "190", + "parent_id": "5", + "old_area_id": "10", + "name": "唱见电台", + "act_id": "0", + "pk_status": "0", + "hot_status": 0, + "lock_status": "0", + "pic": "http://i0.hdslb.com/bfs/vc/d22d7fafbf9b24e2bc3ce1df5eb9f006e6035e5d.png", + "parent_name": "电台", + "area_type": 0 + }, + ………… + ] + } + ] +} +``` + +
diff --git a/live/live_stream.md b/live/live_stream.md new file mode 100644 index 0000000..907845f --- /dev/null +++ b/live/live_stream.md @@ -0,0 +1,160 @@ +# 直播间视频流 + +## 根据真实直播间号获取直播视频流 + +> http://api.live.bilibili.com/room/v1/Room/playUrl + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| cid | num | 目标真实直播间号 | 必要 | 直播间的`room_id`(非短号) | +| platform | str | 直播流格式 | 非必要 | h5:hls方式
web:http-flv方式
默认为http-flv方式 | +| quality | num | 画质 | 非必要 | `qn`与`quality`任选其一
2:流畅
3:高清
4:原画 | +| qn | str | 画质 | 非必要 | `qn`与`quality`任选其一
80:流畅
150:高清
400:蓝光
10000:原画 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:参数错误
19002003:房间信息不存在 | +| message | str | 错误信息 | 默认为0 | +| ttl | str | 1 | | +| data | obj | 信息本体 | | + + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ------------- | ------------------------ | +| current_quality | num | 当前画质代码`qn` | | +| accept_quality | array | 可选画质数参数 | | +| current_qn | num | 当前画质代码`quality` | | +| quality_description | array | 可选画质参数`quality` | | +| durl | array | 直播流url组 | | + +`accept_quality`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | str | `qn`画质代码1 | | +| n | str | `qn`画质代码(n+1) | | +| …… | str | …… | …… | + +`quality_description`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 画质代码1 | | +| n | obj | 画质代码(n+1) | | +| …… | obj | …… | …… | + +`quality_description`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------------- | ---- | +| qn | num | 画质代码 | | +| desc | str | 该代码对应的画质名称 | | + +`durl`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| 0 | obj | 主线服务器 | | +| n | obj | 备线n服务器 | | +| …… | obj | …… | …… | + +`durl`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ------------- | ------------------------ | +| url | str | 直播流url | flv或m3u8格式
**注:带有转义** | +| length | num | 0 | 作用尚不明确 | +| order | num | 服务器线路序号 | | +| stream_type | num | 0 | 作用尚不明确 | +| p2p_type | num | 0 | 作用尚不明确 | + +**示例:** + +查询直播间`CID=14073662`的直播间信息 + +```shell +curl -G 'http://api.live.bilibili.com/room/v1/Room/playUrl' \ +--data-urlencode 'id=14073662' \ +--data-urlencode 'qn=10000' \ +--data-urlencode 'platform=web' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "current_quality": 3, + "accept_quality": [ + "4", + "3", + "2" + ], + "current_qn": 3, + "quality_description": [ + { + "qn": 4, + "desc": "原画" + }, + { + "qn": 3, + "desc": "高清" + }, + { + "qn": 2, + "desc": "流畅" + } + ], + "durl": [ + { + "url": "https://d1--cn-gotcha04.bilivideo.com/live-bvc/601131/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=20e4ac695fbdd1d11d5dac4f93caa783&ptype=0&src=9&sl=1&order=1", + "length": 0, + "order": 1, + "stream_type": 0, + "p2p_type": 0 + }, + { + "url": "https://d1--cn-gotcha01.bilivideo.com/live-bvc/757951/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha01&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=9deea67bb9e9c1f0fa3886a34aa09473&ptype=0&src=9&sl=1&order=2", + "length": 0, + "order": 2, + "stream_type": 0, + "p2p_type": 0 + }, + { + "url": "https://d1--cn-gotcha04.bilivideo.com/live-bvc/982058/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=8753b270960034660184d975d86c0161&ptype=0&src=9&sl=1&order=3", + "length": 0, + "order": 3, + "stream_type": 0, + "p2p_type": 0 + }, + { + "url": "https://d1--cn-gotcha04.bilivideo.com/live-bvc/139554/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=cf93474e923c9ba8288c45d954f81045&ptype=0&src=9&sl=1&order=4", + "length": 0, + "order": 4, + "stream_type": 0, + "p2p_type": 0 + } + ] + } +} +``` + +
+ +## 播放直播流媒体 + +以上获得到`url`字段中的值为直播流url,例如`https://d1--cn-gotcha04.bilivideo.com/live-bvc/601131/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=20e4ac695fbdd1d11d5dac4f93caa783&ptype=0&src=9&sl=1&order=1`导入播放器即可播放直播 \ No newline at end of file diff --git a/live/manage.md b/live/manage.md new file mode 100644 index 0000000..3e1d79f --- /dev/null +++ b/live/manage.md @@ -0,0 +1,262 @@ +# 直播间管理 + +**本页所有操作均需登录(Cookie)** + +## 更新直播间标题 + +> http://api.live.bilibili.com/room/v1/Room/update + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------- | ---- | ------------------------ | ------ | -------------------- | +| room_id | num | 直播间ID | 必要 | 必须为自己的直播间ID | +| title | str | 直播间标题 | 必要 | 最大20字符 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | ------------------------------------------------------ | +| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误 | +| msg | str | 错误信息 | 默认为ok | +| message | str | 错误信息 | 默认为ok | +| data | array | 空 | | + +**示例:** + +修改直播间`10352053`标题为`测试` + +```shell +curl 'http://api.live.bilibili.com/room/v1/Room/update' \ +--data-urlencode 'room_id=10352053' \ +--data-urlencode 'title=测试' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;bili_jct=xx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "ok", + "message": "ok", + "data": [] +} +``` + +
+ +## 开始直播 + +> http://api.live.bilibili.com/room/v1/Room/startLive + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同 + +开播时必须有分区选择,开播后返回推流地址 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ------------------------ | ------ | ----------------------------------- | +| room_id | num | 直播间ID | 必要 | 必须为自己的直播间ID | +| area_v2 | num | 直播分区ID(子分区ID) | 必要 | 详见[直播分区](live_area.md) | +| platform | str | 直播平台 | 必要 | web端:
bililink:android_link | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
**(其他错误码有待补充)** | +| msg | str | 错误信息 | 默认为空 | +| message | str | 错误信息 | 默认为空 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | ---------------- | ---------------------- | +| change | num | 是否改变状态 | 0:未改变
1:改变 | +| status | str | LIVE | | +| room_type | num | 0 | 作用尚不明确 | +| rtmp | obj | RTMP推流地址信息 | | +| protocols | array | ??? | 作用尚不明确 | +| try_time | str | ??? | 作用尚不明确 | +| live_key | str | ??? | 作用尚不明确 | +| notice | obj | ??? | 作用尚不明确 | + +`data`中的`rtmp`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------------------------------- | ------------ | +| addr | str | RTMP推流(发送)地址 | **重要** | +| code | str | RTMP推流参数(密钥) | **重要** | +| new_link | str | 获取CDN推流ip地址重定向信息的url | 没啥用 | +| provider | str | ??? | 作用尚不明确 | + +`data`中的`protocols`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | ------------ | +| 0 | obj | ??? | 作用尚不明确 | + +`data`中的`protocols`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------------------------------- | ------------ | +| protocol | str | rtmp | 作用尚不明确 | +| addr | str | RTMP推流(发送)地址 | | +| code | str | RTMP推流参数(密钥) | | +| new_link | str | 获取CDN推流ip地址重定向信息的url | | +| provider | str | txy | 作用尚不明确 | + +`data`中的`notice`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---- | ------------ | +| type | num | 1 | 作用尚不明确 | +| status | num | 0 | 作用尚不明确 | +| title | str | 空 | 作用尚不明确 | +| msg | str | 空 | 作用尚不明确 | +| button_text | str | 空 | 作用尚不明确 | +| button_url | str | 空 | 作用尚不明确 | + +**示例:** + +以`27`作为分区ID开播直播间`10352053` + +其中`"data"."rtmp"."addr"`为推流地址 + +`"data"."rtmp"."code"`为推流参数 + +```shell +curl 'http://api.live.bilibili.com/room/v1/Room/startLive' \ +--data-urlencode 'room_id=10352053' \ +--data-urlencode 'area_v2=27' \ +--data-urlencode 'platform=pc' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;bili_jct=xx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "", + "message": "", + "data": { + "change": 1, + "status": "LIVE", + "room_type": 0, + "rtmp": { + "addr": "rtmp://txy.live-send.acg.tv/live-txy/", + "code": "?streamname=live_293793435_1567354&key=***", + "new_link": "http://tcdns.myqcloud.com:8086/bilibili_redirect?up_rtmp=txy.live-send.acg.tv%2Flive-txy%2F%3Fstreamname%3Dlive_293793435_1567354%26key%3D***", + "provider": "txy" + }, + "protocols": [ + { + "protocol": "rtmp", + "addr": "rtmp://txy.live-send.acg.tv/live-txy/", + "code": "?streamname=live_293793435_1567354&key=***", + "new_link": "http://tcdns.myqcloud.com:8086/bilibili_redirect?up_rtmp=txy.live-send.acg.tv%2Flive-txy%2F%3Fstreamname%3Dlive_293793435_1567354%26key%3D***", + "provider": "txy" + } + ], + "try_time": "0000-00-00 00:00:00", + "live_key": "l:one:live:record:10352053:1589344980", + "notice": { + "type": 1, + "status": 0, + "title": "", + "msg": "", + "button_text": "", + "button_url": "" + } + } +} +``` + +
+ +## 关闭直播 + +> http://api.live.bilibili.com/room/v1/Room/stopLive + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------- | ---- | ------------------------ | ------ | -------------------- | +| room_id | num | 直播间ID | 必要 | 必须为自己的直播间ID | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
-400:没有权限
**(其他错误码有待补充)** | +| msg | str | 错误信息 | 默认为空 | +| message | str | 错误信息 | 默认为空 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------ | ---------------------- | +| change | num | 是否改变状态 | 0:未改变
1:改变 | +| status | str | PREPARING | | + +**示例:** + +关闭直播间`10352053`的直播 + +```shell +curl 'http://api.live.bilibili.com/room/v1/Room/stopLive' \ +--data-urlencode 'room_id=10352053' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;bili_jct=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "", + "message": "", + "data": { + "change": 1, + "status": "PREPARING" + } +} +``` + +
diff --git a/live/message_stream.md b/live/message_stream.md new file mode 100644 index 0000000..f04d7ba --- /dev/null +++ b/live/message_stream.md @@ -0,0 +1,168 @@ +# 直播间信息流 + + + +## 数据包格式 + +数据包为websocket,格式为头部数据+正文数据 + +操作流程: + +发送认证包->接收认证包回应->接收普通包&(每30秒发送心跳包->接收心跳回应) + +头部格式: + +| 偏移量 | 长度 | 类型 | 含义 | +| ------ | ---- | ------ | ------------------------------------------------------------ | +| 0 | 4 | uint32 | 封包总大小(头部大小+正文大小) | +| 4 | 2 | uint16 | 头部大小(一般为0x0010,16字节) | +| 6 | 2 | uint16 | 协议版本:
0普通包正文不使用压缩
1心跳及认证包正文不使用压缩
2普通包正文使用zlib压缩 | +| 8 | 4 | uint32 | 操作码(封包类型) | +| 12 | 4 | uint32 | sequence,可以取常数1 | + +操作码: + +| 代码 | 含义 | +| ---- | -------------------- | +| 2 | 心跳包 | +| 3 | 心跳包回复(人气值) | +| 5 | 普通包(命令) | +| 7 | 认证包 | +| 8 | 认证包回复 | + +### 认证包 + +方式:(上行) + +连接成功后5秒内发送,否则强制断开连接 + +正文: + +json格式 + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------------ | -------------- | +| uid | num | 用户UID | 不可为0 | +| roomid | num | 加入房间的ID | | +| protover | num | 协议版本 | 现在是2 | +| platform | str | 平台标识 | 可为"web" | +| clientver | str | 客户端版本 | 现在是"1.10.3" | +| type | num | 必须为2 | | +| key | str | 认证秘钥 | | + +示例: + +``` +00000000 00 00 00 f0 00 10 00 01 00 00 00 07 00 00 00 01 |................| +00000010 7b 22 75 69 64 22 3a 32 39 33 37 39 33 34 33 35 |{"uid":293793435| +00000020 2c 22 72 6f 6f 6d 69 64 22 3a 32 31 36 38 36 32 |,"roomid":216862| +00000030 33 37 2c 22 70 72 6f 74 6f 76 65 72 22 3a 32 2c |37,"protover":2,| +00000040 22 70 6c 61 74 66 6f 72 6d 22 3a 22 77 65 62 22 |"platform":"web"| +00000050 2c 22 63 6c 69 65 6e 74 76 65 72 22 3a 22 31 2e |,"clientver":"1.| +00000060 31 30 2e 33 22 2c 22 74 79 70 65 22 3a 32 2c 22 |10.3","type":2,"| +00000070 6b 65 79 22 3a 22 43 6f 4b 68 5f 61 49 46 42 6c |key":"CoKh_aIFBl| +00000080 51 32 4c 57 77 64 79 4e 43 6b 2d 69 5f 42 76 72 |Q2LWwdyNCk-i_Bvr| +00000090 64 72 72 55 4d 32 78 57 6c 74 62 35 77 6b 54 50 |drrUM2xWltb5wkTP| +000000a0 4e 72 44 55 49 2d 73 46 32 41 56 56 4f 44 78 43 |NrDUI-sF2AVVODxC| +000000b0 52 42 39 69 64 76 74 34 46 32 4d 50 31 45 4a 6c |RB9idvt4F2MP1EJl| +000000c0 4d 68 49 57 6b 31 5a 69 73 67 6e 32 67 67 66 6c |MhIWk1Zisgn2ggfl| +000000d0 68 72 65 6e 4f 4b 65 39 7a 56 65 6d 78 35 7a 5f |hrenOKe9zVemx5z_| +000000e0 5a 4d 43 61 55 77 4c 31 65 70 6d 7a 5a 53 22 7d |ZMCaUwL1epmzZS"}| +``` + + + +### 认证包回复 + +方式:(下行) + +在认证包发送成功后就会收到 + +json格式 + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | --------- | +| code | num | 返回值 | 0认证成功 | + +示例: + +``` +00000000 00 00 00 1a 00 10 00 01 00 00 00 08 00 00 00 01 |................| +00000010 7b 22 63 6f 64 65 22 3a 30 7d |{"code":0}| +``` + + + +### 心跳包 + +方式:(上行) + +30秒左右发送一次,否则60秒后会被强制断开连接 + +正文: + +特定字符 + +[object Object] + +示例: + +``` +00000000 00 00 00 1f 00 10 00 01 00 00 00 02 00 00 00 01 |................| +00000010 5b 6f 62 6a 65 63 74 20 4f 62 6a 65 63 74 5d |[object Object]| +``` + +### 心跳回应(人气值) + +方式:(下行) + +在心跳包发送成功后就会收到 + +正文: + +uint32整数,代表房间当前的人气值 + +示例: + +``` +00000000 00 00 00 14 00 10 00 01 00 00 00 03 00 00 00 01 |................| +00000010 00 00 14 83 |....| +``` + +可见房间内人气值为5251人 + +### 普通包 + +方式:(下行) + +#### 弹幕 + + + +#### 送礼 + + + +#### 欢迎加入房间 + + + +#### 欢迎房管加入房间 + + + +#### 系统消息 + + + +#### 主播准备中 + + + +#### 直播开始 + + + +#### 直播状态更新 + + diff --git a/login/QR.md b/login/QR.md deleted file mode 100644 index 68c844c..0000000 --- a/login/QR.md +++ /dev/null @@ -1,170 +0,0 @@ -# 二维码登录 - -流程&逻辑: - -1. 获取`二维码内容url`以及`秘钥`,以`二维码内容url`生成二维码,等待手机客户端扫描 -2. 以`秘钥`作为参数进行POST -3. if "code"==true goto 6 else goto 4(是否已经确认) -4. if "data"==-4 goto 2 else goto 5(是否已经扫描) -5. if "data"==-5 goto 3 && 提示`已扫描`else goto 1&提示`二维码超时或错误`(秘钥是否有效) -6. 成功后会自动配置cookie 如需登录游戏分站则访问`data`.`url`中的url - - - - - -## 申请二维码URL及扫码秘钥 - -> http://passport.bilibili.com/qrcode/getLoginUrl - -*方式:GET* - -秘钥超时为180秒 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ------------ | -| code | num | 返回值 | 0:成功 | -| status | bool | true | 作用尚不明确 | -| ts | num | 请求时间 | 时间戳 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ----- | ------------- | ---------- | -| url | str | 二维码内容url | 恒为87字符 | -| oauthKey | str | 扫码登录秘钥 | 恒为32字符 | - -**示例:** - -用申请到的`data`.`url`中的值生成二维码,等待手机客户端扫描,并将`data`.`oauthKey`保存等待使用 - -http://passport.bilibili.com/qrcode/getLoginUrl -```json -{ - "code": 0, - "status": true, - "ts": 1583314311, - "data": { - "url": "https://passport.bilibili.com/qrcode/h5/login?oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e", - "oauthKey": "c3bd5286a2b40a822f5f60e9bf3f602e" - } -} -``` - - - -## 验证二维码登录 - -> http://passport.bilibili.com/qrcode/getLoginInfo - -*方式:POST* - -秘钥超时为180秒 - -验证正确时会进行设置以下cookie项: - -`sid` `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------ | ------ | ----------------------------- | -| oauthKey | data | 扫码登录秘钥 | 必要 | | -| gourl | data | 跳转url | 非必要 | 默认为http://www.bilibili.com | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---------------------------- | ----------------------------------------- | ------------------------------------------------------------ | -| status | bool | 扫码是否成功 | true:成功
false:未成功 | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 正确无 | -| ts | num | 扫码时间 | 错误无 | -| data | 正确时:obj
错误时:num | 正确时:游戏分站url
错误时:错误代码 | 错误时:
-1:秘钥错误
-2:秘钥超时
-4:未扫描
-5:未确认 | - -data 对象: -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| url | str | 游戏分站登录url | | - -**示例:** - -curl -d "oauthKey=xxx" "http://passport.bilibili.com/qrcode/getLoginInfo" - -当秘钥正确时但未扫描时`status`为`false`,`data`为num值`-4` - -```json -{ - "status":false, - "data":-4, - "message":"Can't scan~" -} -``` - -扫描成功但手机端未确认时`status`为`false`,`data`为num值`-5` - -```json -{ - "status":false, - "data":-5, - "message":"Can't confirm~" -} -``` - -扫描成功手机端确认登录后,`status`为`true`,`data`为对象,并向浏览器写入cookie - -```json -{ - "code": 0, - "status": true, - "ts": 1583315474, - "data": { - "url": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=***&SESSDATA=***&bili_jct=***&gourl=http%3A%2F%2Fwww.bilibili.com" - } -} -``` - -回复头部抓包信息: - -可明显看见设置了几个cookie(本人手打已测试成功登录B站) - -```http -HTTP/1.1 200 OK -Date: Wed, 04 Mar 2020 10:36:37 GMT -Content-Type: application/json;charset=UTF-8 -Transfer-Encoding: chunked -Connection: keep-alive -Server: Apache-Coyote/1.1 -Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Thu, 04-Mar-2021 10:36:37 GMT; Path=/ -Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ -Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ -Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/; HttpOnly -Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ -Expires: Wed, 04 Mar 2020 10:36:36 GMT -Cache-Control: no-cache -X-Cache-Webcdn: BYPASS from ks-sxhz-dx-w-01 -``` - -**游戏分站登录url与cookie的数据对应(也可用于不方便设置cookie的场合提取使用)** - -https://passport.biligame.com/crossDomain? - -DedeUserID=(登录UID)& - -DedeUserID__ckMd5=(DedeUserID__ckMd5)& - -Expires=(过期时间 秒)& - -SESSDATA=(登录token)& - -bili_jct=(登录csrf)& - -gourl=(跳转网址 默认为主页) - diff --git a/login/exit.md b/login/exit.md new file mode 100644 index 0000000..2bf7c34 --- /dev/null +++ b/login/exit.md @@ -0,0 +1,64 @@ +# 退出账号登录 + +## 退出登录(web端) + +> http://passport.bilibili.com/login?act=exit + +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) + +验证登录成功后会进行删除以下cookie项: + + `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` + +并在服务器注销该登录Token(SESSDATA),该Token即失效 + +**回复:** + +响应为一个用于跳转html页面 + +**示例:** + +```shell +curl 'http://passport.bilibili.com/login?act=exit' \ +-b 'SESSDATA=xxx;DedeUserID__ckMd5=xxx;SESSDATA=xxx;bili_jct=xxx' +``` + +**响应头部抓包信息:** + +使用set-cookie删除了以上cookie项 + +
+查看响应示例: + +```http +HTTP/1.1 200 OK +Date: Mon, 27 Jul 2020 13:42:21 GMT +Content-Type: text/html;charset=UTF-8 +Transfer-Encoding: chunked +Connection: keep-alive +Server: Apache-Coyote/1.1 +Set-Cookie: SESSDATA=""; Domain=.bilibili.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly +Set-Cookie: SESSDATA__ckMd5=""; Domain=.bilibili.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: SESSDATA=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; HttpOnly +Set-Cookie: SESSDATA__ckMd5=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: DedeUserID=""; Domain=.bilibili.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: DedeUserID__ckMd5=""; Domain=.bilibili.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: DedeUserID=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: DedeUserID__ckMd5=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: bili_jct=""; Domain=.bilibili.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: bili_jct__ckMd5=""; Domain=.bilibili.com; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: bili_jct=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: bili_jct__ckMd5=""; Domain=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/ +Set-Cookie: JSESSIONID=F857ED4084F8824BFDB4CD97EEC3D758; Path=/; HttpOnly +Content-Language: zh-CN +X-TKID: 1595857341658620367002 +Expires: Mon, 27 Jul 2020 13:42:20 GMT +Cache-Control: no-cache +X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 +Content-Encoding: gzip + +``` + +
\ No newline at end of file diff --git a/login/login_action/QR.md b/login/login_action/QR.md new file mode 100644 index 0000000..35eda1b --- /dev/null +++ b/login/login_action/QR.md @@ -0,0 +1,351 @@ +# 二维码登录 + +web端流程&逻辑: + +1. 获取`二维码内容url`以及`密钥`,以`二维码内容url`生成二维码,等待手机客户端扫描 +2. 以`密钥`作为参数进行POST +3. if `code` == `true` goto `6` else goto 4(是否已经确认) +4. if `data` == `-4` goto `2` else goto 5(是否已经扫描) +5. if `data` == `-5` goto `3` & 提示`已扫描` else goto `1`&提示`二维码超时或错误`(密钥是否有效) +6. 成功后会自动配置cookie 如需登录游戏分站则访问`data`.`url`中的url + +TV端流程&逻辑: + +1. 获取`二维码内容url`以及`密钥`,以`二维码内容url`生成二维码,等待手机客户端扫描 +2. 以`密钥`作为参数进行POST +3. if `code` == `0` 提示`扫码成功`并存储`access_key`于`refersh_key` else goto `4` +4. if `code` == `86039` 提示`未扫描`&goto `2` else goto `5` +5. if `code` == `86038` 提示`二维码超时或错误`&goto `1` + + + + + +## 申请二维码URL及扫码密钥(web端) + +> http://passport.bilibili.com/qrcode/getLoginUrl + +*请求方式:GET* + +密钥超时为180秒 + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | ------------ | +| code | num | 返回值 | 0:成功 | +| status | bool | true | 作用尚不明确 | +| ts | num | 请求时间 | 时间戳 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------- | ---------- | +| url | str | 二维码内容url | 恒为87字符 | +| oauthKey | str | 扫码登录秘钥 | 恒为32字符 | + +**示例:** + +用申请到的`data`.`url`中的值生成二维码,等待手机客户端扫描,并将`data`.`oauthKey`保存等待使用 + +```shell +curl 'http://passport.bilibili.com/qrcode/getLoginUrl' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "status": true, + "ts": 1583314311, + "data": { + "url": "https://passport.bilibili.com/qrcode/h5/login?oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e", + "oauthKey": "c3bd5286a2b40a822f5f60e9bf3f602e" + } +} +``` + +
+ +## 使用扫码登录(web端) + +> http://passport.bilibili.com/qrcode/getLoginInfo + +*请求方式:POST* + +密钥超时为180秒 + +验证登录成功后会进行设置以下cookie项: + + `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ------------ | ------ | ----------------------------- | +| oauthKey | str | 扫码登录秘钥 | 必要 | | +| gourl | str | 跳转url | 非必要 | 默认为http://www.bilibili.com | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---------------------------- | ----------------------------------------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 正确无 | +| ts | num | 扫码时间 | 错误无 | +| status | bool | 扫码是否成功 | true:成功
false:未成功 | +| data | 正确时:obj
错误时:num | 正确时:游戏分站url
错误时:错误代码 | 未成功时:
-1:密钥错误
-2:密钥超时
-4:未扫描
-5:未确认 | + +data 对象: +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---- | +| url | str | 游戏分站跨域登录url | | + +**示例:** + +使用扫描秘钥`c3bd5286a2b40a822f5f60e9bf3f602e`登录 + +```shell +curl "http://passport.bilibili.com/qrcode/getLoginInfo"\ +--data-urlencode 'oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e' \ +-c 'cookie.txt' +``` + +当密钥正确时但未扫描时`status`为`false`,`data`为num值`-4` + +
+查看响应示例: + +```json +{ + "status":false, + "data":-4, + "message":"Can't scan~" +} +``` + +
+ +扫描成功但手机端未确认时`status`为`false`,`data`为num值`-5` + +
+查看响应示例: + +```json +{ + "status":false, + "data":-5, + "message":"Can't confirm~" +} +``` + +
+ +扫描成功手机端确认登录后,`status`为`true`,`data`为对象,并向浏览器写入cookie + +
+查看响应示例: + +```json +{ + "code": 0, + "status": true, + "ts": 1583315474, + "data": { + "url": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=***&SESSDATA=***&bili_jct=***&gourl=http%3A%2F%2Fwww.bilibili.com" + } +} +``` + +
+ +**响应头部抓包信息:** + +可明显看见设置了几个cookie(填入浏览器即可成功登录) + +
+查看响应示例: + +```http +HTTP/1.1 200 OK +Date: Wed, 04 Mar 2020 10:36:37 GMT +Content-Type: application/json;charset=UTF-8 +Transfer-Encoding: chunked +Connection: keep-alive +Server: Apache-Coyote/1.1 +Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Thu, 04-Mar-2021 10:36:37 GMT; Path=/ +Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ +Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ +Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/; HttpOnly +Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ +Expires: Wed, 04 Mar 2020 10:36:36 GMT +Cache-Control: no-cache +X-Cache-Webcdn: BYPASS from ks-sxhz-dx-w-01 +``` + +
+ +**游戏分站跨域登录url:** + +游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用 + +https://passport.biligame.com/crossDomain? + +DedeUserID=(登录UID)& + +DedeUserID__ckMd5=(登录UID MD5值)& + +Expires=(过期时间 秒)& + +SESSDATA=(登录token)& + +bili_jct=(csrf)& + +gourl=(跳转网址 默认为主页) + +## 申请二维码URL及扫码密钥(TV端) + +> http://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code + +*请求方式:POST* + +鉴权方式:appkey + +密钥超时为180秒 + +本接口可申请用于APP方式登录的`access_key` + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| -------- | ---- | ---------- | ----------- | ------------------------ | +| appkey | str | APP密钥 | APP方式必要 | 仅可用`4409e2ce8ffd12b8` | +| local_id | str | TV端ID | TV端必要 | 可为0 | +| ts | num | 当前时间戳 | APP方式必要 | | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---------------------------------------------------- | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------- | ---------- | +| url | str | 二维码内容url | 恒为87字符 | +| oauthKey | str | 扫码登录秘钥 | 恒为32字符 | + +**示例:** + +```shell +curl 'http://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code' \ +--data-urlencode 'appkey=4409e2ce8ffd12b8' \ +--data-urlencode 'local_id=0' \ +--data-urlencode 'ts=0' \ +--data-urlencode 'sign=e134154ed6add881d28fbdf68653cd9c' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "url": "https://passport.bilibili.com/x/passport-tv-login/h5/qrcode/auth?auth_code=0eeb635a64526709d70cb4c854a3b001", + "auth_code": "0eeb635a64526709d70cb4c854a3b001" + } +} +``` + +
+ +## 使用扫码登录(TV端) + +> http://passport.bilibili.com/x/passport-tv-login/qrcode/poll + +*请求方式:POST* + +鉴权方式:appkey + +密钥超时为180秒 + +验证登录成功后会返回可用于APP方式登录的`access_key`以及`refresh_token` + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | ---------- | ----------- | ------------------------ | +| appkey | str | APP密钥 | APP方式必要 | 仅可用`4409e2ce8ffd12b8` | +| auth_code | str | 扫码秘钥 | 必要 | | +| local_id | str | TV端ID | TV端必要 | 可为0 | +| ts | num | 当前时间戳 | APP方式必要 | | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误
86038:二维码已失效
86039:二维码尚未确认 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 有效时:obj
无效时:null | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------ | -------------------- | +| mid | num | 登录用户UID | | +| access_token | str | APP登录Token | | +| refresh_token | str | APP刷新Token | | +| expires_in | num | 有效时间 | 单位为秒 一般为30天 | + +**示例:** + +使用扫描秘钥`6214464b3025541abf6f654cf7569a01`进行验证登录 + +```shell +curl 'http://passport.bilibili.com/x/passport-tv-login/qrcode/poll' \ +--data-urlencode 'appkey=4409e2ce8ffd12b8' \ +--data-urlencode 'auth_code=6214464b3025541abf6f654cf7569a01' \ +--data-urlencode 'local_id=0' \ +--data-urlencode 'ts=0' \ +--data-urlencode 'sign=87de3d0fee7c3f4facd244537238914e' \ +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "mid": 293793435, + "access_token": "***", + "refresh_token": "***", + "expires_in": 2592000 + } +} +``` + +
\ No newline at end of file diff --git a/login/login_action/SMS.md b/login/login_action/SMS.md new file mode 100644 index 0000000..ad42b51 --- /dev/null +++ b/login/login_action/SMS.md @@ -0,0 +1,240 @@ +# 短信登录 + +web端短信登录流程: + +1. [完成人机验证](readme.md) +2. 发送短信,使用国际地区代码`cid`+手机号码`tel`+登录密钥`key`+极验`challenge`+验证结果`validate`+验证结果`seccode` +3. 提交短信验证码以验证登录操作,使用国际地区代码`cid`+手机号码`tel`+短信验证码`smsCode` + +## 获取国际地区代码(web端) + +> http://passport.bilibili.com/web/generic/country/list + +*请求方式:GET* + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------- | +| code | num | 返回值 | 0:成功 | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ----- | -------------- | ---- | +| common | array | 常用国家或地区 | | +| others | array | 其他国家或地区 | | + +`data`中的`common`和`others`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 国家或地区1 | | +| n | obj | 国家或地区(n+1) | | +| …… | obj | …… | …… | + +`common`和`others`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------------- | ---- | +| id | num | 国际代码值 | | +| cname | str | 国家或地区名 | | +| country_id | str | 国家或地区区号 | | + +**示例:** + +```shell +curl 'http://passport.bilibili.com/web/generic/country/list' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "common": [ + { + "id": 1, + "cname": "中国大陆", + "country_id": "86" + }, + { + "id": 5, + "cname": "中国香港特别行政区", + "country_id": "852" + }, + ………… + ], + "others": [ + { + "id": 22, + "cname": "阿富汗", + "country_id": "93" + }, + { + "id": 20, + "cname": "阿尔巴尼亚", + "country_id": "355" + }, + ………… + ] + } +} +``` + +
+ +## 发送短信验证码(web端) + +> http://passport.bilibili.com/web/sms/general/v2/send + +*请求方式:POST* + +短信发送CD时间为60s + +短信验证码超时时间为5min + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --- | --- | --- | --- | --- | +| tel | num | 手机号码 | 必要 | | +| cid | num | 国际地区代码 | 必要 | | +| type | num | 21 | 必要 | 必须为`21` | +| captchaType | num | 6 | 必要 | 必须为`6` | +| key | str | 登录秘钥 | 必要 | 从B站API获取 | +| challenge | str | 极验challenge | 必要 | 从B站API获取 | +| validate | str | 极验结果 | 必要 | 从极验获取 | +| seccode | str | 极验结果+`|jordan` | 必要 | 从极验获取 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | --------- | +| code | num | 返回值 | 0:成功
-400:请求错误
1002:手机号格式错误
1015:短信发送次数已达上限
1003:验证码已经发送
2400:登录秘钥错误
2406:验证极验服务出错 | +| message | str | 错误信息 | 成功为"验证码短信已下发" | + +**示例:** + +例如手机号为`13888888888`,国际ID为`1(中国大陆)`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行发送短信验证码操作 + +```shell +curl 'http://passport.bilibili.com/web/sms/general/v2/send' \ +--data-urlencode 'tel=13888888888' \ +--data-urlencode 'cid=1' \ +--data-urlencode 'type=21' \ +--data-urlencode 'captchaType=6' \ +--data-urlencode 'key=aabbccdd' \ +--data-urlencode 'challenge=2333' \ +--data-urlencode 'validate=666666' \ +--data-urlencode 'seccode=666666|jordan' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "验证码短信已下发" +} +``` + +
+ +## 使用短信验证码登录(web端) + +> http://passport.bilibili.com/web/login/rapid + +*请求方式:POST* + +验证登录成功后会进行设置以下cookie项: + + `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --- | --- | --- | --- | --- | +| cid | num | 国际地区代码 | 必要 | | +| tel | num | 手机号码 | 必要 | | +| smsCode | num | 短信验证码 | 必要 | 超时时间为5min | +| goUrl | str | 跳转url | 非必要 | 默认为https://www.bilibili.com | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| code | num | 返回值 | 0:成功
-400:请求错误
1006:请输入正确的短信验证码
1007:短信验证码已过期 | +| message | str | 错误信息 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --- | --- | --- | --- | +| is_new | bool | false | 未知,估计是未注册时自动注册新用户 | +| status | num | 0 | 未知,可能0就是成功吧 | +| url | str | 跳转url | 默认为https://www.bilibili.com | + +**示例:** + +使用手机号`13888888888`,短信验证码为`123456`,进行验证登录操作 + +```shell +curl 'https://passport.bilibili.com/web/login/rapid' +--data-urlencode 'cid=1' \ +--data-urlencode 'tel=13888888888' \ +--data-urlencode 'smsCode=123456' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "is_new": false, + "status": 0, + "url": "https://space.bilibili.com" + } +} +``` + +
+ +**响应头部抓包信息:** + +可明显看见设置了几个cookie(填入浏览器即可成功登录) + +
+查看响应示例: + +```http +HTTP/1.1 200 OK +Date: Mon, 13 Jul 2020 09:57:33 GMT +Content-Type: application/json;charset=UTF-8 +Content-Length: 78 +Connection: keep-alive +Server: Apache-Coyote/1.1 +Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ +Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ +Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/; HttpOnly +Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ +Expires: Mon, 13 Jul 2020 09:57:32 GMT +Cache-Control: no-cache +X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 + +``` + +
\ No newline at end of file diff --git a/login/login_action/password.md b/login/login_action/password.md new file mode 100644 index 0000000..e32d16f --- /dev/null +++ b/login/login_action/password.md @@ -0,0 +1,256 @@ +# 账号密码登录 + +web端密码登录流程: + +1. [完成人机验证](readme.md) +2. 加密登录密码,获取RSA公钥`key`与盐值`hash`**(盐值有效时间为20s)**,并连接盐值+密码字串(注意先后顺序),使用RSA公钥加密,得到base64格式密文 +4. 登录操作验证,使用账号`username`**(手机号或邮箱)**+密文密码`password`+登录密钥`key`+极验`challenge`+验证结果`validate`+验证结果`seccode` + +## 获取加密公钥及密码盐值1(web端) + +> http://passport.bilibili.com/login?act=getkey + +*请求方式:GET* + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ---------------- | +| hash | str | 密码校验盐值 | 有效时间为20s | +| key | str | RSA公钥 | **公钥为固定值** | + +**示例:** + +```shell +curl 'http://passport.bilibili.com/login?act=getkey' +``` + +
+查看响应示例: + +```json +{ + "hash":"07c6501690c1af85", + "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n" +} +``` + +
+ +## 获取加密公钥及密码盐值2(APP端) + +> http://passport.bilibili.com/api/oauth2/getKey + +*请求方式:POST* + +鉴权方式:appkey + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------- | ----------- | ---- | +| appkey | str | APP密钥 | APP方式必要 | | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ---------------- | +| hash | str | 验证hash盐值 | 有效时间为20s | +| key | str | RSA公钥 | **公钥为固定值** | + +**示例:** + +```shell +curl 'http://passport.bilibili.com/api/oauth2/getKey' \ +--data-urlencode 'appkey=1d8b6e7d45233436' \ +--data-urlencode 'sign=17004c193f688f0b5665c1068e733aff' +``` + +
+查看响应示例: + +```json +{ + "hash":"07c6501690c1af85", + "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n" +} +``` + +
+ +## 登录密码的加密 + +**注:RSA公钥一般为固定值** + +``` +-----BEGIN PUBLIC KEY----- +MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n +6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx +/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+ +Xl69GV6klzgxW6d2xQIDAQAB +-----END PUBLIC KEY----- +``` + +例如登录密码为: + +``` +BiShi22332323 +``` + +获取到的盐值为: + +``` +8e0db05c46f4052c +``` + +那么按照`盐值`+`密码字串`连接二者得到: + +``` +8e0db05c46f4052cBiShi22332323 +``` + +用公钥进行RSA加密得到base64字串: + +因为公钥的**无法解密性**和盐值的**超时机制**,故无法本地验证加密结果 + +``` +YgpjxAQ22pKa9socHIKPCZX0a/NS6Ng9Zzy+rp16b0LJGT6RHw2ERs3+ijCpG96PKTY1Baavwf0xgotmNvpl25l1KO5y4AjcqeWTzNTSVn6ejonBXGmBMybHHYawJ0aMPn1eDGpKrbI91mrF+h2x+fsnnpuZ1gheiYGzFmtshUc= +``` + +## 使用账号密码登录(web端) + +> http://passport.bilibili.com/web/login/v2 + +*请求方式:POST* + +验证登录成功后会进行设置以下cookie项: + +`sid` `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ---------------- | ------ | ---------------- | +| captchaType | num | 6 | 必要 | 必须为`6` | +| username | str | 用户登录账号 | 必要 | 手机号或邮箱地址 | +| password | str | 加密后的带盐密码 | 必要 | base64格式 | +| keep | bool | true | 必要 | 必须为`true` | +| key | str | 登录秘钥 | 必要 | 从B站API获取 | +| challenge | str | 极验challenge | 必要 | 从B站API获取 | +| validate | str | 极验结果 | 必要 | 从极验获取 | +| seccode | str | 极验结果 | 必要 | 从极验获取 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-629:账号或密码错误
-653:用户名或密码不能为空
-662:提交超时,请重新提交
-2001:缺少必要的的参数
-2100:需验证手机号或邮箱
2400:登录秘钥错误
2406:验证极验服务出错 | +| ts | num | 当前时间戳 | 成功时无此项 | +| message | str | 错误信息 | 默认为0 | +| data | obj | 数据本体 | 成功时有此项 | + +`data`对象: + +**未登录时:** + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------------- | ---- | +| redirectUrl | str | 游戏分站跨域登录url | | + +**已登录时:** + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ------------------------ | ---- | +| isLogin | bool | true | | +| goUrl | str | https://www.bilibili.com | | + +**需验证手机号或邮箱时** +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------------------ | ---------------- | +| mid | num | 用户UID | | +| tel | str | 绑定的手机号 | 星号隐藏部分信息 | +| email | str | 绑定的邮箱 | 星号隐藏部分信息 | +| sorce | num | 0 | **作用尚不明确** | +| keeptime | num | 1 | **作用尚不明确** | +| goUrl | str | https://www.bilibili.com | | + +**示例:** + +例如用户账号为`12345678900`,加密后的密码为`xxx`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行验证登录操作 + +```shell +curl 'https://passport.bilibili.com/web/login/v2' \ +--data-urlencode 'captchaType=6' \ +--data-urlencode 'username=12345678900' \ +--data-urlencode 'password=xxx' \ +--data-urlencode 'keep=true' \ +--data-urlencode 'key=aabbccdd' \ +--data-urlencode 'challenge=2333' \ +--data-urlencode 'validate=666666' \ +--data-urlencode 'seccode=666666|jordan' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "redirectUrl": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=15551000&SESSDATA=***&bili_jct=***&gourl=https%3A%2F%2Fwww.bilibili.com" + } +} +``` + +
+ +**响应头部抓包信息:** + +可明显看见设置了几个cookie(填入浏览器即可成功登录) + +
+查看响应示例: + +```http +HTTP/1.1 200 OK +Date: Mon, 13 Jul 2020 06:56:00 GMT +Content-Type: application/json;charset=UTF-8 +Content-Length: 273 +Connection: keep-alive +Server: Apache-Coyote/1.1 +Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ +Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ +Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/; HttpOnly +Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ +Content-Security-Policy-Report-Only: default-src 'self' data: *.bilibili.com *.hdslb.com; style-src 'self' 'unsafe-inline' *.hdslb.com static.geetest.com; img-src 'self' data: blob: *.bilibili.com *.hdslb.com http://*.hdslb.com static.geetest.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.bilibili.com *.hdslb.com api.geetest.com static.geetest.com; object-src 'self' *.hdslb.com; media-src 'self' *.acgvideo.com http://*.acgvideo.com *.ksyungslb.com; connect-src 'self' data: wss://*.bilibili.com:* *.bilibili.com *.hdslb.com *.biliapi.net *.biliapi.com; frame-ancestors 'self' *.bilibili.com *.biligame.com; report-uri https://security.bilibili.com/csp_report +Expires: Mon, 13 Jul 2020 06:55:59 GMT +Cache-Control: no-cache +X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 +``` + +
+ +**游戏分站跨域登录url:** + +游戏分站跨域登录url与cookie的值一一对应,可用于不方便设置cookie的场合提取使用 + +https://passport.biligame.com/crossDomain? + +DedeUserID=(登录UID)& + +DedeUserID__ckMd5=(登录UID MD5值)& + +Expires=(过期时间 秒)& + +SESSDATA=(登录token)& + +bili_jct=(csrf)& + +gourl=(跳转网址 默认为主页) \ No newline at end of file diff --git a/login/login_action/readme.md b/login/login_action/readme.md new file mode 100644 index 0000000..9c55d43 --- /dev/null +++ b/login/login_action/readme.md @@ -0,0 +1,93 @@ +# 登录操作 + +人机验证方式登录包含**账号密码登录**与手**机短信验证码登录** + +**注:扫码登录**不需要进行**人机验证**,故**不使用**以下接口 + +## 扫码登录 + +- [扫码登录](QR.md) + +## 验证登录 + +人机验证流程: + +1. 请求验证码参数,得到登录密钥`key`与极验ID`gt`和极验KEY`challenge` +2. 进行滑动or点击验证 +3. 返回验证结果`validate`与`seccode`,进行短信或密码登录 + + +### 申请验证码参数 + +> http://passport.bilibili.com/web/captcha/combine?plat=6 + +*请求方式:GET* + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | --------- | +| code | num | 返回值 | 0:成功 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | ------ | -------- | +| result | obj | 套了个娃 | | +| type | num | 1 | **作用尚不明确** | + +`result`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ----- | ------ | -------- | +| success | num | 1 | **作用尚不明确** | +| gt | str | 极验ID | 一般为固定值 | +| challenge | str | 极验KEY | 由B站后端产生用于人机验证 | +| key | str | 登录秘钥 | 与人机验证无关,与登录接口有关,但与极验KEY对应 | + +**示例:** + +```shell +curl 'https://passport.bilibili.com/web/captcha/combine?plat=6' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "result": { + "success": 1, + "gt": "bd111e81eda1cbb9f54425aafc0908ac", + "challenge": "2903a8eb967a1d990444cb23ea42f417", + "key": "76fb59fbd83a4d9d816162c5156fc964" + }, + "type": 1 + } +} +``` + +
+ +### 进行验证 + +本文档为Bilibili文档,验证码为geetest极验提供,故不提供api + +附: [手动验证器](https://kuresaru.github.io/geetest-validator/) +[及其源码](https://github.com/kuresaru/geetest-validator) + +1. 打开手动验证器,在1、2分别填入上面API返回的`gt`和`challenge` +2. 点击按钮3,稍等加载验证码,点击按钮4进行验证 +3. 验证完成后,点击按钮5生成验证结果 +4. 使用最开始获得到的`key`、`challenge`和刚获得到的`validate`、`seccode`继续之后的登录操作 + + +### 继续登录 + +- [短信登录](SMS.md) +- [密码登录](password.md) diff --git a/login/login_info.md b/login/login_info.md index 4ac231b..7df4a18 100644 --- a/login/login_info.md +++ b/login/login_info.md @@ -1,14 +1,16 @@ # 登录基本信息 -## 登录用户信息1(完整) +**本页所有操作均需登录(Cookie或APP)** -> http://api.bilibili.com/nav (带有转义) +## 登录用户信息1(web端) + +> http://api.bilibili.com/nav(带有转义) > -> http://api.bilibili.com/x/web-interface/nav (原始数据) +> http://api.bilibili.com/x/web-interface/nav(原始数据) -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:仅可Cookie(SESSDATA) **json回复:** @@ -18,36 +20,39 @@ | ------- | ---- | -------- | ----------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ---------------- | ------------------------------- | -| isLogin | bool | 是否已登录 | | -| email_verified | num | 是否验证邮箱地址 | 0:未验证
1:已验证 | -| face | str | 登录用户头像url | | -| level_info | obj | 等级信息 | | -| mid | num | 登录UID | | -| mobile_verified | num | 是否验证手机号 | 0:未验证
1:已验证 | -| money | num | 拥有硬币数 | | -| moral | num | 当前节操值 | 上限70 | -| official | obj | 认证信息 | | -| officialVerify | obj | 认证信息2 | | -| pendant | obj | 挂件信息 | | -| scores | num | 0 | 作用尚不明确 | -| uname | str | 登录用户昵称 | | -| vipDueDate | num | 大会员到期时间 | 毫秒 时间戳 | -| vipStatus | num | 会员开通状态 | 0:无
1:有 | -| vipType | num | 大会员类型 | 0:无
1:月度
2:年度 | -| vip_pay_type | num | 会员开通状态 | 0:无
1:有 | -| vip_theme_type | num | 0 | 作用尚不明确 | -| wallet | obj | B币信息 | | -| has_shop | bool | false | 作用尚不明确 | -| shop_url | str | 空 | 作用尚不明确 | -| allowance_count | num | 0 | 作用尚不明确 | -| answer_status | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| -------------------- | ---- | ---------------- | ------------------------------- | +| isLogin | bool | 是否已登录 | false:未登录
true:已登录 | +| email_verified | num | 是否验证邮箱地址 | 0:未验证
1:已验证 | +| face | str | 用户头像url | | +| level_info | obj | 等级信息 | | +| mid | num | 用户UID | | +| mobile_verified | num | 是否验证手机号 | 0:未验证
1:已验证 | +| money | num | 拥有硬币数 | | +| moral | num | 当前节操值 | 上限70 | +| official | obj | 认证信息 | | +| officialVerify | obj | 认证信息2 | | +| pendant | obj | 头像框信息 | | +| scores | num | 0 | **作用尚不明确** | +| uname | str | 用户昵称 | | +| vipDueDate | num | 大会员到期时间 | 毫秒 时间戳 | +| vipStatus | num | 会员开通状态 | 0:无
1:有 | +| vipType | num | 大会员类型 | 0:无
1:月度
2:年度 | +| vip_pay_type | num | 会员开通状态 | 0:无
1:有 | +| vip_theme_type | num | 0 | **作用尚不明确** | +| vip_label | obj | 大会员信息 | | +| vip_avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | +| vip_nickname_color | str | 会员昵称颜色 | 颜色码 | +| wallet | obj | B币信息 | | +| has_shop | bool | false | **作用尚不明确** | +| shop_url | str | 空 | **作用尚不明确** | +| allowance_count | num | 0 | **作用尚不明确** | +| answer_status | num | 0 | **作用尚不明确** | `data`中的`level_info`对象: @@ -56,7 +61,7 @@ | current_level | num | 当前等级 | | | current_min | num | 当前等级经验最低值 | | | current_exp | num | 当前经验 | | -| next_exp | num | 升级下一等级需达到的经验 | | +| next_exp | 小于6级时:num
6级时:str | 升级下一等级需达到的经验 |当用户等级为Lv6时,值为`--`,代表无穷大 | `data`中的`official`对象: @@ -76,95 +81,117 @@ `data`中的`pendant`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ------------ | -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ----------- | ---------------- | +| pid | num | 挂件id | | +| name | str | 挂件名称 | | +| image | str | 挂件图片url | | +| expire | num | 0 | **作用尚不明确** | + +`data`中的`vip_label`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------ | ---------------- | +| path | str | 空 | **作用尚不明确** | +| text | str | 会员类型文字 | | +| label_theme | str | 会员类型 | | `data`中的`wallet`对象: -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------- | ------------ | -| mid | num | 登录用户UID | | -| bcoin_balance | num | 拥有B币数 | | -| coupon_balance | num | 每月奖励B币数 | | -| coupon_due_time | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | ------------- | ---------------- | +| mid | num | 登录用户UID | | +| bcoin_balance | num | 拥有B币数 | | +| coupon_balance | num | 每月奖励B币数 | | +| coupon_due_time | num | 0 | **作用尚不明确** | **示例:** -查询当前登录用户的信息 +```shell +curl 'http://api.bilibili.com/nav' \ +-b 'SESSDATA=xxx' +``` -http://api.bilibili.com/x/web-interface/nav +
+查看响应示例: ```json { - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "isLogin": true, - "email_verified": 1, - "face": "http://i1.hdslb.com/bfs/face/480e2e98513aaeb65d2f2c76dbae750c4de722e9.jpg", - "level_info": { - "current_level": 5, - "current_min": 10800, - "current_exp": 14270, - "next_exp": 28800 - }, - "mid": 293793435, - "mobile_verified": 1, - "money": 2.5, - "moral": 70, - "official": { - "role": 0, - "title": "", - "desc": "", - "type": -1 - }, - "officialVerify": { - "type": -1, - "desc": "" - }, - "pendant": { - "pid": 1492, - "name": "2020拜年祭·典藏", - "image": "http://i0.hdslb.com/bfs/face/6550f53324c330f201a528e70ef305cb10ac2c01.png", - "expire": 0 - }, - "scores": 0, - "uname": "社会易姐QwQ", - "vipDueDate": 1612454400000, - "vipStatus": 1, - "vipType": 2, - "vip_pay_type": 1, - "vip_theme_type": 0, - "wallet": { - "mid": 293793435, - "bcoin_balance": 10, - "coupon_balance": 5, - "coupon_due_time": 0 - }, - "has_shop": false, - "shop_url": "", - "allowance_count": 0, - "answer_status": 0 - } + "code":0, + "message":"0", + "ttl":1, + "data":{ + "isLogin":true, + "email_verified":1, + "face":"http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", + "level_info":{ + "current_level":5, + "current_min":10800, + "current_exp":17065, + "next_exp":28800 + }, + "mid":293793435, + "mobile_verified":1, + "money":33.4, + "moral":70, + "official":{ + "role":0, + "title":"", + "desc":"", + "type":-1 + }, + "officialVerify":{ + "type":-1, + "desc":"" + }, + "pendant":{ + "pid":0, + "name":"", + "image":"", + "expire":0, + "image_enhance":"" + }, + "scores":0, + "uname":"社会易姐QwQ", + "vipDueDate":1612454400000, + "vipStatus":1, + "vipType":2, + "vip_pay_type":1, + "vip_theme_type":0, + "vip_label":{ + "path":"", + "text":"年度大会员", + "label_theme":"annual_vip" + }, + "vip_avatar_subscript":1, + "vip_nickname_color":"#FB7299", + "wallet":{ + "mid":293793435, + "bcoin_balance":8, + "coupon_balance":5, + "coupon_due_time":0 + }, + "has_shop":false, + "shop_url":"", + "allowance_count":0, + "answer_status":0 + } } ``` +
+## 登录用户信息2(web端)(仅部分) -## 登录用户信息2(仅部分 带有转义) +> http://account.bilibili.com/home/userInfo -> http://account.bilibili.com/home/userInfo (带有转义) +*请求方式:GET* -*方式:GET* +认证方式:仅可Cookie(SESSDATA) -需要登录(SESSDATA) +鉴权方式:Cookie中`DedeUserID`存在且不为0 -需要验证DedeUserID存在且不为0 +带有转义 **json回复:** @@ -185,6 +212,7 @@ http://api.bilibili.com/x/web-interface/nav | coins | num | 拥有硬币数 | | | face | str | 登录用户头像url | | | nameplate_current | null | ??? | 作用尚不明确 | +| nameplate_current | str | 登录用户勋章url | | | pendant_current | str | 登录用户头像框url | | | uname | str | 登录用户昵称 | | | userStatus | str | 登录用户状态 | | @@ -204,9 +232,13 @@ http://api.bilibili.com/x/web-interface/nav **示例:** -查询当前登录用户的信息 +```shell +curl 'http://account.bilibili.com/home/userInfo' \ +-b 'SESSDATA=xxx;DedeUserID=1;' +``` -http://account.bilibili.com/home/userInfo +
+查看响应示例: ```json { @@ -234,15 +266,176 @@ http://account.bilibili.com/home/userInfo } ``` +
+ +## 登录用户信息(APP端) + +> http://app.bilibili.com/x/v2/account/myinfo + +*请求方式:GET* + +认证方式:仅可APP + +鉴权方式:appkey + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| appkey | str | APP密钥 | APP方式必要 | | +| ts | num | 当前时间戳 | APP方式必要 | | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ---------------- | ----------------------------- | +| mid | num | 用户UID | | +| name | str | 用户昵称 | | +| sign | str | 用户签名 | | +| coins | num | 拥有硬币数 | | +| birthday | str | 用户生日 | YYYY-MM-DD | +| face | str | 用户头像url | | +| sex | num | 用户性别 | 0:私密
1:男
2:女 | +| level | num | 用户等级 | 0-6 | +| rank | num | 1000 | **作用尚不明确** | +| silence | num | 用户是否被封禁 | 0:正常
1:封禁 | +| vip | obj | 会员信息 | | +| email_status | num | 是否验证邮箱地址 | 0:未验证
1:已验证 | +| tel_status | num | 是否验证手机号 | 0:未验证
1:已验证 | +| official | obj | 认证信息 | | +| identification | num | 1 | **作用尚不明确** | +| invite | obj | | | +| is_tourist | num | 0 | **作用尚不明确** | +| pin_prompting | num | 0 | **作用尚不明确** | + +`data`中的`vip`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------------- | ---- | ---------------- | ------------------------------- | +| type | num | 大会员类型 | 0:无
1:月度
2:年度 | +| status | num | 会员开通状态 | 0:无
1:有 | +| due_date | num | 大会员到期时间 | 毫秒 时间戳 | +| vip_pay_type | num | 会员开通状态 | 0:无
1:有 | +| theme_type | num | 会员开通状态 | 0:无
1:有 | +| label | obj | 大会员信息 | | +| avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | +| nickname_color | str | 会员昵称颜色 | 颜色码 | + +`vip`中的`label`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------ | ---------------- | +| path | str | 空 | **作用尚不明确** | +| text | str | 会员类型文字 | | +| label_theme | str | 会员类型 | | + +`data`中的`official`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------- | ----------------------------------------------- | +| role | num | 认证类型 | 0:无
1 2:个人认证
3 4 5 6:机构认证 | +| title | str | 认证信息 | 无为空 | +| desc | str | 认证备注 | 无为空 | +| type | num | 认证备注 | 无为空 | + +`data`中的`invite`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ---- | ---------------- | +| invite_remind | num | 1 | **作用尚不明确** | +| display | bool | true | **作用尚不明确** | + +**示例:** + +```shell +curl -G 'http://app.bilibili.com/x/v2/account/myinfo' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'appkey=4409e2ce8ffd12b8' \ +--data-urlencode 'ts=0' \ +--data-urlencode 'sign=b8fb8480049c525994be6507a97ae0b6' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "mid": 293793435, + "name": "社会易姐QwQ", + "sign": "高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265", + "coins": 33.4, + "birthday": "2002-03-05", + "face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", + "sex": 1, + "level": 5, + "rank": 10000, + "silence": 0, + "vip": { + "type": 2, + "status": 1, + "due_date": 1612454400000, + "vip_pay_type": 1, + "theme_type": 0, + "label": { + "path": "", + "text": "年度大会员", + "label_theme": "annual_vip" + }, + "avatar_subscript": 1, + "nickname_color": "#FB7299" + }, + "email_status": 1, + "tel_status": 1, + "official": { + "role": 0, + "title": "", + "desc": "", + "type": -1 + }, + "identification": 1, + "invite": { + "invite_remind": 1, + "display": true + }, + "is_tourist": 0, + "pin_prompting": 0 + } +} +``` + +
-## 登录用户状态数 +## 登录用户状态数(双端) > http://api.bilibili.com/x/web-interface/nav/stat -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | **json回复:** @@ -252,7 +445,7 @@ http://account.bilibili.com/home/userInfo | ------- | ---- | -------- | ----------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | | 字段 | 类型 | 内容 | 备注 | @@ -263,21 +456,101 @@ http://account.bilibili.com/home/userInfo **示例:** -查询当前登录用户的状态数 +当前登录用户的状态数为粉丝596,关注754,发送的动态252 -粉丝数为365,关注数为695,发送的动态数为162 +Cookie方式: -http://api.bilibili.com/x/web-interface/nav/stat +```shell +curl 'http://api.bilibili.com/x/web-interface/nav/stat' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "following": 695, - "follower": 365, - "dynamic_count": 162 - } + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "following": 754, + "follower": 596, + "dynamic_count": 252 + } } ``` + +
+ +APP方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/nav/stat' \ +--data-urlencode 'access_key=d907f51122c59599d580ade2315af971' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "following": 754, + "follower": 596, + "dynamic_count": 252 + } +} +``` + +
+ +## 获取硬币数 + +> http://account.bilibili.com/site/getCoin + +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| status | bool | true | 作用尚不明确 | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | -------------------------------------- | ---------- | ---- | +| money | 硬币为正数时:num
硬币为0时:null | 当前硬币数 | | + +**示例:** + +```shell +curl 'http://account.bilibili.com/site/getCoin' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + + +```json +{ + "code": 0, + "status": true, + "data": { + "money": 42.4 + } +} +``` + +
\ No newline at end of file diff --git a/login/login_notice.md b/login/login_notice.md new file mode 100644 index 0000000..71ba3ee --- /dev/null +++ b/login/login_notice.md @@ -0,0 +1,67 @@ +# 登录记录 + +## 查询登录记录 + +> http://api.bilibili.com/x/safecenter/login_notice + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------- | ------ | -------------------------------------------- | +| mid | num | 用户UID | 必要 | | +| buvid | str | 设备ID | 非必要 | 为操作登录接口时Cookie中的`buvid3`可为任意值 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ----------- | -------------------------- | +| mid | num | 登录用户UID | | +| device_name | str | 登录设备 | 依靠操作登录接口时的UA决定 | +| login_type | str | 登录方式 | 根据登录接口决定 | +| login_time | str | 登录时间 | YYYY-MM-DD hh:mm:ss | +| location | str | 登录位置 | 依靠ip决定 | +| ip | str | 登录ip | 部分用`*`打码 | + +**示例:** + +查询用户`293793435`设备ID为`fuck_chenrui`的登录记录 + +```shell +curl -G 'http://api.bilibili.com/x/safecenter/login_notice' \ +--data-urlencode 'mid=293793435' \ +--data-urlencode 'buvid=fuck_chenrui' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "mid": 293793435, + "device_name": "Chrome浏览器", + "login_type": "扫码登录", + "login_time": "2020-10-02 22:42:38", + "location": "中国陕西渭南", + "ip": "36.40.***.**" + } +} +``` + +
\ No newline at end of file diff --git a/login/member_center.md b/login/member_center.md new file mode 100644 index 0000000..fa8e03d --- /dev/null +++ b/login/member_center.md @@ -0,0 +1,657 @@ +# 个人中心 + +## 获取我的信息 + +> http://api.bilibili.com/x/member/web/account + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | -------------- | --------------------------------------- | +| mid | num | 我的UID | | +| uname | str | 我的昵称 | | +| userid | str | 我的用户名 | | +| sign | str | 我的签名 | | +| birthday | str | 我的生日 | YYYY-MM-DD | +| sex | str | 我的性别 | 男 女 保密 | +| nick_free | bool | 是否未设置昵称 | false:设置过昵称
true:未设置昵称 | +| rank | str | 我的会员等级 | | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/member/web/account' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1, + "data":{ + "mid":293793435, + "uname":"社会易姐QwQ", + "userid":"bili_84675323391", + "sign":"高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265", + "birthday":"2002-03-05", + "sex":"男", + "nick_free":false, + "rank":"正式会员" + } +} +``` + +
+ +## 查询每日奖励状态 + +> http://api.bilibili.com/x/member/web/exp/reward + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------------------- | ------------------------------------------------------------ | +| login | bool | 每日登录 | false:未完成
true:已完成
完成奖励5经验 | +| watch | bool | 每日观看 | false:未完成
true:已完成
完成奖励5经验 | +| coins | num | 每日投币所奖励的经验 | 上限为50
注:该值更新存在延迟
[另外一个专门API](#查询每日投币获得经验数) | +| share | bool | 每日分享 | false:未完成
true:已完成
完成奖励5经验 | +| email | bool | 绑定邮箱 | false:未完成
true:已完成 | +| tel | bool | 绑定手机号 | false:未完成
true:已完成
首次完成完成奖励100经验 | +| safe_question | bool | 设置密保问题 | false:未完成
true:已完成 | +| identify_card | bool | 实名认证 | false:未完成
true:已完成
首次完成奖励50经验 | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/member/web/exp/reward' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "login": true, + "watch": true, + "coins": 30, + "share": true, + "email": true, + "tel": true, + "safe_question": true, + "identify_card": true + } +} +``` + +
+ +## 查询每日投币获得经验数 + +>http://www.bilibili.com/plus/account/exp.php + +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`存在且不为0 + +该接口实时更新,未发现延迟 + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------------------- | ----------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为0 | +| number | num | 每日投币所奖励的经验 | 上限为50
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "number": 20 +} +``` + + + +## 查询大会员状态 + +> http://api.bilibili.com/x/vip/web/user/info + +*请求方式:GET* + +认证方式:仅可Cookie(SESSDATA) + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ---------------- | ------------------------------------------------------------ | +| mid | num | 我的UID | | +| vip_type | num | 大会员类型 | 0:无
1:月度
2:年度 | +| vip_status | num | 大会员状态 | 1:正常
2:由于IP地址更换过于频繁,服务被冻结
3:你的大会员账号风险过高,大会员功能已被锁定 | +| vip_due_date | num | 大会员到期时间 | 时间戳 毫秒 | +| vip_pay_type | num | 是否已购买大会员 | 0:未购买
1:已购买 | +| theme_type | num | 0 | 作用尚不明确 | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/vip/web/user/info' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "mid": 293793435, + "vip_type": 2, + "vip_status": 1, + "vip_due_date": 1612454400000, + "vip_pay_type": 1, + "theme_type": 0 + } +} +``` + +
+ +## 查询账号安全情况 + +> http://passport.bilibili.com/web/site/user/info + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +鉴权方式:如用Cookie方式认证时Cookie中`DedeUserID`存在且不为0 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ---------------- | ---- | +| account_info | obj | 账号绑定信息 | | +| account_safe | obj | 密码安全信息 | | +| account_sns | obj | 互联登录绑定信息 | | +| account_other | obj | | | + +`data`中的`account_info`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | -------------- | ------------------------------- | +| hide_tel | str | 绑定的手机号 | 星号隐藏部分信息 | +| hide_mail | str | 绑定的邮箱 | 星号隐藏部分信息 | +| bind_tel | bool | 是否绑定手机号 | false:未绑定
true:已绑定 | +| bind_mail | bool | 是否绑定邮箱 | false:未绑定
true:已绑定 | +| tel_verify | bool | 是否验证手机号 | false:未验证
true:已验证 | +| mail_verify | bool | 是否验证邮箱 | false:未验证
true:已验证 | +| unneeded_check | bool | 是否未设置密码 | false:已设置
true:未设置 | + +`data`中的`account_safe`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ---------------- | ----------------------------- | +| Score | num | 当前密码强度 | 0-100 | +| pwd_level | num | 当前密码强度等级 | 1:弱
2:中
3:强 | +| security | bool | 当前密码是否安全 | false:不安全
true:安全 | + +`data`中的`account_sns`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | ------------------------ | +| weibo_bind | num | 是否绑定微博 | 0:未绑定
1:已绑定 | +| qq_bind | num | 是否绑定qq | 0:未绑定
1:已绑定 | + +`data`中的`account_other`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ----- | ------------ | +| skipVerify | bool | false | 作用尚不明确 | + +**示例:** + +```shell +curl 'http://passport.bilibili.com/web/site/user/info' \ +-b 'SESSDATA=xxx;DedeUserID=1;' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "account_info": { + "hide_tel": "153*****056", + "hide_mail": "144****@qq.com", + "bind_tel": true, + "bind_mail": true, + "tel_verify": true, + "mail_verify": true, + "unneeded_check": false + }, + "account_safe": { + "Score": 90, + "pwd_level": 3, + "security": true + }, + "account_sns": { + "weibo_bind": 1, + "qq_bind": 1 + }, + "account_other": { + "skipVerify": false + } + } +} +``` + +
+ +## 查询账号实名认证状态 + +> http://api.bilibili.com/x/member/realname/status + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------ | ------------------------ | +| status | num | 实名认证状态 | 0:未认证
1:已认证 | + +**示例:** + +当前状态为已认证 + +```shell +curl 'http://api.bilibili.com/x/member/realname/status' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "status": 1 + } +} +``` + +
+ +## 查询实名认证详细信息 + +> http://api.bilibili.com/x/member/realname/apply/status + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------------ | ------------------------------------------------------------ | +| status | num | 认证状态 | 1:已认证
3:未认证 | +| remark | str | 驳回信息 | 默认为空 | +| realname | str | 实名姓名 | 星号隐藏完全信息 | +| card | str | 证件号码 | 星号隐藏部分信息 | +| card_type | num | 证件类型代码 | 0:身份证
2:港澳居民来往内地通行证
3:台湾居民来往大陆通行证
4:护照(中国签发)
5:外国人永久居留证
6:其他国家或地区身份证明 | + +```shell +curl 'http://api.bilibili.com/x/member/realname/apply/status' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "status": 1, + "remark": "", + "realname": "***", + "card": "6****************7", + "card_type": 0 + } +} +``` + +
+ +## 查询硬币变化情况 + +> http://api.bilibili.com/x/member/web/coin/log + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +仅能查询最近一周的情况 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ------ | ---------------- | ---- | +| list | array | 变化记录条目列表 | | +| count | num | 变化记录条目数 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | obj | 变化记录条目1 | | +| n | obj | 变化记录条目(n+1) | | +| …… | obj | …… | …… | + +`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | ---------------------- | +| time | str | 变化时间 | YYYY-MM-DD HH:MM:SS | +| delta | num | 变化量 | 正值为收入,负值为支出 | +| reason | str | 变化说明 | | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/member/web/coin/log' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "list": [ + { + "time": "2020-05-19 23:58:29", + "delta": -1, + "reason": "给视频 BV1j5411s7M8 打赏" + }, + { + "time": "2020-05-19 16:02:53", + "delta": -1, + "reason": "给视频 BV1Ht4y117A1 打赏" + }, + { + "time": "2020-05-19 15:38:42", + "delta": 0.1, + "reason": "给视频 BV1nb411C7aa 打赏" + }, + { + "time": "2020-05-19 02:19:20", + "delta": 1, + "reason": "登录奖励" + }, + { + "time": "2020-05-18 22:34:04", + "delta": -1, + "reason": "给视频 BV1Bp4y1Q7uw 打赏" + }, + { + "time": "2020-05-18 22:33:59", + "delta": -1, + "reason": "给视频 BV1j5411s7M8 打赏" + }, + { + "time": "2020-05-18 02:45:53", + "delta": 1, + "reason": "登录奖励" + }, + { + "time": "2020-05-17 03:02:38", + "delta": 1, + "reason": "登录奖励" + }, + { + "time": "2020-05-16 01:57:02", + "delta": 1, + "reason": "登录奖励" + }, + { + "time": "2020-05-15 11:10:35", + "delta": 0.2, + "reason": "给视频 BV1Yt41137T6 打赏" + }, + { + "time": "2020-05-15 00:34:27", + "delta": 1, + "reason": "登录奖励" + }, + { + "time": "2020-05-14 02:11:37", + "delta": 1, + "reason": "登录奖励" + }, + { + "time": "2020-05-13 02:12:28", + "delta": 1, + "reason": "登录奖励" + } + ], + "count": 13 + } +} +``` + +
+ +## 修改个人签名 + +> http://api.bilibili.com/x/member/web/sign/update + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +修改签名不会立即生效,会等待审核队列稍后生效 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| user_sign | str | 要设置的签名内容 | 非必要 | 删除签名留空或省去即可
最多支持70个字符 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
40015:签名包含敏感词
40021:签名不能包含表情图片
40022:签名过长 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +更新个人标签为`高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265` + +```shell +curl 'http://api.bilibili.com/x/member/web/sign/update' \ +--data-urlencode 'user_sign=高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,粉丝群:1136462265' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1 +} +``` + +
+ + diff --git a/login/private_msg.md b/login/private_msg.md deleted file mode 100644 index da53232..0000000 --- a/login/private_msg.md +++ /dev/null @@ -1,48 +0,0 @@ -# 私信 - -**本页所有操作均需登录(SESSDATA)** - -## 未读私信数 - -> http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread - -*方式:GET* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-6:账号未登录 | -| message | str | 错误信息 | 默认为ok | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | -------------------- | ------------ | -| unfollow_unread | num | 未关注用户未读私信数 | | -| follow_unread | num | 已关注用户未读私信数 | | -| _gt_ | num | 0 | 作用尚不明确 | - -**示例:** - -以下信息代表了为未关注用户未读私信数为`10`条,已关注用户未读私信数为`3`条 - -http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread - -```json -{ - "code": 0, - "msg": "ok", - "message": "ok", - "data": { - "unfollow_unread": 1, - "follow_unread": 6, - "_gt_": 0 - } -} -``` - diff --git a/login/msg.md b/message/msg.md similarity index 65% rename from login/msg.md rename to message/msg.md index eda522b..8a3fb60 100644 --- a/login/msg.md +++ b/message/msg.md @@ -1,4 +1,4 @@ -# 消息 +# 通知消息 **本页所有操作均需登录(SESSDATA)** @@ -6,7 +6,9 @@ > http://api.bilibili.com/x/msgfeed/unread -*方式:GET* +*请求方式:GET* + +认证方式:Cookie(SESSDATA) **json回复:** @@ -16,7 +18,7 @@ | ------- | ---- | -------- | ----------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | data 对象: @@ -28,13 +30,19 @@ data 对象: | like | num | 未读点赞数 | | | reply | num | 未读回复数 | | | sys_msg | num | 未读系统通知数 | | -| up | num | 0 | 作用尚不明确 | +| up | num | UP主助手信息数 | | **示例:** -以下信息代表了未读点赞数为`10`,未读回复数为`3`,未读at消息数为`1`,未读系统通知数为`1` +以下信息代表了未读点赞数为10,未读回复数为4,未读at消息数为3,未读系统通知数为2,UP主助手信息数为1 -http://api.bilibili.com/x/msgfeed/unread +```shell +curl 'http://api.bilibili.com/x/msgfeed/unread' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -42,13 +50,14 @@ http://api.bilibili.com/x/msgfeed/unread "message": "0", "ttl": 1, "data": { - "at": 1, + "at": 3, "chat": 0, "like": 10, - "reply": 3, - "sys_msg": 1, - "up": 0 + "reply": 4, + "sys_msg": 2, + "up": 1 } } ``` +
diff --git a/message/private_msg.md b/message/private_msg.md new file mode 100644 index 0000000..faf9306 --- /dev/null +++ b/message/private_msg.md @@ -0,0 +1,193 @@ +# 私信 + +**本页所有操作均需登录(SESSDATA)** + +## 未读私信数 + +> http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-6:账号未登录 | +| message | str | 错误信息 | 默认为ok | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data` 对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | -------------------- | ---- | +| unfollow_unread | num | 未关注用户未读私信数 | | +| follow_unread | num | 已关注用户未读私信数 | | +| _gt_ | num | 0 | | + +**示例:** + +以下信息代表了为未关注用户未读私信数为`10`条,已关注用户未读私信数为`3`条 + +```shell +curl 'http://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "ok", + "message": "ok", + "data": { + "unfollow_unread": 1, + "follow_unread": 6, + "_gt_": 0 + } +} +``` + +
+ +## 发送私信(web端) + +> http://api.vc.bilibili.com/web_im/v1/web_im/send_msg + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数(application/x-www-form-urlencoded):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------------ | ------------------------------------ | ------------------------ | ------ | -------------------------------------- | +| msg[sender_uid] | num | 发送者UID | 必要 | | +| msg[receiver_id] | num | 接收者UID | 必要 | | +| msg[receiver_type] | num | 1 | 必要 | 固定为1 | +| msg[msg_type] | num | 消息类型 | 必要 | 1:发送文字
2:发送图片
5:撤回消息 | +| msg[msg_status] | num | 0 | 非必要 | | +| msg[content] | 发送文字时:str
撤回消息时:num | 消息内容 | 必要 | **详见下表** | +| csrf_token | str | CSRF Token(位于cookie) | 必要 | | + +`msg[content]`消息内容: + +当发送文字时(`msg[msg_type]=1`): + +该参数为json序列字串 + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---- | +| content | str | 私信内容 | | + +当发送图片时(`msg[msg_type]=2`): + +该参数为json序列字串 + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | :-------------------------------------------- | +| url | str | 图片url | 默认为B站相簿图片上传通道
也可用三方图床 | +| width | num | 图片的宽 | 单位:像素(非必要) | +| height | num | 图片的高 | 单位:像素(非必要) | +| type | str | 图片格式 | (非必要) | +| original | num | 1 | **作用未知**(非必要) | +| size | num | 文件大小 | 单位:千字节(非必要)
__向上取整__ | + +当撤回消息时(`msg[msg_type]=5`): + +该参数为数值,为目标消息的` msg_key ` + +**json回复:** + +根对象: +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ----------- | +| code | num | 返回值 | 0:成功
| +| message | str | 错误信息 | 默认为ok | +| msg | str | 错误信息 | 默认为ok | +| data | obj | 主体 | 出错时为空 | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---- | ------------ | +| msg_key | num | | 作用尚不明确 | +| \_gt\_ | num | 0 | 作用尚不明确 | + +**示例:** + +给目标用户`UID=1`发一条文字私信: + +> up主你好, +> +> 催更[doge] + +```shell +curl 'http://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ +--data-urlencode 'msg[sender_uid]=293793435' \ +--data-urlencode 'msg[receiver_id]=1' \ +--data-urlencode 'msg[receiver_type] =1' \ +--data-urlencode 'msg[msg_type]=1' \ +--data-urlencode 'msg[content]={"content":"up主你好,\n催更[doge]"}' \ +--data-urlencode 'csrf_token=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "msg":"ok", + "message":"ok", + "data":{ + "msg_key":6852559688104417870, + "_gt_":0 + } +} +``` + +
+ +给目标用户`UID=1`发一条图片私信: + +> + +```shell +curl 'http://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ +--data-urlencode 'msg[sender_uid]=293793435' \ +--data-urlencode 'msg[receiver_id]=1' \ +--data-urlencode 'msg[receiver_type] =1' \ +--data-urlencode 'msg[msg_type]=2' \ +--data-urlencode 'msg[content]={"url":https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg}' \ +--data-urlencode 'csrf_token=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "msg":"ok", + "message":"ok", + "data":{ + "msg_key":6852570013146024354, + "_gt_":0 + } +} +``` + +
diff --git a/mkdocs/mkdocs.yml b/mkdocs/mkdocs.yml new file mode 100644 index 0000000..b1fcc70 --- /dev/null +++ b/mkdocs/mkdocs.yml @@ -0,0 +1,8 @@ +site_name: 哔哩哔哩-API收集整理 +repo_url: https://github.com/SocialSisterYi/bilibili-API-collect + +site_description: 本项目旨在对B站web端、移动端以及TV端散落在世界各地的野生api进行收集整理,研究使用方法并对其进行说明 +site_author: 所有的贡献者们 + +docs_dir: '..' +site_dir: 'html' \ No newline at end of file diff --git a/other/API_auth.md b/other/API_auth.md new file mode 100644 index 0000000..bc763ed --- /dev/null +++ b/other/API_auth.md @@ -0,0 +1,59 @@ +# API认证与鉴权 + +## Cookie方式(web端) + +cookie中的值在访问登录接口成功登录时,用`set-cookie`写入 + +在访问api时为`Cookie`头的数据 + +Token有效期为1月,更改密码或过期失效 + +| cookie项 | 含义 | 备注 | +| ----------------- | ----------------- | ------------------------------------------ | +| DedeUserID | 当前用户UID | | +| DedeUserID__ckMd5 | 用户UID md5校验值 | | +| SESSDATA | 登录Token | 用于用户识别与鉴权
作用同`access_key` | +| bili_jct | CSRF Token | 用于操作性接口 | + +## APP方式(手机客户端及TV端等) + +| 参数 | 含义 | 备注 | +| ------------- | ---------------- | ---------------------- | +| access_key | APP登录Token | 注意必须在第一个参数 | +| appkey | APP密钥 | | +| refresh_token | APP刷新登录Token | 仅在刷新时使用 | +| ts | 当前时间戳 | | +| sign | APP签名 | 注意必须在最后一个参数 | + +**接口鉴权:** + +使用`appkey`作为api的必要参数,并使用除`sign`外所有参数的url字串后连接相对应的盐值进行**md5校验**(32位小写),把计算结果作为sign的值,与前面参数一同发送 + +**appkey与appsec一一对应** + +已知的appkey与签名: + +| appkey | appsec(sign盐值) | 平台 | 应用 | 备注 | +| ---------------- | -------------------------------- | ---- | -------- | -------- | +| 07da50c9a0bf829f | 75d35aa5c06fb46e40059a6a5bf671a6 | 安卓 | 概念版 | | +| 1d8b6e7d45233436 | 560c52ccd288fed045859ed18bffd973 | 安卓 | 客户端 | 一般用途 | +| 37207f2beaebf8d7 | e988e794d4d4b6dd43bc0e89d6e90c43 | 安卓 | biliLink | | +| 4409e2ce8ffd12b8 | 59b43e04ad6965f34319062b478f83dd | TV | 客户端 | | +| 5dce947fe22167f9 | | 安卓 | 必剪 | | +| 85eb6835b0a1034e | 2ad42749773c441109bdc0191257a664 | | | | +| aae92bc66f3edfab | af125a0d5279fd576c1b4418a3e8276d | PC | 投稿工具 | | +| bb3101000e232e27 | 36efcfed79309338ced0380abd824ac1 | | | | +| bca7e84c2d947ac6 | | 安卓 | 客户端 | 登录专用 | +| cc578d267072c94d | | 安卓 | 轻视频 | | +| cc8617fd6961e070 | | 安卓 | 漫画 | | +| iVGUTjsxvpLeuDCf | aHRmhWMLkdeMuILqORnYZocwMBpMEOdt | 安卓 | 客户端 | 取流专用 | + +例如: + +参数的url为`appkey=1d8b6e7d45233436&test=123`->连接盐值后为`appkey=1d8b6e7d45233436&test=123560c52ccd288fed045859ed18bffd973`->进行md5 32bit校验,结果为`8a3fdd74911862810f5c78f65afcce5d`->最终参数为`appkey=1d8b6e7d45233436&test=123&sign=8a3fdd74911862810f5c78f65afcce5d` + +**身份认证:** + +使用参数` access_key `进行身份验证,有效期为1月,作用同`SESSDATA` + +可以使用` refresh_token `进行刷新 diff --git a/other/bvID.md b/other/bvID.md new file mode 100644 index 0000000..8213c99 --- /dev/null +++ b/other/bvID.md @@ -0,0 +1,155 @@ +# bvID说明 + +2020-03-23 B站推出了全新的稿件视频ID“bvID”来接替之前的“avID”,其用法与性质等价于“avID” + +详见: + +1. [【升级公告】AV号全面升级至BV号(专栏)](https://www.bilibili.com/read/cv5167957) +2. [【升级公告】AV号全面升级至BV号](https://www.bilibili.com/blackboard/activity-BV-PC.html) + +## 格式: + +“bvID”恒为长度为12的字符串,前两个字母为大写“BV”,后10个位base58计算结果 + +## 实质: + +“bvID"为“avID”的base58编码,可通过算法进行相互转化 + +## avID发放方式的变化: + +从2009-09-09 09:09:09 [av2](https://www.bilibili.com/video/av2)的发布到2020-03-28 19:45:02 [av99999999](https://www.bilibili.com/video/av99999999)的发布B站结束了以投稿时间为顺序的avID发放,改为随机发放avID + +~~暗示B站东方要完?泪目~~ + +## av->bv算法: + +注:本算法及示例程序仅能编码及解码avID<` 29460791296 `,无法验证avID>=` 29460791296 `的正确性 + +1. a=(avID⊕177451812)+8728348608 +2. 以i为循环变量循环6次b[i]=(a/58^i)%58 +3. 将b[i]中各个数字转换为以下码表中的字符 + +码表: + +> fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF + +4. 初始化字符串b[i]=`BV1 4 1 7 ` + +5. 按照以下字符顺序编码表编码并填充至b[i] + +字符顺序编码表: + +> 0 -> 11 +> +> 1 -> 10 +> +> 2 -> 3 +> +> 3 -> 8 +> +> 4 -> 4 +> +> 5 -> 6 + +算法以及程序主要参考[知乎@mcfx的回答](https://www.zhihu.com/question/381784377/answer/1099438784) + +## bv->av算法: + +为以上算法的逆运算 + +## 转换程序: + +目前使用**Python**与**C**作为示例 + +### python + +```python +table = 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF' #码表 +tr = {} #反查码表 +#初始化反查码表 +for i in range(58): + tr[table[i]] = i +s = [11, 10, 3, 8, 4, 6] #位置编码表 +xor = 177451812 #固定异或值 +add = 8728348608 #固定加法值 + +def bv2av(x): + r = 0 + for i in range(6): + r += tr[x[s[i]]] * 58 ** i + return (r - add) ^ xor + +def av2bv(x): + x = (x ^ xor) + add + r = list('BV1 4 1 7 ') + for i in range(6): + r[s[i]] = table[x // 58 ** i % 58] + return ''. join(r) + +print(av2bv(170001)) +print(bv2av('BV17x411w7KC')) +``` + +输出为: + +``` +BV17x411w7KC +170001 +``` + +### C语言 + +```c +#include +#include +#include + +const char table[] = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"; //码表 +char tr[124]; //反查码表 +const unsigned long long Xor = 177451812; //固定异或值 +const unsigned long long add = 8728348608; //固定加法值 +const int s[] = {11, 10, 3, 8, 4, 6}; //位置编码表 +char result[13]; //编码结果 + +//初始化反查码表 +void tr_init() +{ + for (int i = 0; i < 58; i++) + tr[table[i]] = i; +} + +unsigned long long bv2av(char bv[]) +{ + unsigned long long r = 0; + unsigned long long av; + for (int i = 0; i < 6; i++) + r += tr[bv[s[i]]] * (unsigned long long)pow(58, i); + av = (r - add) ^ Xor; + return av; +} + +char* av2bv(unsigned long long av) +{ + strcpy(result,"BV1 4 1 7 "); + av = (av ^ Xor) + add; + for (int i = 0; i < 6; i++) + result[s[i]] = table[(unsigned long long)(av / (unsigned long long)pow(58, i)) % 58]; + char *bv=result; + return bv; +} + +int main() +{ + tr_init(); + printf("%s\n",av2bv(170001)); + printf("%u\n",bv2av("BV17x411w7KC")); + return 0; +} +``` + +输出为: + +``` +BV17x411w7KC +170001 +``` diff --git a/other/errcode.md b/other/errcode.md new file mode 100644 index 0000000..5add16e --- /dev/null +++ b/other/errcode.md @@ -0,0 +1,58 @@ +# 公共错误码 + +下表为大部分接口返回值中`code`字段的值中公共的错误代码 + +## 权限类: + +| 代码 | 含义 | +| ---- | ------------------------ | +| -1 | 应用程序不存在或已被封禁 | +| -2 | Access Key错误 | +| -3 | API校验密匙错误 | +| -4 | 调用方对该Method没有权限 | +| -101 | 账号未登录 | +| -102 | 账号被封停 | +| -103 | 积分不足 | +| -104 | 硬币不足 | +| -105 | 验证码错误 | +| -106 | 账号非正式会员或在适应期 | +| -107 | 应用不存在或者被封禁 | +| -108 | 未绑定手机 | +| -110 | 未绑定手机 | +| -111 | csrf 校验失败 | +| -112 | 系统升级中 | +| -113 | 账号尚未实名认证 | +| -114 | 请先绑定手机 | +| -115 | 请先完成实名认证 | + +## 请求类: + +| 代码 | 含义 | +| ---- | --------------------- | +| -304 | 木有改动 | +| -307 | 撞车跳转 | +| -400 | 请求错误 | +| -401 | 未认证 | +| -403 | 访问权限不足 | +| -404 | 啥都木有 | +| -405 | 不支持该方法 | +| -409 | 冲突 | +| -500 | 服务器错误 | +| -503 | 过载保护,服务暂不可用 | +| -504 | 服务调用超时 | +| -509 | 超出限制 | +| -616 | 上传文件不存在 | +| -617 | 上传文件太大 | +| -625 | 登录失败次数太多 | +| -626 | 用户不存在 | +| -628 | 密码太弱 | +| -629 | 用户名或密码错误 | +| -632 | 操作对象数量限制 | +| -643 | 被锁定 | +| -650 | 用户等级太低 | +| -652 | 重复的用户 | +| -658 | Token 过期 | +| -662 | 密码时间戳过期 | +| -688 | 地理区域限制 | +| -689 | 版权限制 | +| -701 | 扣节操失败 | diff --git a/other/ip.md b/other/ip.md index c821ada..198bd78 100644 --- a/other/ip.md +++ b/other/ip.md @@ -2,18 +2,18 @@ > http://api.bilibili.com/x/web-interface/zone -*方式:GET* +*请求方式:GET* **json回复:** 根对象: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------ | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | `data`对象: @@ -26,12 +26,17 @@ | isp | str | 运营商名 | | | latitude | num | 纬度 | | | longitude | num | 经度 | | -| zone_id | num | ??? | | +| zone_id | num | ip数据库ID | | | country_code | num | 国家/地区代码 | | **示例:** -http://api.bilibili.com/x/web-interface/zone +```shell +curl 'http://api.bilibili.com/x/web-interface/zone' +``` + +
+查看响应示例: ```json { @@ -52,3 +57,4 @@ http://api.bilibili.com/x/web-interface/zone } ``` +
diff --git a/other/time_stamp.md b/other/time_stamp.md new file mode 100644 index 0000000..519e927 --- /dev/null +++ b/other/time_stamp.md @@ -0,0 +1,44 @@ +# 获取当前时间戳 + +> http://api.bilibili.com/x/report/click/now + +*请求方式:GET* + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ---- | +| now | num | 当前的时间戳 | | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/report/click/now' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "now": 1592666471 + } +} +``` + +
diff --git a/ranking&dynamic/dynamic.md b/ranking&dynamic/dynamic.md index 6ff4ce5..0fc55b6 100644 --- a/ranking&dynamic/dynamic.md +++ b/ranking&dynamic/dynamic.md @@ -1,18 +1,18 @@ -# 视频最新动态 +# 分区最新视频 -## 获取分区最新动态视频列表 +## 获取分区最新视频列表 > http://api.bilibili.com/x/web-interface/dynamic/region -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ------- | -| pn | url | 页码 | 非必要 | 默认为1 | -| ps | url | 每页项数 | 非必要 | 默认为5 | -| rid | url | 目标分区tID | 必要 | | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页项数 | 非必要 | 默认为5 | +| rid | num | 目标分区tID | 必要 | | **json回复:** @@ -22,14 +22,14 @@ | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: | 字段 | 类型 | 内容 | 备注 | | -------- | ------ | -------- | ---- | -| archives | arrary | 视频列表 | | +| archives | array | 视频列表 | | | page | obj | 页面信息 | | `data`中的`archives`数组: @@ -42,7 +42,7 @@ `data`中的`archives`数组中的对象: -基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息(avID/bvID互转))」中的data对象 +基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 `data`中的`page`对象: @@ -56,7 +56,16 @@ 获取`tID=21`(生活->日常)分区中的2条最新动态视频信息 -https://api.bilibili.com/x/web-interface/dynamic/region?pn=1&ps=2&rid=21 +```shell +curl -G 'http://api.bilibili.com/x/web-interface/dynamic/region' \ +--data-urlencode 'rid=21' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -183,3 +192,4 @@ https://api.bilibili.com/x/web-interface/dynamic/region?pn=1&ps=2&rid=21 } ``` +
diff --git a/ranking&dynamic/ranking.md b/ranking&dynamic/ranking.md index 71d8ef1..7296933 100644 --- a/ranking&dynamic/ranking.md +++ b/ranking&dynamic/ranking.md @@ -2,20 +2,20 @@ -## 获取分区排行榜视频列表 +## 获取分区视频排行榜列表 >http://api.bilibili.com/x/web-interface/ranking/region -*方式:GET* +*请求方式:GET* 获取相应时间段内播放量增速为前11的视频 -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---------------------------------------------------- | -| day | url | 页码 | 非必要 | 1:单日榜
3:三日榜
7:一周榜
默认为3 | -| rid | url | 目标分区tID | 必要 | | +| day | num | 页码 | 非必要 | 1:单日榜
3:三日榜
7:一周榜
默认为3 | +| rid | num | 目标分区tID | 必要 | | **json回复:** @@ -25,8 +25,8 @@ | ------- | ------ | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 视频列表 | | +| ttl | num | 1 | | +| data | array | 视频列表 | | `data`数组: @@ -39,13 +39,20 @@ `data`数组中的对象: -基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息(avID/bvID互转))」中的data对象 +基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 **示例:** 获取`tID=1`(动画)分区中的三日视频排行榜 -http://api.bilibili.com/x/web-interface/ranking/region?rid=1&day=3 +```shell +curl -G 'http://api.bilibili.com/x/web-interface/ranking/region' \ +--data-urlencode 'rid=1' \ +--data-urlencode 'day=3' +``` + +
+查看响应示例: ```json { @@ -419,3 +426,4 @@ http://api.bilibili.com/x/web-interface/ranking/region?rid=1&day=3 } ``` +
diff --git a/search/hot.md b/search/hot.md new file mode 100644 index 0000000..2876aad --- /dev/null +++ b/search/hot.md @@ -0,0 +1,360 @@ +# 默认搜索&热搜 + +## 获取默认搜索内容(web端) + +> http://api.bilibili.com/x/web-interface/search/default + +*请求方式:GET* + +默认搜索为搜索框中默认填充内容,用于官方推荐内容,若不输入点击搜索按钮跳转为`url`中的链接 + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | --------------- | -------------- | +| seid | str | 搜索seID | | +| id | num | 默认搜索ID | | +| type | num | 0 | | +| show_name | str | 显示文字 | | +| name | str | 空 | | +| goto_type | num | 跳转类型 | 1:视频 | +| goto_value | str | 搜索目标ID | 视频:稿件avID | +| url | str | 搜索目标跳转url | | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/web-interface/search/default' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "seid": "17607543598496143098", + "id": 3296036255232726331, + "type": 0, + "show_name": "歪果仁在中国做模特能赚多少钱?", + "name": "", + "goto_type": 1, + "goto_value": "243920322", + "url": "https://www.bilibili.com/video/BV1Tv411q7gx" + } +} +``` + +
+ +## 获取热搜列表(web端) + +> http://s.search.bilibili.com/main/hotword + +*请求方式:GET* + +榜单每隔固定时间统计一次,请求后返回搜索前20的关键词 + +带有转义 + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | ------------ | ------------- | +| exp_str | str | ??? | | +| code | num | 返回值 | 0:成功 | +| cost | obj | 详细搜索用时 | 大概是吧? | +| seid | str | 搜索seID | | +| timestamp | num | 榜单统计时间 | 时间戳 | +| message | str | 错误信息 | 默认为success | +| list | array | 热搜列表 | | + +`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------ | +| 0 | obj | 榜单第1名 | | +| n | obj | 榜单第(n+1)名 | 按照名次顺序 | +| 19 | obj | 榜单第20名 | 最后一项 | + +`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------- | ----------------------------- | +| status | str | 空 | | +| keyword | str | 关键词 | | +| goto_type | num | 0 | | +| pos | num | 名次 | 1-20 | +| word_type | num | 条目属性 | 1:正常
4:新
5:热 | +| id | num | 名次 | 1-20 | +| goto_value | str | 空 | | +| name_type | str | 空 | | +| icon | str | 图标url | | + +**示例:** + +```shell +curl 'http://s.search.bilibili.com/main/hotword' +``` + +
+查看响应示例: + +```json +{ + "exp_str": "8104#8200#8300#8401#8500#5502#6699", + "code": 0, + "cost": { + "reas_request": "0.001895", + "params_check": "0.000127", + "reas_response_format": "0.000098", + "deserialize_response": "0.000080", + "reas_request_format": "0.000076", + "total": "0.002479", + "main_handler": "0.002252" + }, + "seid": "9318821020548476185", + "timestamp": 1596034742, + "message": "success", + "list": [ + { + "status": "", + "keyword": "特朗普", + "goto_type": 0, + "pos": 1, + "word_type": 1, + "id": 1, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "武汉协和医院", + "goto_type": 0, + "pos": 2, + "word_type": 5, + "id": 2, + "goto_value": "", + "name_type": "", + "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png" + }, + { + "status": "", + "keyword": "元龙", + "goto_type": 0, + "pos": 3, + "word_type": 5, + "id": 3, + "goto_value": "", + "name_type": "", + "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png" + }, + { + "status": "", + "keyword": "周深", + "goto_type": 0, + "pos": 4, + "word_type": 4, + "id": 4, + "goto_value": "", + "name_type": "", + "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" + }, + { + "status": "", + "keyword": "徐大sao", + "goto_type": 0, + "pos": 5, + "word_type": 4, + "id": 5, + "goto_value": "", + "name_type": "", + "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" + }, + { + "status": "", + "keyword": "FPX", + "goto_type": 0, + "pos": 6, + "word_type": 4, + "id": 6, + "goto_value": "", + "name_type": "", + "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" + }, + { + "status": "", + "keyword": "BLACKPINK", + "goto_type": 0, + "pos": 7, + "word_type": 1, + "id": 7, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "沈力", + "goto_type": 0, + "pos": 8, + "word_type": 1, + "id": 8, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "老番茄", + "goto_type": 0, + "pos": 9, + "word_type": 1, + "id": 9, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "JDG", + "goto_type": 0, + "pos": 10, + "word_type": 4, + "id": 10, + "goto_value": "", + "name_type": "", + "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" + }, + { + "status": "", + "keyword": "荒废工厂", + "goto_type": 0, + "pos": 11, + "word_type": 1, + "id": 11, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "活着", + "goto_type": 0, + "pos": 12, + "word_type": 1, + "id": 12, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "明日方舟", + "goto_type": 0, + "pos": 13, + "word_type": 1, + "id": 13, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "创造营2020", + "goto_type": 0, + "pos": 14, + "word_type": 1, + "id": 14, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "黑人抬棺", + "goto_type": 0, + "pos": 15, + "word_type": 1, + "id": 15, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "名侦探柯南", + "goto_type": 0, + "pos": 16, + "word_type": 1, + "id": 16, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "fpx", + "goto_type": 0, + "pos": 17, + "word_type": 1, + "id": 17, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "csgo", + "goto_type": 0, + "pos": 18, + "word_type": 1, + "id": 18, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "正道的光", + "goto_type": 0, + "pos": 19, + "word_type": 1, + "id": 19, + "goto_value": "", + "name_type": "", + "icon": "" + }, + { + "status": "", + "keyword": "bts", + "goto_type": 0, + "pos": 20, + "word_type": 1, + "id": 20, + "goto_value": "", + "name_type": "", + "icon": "" + } + ] +} +``` + +
\ No newline at end of file diff --git a/search/search_request.md b/search/search_request.md new file mode 100644 index 0000000..286ca46 --- /dev/null +++ b/search/search_request.md @@ -0,0 +1,1436 @@ +# 搜索 + +## 综合搜索(web端) + +> http://api.bilibili.com/x/web-interface/search/all/v2 + +*方式:GET* + +认证方式:Cookie(SESSDATA) + +返回和关键字相关的20条信息 + +综合搜索为默认搜索方式,主要用于优先搜索用户、影视、番剧、游戏、话题等,并加载第一页的20项相关视频,还用于展示各个类型的结果数目,便于进一步分类搜索 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------- | ---- | ---------------- | ------ | ---- | +| keyword | str | 需要搜索的关键词 | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------------- | ----- | ---------------- | ---------------- | +| seid | str | 搜索id | | +| page | num | 页数 | 固定为1 | +| pagesize | num | 每页条数 | 固定为20 | +| numResults | num | 总条数 | 最大值为1000 | +| numPages | num | 分页数 | 最大值为50 | +| suggest_keyword | str | 空 | **作用尚不明确** | +| rqt_type | str | search | **作用尚不明确** | +| cost_time | obj | 详细搜索用时 | 大概是吧? | +| exp_list | obj | ??? | **作用尚不明确** | +| egg_hit | num | 0 | **作用尚不明确** | +| pageinfo | obj | 分类页数信息 | | +| top_tlist | obj | 分类结果数目信息 | | +| show_column | num | 0 | **作用尚不明确** | +| show_module_list | array | 返回结果类型列表 | | +| result | array | 结果列表 | | + +`data`中的`cost_time`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------------- | ---- | ---- | ---- | +| params_check | str | | | +| illegal_handler | str | | | +| as_response_format | str | | | +| as_request | str | | | +| save_cache | str | | | +| deserialize_response | str | | | +| as_request_format | str | | | +| total | str | | | +| main_handler | str | | | + +`data`中的`pageinfo`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | -------- | ---- | +| pgc | obj | - | | +| live_room | obj | 直播数 | | +| photo | obj | 相簿数 | | +| topic | obj | 话题数 | | +| video | obj | 视频数 | | +| user | obj | - | | +| bili_user | obj | 用户数 | | +| media_ft | obj | 电影数 | | +| article | obj | 专栏数 | | +| media_bangumi | obj | 番剧数 | | +| special | obj | - | | +| operation_card | obj | - | | +| upuser | obj | - | | +| movie | obj | - | | +| live_all | obj | - | | +| tv | obj | - | | +| live | obj | 直播间数 | | +| bangumi | obj | - | | +| activity | obj | 活动数 | | +| live_master | obj | - | | +| live_user | obj | 主播数 | | + +`pageinfo`中的所有对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------- | ---- | +| numResults | num | 总计数量 | | +| total | num | 总计数量 | | +| pages | num | 分页数量 | | + +`data`中的`top_tlist`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | -------- | ---- | +| pgc | num | - | | +| live_room | num | 直播数 | | +| photo | num | 相簿数 | | +| topic | num | 话题数 | | +| video | num | 视频数 | | +| user | num | - | | +| bili_user | num | 用户数 | | +| media_ft | num | 电影数 | | +| article | num | 专栏数 | | +| media_bangumi | num | 番剧数 | | +| card | num | - | | +| operation_card | num | - | | +| upuser | num | - | | +| movie | num | - | | +| live_all | num | - | | +| tv | num | - | | +| live | num | 直播间数 | | +| special | num | - | | +| bangumi | num | - | | +| activity | num | 活动数 | | +| live_master | num | - | | +| live_user | num | 主播数 | | + +`data`中的`show_module_list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | str | activity | | +| 1 | str | web_game | 游戏 | +| 2 | str | card | | +| 3 | str | media_bangumi | 番剧 | +| 4 | str | media_ft | 电影 | +| 5 | str | bili_user | 用户 | +| 6 | str | user | | +| 7 | str | star | | +| 8 | str | video | 视频 | + +`data`中的`result`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| 0 | obj | - | | +| 1 | obj | 游戏结果 | | +| 2 | obj | - | | +| 3 | obj | 番剧结果 | | +| 4 | obj | 电影结果 | | +| 5 | obj | 用户结果 | | +| 6 | obj | - | | +| 7 | obj | - | | +| 8 | obj | 视频结果 | | + +`result`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | -------- | ------------------------------ | +| result_type | str | 结果类型 | 与`result`数组对应的项相同 | +| data | array | 搜索结果 | 结果为该项所对应的对象条目格式 | + +`result`数组中的对象中的`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---------------------------------------- | +| 0 | obj | 搜索结果1 | 对象详情见[搜索结果](search_response.md) | +| n | obj | 搜索结果(n+1) | 按照参数指定的顺序排列 | +| …… | obj | …… | …… | + +**示例:** + +使用综合搜索进行搜索关键字`洛天依` + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/search/all/v2' \ +--data-urlencode 'keyword=洛天依' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "seid": "8850295244740510044", + "page": 1, + "pagesize": 20, + "numResults": 1000, + "numPages": 50, + "suggest_keyword": "", + "rqt_type": "search", + "cost_time": { + "params_check": "0.000496", + "get upuser live status": "0.002325", + "illegal_handler": "0.000118", + "as_response_format": "0.007020", + "mysql_request": "0.000054", + "as_request": "0.099139", + "as_request_format": "0.002199", + "deserialize_response": "0.000342", + "total": "0.109753", + "main_handler": "0.109041" + }, + "exp_list": { + "5520": true + }, + "egg_hit": 0, + "pageinfo": { + "pgc": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "live_room": { + "numResults": 1, + "total": 1, + "pages": 1 + }, + "photo": { + "numResults": 1000, + "total": 1000, + "pages": 50 + }, + "bili_user": { + "numResults": 548, + "total": 548, + "pages": 28 + }, + "topic": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "video": { + "numResults": 1000, + "total": 1000, + "pages": 50 + }, + "user": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "article": { + "numResults": 1000, + "total": 1000, + "pages": 50 + }, + "media_ft": { + "numResults": 1, + "total": 1, + "pages": 1 + }, + "media_bangumi": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "special": { + "numResults": 14, + "total": 14, + "pages": 1 + }, + "operation_card": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "upuser": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "movie": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "live_all": { + "numResults": 2, + "total": 2, + "pages": 1 + }, + "tv": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "live": { + "numResults": 773, + "total": 773, + "pages": 39 + }, + "bangumi": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "activity": { + "numResults": 0, + "total": 0, + "pages": 0 + }, + "live_master": { + "numResults": 1, + "total": 1, + "pages": 1 + }, + "live_user": { + "numResults": 772, + "total": 772, + "pages": 39 + } + }, + "top_tlist": { + "pgc": 0, + "live_room": 1, + "photo": 1000, + "bili_user": 548, + "topic": 0, + "video": 1000, + "user": 0, + "article": 1000, + "media_ft": 1, + "media_bangumi": 0, + "card": 0, + "operation_card": 0, + "upuser": 0, + "movie": 0, + "tv": 0, + "live": 2, + "special": 14, + "bangumi": 0, + "activity": 0, + "live_master": 1, + "live_user": 772 + }, + "show_column": 0, + "show_module_list": [ + "bili_user", + "user", + "activity", + "web_game", + "card", + "media_bangumi", + "media_ft", + "star", + "video" + ], + "result": [ + { + "result_type": "bili_user", + "data": [ + { + "type": "bili_user", + "mid": 36081646, + "uname": "洛天依", + "usign": "上海禾念Vsinger旗下歌手,世界第一位VOCALOID中文虚拟歌姬。投食请戳:luotianyi@sh-henian.com", + "fans": 1982688, + "videos": 45, + "upic": "//i2.hdslb.com/bfs/face/cc96d1d6bf76f8198263f9083921997ab3a80d8b.jpg", + "verify_info": "", + "level": 6, + "gender": 2, + "is_upuser": 1, + "is_live": 0, + "room_id": 1546736, + "res": [ + { + "aid": 753839250, + "bvid": "BV1Hk4y1B7Cx", + "title": "【洛天依】2020.7.12洛天依生日会", + "pubdate": 1594559234, + "arcurl": "http://www.bilibili.com/video/av753839250", + "pic": "//i2.hdslb.com/bfs/archive/5347eafb5a65ad9a9ffc39063d686772ea1298c4.jpg", + "play": "269428", + "dm": 30648, + "coin": 33838, + "fav": 24066, + "desc": "从2012年一路走至2020年,8年间刻画下的无数回忆,都在生日会上娓娓道来。\n大家的每一次应援,每一条弹幕都无可替代,都凝结着无可比拟的珍贵回忆。\n希望天依的歌声能鼓起每个人心中的勇气,跨过悲伤、无力,去迎接希望。\n愿我们一同携手成长~相扶相伴。\n天依的首张官方数字专辑也已经上线,等你来听。\n试听: BV1Tp4y1S7cu\n购买:https://y.music.163.com/m/album?id=92206376", + "duration": "58:6", + "is_pay": 0, + "is_union_video": 0 + }, + { + "aid": 968772260, + "bvid": "BV1Tp4y1S7cu", + "title": "【洛天依原创曲】万分之一的光", + "pubdate": 1594557008, + "arcurl": "http://www.bilibili.com/video/av968772260", + "pic": "//i1.hdslb.com/bfs/archive/67c6118e4f94bee89b984525ca665fc88c969cac.jpg", + "play": "333322", + "dm": 9323, + "coin": 39961, + "fav": 29818, + "desc": "8年间我们一起经历了许多,有欢乐也有悲伤,有相遇自然也有别离,但曾相处的日子永远那么辉光闪耀。\n感谢你成为我的光芒,而我也会是你万分之一的光。\n\n音乐:ChiliChill\n贝斯:山口進也\n鼓手:口口口口口\n调校:动点P\n弦乐编配:胡静成 / ChiliChill\n小提琴:庞阔 / 张浩\n中提琴:毕芳\n大提琴:郎莹\n监制:人形兎\n出品:Vsinger", + "duration": "4:12", + "is_pay": 0, + "is_union_video": 1 + }, + { + "aid": 883803983, + "bvid": "BV1kK4y1s7Dd", + "title": "洛天依2020官方专辑《Moments》试听PV", + "pubdate": 1594526467, + "arcurl": "http://www.bilibili.com/video/av883803983", + "pic": "//i1.hdslb.com/bfs/archive/2ff004df9d98e2a78531c6400ee8e823fb30e6f4.jpg", + "play": "205340", + "dm": 7748, + "coin": 18792, + "fav": 14222, + "desc": "8是数字也是象征;\n∞是循环也是无限;\n \n音乐给予了我诞生和成长的力量,让我不断汲取养分,直至冲破险阻向阳生长;\n音乐让我更加幸运,在曾经未知的道路上遇见属于我们彼此的蓝色星光;\n那些一路上的美好,我都想和你们一起收集,瞬间即永恒。\n\n--------Staff--------\n作曲:Chilichill / COP / 人形兎 / 纯白P / 花之祭P / 希望索任合资 / 银临 / JUSF周存\n作词: Chilichill / COP / 人形兎 / 果汁凉菜 / 沈病娇 / 南岐 / 冥凰 / ", + "duration": "3:44", + "is_pay": 0, + "is_union_video": 0 + } + ], + "official_verify": { + "type": 0, + "desc": "洛天依官方账号" + }, + "hit_columns": [ + "uname" + ] + } + ] + }, + { + "result_type": "user", + "data": [] + }, + { + "result_type": "activity", + "data": [] + }, + { + "result_type": "web_game", + "data": [] + }, + { + "result_type": "card", + "data": [] + }, + { + "result_type": "media_bangumi", + "data": [] + }, + { + "result_type": "media_ft", + "data": [] + }, + { + "result_type": "star", + "data": [] + }, + { + "result_type": "video", + "data": [ + { + "type": "video", + "id": 753839250, + "author": "洛天依", + "mid": 36081646, + "typeid": "30", + "typename": "VOCALOID·UTAU", + "arcurl": "http://www.bilibili.com/video/av753839250", + "aid": 753839250, + "bvid": "BV1Hk4y1B7Cx", + "title": "【洛天依】2020.7.12洛天依生日会", + "description": "从2012年一路走至2020年,8年间刻画下的无数回忆,都在生日会上娓娓道来。\n大家的每一次应援,每一条弹幕都无可替代,都凝结着无可比拟的珍贵回忆。\n希望天依的歌声能鼓起每个人心中的勇气,跨过悲伤、无力,去迎接希望。\n愿我们一同携手成长~相扶相伴。\n天依的首张官方数字专辑也已经上线,等你来听。\n试听: BV1Tp4y1S7cu\n购买:https://y.music.163.com/m/album?id=92206376", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/5347eafb5a65ad9a9ffc39063d686772ea1298c4.jpg", + "play": 269428, + "video_review": 30648, + "favorites": 24066, + "tag": "VSINGER,洛天依生日快乐,2020洛天依生日会,洛天依生日会,VOCALOID,洛天依", + "review": 4391, + "pubdate": 1594559234, + "senddate": 1594559234, + "duration": "58:6", + "badgepay": false, + "hit_columns": [ + "title", + "author", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 102616359 + }, + { + "type": "video", + "id": 753460703, + "author": "低调的黑叔", + "mid": 22065421, + "typeid": "25", + "typename": "MMD·3D", + "arcurl": "http://www.bilibili.com/video/av753460703", + "aid": 753460703, + "bvid": "BV1Zk4y1B7bn", + "title": "【4K/布料/水手服】洛天依 - GimmexGimme", + "description": "喜欢本期4K请点个关注并长按视频下方大拇指一键三连拜托啦这对我真的很重要\n\nModel:\niRon0129/夏夜/Tda様/やまもと/Samsink(机动战士牛肉)\n\nMotion:\nシガー\n\nSailor Suit:\n星音\n\nStage:\nG_Wuuuuu\n\nRenderer:\nToolbag 3\n\nMusic:\n【初音ミク×鏡音リン】Gimme×Gimme【八王子P×Giga】", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/d1bd3d4d12b1e115ce82463853ff791a45472f1f.jpg", + "play": 809854, + "video_review": 1189, + "favorites": 47632, + "tag": "自制,3D,TDA,动画,百万剪辑师挑战,洛天依,美腿,舞蹈MMD,4K", + "review": 798, + "pubdate": 1591367468, + "senddate": 1591404973, + "duration": "1:11", + "badgepay": false, + "hit_columns": [ + "title", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 102465557 + }, + { + "type": "video", + "id": 10131337, + "author": "赛亚♂sya", + "mid": 157056, + "typeid": "30", + "typename": "VOCALOID·UTAU", + "arcurl": "http://www.bilibili.com/video/av10131337", + "aid": 10131337, + "bvid": "BV1fx411U7Kg", + "title": "【洛天依原创】自言自语", + "description": "词曲编调绘:Sya;混音:JUSF周存;简介你随便拿个之前的复制粘贴就行", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/e5aab7ddab3e060854e420edae6c5282cbe09324.jpg", + "play": 746480, + "video_review": 4665, + "favorites": 49097, + "tag": "黑洛,诚信代投,自言自语,洛天依,VOCALOID中文曲,原创,高级一图流,自x自x,自A自B系列,赛亚♂sya,JUSF周存", + "review": 7310, + "pubdate": 1493282828, + "senddate": 1542308981, + "duration": "4:14", + "badgepay": false, + "hit_columns": [ + "title", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 102432728 + }, + ………… + ] + } + ] + } +} +``` + +
+ + + +## 分类搜索(web端) + +> http://api.bilibili.com/x/web-interface/search/type + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +根据关键词进行搜索,返回结果每页20项 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| search_type | str | 搜索目标类型 | 必要 | 视频:video
番剧:media_bangumi
影视:media_ft
直播间及主播:live
直播间:live_room
主播:live_user
专栏:article
话题:topic
用户:bili_user
相簿:photo | +| keyword | str | 需要搜索的关键词 | 必要 | | +| order | str | 结果排序方式 | 非必要 | 搜索类型为视频、专栏及相簿时:
默认为totalrank
综合排序:totalrank
最多点击:click
最新发布:pubdate
最多弹幕:dm
最多收藏:stow
最多评论:scores
最多喜欢:attention(仅用于专栏)
----------------------------
搜索结果为直播间时:
默认为online
人气直播:online
最新开播:live_time
----------------------------
搜索结果为用户时:
默认为0
默认排序:0
粉丝数:fans
用户等级:level | +| order_sort | num | 用户粉丝数及等级排序顺序 | 非必要 | 仅用于搜索用户
默认为0
由高到低:0
由低到高:1 | +| user_type | num | 用户分类筛选 | 非必要 | 仅用于搜索用户
默认为0
全部用户:0
up主:1
普通用户:2
认证用户:3 | +| duration | num | 视频时长筛选 | 非必要 | 仅用于搜索视频
默认为0
全部时长:0
10分钟以下:1
10-30分钟:2
30-60分钟:3
60分钟以上:4 | +| tids | num | 视频分区筛选 | 非必要 | 仅用于搜索视频
默认为0
全部分区:0
筛选分区:目标分区tID | +| category_id | num | 专栏及相簿分区筛选 | 非必要 | 搜索结果为专栏时:
默认为0
全部分区:0
动画:2
游戏:1
影视:28
生活:3
兴趣:29
轻小说:16
科技:17
--------
搜索结果为相簿时:
默认为0
全部分区:0
画友:1
摄影:2 | +| page | num | 页码 | 非必要 | 默认为1 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---------------------------------------------------------- | ------------ | ------------------------------ | +| seid | num | 搜索seID | | +| page | num | 当前页码 | | +| pagesize | num | 每页条数 | 固定20 | +| numResults | num | 总条数 | 最大值为1000 | +| numPages | num | 总计分页数 | 最大值为50 | +| suggest_keyword | str | 空 | **作用尚不明确** | +| rqt_type | str | search | **作用尚不明确** | +| cost_time | obj | 详细搜索用时 | 大概 | +| exp_list | obj | ??? | **作用尚不明确** | +| egg_hit | num | 0 | **作用尚不明确** | +| pageinfo | obj | 副分页信息 | 只在搜索类型为直播间及主播有效 | +| result | 搜索类型为直播间及主播时:obj
搜索类型为其他时:array | 结果列表 | | +| show_column | num | 0 | **作用尚不明确** | + +`data`中的`cost_time`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------------- | ---- | ---- | ---- | +| params_check | str | | | +| illegal_handler | str | | | +| as_response_format | str | | | +| as_request | str | | | +| save_cache | str | | | +| deserialize_response | str | | | +| as_request_format | str | | | +| total | str | | | +| main_handler | str | | | + +`data`中的`pageinfo`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ---------- | ---- | +| live_room | obj | 直播间信息 | | +| live_user | obj | 主播信息 | | + +`pageinfo`中的`live_room`及`live_user`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------- | ---- | +| numPages | num | 总计页数 | | +| numResults | num | 总计项数 | | +| total | num | 总计项数 | | +| pages | num | 总计页数 | | + +**搜索类型为直播间及主播时:** + +`data`中的`result`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | ---------- | ---- | +| live_room | array | 直播间信息 | | +| live_user | array | 主播信息 | | + +`result`中的`live_room`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------------- | ---------------------------------------- | +| 0 | obj | 直播间搜索结果1 | 对象详情见[搜索结果](search_response.md) | +| n | obj | 直播间搜索结果(n+1) | 按照参数指定的顺序排列 | +| …… | obj | …… | …… | + +`result`中的`live_user`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---------------------------------------- | +| 0 | obj | 主播搜索结果1 | 对象详情见[搜索结果](search_response.md) | +| n | obj | 主播搜索结果(n+1) | 按照参数指定的顺序排列 | +| …… | obj | …… | …… | + +**搜索类型为其他时:** + +`data`中的`result`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---------------------------------------- | +| 0 | obj | 搜索结果1 | 对象详情见[搜索结果](search_response.md) | +| n | obj | 搜索结果(n+1) | 按照参数指定的顺序排列 | +| …… | obj | …… | …… | + +**示例:** + +按照关键词` 少年 `搜索视频,默认排序,全部时长,全部分区,第1页 + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/search/type' \ +--data-urlencode 'search_type=video' \ +--data-urlencode 'keyword=少年' \ +--data-urlencode 'order=totalrank' \ +--data-urlencode 'duration=0' \ +--data-urlencode 'tids=0' \ +--data-urlencode 'page=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "seid": "9339963973663795027", + "page": 1, + "pagesize": 20, + "numResults": 1000, + "numPages": 50, + "suggest_keyword": "", + "rqt_type": "search", + "cost_time": { + "params_check": "0.000300", + "illegal_handler": "0.000077", + "as_response_format": "0.003071", + "as_request": "0.072525", + "save_cache": "0.001115", + "deserialize_response": "0.000310", + "as_request_format": "0.000319", + "total": "0.077996", + "main_handler": "0.076419" + }, + "exp_list": { + "5520": true + }, + "egg_hit": 0, + "result": [ + { + "type": "video", + "id": 243082173, + "author": "大橘爱吃猫", + "mid": 178932626, + "typeid": "193", + "typename": "MV", + "arcurl": "http://www.bilibili.com/video/av243082173", + "aid": 243082173, + "bvid": "BV1De411p77r", + "title": "梦然-《少年》官方版", + "description": "https://www.ixigua.com/i6822128361129640462/?logTag=EBTB5DTpBmxcfK1GYOOea\n梦然老师《少年》MV官方版,原版:西瓜视频搜索“抖音梦然-《少年》” 抖音搜索 “《少年》MV梦然。", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/e25120857a6298d1d4b9e64a805c023b5143c8ff.jpg", + "play": 1037655, + "video_review": 2616, + "favorites": 27341, + "tag": "华语MV,国语MV,梦然,少年,梦想,成长,循环,热歌", + "review": 1265, + "pubdate": 1588407050, + "senddate": 1588407051, + "duration": "4:18", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 105415949 + }, + { + "type": "video", + "id": 97387124, + "author": "小石头和孩子们", + "mid": 324914635, + "typeid": "31", + "typename": "翻唱", + "arcurl": "http://www.bilibili.com/video/av97387124", + "aid": 97387124, + "bvid": "BV1B7411R7a8", + "title": "你还是从前的那个少年吗?来自元气少女超甜的《少年》", + "description": "", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/8502088a888aeb37df7c4bd1b77d57aabae4f4d3.jpg", + "play": 1953494, + "video_review": 5934, + "favorites": 50883, + "tag": "全民音乐UP主,小石头和孩子们,少年,MV,翻唱,音乐推荐", + "review": 2963, + "pubdate": 1584581433, + "senddate": 1584581434, + "duration": "4:1", + "badgepay": false, + "hit_columns": [ + "title", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 101083208 + }, + { + "type": "video", + "id": 200115746, + "author": "似乎一脸懵逼", + "mid": 110939266, + "typeid": "22", + "typename": "鬼畜调教", + "arcurl": "http://www.bilibili.com/video/av200115746", + "aid": 200115746, + "bvid": "BV1Yz411b7A3", + "title": "【马化腾】我还是充钱那个少年,没有一丝丝改变~", + "description": "临时做的小作品\n音源:-提问-", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/078a9b50b4df8d25c2f586668741b30348604173.jpg", + "play": 1069066, + "video_review": 3198, + "favorites": 16321, + "tag": "黄绿合战5th-绿队应援,马化腾,鬼畜调教,腾讯,腾讯游戏,QQ,氪金,少年,我还是从前那个少年", + "review": 1438, + "pubdate": 1585650825, + "senddate": 1586310556, + "duration": "1:26", + "badgepay": false, + "hit_columns": [ + "title", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100482941 + }, + { + "type": "video", + "id": 96440301, + "author": "Da圣音乐", + "mid": 353230307, + "typeid": "130", + "typename": "音乐综合", + "arcurl": "http://www.bilibili.com/video/av96440301", + "aid": 96440301, + "bvid": "BV1LE411G7F4", + "title": "最近突然火的《少年》太好听了,单曲循环了很多遍!", + "description": "Hello,大家好,我是阿光\n本期节目为大家盘点三首最近特别火的中文歌曲\n我保证每一首歌都能撩动你的心弦\n来喽,正如:恰同学少年,风华正茂!\n第一首就是歌手梦然发行于2019年的《少年》\n第二首《后会无期》\n第三首《平凡天使》", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/bcde6fb455902b367138b7a4026419de0a50a42d.jpg", + "play": 2440158, + "video_review": 2314, + "favorites": 7163, + "tag": "乐评盘点,音乐,少年,后会无期,平凡天使,邓紫棋,热门歌曲,感动,高考,疫情", + "review": 1072, + "pubdate": 1584334818, + "senddate": 1584339026, + "duration": "3:2", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100455675 + }, + { + "type": "video", + "id": 370000842, + "author": "猫耳半圆", + "mid": 485450109, + "typeid": "24", + "typename": "MAD·AMV", + "arcurl": "http://www.bilibili.com/video/av370000842", + "aid": 370000842, + "bvid": "BV1AZ4y1j7t6", + "title": "最近火爆全网的《少年》,你喜欢吗?", + "description": "BGM:少年——梦然\n花了好多心思的作品,求个三连呀φ(>ω<*)", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/7437b6f66856b0d87437afd8827939954716cb2f.jpg", + "play": 2257050, + "video_review": 16225, + "favorites": 95864, + "tag": "bilibili新星计划,AMV,MAD,新人向,论BGM的重要性,青春,少年,治愈向,催泪向,多素材", + "review": 3548, + "pubdate": 1585459066, + "senddate": 1585459067, + "duration": "1:37", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100409086 + }, + { + "type": "video", + "id": 837972700, + "author": "Da圣音乐", + "mid": 353230307, + "typeid": "130", + "typename": "音乐综合", + "arcurl": "http://www.bilibili.com/video/av837972700", + "aid": 837972700, + "bvid": "BV1Ug4y1z7oN", + "title": "终于找到日语版《少年》了!开口就是恋爱的味道,岛国也要被洗脑", + "description": "终于找到日语版《少年》了!开口就是恋爱的味道,岛国也要被洗脑", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/413b5417418c0e1107b3f79a284d20040b8bb4e9.jpg", + "play": 1390981, + "video_review": 2344, + "favorites": 11330, + "tag": "乐评盘点,梦然,少年,下山,日语,斋藤飞鸟,告白气球,花泽香菜,火影忍者,海贼王", + "review": 988, + "pubdate": 1588239130, + "senddate": 1588241127, + "duration": "3:12", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100407822 + }, + { + "type": "video", + "id": 285145715, + "author": "潮汕好男人", + "mid": 19071708, + "typeid": "22", + "typename": "鬼畜调教", + "arcurl": "http://www.bilibili.com/video/av285145715", + "aid": 285145715, + "bvid": "BV1ac411h7BC", + "title": "【全明星】少年", + "description": "我还是充钱那个少年,又大又圆的少年\nBGM:少年\n制作:MC传奇(潮汕好男人/永远的MG)\n\n黄绿合战Day.3 对阵作品:BV1qQ4y1K7Gs, 投票传送门:https://www.bilibili.com/blackboard/activity-yellowVSgreen5th.html", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/911faee003fc828c46497cbd58fab0e22c7554f8.jpg", + "play": 3689254, + "video_review": 38262, + "favorites": 115408, + "tag": "鬼畜调教,鬼畜,黄绿合战,少年,黄绿合战5th,全明星", + "review": 4560, + "pubdate": 1586404524, + "senddate": 1592816392, + "duration": "3:1", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100254286 + }, + { + "type": "video", + "id": 51475845, + "author": "吃你的馒头", + "mid": 25770774, + "typeid": "137", + "typename": "明星", + "arcurl": "http://www.bilibili.com/video/av51475845", + "aid": 51475845, + "bvid": "BV1K4411i7mw", + "title": "【日本少年混剪】氧气/心动瞬间/薄荷味的夏天要来了", + "description": "个人喜欢的霓虹国少年们混剪\n\n喜欢的少年会让我想起夏天,淡淡的薄荷味在校服衬衫晕开,笑容在空气里变成汽水,砰的一声打开砸向心脏。\n\nBGM:米津玄师/菅田将晖《灰色与青》\n\n道枝骏佑/新田真剑佑/菅田将晖\n坂口健太郎/古川雄辉/山崎贤人\n山田凉介/片寄凉太/贺来贤人\n龙星凉/佐藤健/吉沢亮\n柏原崇/锦户亮\n\n不按出场顺序(剪得昏天黑地完全记不住)\n\n禁二改转载出站,微博非本人发布皆为盗取视频,请随手举报或@吃你的馒头。\n\n原创作品不易,谢谢喜欢和理解。", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/93ae9d66eaf62161f1f12d0102b6c2d66ebe05a9.jpg", + "play": 1842547, + "video_review": 10738, + "favorites": 136384, + "tag": "明星,龙星凉,新田真剑佑,菅田将晖,古川雄辉,片寄凉太,柏原崇,山崎贤人,道枝骏佑,贺来贤人,山田凉介,锦户亮", + "review": 2385, + "pubdate": 1556992133, + "senddate": 1559716273, + "duration": "3:5", + "badgepay": false, + "hit_columns": [ + "title", + "description" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100239604 + }, + { + "type": "video", + "id": 967814999, + "author": "沙拉酱merry", + "mid": 492472, + "typeid": "31", + "typename": "翻唱", + "arcurl": "http://www.bilibili.com/video/av967814999", + "aid": 967814999, + "bvid": "BV1Hp4y1y7iQ", + "title": "真的不是原唱?!《少年》超A御姐音翻唱", + "description": "少年\n词/曲/原唱/Rap:梦然\n和声编写:海青/梦然\n和声演唱:海青/梦然\n翻唱:沙拉酱merry\n后期:小敏\n这首歌真好听!\nPs:由于这首歌的难度和换气问题,音频和视频是分开录的所以会有口型差异,敬请谅解!!!大家听歌愉快~", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/565e8cdc98dab13dfa547cb13744410964f2fc00.jpg", + "play": 959598, + "video_review": 2447, + "favorites": 15166, + "tag": "被才华封印的颜值,少年,翻唱,女声,沙拉酱merry,御姐音", + "review": 1371, + "pubdate": 1587114006, + "senddate": 1587114030, + "duration": "7:58", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100235329 + }, + { + "type": "video", + "id": 455021866, + "author": "鲨然鲨然", + "mid": 435476320, + "typeid": "126", + "typename": "人力VOCALOID", + "arcurl": "http://www.bilibili.com/video/av455021866", + "aid": 455021866, + "bvid": "BV195411673y", + "title": "【川普】我还是曾经那个少年", + "description": "鬼畜娱乐,请勿当真哦\n希望大家能开怀一笑\n笑了的话别忘了点赞哦", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/7cee31977deb39f297d2d2598e736d26ed337568.jpg", + "play": 3845319, + "video_review": 34660, + "favorites": 74705, + "tag": "黄绿合战5th-黄队应援,鬼畜调教,人力VOCALOID,自制,UTAU,川普,搞笑,少年,恶搞,青春", + "review": 4469, + "pubdate": 1585651085, + "senddate": 1586266006, + "duration": "2:56", + "badgepay": false, + "hit_columns": [ + "title", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100163091 + }, + { + "type": "video", + "id": 753055295, + "author": "大门E", + "mid": 735734, + "typeid": "31", + "typename": "翻唱", + "arcurl": "http://www.bilibili.com/video/av753055295", + "aid": 753055295, + "bvid": "BV1xk4y1k7aw", + "title": "【完整版日语版《少年》本尊来了】竟是国人元老唱见~", + "description": "词:lolo2513&梦然\n曲:梦然\n编曲:张亮\n混音:顾潇予\nPV:大门E\n之前唱了一个片段不料被许多人误以为《少年》原版是日本歌曲改编。因为没有版权一直没full,如今终于得到梦然老师(版权方)的认可及改编授权,终于出来了,再次感谢~!以我的key重新编曲,好哥们儿@lolo2513 老师的完整版日文填词,满满的少年jump既视感,唱的时候满脑子鸣人路飞,作为一个十五年的国人老唱见能被大家认可一首ACG歌曲简直泪流满面,希望大家能够喜欢~", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/363ece7b0fd61d1eb48a4bc3c2e804446b46ca1d.jpg", + "play": 676181, + "video_review": 1209, + "favorites": 31147, + "tag": "bilibili新星计划,少年,日语歌,翻唱", + "review": 1964, + "pubdate": 1588932007, + "senddate": 1588957659, + "duration": "4:1", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100152701 + }, + { + "type": "video", + "id": 328601322, + "author": "萌宠教主", + "mid": 23976014, + "typeid": "24", + "typename": "MAD·AMV", + "arcurl": "http://www.bilibili.com/video/av328601322", + "aid": 328601322, + "bvid": "BV1EA411i7MD", + "title": "用三十部动漫唱一首《少年》——你长大了,你还在追番吗?", + "description": "BGM:少年\n【剪辑,填词】萌宠教主\n【演唱】浅若_natsu", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/eb7c1be356fd3bc6a947bb6398b6f02fc961bec2.jpg", + "play": 381018, + "video_review": 2881, + "favorites": 28530, + "tag": "少年,AMV,多素材,MAD,综漫,混剪,梦然,催泪", + "review": 922, + "pubdate": 1592020805, + "senddate": 1592020836, + "duration": "4:5", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100129139 + }, + { + "type": "video", + "id": 838737756, + "author": "bili_148834382", + "mid": 148834382, + "typeid": "138", + "typename": "搞笑", + "arcurl": "http://www.bilibili.com/video/av838737756", + "aid": 838737756, + "bvid": "BV1Ug4y1v7mU", + "title": "大爷:我还是从前那个少年,没有一丝丝改变!", + "description": "大爷:我还是从前那个少年,没有一丝丝改变!", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/912cb238879558119d2f129438d7c71bb4372f9e.jpg", + "play": 7052, + "video_review": 18, + "favorites": 17, + "tag": "逗比,挑战,卧槽,沙雕,搞笑,大爷,厉害了,不一样呀,秀", + "review": 8, + "pubdate": 1593489906, + "senddate": 1593489906, + "duration": "1:34", + "badgepay": false, + "hit_columns": [ + "title", + "description" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100123108 + }, + { + "type": "video", + "id": 541162396, + "author": "鬼兄奇谈", + "mid": 94641579, + "typeid": "124", + "typename": "社科人文", + "arcurl": "http://www.bilibili.com/video/av541162396", + "aid": 541162396, + "bvid": "BV1Bi4y1G7mo", + "title": "少年黑帮“新龙会”覆灭记!史上最“中二”的黑社会,作案后竟留下错别字?", + "description": "少年黑帮“新龙会”覆灭记!史上最“中二”的黑社会,作案后竟留下错别字?\n视频内容及素材均来源于网络", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/4c0c8d8f720119e3087b6b02025c3d957d642781.jpg", + "play": 150747, + "video_review": 627, + "favorites": 487, + "tag": "犯罪,案件,奇闻,全能打卡挑战,学生,法制,黑社会,中二,违法", + "review": 438, + "pubdate": 1593596709, + "senddate": 1593596710, + "duration": "8:42", + "badgepay": false, + "hit_columns": [ + "title", + "description" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100120066 + }, + { + "type": "video", + "id": 413715309, + "author": "wkkm13", + "mid": 4056950, + "typeid": "76", + "typename": "美食圈", + "arcurl": "http://www.bilibili.com/video/av413715309", + "aid": 413715309, + "bvid": "BV1gV41167WS", + "title": "梦开始的地方,一年前那个不会剪辑的少年阿强。", + "description": "转自强哥第一个视频,那时候他还叫“浮华d假象”。\n梦开始的地方,那个不会剪辑的少年。", + "arcrank": "0", + "pic": "//i0.hdslb.com/bfs/archive/73772867e6a4ebaf66a12c73f1bc0d7a1f0fa085.jpg", + "play": 149332, + "video_review": 332, + "favorites": 86, + "tag": "cram阿强,泪目,美食,吃播,梦想,剪辑", + "review": 437, + "pubdate": 1593604848, + "senddate": 1593604848, + "duration": "5:31", + "badgepay": false, + "hit_columns": [ + "title", + "description" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100102196 + }, + { + "type": "video", + "id": 838507935, + "author": "木子山上起酥酥", + "mid": 185924591, + "typeid": "75", + "typename": "动物圈", + "arcurl": "http://www.bilibili.com/video/av838507935", + "aid": 838507935, + "bvid": "BV1Jg4y1q77h", + "title": "少年人,这是修行。", + "description": "微博", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/8eae881830a5fc2be1434781e086f7191082cec8.jpg", + "play": 120068, + "video_review": 43, + "favorites": 312, + "tag": "逗比,正能量,水豚,动物", + "review": 155, + "pubdate": 1592366769, + "senddate": 1592366769, + "duration": "0:15", + "badgepay": false, + "hit_columns": [ + "title" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100101593 + }, + { + "type": "video", + "id": 47749359, + "author": "Da圣音乐", + "mid": 353230307, + "typeid": "130", + "typename": "音乐综合", + "arcurl": "http://www.bilibili.com/video/av47749359", + "aid": 47749359, + "bvid": "BV12b411W7nF", + "title": "16岁中国少年韩国综艺上怒怼:老子来自中国!现场一片哗然", + "description": "16岁中国少年韩国综艺上怒怼:老子来自中国!现场一片哗然", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/171d9b27a0b9823b71894008117501014dd561ba.jpg", + "play": 5042589, + "video_review": 3949, + "favorites": 26065, + "tag": "说唱,韩国,中国,音乐选集,Rap,瞧不起,DISS,迪亚克,D.ark,综艺节目", + "review": 2793, + "pubdate": 1553926233, + "senddate": 1553926233, + "duration": "2:38", + "badgepay": false, + "hit_columns": [ + "title", + "description" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100101064 + }, + { + "type": "video", + "id": 82363754, + "author": "在下甘柒辣", + "mid": 374835894, + "typeid": "24", + "typename": "MAD·AMV", + "arcurl": "http://www.bilibili.com/video/av82363754", + "aid": 82363754, + "bvid": "BV1qJ411V7QH", + "title": "我已不再是少年,但你们终究活在我心里", + "description": "国动会越来越好的,它由我们一同注目它的成长。\nBGM: start\n可否给个币,给这个肝疼的up点鼓励( ̄y▽ ̄)~*", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/2c7afbc835dbce9f554eb1b21b583ef6bed34cce.jpg", + "play": 1588667, + "video_review": 6782, + "favorites": 37909, + "tag": "国产动画,国漫良心,国漫,国漫王者归来,星游记,镇魂街,灵笼,刺客伍六七,大圣归来,哪吒", + "review": 1190, + "pubdate": 1578320753, + "senddate": 1582999612, + "duration": "3:44", + "badgepay": false, + "hit_columns": [ + "title" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100099970 + }, + { + "type": "video", + "id": 413742409, + "author": "音乐Fans小琼", + "mid": 342943435, + "typeid": "130", + "typename": "音乐综合", + "arcurl": "http://www.bilibili.com/video/av413742409", + "aid": 413742409, + "bvid": "BV1bV41167Un", + "title": "《少年》霸占7周热歌第一,如今终于被新的神曲打破!网友:听吐了!", + "description": "bgm 纸砚zyan《画皮》\n《惊雷》MC六道\n《素颜》许嵩\n《麻雀》李荣浩\n《点歌的人》海来阿木\n《桥边姑娘》海伦 \n《旧梦一场》阿悠悠\n《世界这么大还是遇见你》程响(翻唱)\n《后来遇见他》胡66\n《处处吻》杨千嬅\n《少年》梦然", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/f004565df82a9ac3a8a168b4c12e244861f1d812.jpg", + "play": 12363, + "video_review": 137, + "favorites": 100, + "tag": "乐评盘点,全能打卡挑战,翻唱,许嵩,杨千嬅,李荣浩,喊麦,民谣,热歌,神曲", + "review": 71, + "pubdate": 1593523679, + "senddate": 1593576757, + "duration": "3:37", + "badgepay": false, + "hit_columns": [ + "title", + "description" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100097483 + }, + { + "type": "video", + "id": 625380628, + "author": "涩廊", + "mid": 178366933, + "typeid": "137", + "typename": "明星", + "arcurl": "http://www.bilibili.com/video/av625380628", + "aid": 625380628, + "bvid": "BV1Xt4y127bX", + "title": "这TM才叫日系美少年!", + "description": "道枝骏佑,02年霓虹国弟弟!杰尼斯美少年!没长残的童星代表!身高现在180+了!绰号米七(谐音)\n出演过电视剧《成为母亲》《我的裙子去哪了》\n\n米七是一个超级帅气可爱的男孩子!一直都在努力提升自己,请敬请期待他未来的作品!\n米七米七!未来可期!\n跪求三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连", + "arcrank": "0", + "pic": "//i2.hdslb.com/bfs/archive/9d727949eed2d82eb0561d08cbb3e28ac6603532.jpg", + "play": 768179, + "video_review": 1595, + "favorites": 29494, + "tag": "全能打卡挑战,杰尼斯,美少年,道枝骏佑,日系,米七", + "review": 1545, + "pubdate": 1588381204, + "senddate": 1590253109, + "duration": "1:22", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 100094816 + } + ], + "show_column": 0 + } +} +``` + +
diff --git a/search/search_response.md b/search/search_response.md new file mode 100644 index 0000000..db66c98 --- /dev/null +++ b/search/search_response.md @@ -0,0 +1,765 @@ +# 搜索响应条目 + +本页为搜索结果数组`result`中的对象的说明 + +## 对象类型1-结果为视频 + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ----- | -------------- | ----------------------------------------- | +| type | str | 结果类型 | 固定为video | +| id | num | 结果ID | 为稿件avID | +| author | str | UP主昵称 | | +| mid | num | UP主UID | | +| typeid | str | 视频分区tID | | +| typename | str | 视频子分区名 | | +| arcurl | str | 视频重定向url | | +| aid | num | 稿件avID | | +| bvid | str | 稿件bvID | | +| title | str | 视频标题 | 关键字用xml标签``标注 | +| description | str | 视频简介 | | +| arcrank | str | 0 | **作用尚不明确** | +| pic | str | 视频封面url | | +| play | num | 视频播放量 | | +| video_review | num | 视频弹幕量 | | +| favorites | num | 视频收藏数 | | +| tag | str | 视频TAG | 每项TAG用`,`分隔 | +| review | num | 视频评论数 | | +| pubdate | num | 视频投稿时间 | 时间戳 | +| senddate | num | 视频发布时间 | 时间戳 | +| duration | str | 视频时长 | HH:MM | +| badgepay | bool | false | **作用尚不明确** | +| hit_columns | array | 关键字匹配类型 | | +| view_type | str | 空 | **作用尚不明确** | +| is_pay | num | 0 | **作用尚不明确** | +| is_union_video | num | 是否为合作视频 | 0:否
1:是 | +| rec_tags | null | - | **作用尚不明确** | +| new_rec_tags | array | 空 | **作用尚不明确** | +| rank_score | num | 结果排序量化值 | | + +`视频条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------------------------------------------ | +| 0 | str | 匹配类型1 | title:标题匹配
description:简介匹配
author:UP主昵称匹配
tag:视频TAG匹配 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +**示例:** + +
+查看响应示例: + +```json +{ + "type": "video", + "id": 78977417, + "author": "MitchieM", + "mid": 5669526, + "typeid": "30", + "typename": "VOCALOID·UTAU", + "arcurl": "http://www.bilibili.com/video/av78977417", + "aid": 78977417, + "bvid": "BV1KJ411C7Un", + "title": "【Mitchie M】初音未来《买买买》【2020拜年祭单品】", + "description": "bilibili拜年祭のために、ダンスミュージックと中国の伝統楽器を組み合わせた曲を作りました。歌詞に「买买买」を使ったユニークな曲が出来上がったので、最高のクオリティーのMVと共に楽しんでもらえたら嬉しいです!\n为哔哩哔哩拜年祭制作了一首电子舞曲与中国传统乐器相结合的音乐,歌词是描写【买买买】的独特作品,和最棒的PV一起享受吧!\n\n▶︎ 舞蹈视频 [BV1pA411i7J6]", + "arcrank": "0", + "pic": "//i1.hdslb.com/bfs/archive/f0403bbd1ff3bad1df79aaa159d9e1cfb52c92de.jpg", + "play": 2915520, + "video_review": 14572, + "favorites": 114102, + "tag": "2020拜年祭单品,买买买,初音未来", + "review": 6124, + "pubdate": 1579877678, + "senddate": 1593099008, + "duration": "4:2", + "badgepay": false, + "hit_columns": [ + "title", + "description", + "tag" + ], + "view_type": "", + "is_pay": 0, + "is_union_video": 0, + "rec_tags": null, + "new_rec_tags": [], + "rank_score": 109020056 +} +``` + +
+ +## 对象类型2-结果为番剧&影视 + +| 字段 | 类型 | 内容 | 备注 | +| ---------------- | ------------------------------- | ---------------------------- | ------------------------------------------------------------ | +| type | str | 结果类型 | media_bangumi:番剧
media_ft:影视 | +| media_id | num | 剧集mdID | | +| season_id | num | 剧集ssID | | +| title | str | 剧集标题 | 关键字用xml标签``标注 | +| org_title | str | 剧集原名 | 关键字用xml标签``标注
可为空 | +| cover | str | 剧集封面url | | +| media_type | num | 剧集类型 | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | +| areas | str | 地区 | | +| styles | str | 风格 | | +| cv | str | 声优 | | +| staff | str | 制作组 | | +| play_state | num | 0 | **作用尚不明确** | +| goto_url | str | 剧集重定向url | | +| desc | str | 简介 | | +| corner | num | 角标有无 | 2:无
13:有 | +| pubtime | num | 开播时间 | 时间戳 | +| media_mode | num | 2 | **作用尚不明确** | +| is_avid | bool | false | **作用尚不明确** | +| fix_pubtime_str | str | 开播时间重写信息 | 优先级高于`pubtime`
可为空 | +| media_score | 有效时:obj
无效时:null | 评分信息 | | +| hit_columns | 有效时:array
无效时:null | 关键字匹配类型 | | +| all_net_name | str | 空 | **作用尚不明确** | +| all_net_icon | str | 空 | **作用尚不明确** | +| all_net_url | str | 空 | **作用尚不明确** | +| angle_title | str | 角标内容 | | +| angle_color | num | 角标颜色 | 0:红色
2:橙色 | +| display_info | array | 剧集标志信息 | | +| hit_epids | str | 关键字匹配分集标题的分集epID | 多个用`,`分隔 | +| pgc_season_id | num | 剧集ssID | | +| season_type | num | 剧集类型 | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | +| season_type_name | str | 剧集类型文字 | | +| selection_style | str | 分集选择按钮风格 | horizontal:横排式
grid:按钮式 | +| ep_size | num | 结果匹配的分集数 | | +| url | str | 剧集重定向url | | +| button_text | str | 观看按钮文字 | | +| is_follow | num | 是否追番 | 需要登录(SESSDATA)
未登录则恒为0
0:否
1:是 | +| is_selection | num | 1 | **作用尚不明确** | +| eps | array | 结果匹配的分集信息 | | +| badges | array | 剧集标志信息 | | + +`番剧条目`中的`media_score`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | ---- | +| user_count | num | 总计评分人数 | | +| score | num | 评分 | | + +`番剧条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | -------------------------------------- | +| 0 | str | 匹配类型1 | title:标题匹配
org_title:原标题 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +`番剧条目`中的`display_info`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ---- | +| 0 | obj | 剧集标志信息 | | + +`display_info`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------ | ---- | ------------ | ------ | +| bg_color_night | str | 夜间背景颜色 | 颜色码 | +| text | str | 剧集标志 | 颜色码 | +| border_color | str | 背景颜色 | 颜色码 | +| bg_style | num | 1 | | +| text_color | str | 文字颜色 | 颜色码 | +| bg_color | str | 背景颜色 | 颜色码 | +| text_color_night | str | 夜间文字颜色 | 颜色码 | +| border_color_night | str | 夜间背景颜色 | 颜色码 | + +`番剧条目`中的`eps`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------ | +| 0 | obj | 分集信息1 | | +| n | obj | 分集信息(n+1) | 项数为同时匹配到的分集数 | +| …… | obj | …… | …… | + +`eps`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ----- | ------------- | ---- | +| id | num | 分集epID | | +| cover | str | 分集封面url | | +| title | str | 完整标题 | | +| url | str | 分集重定向url | | +| release_date | str | 空 | | +| badges | array | 分集标志 | | +| index_title | str | 短标题 | | +| long_title | str | 单集标题 | | + +`番剧条目`中的`badges`数组(同`eps`数组中的对象中的`badges`数组): + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ---- | +| 0 | obj | 剧集标志信息 | | + +`badges`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------ | ---- | ------------ | ------ | +| text | str | 剧集标志 | 颜色码 | +| text_color | str | 文字颜色 | 颜色码 | +| text_color_night | str | 夜间文字颜色 | 颜色码 | +| bg_color | str | 背景颜色 | 颜色码 | +| bg_color_night | str | 夜间背景颜色 | 颜色码 | +| border_color | str | 空 | | +| border_color_night | str | 空 | | +| bg_style | num | 1 | | + +**示例:** + +
+查看响应示例: + +```json +{ + "media_id": 28224080, + "season_id": 29310, + "type": "media_bangumi", + "title": "异度侵入 ID:INVADED", + "org_title": "イド:インヴェイデッド", + "cover": "//i0.hdslb.com/bfs/bangumi/image/9bf9e66968f85b33ec3769a16c86b36dc984abbc.png", + "media_type": 1, + "areas": "日本", + "styles": "原创/科幻/推理", + "cv": "酒井户:津田健次郎\n百贵:细谷佳正\n富久田:竹内良太\n本堂町:M・A・O\n东乡:布里德卡特·塞拉·惠美\n早濑浦:村治学\n白岳:近藤隆\n羽二重:岩濑周平\n若鹿:榎木淳弥\n国府:加藤涉\n西村:落合福嗣\n松冈:西凛太朗 ", + "staff": "监督:青木英\n脚本:舞城王太郎\n角色原案:小玉有起\n角色设计:碇谷敦\n美术:曽野由大\n作画监督:又贺大介\n副监督:久保田雄大\n色彩设计:千叶絵美\n动画制作:NAZ", + "play_state": 0, + "goto_url": "https://www.bilibili.com/bangumi/play/ss29310/", + "desc": "本片讲述利用能检测出人们杀意的装置以及利用思想粒子做出的“井”,来探知事件真相的科幻故事。", + "corner": 13, + "pubtime": 1578240000, + "media_mode": 2, + "is_avid": false, + "fix_pubtime_str": "", + "media_score": { + "user_count": 275391, + "score": 9.8 + }, + "hit_columns": [ + "title" + ], + "all_net_name": "", + "all_net_icon": "", + "all_net_url": "", + "angle_title": "会员专享", + "angle_color": 0, + "display_info": [ + { + "bg_color_night": "#BB5B76", + "text": "会员专享", + "border_color": "#FB7299", + "bg_style": 1, + "text_color": "#FFFFFF", + "bg_color": "#FB7299", + "text_color_night": "#E5E5E5", + "border_color_night": "#BB5B76" + } + ], + "hit_epids": "", + "pgc_season_id": 29310, + "season_type": 1, + "season_type_name": "番剧", + "selection_style": "grid", + "ep_size": 13, + "url": "https://www.bilibili.com/bangumi/play/ss29310", + "button_text": "立即观看", + "is_follow": 1, + "is_selection": 1, + "eps": [ + { + "id": 307446, + "cover": "http://i0.hdslb.com/bfs/archive/4a1895e5b675209b6948dc321c3cc4991a6262bc.jpg", + "title": "1", + "url": "https://www.bilibili.com/bangumi/play/ep307446", + "release_date": "", + "badges": [], + "index_title": "1", + "long_title": "JIGSAWED 碎片世界" + }, + { + "id": 307447, + "cover": "http://i0.hdslb.com/bfs/archive/c66175203fdb6f54a9fb3accd793da0341b3140a.jpg", + "title": "2", + "url": "https://www.bilibili.com/bangumi/play/ep307447", + "release_date": "", + "badges": [ + { + "text": "会员", + "text_color": "#FFFFFF", + "text_color_night": "#E5E5E5", + "bg_color": "#FB7299", + "bg_color_night": "#BB5B76", + "border_color": "", + "border_color_night": "", + "bg_style": 1 + } + ], + "index_title": "2", + "long_title": "JIGSAWED Ⅱ 碎片世界" + }, + ………… + ], + "badges": [ + { + "text": "会员专享", + "text_color": "#FFFFFF", + "text_color_night": "#E5E5E5", + "bg_color": "#FB7299", + "bg_color_night": "#BB5B76", + "border_color": "", + "border_color_night": "", + "bg_style": 1 + } + ] +}, +``` + +
+ +## 对象类型3-结果为直播间 + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | -------------- | ----------------------------------------- | +| type | str | 结果类型 | 固定为live_room | +| rank_offset | num | 搜索结果排名值 | | +| uid | num | 主播UID | | +| tas | str | 直播间TAG | 多个用`,`分隔 | +| hit_columns | array | 关键字匹配类型 | | +| live_time | str | 开播时间 | YYYY-MM-DD HH:MM:SS | +| cate_name | str | 子分区名 | | +| live_status | num | 1 | | +| uname | str | 主播昵称 | | +| uface | str | 主播头像url | | +| user_cover | str | 直播间封面url | | +| short_id | num | 0 | **作用尚不明确** | +| area | num | 1 | **作用尚不明确** | +| title | str | 直播间标题 | 关键字用xml标签``标注 | +| cover | str | 关键帧截图url | | +| online | num | 在线人数 | | +| rank_index | num | 0 | **作用尚不明确** | +| rank_score | num | 结果排序量化值 | | +| roomid | num | 直播间ID | | +| attentions | num | 主播粉丝数 | | + +`直播间条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------------------------------------------ | +| 0 | str | 匹配类型1 | title:直播间标题匹配
cate_name:子分区名匹配
uname:主播昵称匹配 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +**示例:** + +
+查看响应示例: + +```json +{ + "rank_offset": 1, + "uid": 682508, + "tags": "minecraft,声控,我的世界,虚拟主播,助眠", + "hit_columns": [ + "title", + "cate_name" + ], + "live_time": "2020-07-03 19:08:46", + "cate_name": "我的世界", + "live_status": 1, + "uname": "超心塞的十六", + "uface": "//i0.hdslb.com/bfs/face/dc33ad47b5e299c08bea9cfe565373213012599c.jpg", + "user_cover": "//i0.hdslb.com/bfs/live/new_room_cover/cbc7b1d0ba181df2c714c2e45ab00937129d3c5c.jpg", + "short_id": 148, + "area": 1, + "type": "live_room", + "title": "MC 1.16 极限服", + "cover": "//i0.hdslb.com/bfs/live/keyframe07031915000000010313u3z18a.jpg", + "online": 34702, + "rank_index": 0, + "rank_score": 34702, + "roomid": 10313, + "attentions": 317864 +} +``` + +
+ +## 对象类型4-结果为主播 + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | -------------- | ------------------------------------------------------ | +| type | str | 结果类型 | 固定为live_user | +| rank_offset | num | 搜索结果排名值 | | +| uid | num | 主播UID | | +| tas | str | 直播间TAG | 多个用`,`分隔 | +| live_time | str | 开播时间 | YYYY-MM-DD HH:MM:SS
如未开播为0000-00-00 00:00:00 | +| hit_columns | array | 关键字匹配类型 | | +| live_status | num | 是否开播 | 0:未开播
1:已开播 | +| area | num | 1 | **作用尚不明确** | +| is_live | bool | 是否开播 | false:未开播
true:已开播 | +| uname | str | 主播昵称 | 关键字用xml标签``标注 | +| uface | str | 主播头像url | | +| rank_index | num | 0 | **作用尚不明确** | +| rank_score | num | 结果排序量化值 | | +| attentions | num | 主播粉丝数 | | + +`主播条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------ | +| 0 | str | 匹配类型1 | uname:主播昵称匹配 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +**示例:** + +
+查看响应示例: + +```json +{ + "rank_offset": 1, + "uid": 322892, + "tags": "鬼畜,游戏,瞎扯淡,轰炸挂", + "type": "live_user", + "live_time": "2020-07-03 17:57:30", + "hit_columns": [ + "uname" + ], + "live_status": 1, + "area": 1, + "is_live": true, + "uname": "痒局长", + "uface": "//i2.hdslb.com/bfs/face/bcdf640faa16ebaacea1d4c930baabaec9087a80.jpg", + "rank_index": 0, + "rank_score": 2620790, + "roomid": 5441, + "attentions": 2570790 +} +``` + +
+ +## 对象类型5-结果为专栏 + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ----- | -------------- | ---------------- | +| type | str | 结果类型 | 固定为article | +| rank_offset | num | 搜索结果排名值 | | +| pub_time | num | 投稿时间 | 时间戳 | +| like | num | 获赞数 | | +| title | str | 标题 | | +| mid | num | UP主UID | | +| image_urls | array | 封面图组 | | +| template_id | num | ??? | **作用尚不明确** | +| category_id | num | 专栏分区ID | | +| view | num | 阅读数 | | +| reply | num | 评论数 | | +| rank_index | num | 0 | **作用尚不明确** | +| desc | str | 文章预览 | | +| rank_score | num | 结果排序量化值 | | +| id | num | 专栏cvID | | +| category_name | str | 子分区名 | | + +`专栏条目`中的`covers`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 封面图片1 | | +| n | str | 封面图片(n+1) | | +| …… | str | …… | | + +**示例:** + +
+查看响应示例: + +```json +{ + "pub_time": 1582123245, + "like": 113, + "title": "【洛水闲谈】《普通DISCO》神话达成后的个人感想", + "rank_offset": 1, + "mid": 295535204, + "image_urls": [ + "//i0.hdslb.com/bfs/article/0c2e7e3cc14f7e097482688600be713a9e9a7029.png" + ], + "template_id": 4, + "category_id": 4, + "view": 843, + "reply": 58, + "rank_index": 0, + "desc": "今天,2020年2月19日,随着bilibili弹幕网上《普通DISCO》的播放量突破1000W,中文VOCALOID的第一首神话级歌曲诞生了。笔者昨夜盯着《普通DISCO》的播放量的增长速率熬到很晚,今早又起了个大早盯着那最后一万的播放量差距,直到播放量突破1000W才放松紧绷的神经,敲打键盘时肢体困倦神疲乏力,故长话短说,若有表达不妥之处还望各位海涵。ilem教主,其拥有近二十首百万传说曲,占bilibili弹幕网中文VOCALOID百万传说曲的三分之一,中文VOCALOID第一首传说曲与第", + "rank_score": 19, + "type": "article", + "id": 4743576, + "category_name": "动漫杂谈" +} +``` + +
+ +## 对象类型6-结果为话题 + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | ----------------- | ---------------- | +| type | str | 结果类型 | 固定为topic | +| description | str | 简介 | | +| pubdate | nm | 发布时间 | 时间戳 | +| title | str | 标题 | | +| favourite | num | 0 | **作用尚不明确** | +| hit_columns | array | 关键字匹配类型 | | +| review | num | 0 | **作用尚不明确** | +| rank_offset | num | 搜索结果排名值 | | +| cover | str | 话题封面url | | +| update | num | 上传时间 | 时间戳 | +| mid | nm | 0 | **作用尚不明确** | +| click | num | ??? | **作用尚不明确** | +| tp_type | num | ??? | **作用尚不明确** | +| keyword | str | 空 | **作用尚不明确** | +| tp_id | num | 话题tpID | | +| rank_index | num | 0 | **作用尚不明确** | +| author | str | UP主昵称 | | +| arcurl | str | 话题页面重定向url | | +| rank_score | num | 结果排序量化值 | | + +`话题条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------ | +| 0 | str | 匹配类型1 | title:话题标题匹配 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +**示例:** + +
+查看响应示例: + +```json +{ + "description": "「Bad Apple」的各式各样的PV有很多很多,小编在这里给大家推荐一些比较特别且高人气的特别PV......", + "pubdate": 1479380676, + "title": "「Bad Apple」 的N种特别PV", + "favourite": 0, + "hit_columns": [ + "title" + ], + "review": 0, + "rank_offset": 1, + "cover": "//i0.hdslb.com/bfs/active/3005a94d446db3873d97b483323156b491d850ac.jpg", + "update": 31507200, + "mid": 0, + "click": 211843, + "tp_type": 0, + "keyword": "", + "tp_id": 2215, + "rank_index": 0, + "author": "Nuuu", + "type": "topic", + "arcurl": "http://www.bilibili.com/topic/50.html", + "rank_score": 1851888 +} +``` + +
+ +## 对象类型7-结果为用户 + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ----- | -------------- | ----------------------------- | +| type | str | 结果类型 | 固定为bili_user | +| mid | num | 用户UID | | +| uname | str | 用户昵称 | | +| usign | str | 用户签名 | | +| fans | num | 用户粉丝数 | | +| videos | num | 用户稿件数 | | +| upic | str | 用户头像url | | +| verify_info | str | 空 | **作用尚不明确** | +| level | num | 用户等级 | | +| gender | num | 用户性别 | 1:男
2:女
3:私密 | +| is_upuser | num | 是否为UP主 | 0:否
1:是 | +| is_live | num | 是否正在直播 | 0:否
1:是 | +| room_id | num | 用户直播间ID | | +| res | array | 用户投稿内容 | | +| official_verify | obj | 用户认证信息 | | +| hit_columns | array | 关键字匹配类型 | | + +`用户条目`中的`res`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ------------------------- | +| 0 | obj | 用户投稿视频1 | | +| n | obj | 用户投稿视频(n+1) | 项数为用户投稿的3个视频数 | +| …… | obj | …… | …… | + +`res`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ----------------- | ---------------- | +| aid | num | 稿件avID | | +| bvid | str | 稿件bvID | | +| title | str | 视频标题 | | +| pubdate | num | 视频投稿时间 | 时间戳 | +| arcurl | str | 视频页面重定向url | | +| pic | str | 视频封面图片url | | +| play | str | 播放量 | | +| dm | str | 弹幕量 | | +| coin | num | 投币数 | | +| fav | num | 收藏数 | | +| desc | str | 视频简介 | | +| duration | str | 视频时长 | MM:SS | +| is_pay | num | 0 | **作用尚不明确** | +| is_union_video | num | 是否为合作视频 | 0:否
1:是 | + +`用户条目`中的`official_verify`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ----------------------------------------- | +| type | num | 是否认证 | 127:无
0:个人认证
1:组织认证 | +| desc | str | 认证名称 | | + +`用户条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------ | +| 0 | str | 匹配类型1 | uname:用户昵称匹配 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +**示例:** + +
+查看响应示例: + +```json +{ + "type": "bili_user", + "mid": 208259, + "uname": "陈睿", + "usign": "喜欢的话就坚持吧", + "fans": 1561640, + "videos": 5, + "upic": "//i1.hdslb.com/bfs/app/8920e6741fc2808cce5b81bc27abdbda291655d3.png", + "verify_info": "", + "level": 6, + "gender": 1, + "is_upuser": 1, + "is_live": 0, + "room_id": 3394945, + "res": [ + { + "aid": 883660923, + "bvid": "BV1SK4y1477d", + "title": "BILIBILI 11周年演讲", + "pubdate": 1593176427, + "arcurl": "http://www.bilibili.com/video/av883660923", + "pic": "//i0.hdslb.com/bfs/archive/b28021df9c67ee2821cb9c1142b9d5e594e3b951.jpg", + "play": "6144081", + "dm": 185789, + "coin": 167803, + "fav": 147421, + "desc": "BILIBILI 11周年演讲,邀请数位嘉宾分享他们与B站的故事。\n陈睿《bilibili 11周年主题演讲》\n机智的党妹 《在B站,表达自我》\n腾格尔《在B站,做全新的腾格尔》\n周深《在B站,做一个歌手》《起风了》\n罗翔《在B站,授业与解惑》\nCarly李旎《在B站,一起成长》\nBILIBILI 11周年特映片《喜相逢》", + "duration": "217:7", + "is_pay": 0, + "is_union_video": 1 + }, + { + "aid": 838688095, + "bvid": "BV1Wg4y1v77h", + "title": "我们的五年——B站五年员工纪念视频 2020版", + "pubdate": 1593004830, + "arcurl": "http://www.bilibili.com/video/av838688095", + "pic": "//i1.hdslb.com/bfs/archive/701da662dfe00fb180eb4a47f1c38403838570a7.jpg", + "play": "957960", + "dm": 10830, + "coin": 44030, + "fav": 23108, + "desc": "每年626前夕,我们都会给本年度满五年工龄的员工颁发金LOGO(金质的小电视胸章),感谢他们对公司的陪伴和付出。“五年守护,感恩有你”", + "duration": "4:51", + "is_pay": 0, + "is_union_video": 0 + }, + { + "aid": 327892668, + "bvid": "BV1fA411b7zo", + "title": "【推荐一本喜欢的书】上帝掷骰子吗?", + "pubdate": 1587632267, + "arcurl": "http://www.bilibili.com/video/av327892668", + "pic": "//i0.hdslb.com/bfs/archive/c3ec25e2e4425303d7f4915692e3a9f0ec027669.jpg", + "play": "2131624", + "dm": 13570, + "coin": 37432, + "fav": 35498, + "desc": "#推荐一本喜欢的书# 423世界读书日,推荐我看过的最好看的量子物理科普书籍《上帝掷骰子吗》#读书等身#\n欢迎参与B站读书日活动:https://www.bilibili.com/blackboard/activity-gNeFPygv0.html 你每投一个读书视频,B站都会为你捐出一本书。", + "duration": "4:46", + "is_pay": 0, + "is_union_video": 0 + } + ], + "official_verify": { + "type": 0, + "desc": "bilibili董事长兼CEO" + }, + "hit_columns": [ + "uname" + ] +} +``` + +
+ +## 对象类型8-结果为相簿 + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | -------------- | ---------------- | +| type | str | 结果类型 | 固定为photo | +| count | num | 图片数 | | +| like | num | 收藏数 | | +| title | str | 相簿标题 | | +| hit_columns | array | 关键字匹配类型 | | +| rank_offset | num | 搜索结果排名值 | | +| cover | str | 相簿封面url | | +| mid | num | UP主UID | | +| uname | str | UP主昵称 | | +| rank_index | num | 0 | **作用尚不明确** | +| view | num | 观看次数 | | +| id | num | 相簿ID | | +| rank_score | num | 结果排序量化值 | | + +`相簿条目`中的`hit_columns`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------------------------------------------ | +| 0 | str | 匹配类型1 | title:相簿标贴匹配
description:相簿简介匹配
source_tag:相簿TAG匹配 | +| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | +| …… | str | …… | …… | + +**示例:** + +
+查看响应示例: + +```json +{ + "count": 4, + "like": 42, + "title": "EVA Q 绫波丽", + "hit_columns": [ + "title" + ], + "rank_offset": 1, + "cover": "http://i0.hdslb.com/bfs/album/1043ee70b677c9aab406142c6aa00d097be07c1e.jpg", + "mid": 3306217, + "uname": "迷失人形LLS", + "rank_index": 0, + "view": 100924, + "type": "photo", + "id": 8952802, + "rank_score": 25315 +} +``` + +
\ No newline at end of file diff --git a/search/suggest.md b/search/suggest.md new file mode 100644 index 0000000..ea2bc07 --- /dev/null +++ b/search/suggest.md @@ -0,0 +1,181 @@ +# 搜索建议 + +## 获取搜索建议关键词(web端) + +> http://s.search.bilibili.com/main/suggest + +*请求方式:GET* + +搜索建议最多提供10个候选关键词 + +搜索建议内容可为任意语言(中 英 日等....),中文拼音支持全拼联想词 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | ---------------------- | ------ | ------------------------ | +| term | str | 需要获得建议的输入内容 | 必要 | | +| main_ver | str | v1 | 非必要 | 固定为`v1` | +| highlight | str | 任意 | 非必要 | 有此项开启关键词高亮标签 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------ | ------------ | +| code | num | 返回值 | 0:成功 | +| cost | obj | 详细搜索用时 | 大概是吧? | +| result | obj | 搜索建议结果 | | +| page caches | obj | ??? | 作用尚不明确 | +| sengine | obj | ??? | 作用尚不明确 | +| stoken | str | ??? | 作用尚不明确 | + +`cost`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------- | ---- | +| about | obj | 套了个娃 | | + +`cost`中的`about`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ---- | ---- | +| params_check | str | | | +| total | str | | | +| main_handler | str | | | + +`result`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----- | -------- | ---- | +| tag | array | 套了个娃 | | + +`result`中的`tag`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---------------------- | +| 0 | obj | 第1建议关键词 | | +| n | obj | 第(n+1)建议关键词 | 按照相关程度与热度顺序 | +| 9 | obj | 第10建议关键词 | 最后一项 | + +`tag`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---------- | ------------------------------------------------------------ | +| value | str | 关键词内容 | | +| ref | num | 0 | 作用尚不明确 | +| name | str | 显示内容 | 在无高亮显示时与`value`相同
有高亮显示时带有``的xml标签 | +| spid | num | ??? | 作用尚不明确 | + +`page caches`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ---- | ------------ | +| save cache | str | no | 作用尚不明确 | + +`sengine`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---- | ------------ | +| usage | num | 0 | 作用尚不明确 | + +**示例:** + +获取关于`lei`的搜索建议,关键词带有高亮 + +```shell +curl -G 'http://s.search.bilibili.com/main/suggest' \ +--data-urlencode 'term=lei' \ +--data-urlencode 'main_ver=v1' \ +--data-urlencode 'highlight=' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "cost": { + "about": { + "params_check": "0.000103", + "total": "0.011644", + "main_handler": "0.011472" + } + }, + "result": { + "tag": [ + { + "value": "雷军", + "ref": 0, + "name": "雷军", + "spid": 1 + }, + { + "value": "雷之律者", + "ref": 0, + "name": "雷之律者", + "spid": 5 + }, + { + "value": "LEI神", + "ref": 0, + "name": "LEI神", + "spid": 5 + }, + { + "value": "LEIGH ELLEXSON", + "ref": 0, + "name": "LEIGH ELLEXSON", + "spid": 5 + }, + { + "value": "LEICA Q2", + "ref": 0, + "name": "LEICA Q2", + "spid": 5 + }, + { + "value": "LEIGHANNE", + "ref": 0, + "name": "LEIGHANNE", + "spid": 0 + }, + { + "value": "雷达探测姬", + "ref": 0, + "name": "雷达探测姬", + "spid": 5 + }, + { + "value": "雷律", + "ref": 0, + "name": "雷律", + "spid": 5 + }, + { + "value": "雷霆嘎巴", + "ref": 0, + "name": "雷霆嘎巴", + "spid": 5 + }, + { + "value": "雷霆沙赞", + "ref": 0, + "name": "雷霆沙赞", + "spid": 5 + } + ] + }, + "page caches": { + "save cache": "no" + }, + "sengine": { + "usage": 0 + }, + "stoken": "12344377692164099019" +} +``` + +
diff --git a/user/check_nickname.md b/user/check_nickname.md index 8eb7b51..5ec8e14 100644 --- a/user/check_nickname.md +++ b/user/check_nickname.md @@ -1,15 +1,15 @@ # 检查昵称是否可注册 也可用于判断指定昵称的用户是否存在 -### 请求地址 > http://passport.bilibili.com/web/generic/check/nickname -*方式:GET* +*请求方式:GET* + +**url参数:** -**参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | -------- | ---- | ----------- | ------ | ---- | -| nickName | url | 目标昵称 | 必要 | | +| nickName | str | 目标昵称 | 必要 | 最长为16字符 | **json回复:** @@ -17,7 +17,7 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | --------------------------- | -| code | num | 状态码 | **详细说明见下一表格** | +| code | num | 状态码 | -400:请求错误
-500:服务器端异常
**详细说明见下一表格** | | message | str | 错误详情 | 若昵称可用,则不返回message | `code`状态码: @@ -28,26 +28,21 @@ | 2001 | 该昵称已被他人使用 | | 40002 | 昵称包含敏感信息 | | 40004 | 昵称不可包含除\-和_以外的特殊字符 | -| 40005 | 昵称过长 | -| 40006 | 昵称过短 | +| 40005 | 昵称过长(超过16字符) | +| 40006 | 昵称过短(少于2字符) | | 40014 | 昵称已存在 | **示例:** -查询昵称 `test` 是否被使用 +查询昵称 `xijinping` 是否被使用: -http://passport.bilibili.com/web/generic/check/nickname?nickName=test - -```json -{ - "code":40014, - "message":"昵称已存在" -} +```shell +curl -G 'http://passport.bilibili.com/web/generic/check/nickname' \ +--data-urlencode 'nickName=xijinping' ``` -查询昵称 `bishi` 是否被使用 - -http://passport.bilibili.com/web/generic/check/nickname?nickName=bishi +
+查看响应示例: ```json { @@ -56,5 +51,80 @@ http://passport.bilibili.com/web/generic/check/nickname?nickName=bishi } ``` +
+查询昵称 `//` 是否被使用: +```shell +curl -G 'http://passport.bilibili.com/web/generic/check/nickname' \ +--data-urlencode 'nickName=//' +``` + +
+查看响应示例: + +```json +{ + "code": 40004, + "message": "昵称不可包含除-和_以外的特殊字符" +} +``` + +
+ +查询昵称 `test0000000000000 ` 是否被使用: + +```shell +curl -G 'http://passport.bilibili.com/web/generic/check/nickname' \ +--data-urlencode 'nickName=test0000000000000 ' +``` + +
+查看响应示例: + +```json +{ + "code": 40005, + "message": "昵称过长" +} +``` + +
+ +查询昵称 `0` 是否被使用: + +```shell +curl -G 'http://passport.bilibili.com/web/generic/check/nickname' \ +--data-urlencode 'nickName=0' +``` + +
+查看响应示例: + +```json +{ + "code": 40006, + "message": "昵称过短" +} +``` + +
+ +查询昵称 `test` 是否被使用: + +```shell +curl -G 'http://passport.bilibili.com/web/generic/check/nickname' \ +--data-urlencode 'nickName=test' +``` + +
+查看响应示例: + +```json +{ + "code":40014, + "message":"昵称已存在" +} +``` + +
diff --git a/user/info.md b/user/info.md index 739f253..516bdd0 100644 --- a/user/info.md +++ b/user/info.md @@ -5,13 +5,15 @@ ## 用户详细信息1 (用于空间) > http://api.bilibili.com/x/space/acc/info -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA) + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -21,7 +23,7 @@ | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -33,22 +35,22 @@ | sex | str | 性别 | 男 女 保密 | | face | str | 头像链接 | | | sign | str | 签名 | | -| rank | num | 10000 | 作用尚不明确 | +| rank | num | 10000 | **作用尚不明确** | | level | num | 当前等级 | 0-6级 | -| jointime | num | 0 | 作用尚不明确 | -| moral | num | 0 | 作用尚不明确 | +| jointime | num | 0 | **作用尚不明确** | +| moral | num | 0 | **作用尚不明确** | | silence | num | 封禁状态 | 0:正常
1:被封 | | birthday | str | 生日 | MM-DD | -| coins | num | 硬币数 | 需要登录(SESSDATA)
只能查看自己的
默认为0 | +| coins | num | 硬币数 | 需要登录(Cookie)
只能查看自己的
默认为0 | | fans_badge | bool | 是否具有粉丝勋章 | false:无
true:有 | | official | obj | 认证信息 | | -| vip | obj | 大会员状态 | | -| pendant | obj | 头像框状态 | | -| nameplate | obj | 粉丝勋章状态 | | -| is_followed | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(SESSDATA)
未登录为false | -| top_photo | str | 主页头图链接 | png | -| theme | obj | 空 | 作用尚不明确 | -| sys_notice | obj | 空 | 作用尚不明确 | +| vip | obj | 大会员信息 | | +| pendant | obj | 头像框信息 | | +| nameplate | obj | 勋章信息 | | +| is_followed | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录恒为false | +| top_photo | str | 主页头图链接 | | +| theme | obj | 空 | **作用尚不明确** | +| sys_notice | obj | 系统通知 | 无内容则为空 | `data`中的`official`对象: @@ -69,29 +71,45 @@ `data`中的`pendant`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ------------ | -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ------------- | -------------------- | +| pid | num | 头像框id | **详细说明有待补充** | +| name | str | 头像框名称 | | +| image | str | 头像框图片url | | +| expire | num | 0 | **作用尚不明确** | `data`中的`nameplate`对象: -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------- | ---- | -| nid | num | 勋章id | | -| name | str | 勋章名称 | | -| image | str | 挂件图片url 正常 | | -| image_small | str | 勋章图片url 小 | | -| level | str | 勋章等级 | | -| condition | str | 勋章条件 | | +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | -------------------- | +| nid | num | 勋章id | **详细说明有待补充** | +| name | str | 勋章名称 | | +| image | str | 挂件图片url 正常 | | +| image_small | str | 勋章图片url 小 | | +| level | str | 勋章等级 | | +| condition | str | 勋章条件 | | + +`data`中的`sys_notice`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | --------------- | -------------------- | +| id | num | 系统提示类型ID | **详细说明有待补充** | +| content | str | 提示信息 | | +| url | str | 提示信息链接url | | **示列:** 查询用户`UID=2`的详细信息 -http://api.bilibili.com/x/space/acc/info?mid=2 +```shell +curl -G 'http://api.bilibili.com/x/space/acc/info' \ +--data-urlencode 'mid=2' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + ```json { "code": 0, @@ -144,6 +162,8 @@ http://api.bilibili.com/x/space/acc/info?mid=2 } ``` +
+ **查询到的信息解析如下:** **用户昵称为**:碧诗 @@ -194,14 +214,16 @@ http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png > http://api.bilibili.com/x/web-interface/card -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA) + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------------------- | ------ | ----------------------- | -| mid | url | 目标用户UID | 必要 | | -| photo | url | 是否请求用户主页头图 | 非必要 | true:是
false:否 | +| mid | num | 目标用户UID | 必要 | | +| photo | bool | 是否请求用户主页头图 | 非必要 | true:是
false:否 | **json回复:** @@ -211,7 +233,7 @@ http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -225,18 +247,18 @@ http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png | 字段 | 类型 | 内容 | 备注 | | --------------- | ----- | -------------- | ------------------------------------------------------------ | | mid | num | 用户UID | | -| approve | bool | false | 作用尚不明确 | +| approve | bool | false | **作用尚不明确** | | name | str | 用户昵称 | | | sex | str | 用户性别 | 男 女 保密 | | face | str | 用户头像链接 | | -| DisplayRank | str | 0 | 作用尚不明确 | -| regtime | num | 0 | 作用尚不明确 | -| spacesta | num | 0 | 作用尚不明确 | -| birthday | str | 空 | 作用尚不明确 | -| place | str | 空 | 作用尚不明确 | -| description | str | 空 | 作用尚不明确 | -| article | num | 0 | 作用尚不明确 | -| attentions | array | 空 | 作用尚不明确 | +| DisplayRank | str | 0 | **作用尚不明确** | +| regtime | num | 0 | **作用尚不明确** | +| spacesta | num | 0 | **作用尚不明确** | +| birthday | str | 空 | **作用尚不明确** | +| place | str | 空 | **作用尚不明确** | +| description | str | 空 | **作用尚不明确** | +| article | num | 0 | **作用尚不明确** | +| attentions | array | 空 | **作用尚不明确** | | fans | num | 粉丝数 | | | friend | num | 关注数 | | | attention | num | 关注数 | | @@ -247,39 +269,39 @@ http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png | official_verify | obj | 认证信息2 | | | vip | obj | 大会员状态 | | | space | obj | 主页头图 | | -| following | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(SESSDATA)
未登录为false | +| following | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录为false | | archive_count | num | 用户稿件数 | | -| article_count | num | 0 | 作用尚不明确 | +| article_count | num | 0 | **作用尚不明确** | | follower | num | 粉丝数 | | `card`中的`level_info`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | ---------- | ------------------ | -| current_level | num | 当前等级 | 0-6级 | -| current_min | num | 0 | 作用尚不明确 | -| current_exp | num | 0 | 作用尚不明确 | -| next_exp | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------- | ---------------- | +| current_level | num | 当前等级 | 0-6级 | +| current_min | num | 0 | 作用尚不明确 | +| current_exp | num | 0 | **作用尚不明确** | +| next_exp | num | 0 | **作用尚不明确** | `card`中的`pendant`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ------------ | -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | png | -| expire | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ----------- | ---------------- | +| pid | num | 挂件id | | +| name | str | 挂件名称 | | +| image | str | 挂件图片url | | +| expire | num | 0 | **作用尚不明确** | `card`中的`nameplate`对象: -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------- | ---- | -| nid | num | 勋章id | | -| name | str | 勋章名称 | | -| image | str | 挂件图片url 正常 | png | -| image_small | str | 勋章图片url 小 | png | -| level | str | 勋章等级 | | -| condition | str | 勋章条件 | | +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | -------------------- | +| nid | num | 勋章id | **详细说明有待补充** | +| name | str | 勋章名称 | | +| image | str | 挂件图片url 正常 | | +| image_small | str | 勋章图片url 小 | | +| level | str | 勋章等级 | | +| condition | str | 勋章条件 | | `card`中的`Official`对象: @@ -302,11 +324,11 @@ http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png | 字段 | 类型 | 内容 | 备注 | | ------------- | ---- | ---------- | ----------------------------------- | | vipType | num | 大会员类型 | 0:无
1:月会员
2:年会员 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | +| dueRemark | str | 空 | **作用尚不明确** | +| accessStatus | num | 0 | **作用尚不明确** | | vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| theme_type | num | 0 | 作用尚不明确 | +| vipStatusWarn | str | 空 | **作用尚不明确** | +| theme_type | num | 0 | **作用尚不明确** | `card`中的`space`对象: @@ -317,7 +339,16 @@ http://i2.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png **示列:** -http://api.bilibili.com/x/web-interface/card?mid=2&photo=true +```shell +curl -G 'api.bilibili.com/x/web-interface/card' \ +--data-urlencode 'mid=2' \ +--data-urlencode 'photo=true' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + ```json { "code": 0, @@ -394,15 +425,15 @@ http://api.bilibili.com/x/web-interface/card?mid=2&photo=true } ``` - +
## 本用户详细信息 > http://api.bilibili.com/x/space/myinfo -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) 功能同「[登录用户信息1](../login/login_info.md#登录用户信息1(完整))」 @@ -414,7 +445,7 @@ http://api.bilibili.com/x/web-interface/card?mid=2&photo=true | ------- | ---- | -------- | ------------------------- | | code | num | 返回值 | 0:成功
-101:未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -426,20 +457,20 @@ http://api.bilibili.com/x/web-interface/card?mid=2&photo=true | sex | str | 性别 | 男 女 保密 | | face | str | 头像图片url | | | sign | str | 签名 | | -| rank | num | 10000 | 作用尚不明确 | +| rank | num | 10000 | **作用尚不明确** | | level | num | 当前等级 | 0-6级 | -| jointime | num | 0 | 作用尚不明确 | +| jointime | num | 0 | **作用尚不明确** | | moral | num | 节操 | 默认70 | | silence | num | 封禁状态 | 0:正常
1:被封 | | email_status | num | 已验证邮箱 | 0:未验证
1:已验证 | | tel_status | num | 已验证手机号 | 0:未验证
1:已验证 | -| identification | num | 1 | 作用尚不明确 | +| identification | num | 1 | **作用尚不明确** | | vip | obj | 大会员状态 | | | birthday | num | 生日 | 时间戳 | -| is_tourist | num | 0 | 作用尚不明确 | -| is_fake_account | num | 0 | 作用尚不明确 | -| pin_prompting | num | 0 | 作用尚不明确 | -| is_deleted | num | 0 | 作用尚不明确 | +| is_tourist | num | 0 | **作用尚不明确** | +| is_fake_account | num | 0 | **作用尚不明确** | +| pin_prompting | num | 0 | **作用尚不明确** | +| is_deleted | num | 0 | **作用尚不明确** | | coins | num | 硬币数 | | | following | num | 粉丝数 | | | follower | num | 粉丝数 | | @@ -451,35 +482,35 @@ http://api.bilibili.com/x/web-interface/card?mid=2&photo=true | type | num | 大会员类型 | 0:无
1:月会员
2:年会员 | | status | num | 大会员状态 | 0:无
1:有 | | due_date | num | 大会员到期时间 | 毫秒 时间戳 | -| vip_pay_type | num | 1 | 作用尚不明确 | -| theme_type | num | 0 | 作用尚不明确 | +| vip_pay_type | num | 1 | **作用尚不明确** | +| theme_type | num | 0 | **作用尚不明确** | | label | obj | ??? | | `vip`中的`label`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ----- | ------ | ------------ | -| path | str | 空 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---------------- | +| path | str | 空 | **作用尚不明确** | `data`中的`pendant`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ------------ | -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | ----------- | -------------------- | +| pid | num | 挂件id | **详细说明有待补充** | +| name | str | 挂件名称 | | +| image | str | 挂件图片url | | +| expire | num | 0 | **作用尚不明确** | `data`中的`nameplate`对象: -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------- | ---- | -| nid | num | 勋章id | | -| name | str | 勋章名称 | | -| image | str | 挂件图片url 正常 | | -| image_small | str | 勋章图片url 小 | | -| level | str | 勋章等级 | | -| condition | str | 勋章条件 | | +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | -------------------- | +| nid | num | 勋章id | **详细说明有待补充** | +| name | str | 勋章名称 | | +| image | str | 挂件图片url 正常 | | +| image_small | str | 勋章图片url 小 | | +| level | str | 勋章等级 | | +| condition | str | 勋章条件 | | `data`中的`Official`对象: @@ -492,16 +523,23 @@ http://api.bilibili.com/x/web-interface/card?mid=2&photo=true `data`中的`level_exp`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | ---------- | ------------------ | -| current_level | num | 当前等级 | 0-6级 | -| current_min | num | 0 | 作用尚不明确 | -| current_exp | num | 0 | 作用尚不明确 | -| next_exp | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------- | ---------------- | +| current_level | num | 当前等级 | 0-6级 | +| current_min | num | 0 | **作用尚不明确** | +| current_exp | num | 0 | **作用尚不明确** | +| next_exp | num | 0 | **作用尚不明确** | **示例:** -http://api.bilibili.com/x/space/myinfo +```shell +curl -G 'api.bilibili.com/x/space/myinfo' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + ```json { "code": 0, @@ -569,3 +607,4 @@ http://api.bilibili.com/x/space/myinfo } ``` +
diff --git a/user/relation.md b/user/relation.md index 13b51a9..e647d8a 100644 --- a/user/relation.md +++ b/user/relation.md @@ -1,22 +1,25 @@ # 用户关系相关 -## 查询用户粉丝明细 +## 查询用户粉丝明细 > http://api.bilibili.com/x/relation/followers -*方式:GET* +*请求方式:GET* -登录(SESSDATA)可看自己全部 +认证方式:Cookie(SESSDATA)或APP -**参数:** +登录可看自己全部,其他用户仅可查看前5页 -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | -------------------------------- | -| vmid | url | 目标用户UID | 必要 | | -| ps | url | 每页项数 | 非必要 | 默认为50 | -| pn | url | 页码 | 非必要 | 默认为1
非自己仅可查看前5页 | +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| vmid | num | 目标用户UID | 必要 | | +| ps | num | 每页项数 | 非必要 | 默认为50 | +| pn | num | 页码 | 非必要 | 默认为1
其他用户仅可查看前5页 | **json回复:** @@ -26,7 +29,7 @@ | ------- | ---- | -------- | --------------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
22007:访问超过5页 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -88,9 +91,18 @@ **示例:** -以每页2项的方式获取`UID=293793435`的用户的第1页的粉丝明细 +获取用户`UID=293793435`的粉丝明细 -http://api.bilibili.com/x/relation/followers?vmid=293793435&ps=2&pn=1 +```shell +curl -G 'http://api.bilibili.com/x/relation/followers' \ +--data-urlencode 'vmid=293793435' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -155,25 +167,29 @@ http://api.bilibili.com/x/relation/followers?vmid=293793435&ps=2&pn=1 } ``` +
- -## 查询用户关注明细 +## 查询用户关注明细 > http://api.bilibili.com/x/relation/followings -*方式:GET* +*请求方式:GET* -登录(SESSDATA)可看自己全部 +认证方式:Cookie(SESSDATA)或APP -**参数:** +登录可看自己全部,其他用户仅可查看前5页 -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | -------------------------------- | -| vmid | url | 目标用户UID | 必要 | | -| ps | url | 每页项数 | 非必要 | 默认为50 | -| pn | url | 页码 | 非必要 | 默认为1
非自己仅可查看前5页 | +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| vmid | num | 目标用户UID | 必要 | | +| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空
按照最常访问排列:attention | +| ps | num | 每页项数 | 非必要 | 默认为50 | +| pn | num | 页码 | 非必要 | 默认为1
其他用户仅可查看前5页 | **json回复:** @@ -183,7 +199,7 @@ http://api.bilibili.com/x/relation/followers?vmid=293793435&ps=2&pn=1 | ------- | ---- | -------- | --------------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
22007:访问超过5页 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | data 对象: @@ -209,7 +225,7 @@ data 对象: | mid | num | 用户UID | | | attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | | mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | null默认分组
arrary存在至少一个分组 | 分组ID | 作用尚不明确 | +| tag | null默认分组
array存在至少一个分组 | 分组ID | 作用尚不明确 | | special | num | 特别关注标志 | 0:否
1:是 | | uname | str | 用户昵称 | | | face | str | 用户头像url | | @@ -253,9 +269,19 @@ data 对象: **示例:** -以每页2项的方式获取`UID=293793435`的用户的第1页的关注明细 +获取用户`UID=293793435`的关注明细,按照关注顺序 -http://api.bilibili.com/x/relation/followings?vmid=293793435&ps=2&pn=1 +```shell +curl -G 'http://api.bilibili.com/x/relation/ollowings' \ +--data-urlencode 'vmid=293793435' \ +--data-urlencode 'order_type=' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -320,7 +346,187 @@ http://api.bilibili.com/x/relation/followings?vmid=293793435&ps=2&pn=1 } ``` +
+## 查询共同关注明细 + + + +> http://api.bilibili.com/x/relation/same/followings + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | -------- | +| access_key | str | APP登录Token | APP方式必要 | | +| vmid | num | 目标用户UID | 必要 | | +| ps | num | 每页项数 | 非必要 | 默认为50 | +| pn | num | 页码 | 非必要 | 默认为1 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +data 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ----- | -------- | ------------ | +| list | array | 明细列表 | | +| re_version | num | ??? | 作用尚不明确 | +| total | num | 关注总数 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---------------- | +| 0 | obj | 共同关注1 | | +| n | obj | 共同关注(n+1) | 按照关注顺序排列 | +| …… | obj | …… | …… | + +数组`list`中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | --------------------------------------- | ------------ | --------------------------------------- | +| mid | num | 用户UID | | +| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | +| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | +| tag | null默认分组
array存在至少一个分组 | 分组ID | 作用尚不明确 | +| special | num | 特别关注标志 | 0:否
1:是 | +| uname | str | 用户昵称 | | +| face | str | 用户头像url | | +| sign | str | 用户签名 | | +| official_verify | obj | 认证信息 | | +| vip | obj | 会员信息 | | + +数组`list`中的对象中的`tag`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------------- | ---- | +| 0 | num | 位于分组1的分组ID | | +| n | num | 位于分组(n+1)的分组ID | | +| …… | num | …… | …… | + +数组`list`中的对象中的`official_verify`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ------------------- | +| type | num | 用户认证类型 | -1:无
0:认证 | +| desc | str | 用户认证信息 | 无为空 | + +数组`list`中的对象中的`vip`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | ------------ | ----------------------------------- | +| vipType | num | 大会员类型 | 0:无
1:月会员
2:年会员 | +| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | +| dueRemark | str | 空 | 作用尚不明确 | +| accessStatus | num | 0 | 作用尚不明确 | +| vipStatus | num | 大会员状态 | 0:无
1:有 | +| vipStatusWarn | str | 空 | 作用尚不明确 | +| themeType | num | 0 | 作用尚不明确 | +| label | obj | ??? | 作用尚不明确 | + +`vip`中的`label`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ------------ | +| path | str | 空 | 作用尚不明确 | + +**示例:** + +获取自己与用户`UID=2`的共同关注明细 + +```shell +curl -G 'http://api.bilibili.com/x/relation/same/followings' \ +--data-urlencode 'vmid=2' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "list": [ + { + "mid": 116683, + "attribute": 2, + "mtime": 1564627532, + "tag": null, + "special": 0, + "uname": "=咬人猫=", + "face": "http://i0.hdslb.com/bfs/face/8fad84a4470f3d894d8f0dc95555ab8f2cb10a83.jpg", + "sign": "面瘫女仆酱~小粗腿~事业线什么的!!吐槽你就输了!喵~", + "official_verify": { + "type": 0, + "desc": "bilibili 2019百大UP主、高能联盟成员" + }, + "vip": { + "vipType": 2, + "vipDueDate": 1618934400000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 1, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + } + }, + { + "mid": 517717593, + "attribute": 2, + "mtime": 1592126052, + "tag": [ + 207542 + ], + "special": 0, + "uname": "上海爱丽丝幻乐团", + "face": "http://i0.hdslb.com/bfs/face/851a9191cbe93e66304d7577c0f6f83834e52109.jpg", + "sign": "日本同人社团 上海爱丽丝幻乐团", + "official_verify": { + "type": 0, + "desc": "上海爱丽丝幻乐团官方账号" + }, + "vip": { + "vipType": 1, + "vipDueDate": 1593792000000, + "dueRemark": "", + "accessStatus": 0, + "vipStatus": 0, + "vipStatusWarn": "", + "themeType": 0, + "label": { + "path": "" + } + } + } + ], + "re_version": 2498273968, + "total": 38 + } +} +``` + +
## 操作用户关系(关注/取关 等) @@ -328,18 +534,19 @@ http://api.bilibili.com/x/relation/followings?vmid=293793435&ps=2&pn=1 > http://api.bilibili.com/x/relation/modify -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | -------------- | -| fid | data | 目标用户UID | 必要 | | -| act | data | 操作代码 | 必要 | 操作代码见下表 | -| re_src | data | 必须为11 | 必要 | | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| fid | num | 目标用户UID | 必要 | | +| act | num | 操作代码 | 必要 | **操作代码见下表** | +| re_src | num | 关注来源代码 | 必要 | 空间:11
视频:14
文章:115
活动页面:222 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | 操作代码`act`: @@ -361,13 +568,23 @@ http://api.bilibili.com/x/relation/followings?vmid=293793435&ps=2&pn=1 | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
22003:用户位于黑名单 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** 关注`UID=14082`的用户 -curl -b SESSDATA=xxx -d "fid=14082&act=1&re_src=11&csrf=xxx" "http://api.bilibili.com/x/relation/modify" +```shell +curl 'http://http://api.bilibili.com/x/relation/modify' \ +--data-urlencode 'fid=14082' \ +--data-urlencode 'act=1' \ +--data-urlencode 're_src=11' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -377,21 +594,93 @@ curl -b SESSDATA=xxx -d "fid=14082&act=1&re_src=11&csrf=xxx" "http://api.bilibil } ``` +
+## 批量操作用户关系(关注/取关 等) + +> http://api.bilibili.com/x/relation/batch/modify + +*请求方式:POST* + +认证方式:Cookie(SESSDATA)或APP + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| fids | nums | 目标用户UID | 必要 | 每个ID之间用`,`间隔 | +| act | num | 操作代码 | 必要 | 同上
仅可为1或5,故只能进行批量关注和拉黑 | +| re_src | num | 关注来源代码 | 必要 | 同上 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
22003:用户位于黑名单 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ----- | ------------- | ---- | +| failed_fids | array | 操作失败的UID | | + +`data`中的`failed_fids`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------------- | ---- | +| 0 | num | 操作失败的UID 1 | | +| n | num | 操作失败的UID(n+1) | | +| …… | num | …… | …… | + +**示例:** + +批量关注`UID=1,2,3,4,5`的用户 + +```shell +curl 'http://http://api.bilibili.com/x/relation/batch/modify' \ +--data-urlencode 'fid=1,2,3,4,5' \ +--data-urlencode 'act=1' \ +--data-urlencode 're_src=11' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "failed_fids": [] + } +} +``` + +
## 查询用户与自己关系1 (仅查关注) > http://api.bilibili.com/x/relation -*方式:GET* +*请求方式:GET* - 需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| fid | url | 目标用户UID | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| fid | num | 目标用户UID | 必要 | | **json回复:** @@ -401,7 +690,7 @@ curl -b SESSDATA=xxx -d "fid=14082&act=1&re_src=11&csrf=xxx" "http://api.bilibil | ------- | ---- | -------- | ------------------------------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -409,9 +698,9 @@ curl -b SESSDATA=xxx -d "fid=14082&act=1&re_src=11&csrf=xxx" "http://api.bilibil | 字段 | 类型 | 内容 | 备注 | | --------- | ---------------------------------------- | ------------ | --------------------------------------- | | mid | num | 目标用户UID | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | +| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉
128:拉黑 | | mtime | num | 关注对方时间 | 时间戳
未关注为0 | -| tag | null默认分组
arrary存在至少一个分组 | 分组ID | | +| tag | null默认分组
array存在至少一个分组 | 分组ID | | | special | num | 特别关注标志 | 0:否
1:是 | `tag`数组: @@ -426,7 +715,14 @@ curl -b SESSDATA=xxx -d "fid=14082&act=1&re_src=11&csrf=xxx" "http://api.bilibil 可得对于`UID=258150656`的用户,在`2018/10/28 0:51:41`时关注,且设为特别关注,并位于ID为`-10`分组中 -http://api.bilibili.com/x/relation?fid=258150656 +```shell +curl -G 'http://http://api.bilibili.com/x/relation' \ +--data-urlencode 'fid=258150656' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -443,21 +739,22 @@ http://api.bilibili.com/x/relation?fid=258150656 } ``` - +
## 查询用户与自己关系2(互相) > http://api.bilibili.com/x/space/acc/relation -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -467,7 +764,7 @@ http://api.bilibili.com/x/relation?fid=258150656 | ------- | ---- | -------- | ------------------------------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -482,20 +779,20 @@ http://api.bilibili.com/x/relation?fid=258150656 | 字段 | 类型 | 内容 | 备注 | | --------- | ---------------------------------------- | ------------ | -------------- | | mid | num | 对方用户UID | | -| attribute | num | | | +| attribute | num | 关注属性 | 0:未关注
1:悄悄关注
2:已关注
6:已互粉
128:拉黑 | | mtime | num | 关注对方时间 | 互关后刷新时间 | -| tag | null默认分组
arrary存在至少一个分组 | | | -| special | num | | | +| tag | null默认分组
array存在至少一个分组 | 分组ID | | +| special | num | 特别关注标志 | 0:否
1:是 | `data`中的`be_relation`对象: | 字段 | 类型 | 内容 | 备注 | | --------- | ---------------------------------------- | ------------ | -------------- | -| mid | num | | | -| attribute | num | | | +| mid | num | 自己的UID | | +| attribute | num | 关注属性 | 0:未关注
1:悄悄关注
2:已关注
6:已互粉
128:拉黑 | | mtime | num | 成为粉丝时间 | 互关后刷新时间 | -| tag | null默认分组
arrary存在至少一个分组 | | | -| special | num | | | +| tag | null默认分组
array存在至少一个分组 | 分组ID | | +| special | num | 特别关注标志 | 0:否
1:是 | `be_relation`与`relation`中的`tag`数组: @@ -509,7 +806,14 @@ http://api.bilibili.com/x/relation?fid=258150656 可得对于`UID=15858903`的用户,在`2019/1/24 14:24:19`时关注了对方,且互相关注,自己将对方特别关注,并同时位于ID为`-10`和`194110`的分组中,对方也将自己设为特别关注,并同时位于ID为`-10`和`56502`的分组中(虽然我看不到) -http://api.bilibili.com/x/space/acc/relation?mid=15858903 +```shell +curl -G 'http://api.bilibili.com/x/space/acc/relation' \ +--data-urlencode 'mid=15858903' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -537,7 +841,97 @@ http://api.bilibili.com/x/space/acc/relation?mid=15858903 } ``` +
+## 批量查询用户与自己关系 + +> http://api.bilibili.com/x/relation/relations + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| fids | nums | 目标用户UID | 必要 | 每个ID之间用`,`间隔 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ---------- | ---- | +| {用户UID} | obj | 关注的用户 | 下同 | +| …… | obj | …… | | + +`{用户UID}`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | --------------------------------------- | ------------ | ------------------------------------------------------------ | +| mid | num | 目标用户UID | | +| attribute | num | 关注属性 | 0:未关注
1:悄悄关注
2:已关注
6:已互粉
128:拉黑 | +| mtime | num | 关注对方时间 | 时间戳
未关注为0 | +| tag | null默认分组
array存在至少一个分组 | 分组ID | | +| special | num | 特别关注标志 | 0:否
1:是 | + +`tag`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------------- | ---- | +| 0 | num | 位于分组1的分组ID | | +| n | num | 位于分组(n+1)的分组ID | | +| …… | num | …… | …… | + +**示例:** + +批量查询`UID=1,2,3,4,5`的关系 + +```shell +curl -G 'http://http://api.bilibili.com/x/relation/relations' \ +--data-urlencode 'fid=258150656' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "1": { + "mid": 1, + "attribute": 2, + "mtime": 1601654227, + "tag": null, + "special": 0 + }, + "2": { + "mid": 2, + "attribute": 2, + "mtime": 1601654225, + "tag": null, + "special": 0 + } + } +} +``` + +
## 关注分组相关 @@ -545,9 +939,15 @@ http://api.bilibili.com/x/space/acc/relation?mid=15858903 > http://api.bilibili.com/x/relation/tags -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | **json回复:** @@ -557,8 +957,8 @@ http://api.bilibili.com/x/space/acc/relation?mid=15858903 | ------- | ------ | -------- | ----------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 分组列表 | | +| ttl | num | 1 | | +| data | array | 分组列表 | | `data`数组: @@ -581,7 +981,13 @@ http://api.bilibili.com/x/space/acc/relation?mid=15858903 查询所有的分组的名字以及ID -http://api.bilibili.com/x/relation/tags +```shell +curl 'http://api.bilibili.com/x/relation/tags' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -606,23 +1012,25 @@ http://api.bilibili.com/x/relation/tags } ``` - +
### 查询关注分组明细 > http://api.bilibili.com/x/relation/tag -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---------------------------------- | -| tagid | url | 分组ID | 必要 | 特别关注恒为-10
默认分组恒为0 | -| ps | url | 每页项数 | 非必要 | 默认为50 | -| pn | url | 页数 | 非必要 | 默认为1 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| tagid | num | 分组ID | 必要 | 特别关注恒为-10
默认分组恒为0 | +| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空
按照最常访问排列:attention | +| ps | num | 每页项数 | 非必要 | 默认为50 | +| pn | num | 页数 | 非必要 | 默认为1 | **json回复:** @@ -630,18 +1038,18 @@ http://api.bilibili.com/x/relation/tags | 字段 | 类型 | 内容 | 备注 | | ------- | ------ | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
22104:该分组不存在
-101:账号未登录 | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
22104:该分组不存在 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 成员列表 | | +| ttl | num | 1 | | +| data | array | 成员列表 | | `data`数组: -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 成员信息1 | | -| n | obj | 成员信息n | 按照添加顺序排序 | -| …… | num | …… | …… | +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---------------- | +| 0 | obj | 成员信息1 | | +| n | obj | 成员信息(n+1) | 按照添加顺序排序 | +| …… | obj | …… | …… | 数组`data`中的对象: @@ -682,9 +1090,19 @@ http://api.bilibili.com/x/relation/tags **示例:** -以每页2项的方式获取了ID为`207542`分组的第1页的粉丝明细 +以每页2项的方式获取了ID为`207542`分组的第1页的粉丝明细,按照关注顺序 -http://api.bilibili.com/x/relation/tag?tagid=207542&ps=2&pn=1 +```shell +curl -G 'http://api.bilibili.com/x/relation/tag' \ +--data-urlencode 'tagid=207542' \ +--data-urlencode 'order_type=' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -737,21 +1155,22 @@ http://api.bilibili.com/x/relation/tag?tagid=207542&ps=2&pn=1 } ``` - +
### 查询目标用户所在的分组 > http://api.bilibili.com/x/relation/tag/user -*方式:GET* +*请求方式:GET* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| fid | url | 目标用户UID | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| fid | num | 目标用户UID | 必要 | | **json回复:** @@ -761,7 +1180,7 @@ http://api.bilibili.com/x/relation/tag?tagid=207542&ps=2&pn=1 | ------- | ---- | -------- | ------------------------------------------------- | | code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -776,7 +1195,14 @@ http://api.bilibili.com/x/relation/tag?tagid=207542&ps=2&pn=1 查询用户`UID=319214221`存在的所有分组ID和名称 -http://api.bilibili.com/x/relation/tag/user?fid=319214221 +```shell +curl -G 'http://api.bilibili.com/x/relation/tag/user' \ +--data-urlencode 'fid=319214221' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -790,24 +1216,98 @@ http://api.bilibili.com/x/relation/tag/user?fid=319214221 } ``` +
+### 查询所有特别关注的UID -### 创建关注分组 +> http://api.bilibili.com/x/relation/tag/special + +*请求方式:GET* + +认证方式:Cookie(SESSDATA)或APP + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | -------- | ----------------------------- | +| code | num | 返回值 | 0:成功
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 成员列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------------- | ---- | +| 0 | num | 成员1UID | | +| n | num | 成员(n+1)UID | | +| …… | num | …… | …… | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/relation/tag/special' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + 500716647, + 32832243, + 53456, + 25944552, + 301839556, + 427494870, + 319214221, + 31949159, + 382666849, + 258318451, + 15858903, + 54992199, + 3379951, + 392279807, + 23215368, + 258150656, + 20165629, + 22179720 + ] +} +``` + +
+ +### 创建分组 > http://api.bilibili.com/x/relation/tag/create -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---------- | -| tag | data | 分组名 | 必要 | 最长16字符 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---------- | +| access_key | str | APP登录Token | APP方式必要 | | +| tag | str | 分组名 | 必要 | 最长16字符 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | **json回复:** @@ -817,7 +1317,7 @@ http://api.bilibili.com/x/relation/tag/user?fid=319214221 | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22106:该分组已经存在
22103:分组名过长 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -828,9 +1328,17 @@ http://api.bilibili.com/x/relation/tag/user?fid=319214221 **示例:** -创建了名为`vUP`的分组,得到ID为`216677` +创建了名为`测试`的分组,得到ID为`216677` -curl -b SESSDATA=xxx -d "tag=vUP&csrf=xxx" "http://api.bilibili.com/x/relation/tag/create" +```shell +curl 'http://api.bilibili.com/x/relation/tag/create' \ +--data-urlencode 'tag=测试' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -843,23 +1351,24 @@ curl -b SESSDATA=xxx -d "tag=vUP&csrf=xxx" "http://api.bilibili.com/x/relation/t } ``` +
- -### 重命名关注分组 +### 重命名分组 > http://api.bilibili.com/x/relation/tag/update -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---------- | -| tagid | data | 分组ID | 必要 | | -| name | data | 新名称 | 必要 | 最长16字符 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---------- | +| access_key | str | APP登录Token | APP方式必要 | | +| tagid | num | 分组ID | 必要 | | +| name | str | 新名称 | 必要 | 最长16字符 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | **json回复:** @@ -869,13 +1378,22 @@ curl -b SESSDATA=xxx -d "tag=vUP&csrf=xxx" "http://api.bilibili.com/x/relation/t | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22103:分组名过长
22104:该分组不存在 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** 把ID为`194112`的分组更名为`膜法师` -curl -b SESSDATA=xxx -d "tagid=194112&name=%e8%86%9c%e6%b3%95%e5%b8%88&csrf=xxx" "http://api.bilibili.com/x/relation/tag/update" +```shell +curl 'http://api.bilibili.com/x/relation/tag/update' \ +--data-urlencode 'tagid=194112' \ +--data-urlencode 'name=膜法师' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -885,24 +1403,25 @@ curl -b SESSDATA=xxx -d "tagid=194112&name=%e8%86%9c%e6%b3%95%e5%b8%88&csrf=xxx" } ``` +
- -### 删除关注分组 +### 删除分组 > http://api.bilibili.com/x/relation/tag/del -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---- | -| tagid | data | 分组ID | 必要 | | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| tagid | num | 分组ID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | **json回复:** @@ -912,13 +1431,21 @@ curl -b SESSDATA=xxx -d "tagid=194112&name=%e8%86%9c%e6%b3%95%e5%b8%88&csrf=xxx" | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | 示例: 删除分组ID为`216699`的分组 -curl -b SESSDATA=xxx -d "tagid=216699&csrf=xxx" "http://api.bilibili.com/x/relation/tag/del" +```shell +curl 'http://api.bilibili.com/x/relation/tag/del' \ +--data-urlencode 'tagid=216699' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -928,25 +1455,26 @@ curl -b SESSDATA=xxx -d "tagid=216699&csrf=xxx" "http://api.bilibili.com/x/relat } ``` +
- -### 修改用户分组关系(添加/删除) +### 修改分组成员(添加/删除) > http://api.bilibili.com/x/relation/tags/addUsers -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | -------------------------- | -| fids | data | 目标用户UID | 必要 | 每个ID之间用","(%2C)间隔 | -| tagids | data | 分组ID | 必要 | 每个ID之间用","(%2C)间隔 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| fids | nums | 目标用户UID | 必要 | 每个ID之间用`,`间隔 | +| tagids | nums | 分组ID | 必要 | 每个ID之间用`,`间隔 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | **json回复:** @@ -956,13 +1484,22 @@ curl -b SESSDATA=xxx -d "tagid=216699&csrf=xxx" "http://api.bilibili.com/x/relat | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22104:无权限
22105:未关注 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** 把关注用户`UID=205631797`同时添加分组关系到ID为`-10`和`207542`的分组中 -curl -b SESSDATA=xxx -d "fids=205631797&tagids=-10%2C207542&csrf=xxx" "http://api.bilibili.com/x/relation/tags/addUsers" +```shell +curl 'http://api.bilibili.com/x/relation/tags/addUsers' \ +--data-urlencode 'fids=205631797' \ +--data-urlencode 'tagids=-10,207542' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -972,23 +1509,24 @@ curl -b SESSDATA=xxx -d "fids=205631797&tagids=-10%2C207542&csrf=xxx" "http://ap } ``` +
- -### 批量复制关注用户到分组 +### 复制关注到分组 > http://api.bilibili.com/x/relation/tags/copyUsers -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | -------------------------- | -| fids | data | 目标用户UID | 必要 | 每个ID之间用","(%2C)间隔 | -| tagids | data | 分组ID | 必要 | 每个ID之间用","(%2C)间隔 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | ------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| fids | nums | 待复制的用户UID | 必要 | 每个ID之间用`,`间隔 | +| tagids | nums | 目标分组ID | 必要 | 每个ID之间用`,`间隔 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | **json回复:** @@ -998,13 +1536,22 @@ curl -b SESSDATA=xxx -d "fids=205631797&tagids=-10%2C207542&csrf=xxx" "http://ap | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22104:无权限
22105:未关注 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** 把关注用户`UID=4856007`和`UID=326499679`同时复制到ID为`231305`的分组中 -curl -b SESSDATA=xxx -d "fids=4856007%2C326499679&tagids=231305&csrf=xxx" "http://api.bilibili.com/x/relation/tags/copyUsers" +```shell +curl 'http://api.bilibili.com/x/relation/tags/copyUsers' \ +--data-urlencode 'fids=4856007,326499679' \ +--data-urlencode 'tagids=231305' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -1014,24 +1561,25 @@ curl -b SESSDATA=xxx -d "fids=4856007%2C326499679&tagids=231305&csrf=xxx" "http: } ``` +
- -### 批量移动关注用户到分组 +### 移动关注到分组 > http://api.bilibili.com/x/relation/tags/moveUsers -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA)或APP -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ------------------- | ------ | -------------------------- | -| beforeTagids | data | | | | -| afterTagids | data | | | | -| fids | data | 目标用户UID | 必要 | 每个ID之间用","(%2C)间隔 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------ | ---- | ------------------------ | -------------- | ------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| beforeTagids | nums | 原分组ID | 必要 | 每个ID之间用`,`间隔 | +| afterTagids | nums | 新分组ID | 必要 | 每个ID之间用`,`间隔 | +| fids | nums | 待移动的用户UID | 必要 | 每个ID之间用`,`间隔 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | **json回复:** @@ -1041,15 +1589,23 @@ curl -b SESSDATA=xxx -d "fids=4856007%2C326499679&tagids=231305&csrf=xxx" "http: | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22104:无权限
22105:未关注 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** -把关注用户`UID=3211734 -69`和`UID=327086920`同时从ID为`207542`的分组移动到ID为`231305`的分组中 +把关注用户`UID=321173469`和`UID=327086920`同时从ID为`207542`的分组移动到ID为`231305`的分组中 -curl -b SESSDATA=xxx -d "beforeTagids=207542&afterTagids=231305&fids=3211734 -69%2C327086920&csrf=xxx" "http://api.bilibili.com/x/relation/tags/moveUsers" +```shell +curl 'http://api.bilibili.com/x/relation/tags/moveUsers' \ +--data-urlencode 'beforeTagids=207542' \ +--data-urlencode 'afterTagids=23130' \ +--data-urlencode 'fids=321173469,327086920' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -1059,3 +1615,4 @@ curl -b SESSDATA=xxx -d "beforeTagids=207542&afterTagids=231305&fids=3211734 } ``` +
diff --git a/user/space.md b/user/space.md index 5b2e109..abd31d7 100644 --- a/user/space.md +++ b/user/space.md @@ -1,20 +1,24 @@ # 用户空间相关 -## 查询相关 +## 主页 -### 查询用户置顶视频 + + +### 置顶视频 + +#### 查询用户置顶视频 >http://api.bilibili.com/x/space/top/arc -*方式:GET* +*请求方式:GET* 粉丝在其主页上可见 -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| vmid | url | 目标用户UID | 必要 | | +| vmid | num | 目标用户UID | 必要 | | **json回复:** @@ -24,93 +28,47 @@ | ------- | ---- | -------- | ---------------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
53016:没有置顶视频 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息(avID/bvID互转))」中的data对象 - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ------------------------------ | ----------------------- | -| aid | num | 视频avID | | -| videos | num | 视频分P总数 | 默认为1 | -| tid | num | 分区ID | | -| tname | str | 子分区名称 | | -| copyright | num | 版权标志 | 1:自制
2:转载 | -| pic | str | 视频封面图片url | | -| title | str | 视频标题 | | -| pubdate | num | 视频上传时间 | 时间戳 | -| ctime | num | 视频审核通过时间 | 时间戳 | -| desc | str | 视频简介 | | -| state | num | 0 | 作用尚不明确 | -| attribute | num | | 作用尚不明确 | -| duration | num | 视频总计持续时长(所有分P) | 单位为秒 | -| rights | obj | 视频属性标志 | | -| owner | obj | 视频UP主信息 | | -| stat | obj | 视频状态数 | | -| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | -| cid | num | 视频1P CID | | -| dimension | obj | 视频1P分辨率 | | -| bvid | str | 视频bvID | | -| reason | str | 置顶视频备注 | | -| inter_video | bool | 是否为合作视频 | false:否
ture:是 | - -`data`中的`rights`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ---------------- | ---------------------------------------- | -| bp | num | 0 | 作用尚不明确 | -| elec | num | 0 | 作用尚不明确 | -| download | num | 允许下载标志 | 0:不允许
1:允许 | -| movie | num | 视频时电影标志 | 0:否
1:是 | -| pay | num | 仅会员可观看标志 | 0:无
1:有 | -| hd5 | num | 有高码率标志 | 0:无
1:有 | -| no_reprint | num | 禁止转载标志 | 0:无
1:禁止 | -| autoplay | num | 可自动播放标志 | 0:无
1:有 区别影视番剧与普通视频 | -| ugc_pay | num | 0 | 作用尚不明确 | -| is_cooperation | num | 视频合作标志 | 0:无
1:是 | -| ugc_pay_preview | num | 0 | 作用尚不明确 | -| no_background | num | 0 | 作用尚不明确 | - -`data`中的`owner`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| mid | num | UP主UID | | -| name | str | UP主昵称 | | -| face | str | UP主头像 | | - -`data`中的`stat`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------------------------ | ------------ | -| aid | num | 视频avID | | -| view | num | 普通:观看次数
屏蔽时:-1 | | -| danmaku | num | 弹幕条数 | | -| reply | num | 评论条数 | | -| favorite | num | 收藏人数 | | -| coin | num | 投币枚数 | | -| share | num | 分享次数 | | -| now_rank | num | 0 | 作用尚不明确 | -| his_rank | num | 历史最高排行 | | -| like | num | 获赞次数 | | -| dislike | num | 0 | 作用尚不明确 | -| evaluation | str | 视频评分 | 默认为空 | - -同`data`中的`dimension`对象 - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ------------ | -| width | num | 当前分P 宽度 | 可能为0 | -| height | num | 当前分P 高度 | 可能为0 | -| rotate | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------------------------ | ------------------------------------------------------------ | +| aid | num | 稿件avID | | +| videos | num | 视频分P总数 | 默认为1 | +| tid | num | 分区tID | | +| tname | str | 子分区名称 | | +| copyright | num | 是否转载 | 1:原创
2:转载 | +| pic | str | 视频封面图片url | | +| title | str | 稿件标题 | | +| pubdate | num | 稿件发布时间 | 时间戳 | +| ctime | num | 用户提交稿件的时间 | 时间戳 | +| desc | str | 视频简介 | | +| state | num | 视频状态 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`state`备注 | +| attribute | num | 稿件属性位配置 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`attribute`备注 | +| duration | num | 视频总计持续时长(所有分P) | 单位为秒 | +| rights | obj | 视频属性标志 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`rights`对象 | +| owner | obj | 视频UP主信息 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`owner`对象 | +| stat | obj | 视频状态数 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`stat`对象 | +| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | +| cid | num | 视频1P CID | | +| dimension | obj | 视频1P分辨率 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`dimension`对象 | +| bvid | str | 稿件bvID | | +| reason | str | 置顶视频备注 | | +| inter_video | bool | 是否为合作视频 | false:否
true:是 | **示例:** 查询用户`UID=23215368`的置顶视频 -http://api.bilibili.com/x/space/top/arc?vmid=23215368 +```shell +curl -G 'http://api.bilibili.com/x/space/top/arc' \ +--data-urlencode 'vmid=23215368' +``` + +
+查看响应示例: ```json { @@ -177,23 +135,130 @@ http://api.bilibili.com/x/space/top/arc?vmid=23215368 } ``` +
+#### 设置置顶视频 -### 查询用户代表作视频列表 +> http://api.bilibili.com/x/space/top/arc/set + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------------ | -------------------------------- | +| aid | num | 置顶目标稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 置顶目标稿件bvID | 必要(可选) | avID与bvID任选一个 | +| reason | str | 置顶视频备注 | 非必要 | 置顶备注最大40字符
默认为空 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-304:未修改
-400:请求错误
53014:稿件已失效
53015:备注过长
53017:置顶非自己的稿件 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +置顶视频`av98948772`/`BV1n741127LD` + +avID方式: + +```shell +curl 'http://api.bilibili.com/x/space/top/arc/set' \ +--data-urlencode 'aid=98948772' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/space/top/arc/set' \ +--data-urlencode 'bvid=BV1n741127LD' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +#### 取消置顶视频 + +> http://api.bilibili.com/x/space/top/arc/cancel + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误(重复取消) | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/space/top/arc/cancel' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 代表作视频 + +#### 查询用户代表作视频列表 > http://api.bilibili.com/x/space/masterpiece -*方式:GET* +*请求方式:GET* 新访客在其主页上可见 最多可以设置3个 -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| vmid | url | 目标用户UID | 必要 | | +| vmid | num | 目标用户UID | 必要 | | **json回复:** @@ -203,8 +268,8 @@ http://api.bilibili.com/x/space/top/arc?vmid=23215368 | ------- | ------ | ---------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 代表作列表 | | +| ttl | num | 1 | | +| data | array | 代表作列表 | | `data`数组: @@ -216,13 +281,19 @@ http://api.bilibili.com/x/space/top/arc?vmid=23215368 `data`数组中的对象: -同查询用户置顶视频中的`data`对象 +同[查询用户置顶视频](#查询用户置顶视频)中的`data`对象 **示例:** 查询用户`UID=23215368`的代表作视频列表 -http://api.bilibili.com/x/space/masterpiece?vmid=23215368 +```shell +curl -G 'http://api.bilibili.com/x/space/masterpiece' \ +--data-urlencode 'vmid=23215368' +``` + +
+查看响应示例: ```json { @@ -402,23 +473,269 @@ http://api.bilibili.com/x/space/masterpiece?vmid=23215368 } ``` +
+#### 添加代表作视频 -### 查询用户投稿视频明细 +> http://api.bilibili.com/x/space/masterpiece/add - +*请求方式:POST* -> http://api.bilibili.com/x/space/arc/search +认证方式:Cookie(SESSDATA) -*方式:GET* +代表作上限为3个稿件 -**参数:** +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------------ | -------------------------------- | +| aid | num | 置顶目标稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 置顶目标稿件bvID | 必要(可选) | avID与bvID任选一个 | +| reason | str | 代表作备注 | 非必要 | 置顶备注最大40字符
默认为空 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53014:稿件已失效
53015:备注过长
53017:置顶非自己的稿件
53019:达到上限
53020:已经存在该稿件 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +添加视频`av94916552`/`BV1ZE411K7ux`到代表作列表 + +avID方式: + +```shell +curl 'http://api.bilibili.com/x/space/masterpiece/add' \ +--data-urlencode 'aid=94916552' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/space/masterpiece/add' \ +--data-urlencode 'bvid=BV1ZE411K7ux' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +#### 删除代表作视频 + +> http://api.bilibili.com/x/space/masterpiece/cancel + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------------ | ------------------ | +| aid | num | 要删除的目标稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 要删除的目标稿件bvID | 必要(可选) | avID与bvID任选一个 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53021:置顶列表中没有该视频 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | 作用尚不明确 | + +**示例:** + +删除置顶视频`av59765630`/`BV1Yt41137T6` + +avID方式: + +```shell +curl 'api.bilibili.com/x/space/masterpiece/cancel' \ +--data-urlencode 'aid=59765630' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/space/masterpiece/cancel' \ +--data-urlencode 'bvid=BV1Yt41137T6' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +### 个人TAG + +#### 查看用户个人TAG + +> http://api.bilibili.com/x/space/acc/tags + +*请求方式:GET* + +上限5条,且内容由用户自定义 + +带有转义 + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | -| pn | url | 页码 | 必要 | | -| ps | url | 每页项数 | 必要 | | +| mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 信息本体 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------------- | +| 0 | obj | 套了个娃 | 只有1项??? | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----- | ----------- | ---- | +| mid | num | 目标用户UID | | +| tags | array | TAG名称 | | + +`data`数组中的对象中的`tags`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ------- | +| 0 | str | TAG1 | | +| n | str | TAG(n+1) | | +| …… | str | …… | | +| 4 | str | TAG5 | 上限5条 | + +**示例:** + +查看用户`UID=53456`的个人TAG + +```shell +curl -G 'http://api.bilibili.com/x/space/acc/tags' \ +--data-urlencode 'mid=53456' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "mid": 53456, + "tags": [ + "游戏", + "音乐", + "warma", + "搞笑", + "动画" + ] + } + ] +} +``` + +
+ +#### 修改个人TAG + +> http://api.bilibili.com/x/space/acc/tags/set + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`存在且不为0 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| tags | strs | 要设置的TAG内容 | 非必要 | 删除公告留空或省去即可
各TAG长度小于10字符
最多5个TAG
各TAG之间用","(%2C)分隔
重复TAG无效 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误(超出长度限制) | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +修改个人TAG为`minecraft,技术宅,大佬,小哥哥,可爱` + +```shell +curl 'http://api.bilibili.com/x/space/acc/tags/set' \ +--data-urlencode 'tags=minecraft,技术宅,大佬,小哥哥,可爱' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;DedeUserID=1' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 空间公告 + +#### 查看用户空间公告 + +> http://api.bilibili.com/x/space/notice + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -428,7 +745,761 @@ http://api.bilibili.com/x/space/masterpiece?vmid=23215368 | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | +| data | str | 公告信息 | 无则为空 | + +**示例:** + +查看用户`UID=53456`的空间公告 + +```shell +curl -G 'http://api.bilibili.com/x/space/notice' \ +--data-urlencode 'mid=53456' +``` + +
+查看响应示例: + +```json +{ + "code":0, + "message":"0", + "ttl":1, + "data":"我的微博 @_warma_\n直播录像上传到:warma养鸽场\n头像画师是:微博@Dr-H_喵_\n横幅画师:@薬屋" +} +``` + +
+ +#### 修改空间公告 + +> http://api.bilibili.com/x/space/notice/set + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | --------------------------------------- | +| notice | str | 要设置的公告内容 | 非必要 | 删除公告留空或省去即可
少于150字符 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-304:未修改
-400:请求错误(超出长度限制) | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | 作用尚不明确 | + +**示例:** + +修改个人空间公告为`鸽子` + +```shell +curl 'http://api.bilibili.com/x/space/notice/set' \ +--data-urlencode 'notice=鸽子' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 主页板块布局与权限 + +#### 查询空间设置 + +> http://space.bilibili.com/ajax/settings/getSettings + +*请求方式:GET* + +注:带有转义 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ------------------- | -------- | ---- | +| status | bool | 用户是否存在 | true:存在
false:不存在 | +| data | 用户存在时:obj
用户不存在时:str| 用户存在时:信息本体
用户不存在时:错误信息 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------------------- | ----- | ---------------- | ------------ | +| privacy | obj | 空间隐私权限 | | +| index_order | array | 空间板块布局 | | +| theme | str | default主题? | 作用尚不明确 | +| theme_preview_img_path | str | 主题预览图路径? | 作用尚不明确 | +| toutu | obj | 空间头图 | | + +`privacy`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | -------------- | ------------------------------ | +| bangumi | num | 追番及追剧 | 0:隐藏
1:公开
**下同** | +| bbq | num | 轻视频 | | +| channel | num | 频道 | | +| coins_video | num | 最近投币的视频 | | +| comic | num | 追漫 | | +| dress_up | num | 装扮 | | +| fav_video | num | 收藏夹 | | +| groups | num | 圈子? | 作用尚不明确 | +| likes_video | num | 最近点赞的视频 | | +| played_game | num | 最近玩过的游戏 | | +| tags | num | 订阅标签 | | +| user_info | num | 个人资料 | | + +`index_order`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------- | -------------------------------------------- | +| 0 | obj | 板块1 | 根据板块布局顺序排序
先左侧布局后右侧布局 | +| n | obj | 板块(n+1) | | +| …… | obj | …… | …… | + +`index_order`数组内对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| id | num | 板块编号 | | +| name | str | 板块名称 | | + +`toutu`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ---- | -------------------- | ------------------------------------------------------ | +| sid | num | 1 | 作用尚不明确 | +| expire | num | 到期时间? | 时间戳?
作用尚不明确 | +| s_img | str | 空间头图小图相对路径 | 完整url为`http://i0.hdslb.com/`+相对路径 | +| l_img | str | 空间头图相对路径 | **同上** | +| android_img | str | 安卓端头图 | 未启用
注:手机版头图与web版不同,用另一个api获取 | +| iphone_img | str | iPhone端头图 | 未启用 | +| ipad_img | str | iPad端头图 | 未启用 | +| thumbnail_img | str | 缩略图 | 未启用 | +| platform | num | 0 | 作用尚不明确 | + +**示例:** + +查看`UID=2`的空间设置 + +```shell +curl -G 'http://space.bilibili.com/ajax/settings/getSettings' \ +--data-urlencode 'mid=2' +``` + +
+查看响应示例: + +```json +{ + "status":true, + "data":{ + "privacy":{ + "bangumi":1, + "bbq":1, + "channel":1, + "coins_video":0, + "comic":1, + "dress_up":1, + "fav_video":0, + "groups":0, + "likes_video":0, + "played_game":1, + "tags":1, + "user_info":1 + }, + "index_order":[ + { + "id":1, + "name":"我的稿件" + }, + { + "id":8, + "name":"我的专栏" + }, + { + "id":7, + "name":"我的频道" + }, + { + "id":2, + "name":"我的收藏夹" + }, + { + "id":3, + "name":"订阅番剧" + }, + { + "id":4, + "name":"订阅标签" + }, + { + "id":5, + "name":"最近投币的视频" + }, + { + "id":6, + "name":"我的圈子" + }, + { + "id":9, + "name":"我的相簿" + }, + { + "id":21, + "name":"公告" + }, + { + "id":22, + "name":"直播间" + }, + { + "id":23, + "name":"个人资料" + }, + { + "id":24, + "name":"官方活动" + }, + { + "id":25, + "name":"最近玩过的游戏" + } + ], + "theme":"default", + "theme_preview_img_path":"", + "toutu":{ + "sid":1, + "expire":2861874560, + "s_img":"bfs/space/768cc4fd97618cf589d23c2711a1d1a729f42235.png", + "l_img":"bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png", + "android_img":"", + "iphone_img":"", + "ipad_img":"", + "thumbnail_img":"", + "platform":0 + } + } +} +``` + +
+ +#### 调整空间板块布局 + +> http://space.bilibili.com/ajax/settings/setIndexOrder + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0,referer为 `.bilibili.com`域名下 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| index_order | nums | 布局列表 | 必要 | 每个值之间用","(%2C)分隔
先左侧布局再右侧布局
值的意义见下表 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +布局参数`index_order`: + +| 值 | 含义 | +| ---- | ------------------------------------ | +| 1 | (左侧)我的稿件 | +| 2 | (左侧)我的收藏夹 | +| 3 | (左侧)订阅番剧 | +| 4 | (左侧)订阅标签 | +| 5 | (左侧)最近投币的视频 | +| 6 | (左侧)我的圈子**(此板块被隐藏)** | +| 7 | (左侧)我的频道 | +| 8 | (左侧)我的专栏 | +| 9 | (左侧)我的相簿 | +| 21 | (右侧)公告 | +| 22 | (右侧)直播间 | +| 23 | (右侧)个人资料 | +| 24 | (右侧)官方活动 | +| 25 | (右侧)最近玩的游戏 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | ----------------------------------- | +| ststus | bool | 操作结果 | true:操作成功
false:操作失败 | +| data | str | 错误信息 | 正确时无此项 | + +**示例:** + +调整空间布局为: + +>我的稿件 直播间 +>我的专栏 个人资料 +>订阅番剧 公告 +>我的收藏夹 官方活动 +>我的相簿 最近玩的游戏 +>最近投币的视频 +>订阅标签 +>我的频道 + +```shell +curl 'http://space.bilibili.com/ajax/settings/setIndexOrder' \ +--data-urlencode 'index_order=1,8,3,2,9,5,4,7,22,23,21,24,25,6' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;' \ +-e 'https://www.bilibili.com' +``` + +
+查看响应示例: + +```json +{ + "status": true +} +``` + +
+ +#### 修改空间隐私权限 + +> http://space.bilibili.com/ajax/settings/setPrivacy + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +鉴权方式:Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0,referer为 `.bilibili.com`域名下 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ------------------------ | ------ | ---------------------------------- | +| fav_video | num | 收藏视频 | 非必要 | 0:隐藏
1:公开
**下同** | +| bangumi | num | 追番及追剧 | 非必要 | | +| tags | num | 关注的TAG | 非必要 | | +| coins_video | num | 投币的视频 | 非必要 | | +| user_info | num | 个人信息 | 非必要 | | +| played_game | num | 玩过的游戏 | 非必要 | | +| csrf | nstr | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------- | ----------------------------------- | +| ststus | bool | 操作结果 | true:操作成功
false:操作失败 | +| data | str | 错误信息 | 正确时无此项 | + +**示例:** + +设置`关注的TAG`为隐藏 + +```shell +curl 'http://space.bilibili.com/ajax/settings/setPrivacy' \ +--data-urlencode 'tags=0' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;' \ +-e 'https://www.bilibili.com' +``` + +
+查看响应示例: + +```json +{ + "status": true +} +``` + +
+ +### 查询用户最近玩过的游戏 + +> http://api.bilibili.com/x/space/lastplaygame + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------------------------------- | -------- | ---------------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 隐藏时:null
公开时:array | 信息本体 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------- | ---------------- | +| 0 | obj | 游戏1 | | +| n | obj | 游戏(n+1) | 项数为总计游戏数 | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | --------------- | ---- | +| website | str | 游戏主页链接url | | +| image | str | 游戏图片url | | +| name | str | 游戏名 | | + +**示例:** + +查询`UID=2`的最近玩过的游戏 + +```shell +curl -G 'http://api.bilibili.com/x/space/lastplaygame' \ +--data-urlencode 'mid=2' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "website": "https://game.bilibili.com/fgo/event_meihosou", + "image": "http://i0.hdslb.com/bfs/game/f7d4ee0877089e4079b8f0b4f5c95dd4ceba512a.png", + "name": "命运-冠位指定(Fate/GO)" + }, + { + "website": "https://game.bilibili.com/pcr/xxtix", + "image": "http://i0.hdslb.com/bfs/game/7922ecea5cc76fe3c8c177e1d4a6c8cf1c36a700.jpg", + "name": "公主连结Re:Dive" + }, + { + "website": "https://game.bilibili.com/dwbgx/", + "image": "http://i0.hdslb.com/bfs/game/6d5b2df70dfa987408d8d09110cdc327949885e3.png", + "name": "大王不高兴" + }, + { + "website": "https://game.bilibili.com/bangdream/1stanniversary-yxzx/", + "image": "http://i0.hdslb.com/bfs/game/4a7d0b7272dffe5a489ee935b6bd2d4f7d5f1257.png", + "name": "BanG Dream!" + }, + { + "website": "http://www.biligame.com/detail/?id=101772", + "image": "http://i0.hdslb.com/bfs/game/8e8b04e7bd2170c2ba2c9f563a62c72bac2eba2c.jpg", + "name": "明日方舟" + } + ] +} +``` + +
+ +### 获取用户最近投币的视频明细 + +> http://api.bilibili.com/x/space/coin/video + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +如设置隐私查看自己的需要认证 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| vmid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------------------------------- | -------- | ---------------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 隐藏时:null
公开时:array | 信息本体 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 投币视频1 | | +| n | obj | 投币视频(n+1) | | +| …… | obj | …… | | + +`data`数组中的对象: + +基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 + +**示例:** + +查看用户`UID=15858903`的最近投币视频 + +```shell +curl -G 'http://space.bilibili.com/x/space/coin/video' \ +--data-urlencode 'vmid=15858903' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [ + { + "aid": 669644066, + "videos": 1, + "tid": 75, + "tname": "动物圈", + "copyright": 2, + "pic": "http://i1.hdslb.com/bfs/archive/0f73a68b8f449cc72e9ef109685bd295dc0c0c9d.jpg", + "title": "在人类幼崽身上用尽了温柔", + "pubdate": 1600608261, + "ctime": 1600608261, + "desc": "https://weibo.com/tv/show/1034:4551253766897703?from=old_pc_videoshow", + "state": 0, + "attribute": 16384, + "duration": 29, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 0, + "no_reprint": 0, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 258457966, + "name": "卧龙寺", + "face": "http://i2.hdslb.com/bfs/face/f868d1f522733fdcf72a6267e0237157dd0e9948.jpg" + }, + "stat": { + "aid": 669644066, + "view": 3412898, + "danmaku": 719, + "reply": 1481, + "favorite": 21909, + "coin": 2864, + "share": 13702, + "now_rank": 0, + "his_rank": 0, + "like": 86970, + "dislike": 0 + }, + "dynamic": "", + "cid": 237319289, + "dimension": { + "width": 576, + "height": 1024, + "rotate": 0 + }, + "bvid": "BV1sa4y1j7jk", + "coins": 1, + "time": 1601802763, + "ip": "", + "inter_video": false + }, + { + "aid": 202267998, + "videos": 1, + "tid": 138, + "tname": "搞笑", + "copyright": 1, + "pic": "http://i0.hdslb.com/bfs/archive/ca7746f2207114513f1a421d7f744523275ee679.jpg", + "title": "充 电 器 の 痛", + "pubdate": 1601750952, + "ctime": 1601750952, + "desc": "这个简介吓到我了!", + "state": 0, + "attribute": 16512, + "duration": 50, + "mission_id": 14725, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 0, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 129922746, + "name": "-白糖洒一地-", + "face": "http://i0.hdslb.com/bfs/face/1f581f3b20a380c2fd13ecb8bbe409f8b49c6418.jpg" + }, + "stat": { + "aid": 202267998, + "view": 109, + "danmaku": 2, + "reply": 11, + "favorite": 5, + "coin": 9, + "share": 0, + "now_rank": 0, + "his_rank": 0, + "like": 20, + "dislike": 0 + }, + "dynamic": "", + "cid": 241861687, + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "bvid": "BV1oh411X7iA", + "coins": 2, + "time": 1601773750, + "ip": "", + "inter_video": false + }, + { + "aid": 839722373, + "videos": 1, + "tid": 208, + "tname": "校园学习", + "copyright": 1, + "pic": "http://i2.hdslb.com/bfs/archive/11ed53241ceab314c919adba9f85582d24d9313c.jpg", + "title": "“白piáo”用日语到底怎么说?油管人气日语老师来教你!", + "pubdate": 1601026026, + "ctime": 1601026026, + "desc": "志方老师的B站用语日语课又来了~\n欢迎大家来看哦,\n如果喜欢我们的作品的话,欢迎大家用2~3连+转发来支持我们~\n如果拒绝的话,也可以用日语在评论和弹幕里刷上一波~即可以锻炼日语又可以拒绝我们,岂不美哉~~", + "state": 0, + "attribute": 16768, + "duration": 310, + "mission_id": 14655, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 1, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 677926489, + "name": "日语志方老师", + "face": "http://i2.hdslb.com/bfs/face/d465e5cd42e3523a52b3bef38dce7b23627b7723.jpg" + }, + "stat": { + "aid": 839722373, + "view": 130688, + "danmaku": 1320, + "reply": 799, + "favorite": 3722, + "coin": 5883, + "share": 339, + "now_rank": 0, + "his_rank": 0, + "like": 17585, + "dislike": 0 + }, + "dynamic": "志方老师的B站用语日语课又来了~\n欢迎大家来看哦,\n如果喜欢我们的作品的话,欢迎大家用2~3连+转发来支持我们~\n如果拒绝的话,也可以用日语在评论和弹幕里刷上一波~即可以锻炼日语又可以拒绝我们,岂不美哉~~", + "cid": 238876133, + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "bvid": "BV1n54y117kq", + "coins": 2, + "time": 1601036198, + "ip": "", + "inter_video": false + } + ] +} +``` + +
+ +## 投稿 + + + +### 查询用户投稿视频明细 + +> http://api.bilibili.com/x/space/arc/search + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------- | ---- | ------------ | ------ | ------------------------------------------------------------ | +| mid | num | 目标用户UID | 必要 | | +| order | str | 排序方式 | 非必要 | 默认为pubdate
最新发布:pubdate
最多播放:click
最多收藏:stow | +| tid | num | 筛选目标分区 | 非必要 | 默认为0
0:不进行分区筛选
分区tID为所筛选的分区 | +| keyword | str | 关键词筛选 | 非必要 | 用于使用关键词搜索该UP主视频稿件 | +| pn | num | 页码 | 必要 | | +| ps | num | 每页项数 | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -443,7 +1514,7 @@ http://api.bilibili.com/x/space/masterpiece?vmid=23215368 | 字段 | 类型 | 内容 | 备注 | | ----- | ------ | ---------------- | ---- | | tlist | obj | 投稿视频分区索引 | | -| vlist | arrary | 投稿视频列表 | | +| vlist | array | 投稿视频列表 | | `list`中的`tlist`对象: @@ -506,7 +1577,14 @@ http://api.bilibili.com/x/space/masterpiece?vmid=23215368 以每页2项查询用户`UID=53456`的第1页投稿视频明细 -http://api.bilibili.com/x/space/arc/search?mid=53456&ps=2&pn=1 +```shell +curl -G 'http://api.bilibili.com/x/space/arc/search' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' +``` + +
+查看响应示例: ```json { @@ -588,25 +1666,1464 @@ http://api.bilibili.com/x/space/arc/search?mid=53456&ps=2&pn=1 } ``` +
+### 查询用户投稿相簿预览 -### 查询用户追番预览列表 +> http://api.bilibili.com/x/space/album/index - +*请求方式:GET* -> http://space.bilibili.com/ajax/Bangumi/getList +所有类型的相簿 -*方式:GET* +**url参数:** -带有转义,且只能获取最多15条 +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------ | ------ | ------- | +| mid | num | 目标用户UID | 必要 | | +| ps | num | 获取的相簿量 | 非必要 | 默认为8 | -如设置隐私查看自己的需要登录(SESSDATA) +**json回复:** -**参数:** +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 相簿列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 相簿内容1 | | +| n | obj | 相簿内容(n+1) | | +| …… | obj | …… | …… | + +`data`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ------ | ----------- | -------------- | +| count | num | 总计图片数 | | +| ctime | num | 发布时间 | 时间戳 | +| description | str | 简介 | | +| doc_id | num | 相簿ID | 非动态ID!!! | +| like | num | 点赞数 | | +| pictures | array | 图片内容 | | +| poster_uid | num | 上传用户UID | | +| title | str | 标题 | 动态内容无 | +| view | num | 浏览数 | | + +`data`数组中的对象中的`pictures`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | --------------------- | +| 0 | obj | 内容图片1 | | +| n | obj | 内容图片(n+1) | 项数取决于`count`的值 | +| …… | obj | …… | …… | + +`pictures`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------- | ----------- | +| img_height | num | 图片高度 | | +| img_size | num | 图片大小 | 单位为KByte | +| img_src | str | 图片url | | +| img_width | num | 图片宽度 | | + +**示例:** + +查询用户`UID=53456`的投稿相簿预览 + +```shell +curl -G 'http://api.bilibili.com/x/space/album/index' \ +--data-urlencode 'mid=53456' \ +--data-urlencode 'ps=2' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [{ + "doc_id": 60470424, + "poster_uid": 53456, + "title": "", + "description": "你醒啦![tv_大佬]\n之前说到过的百万粉纪念的视频已经定时在了今天下午七点,欢迎来看呀!", + "pictures": [{ + "img_src": "https://i0.hdslb.com/bfs/album/2840366e30bf7c0aba9da5adde1a771255a57bc7.jpg", + "img_width": 625, + "img_height": 134, + "img_size": 14 + }], + "count": 1, + "ctime": 1583444859, + "view": 1677521, + "like": 29974 + }, { + "doc_id": 58962388, + "poster_uid": 53456, + "title": "", + "description": "上次的那些写实儿童画发出来啦!可以打印下来辟邪[tv_大佬]", + "pictures": [{ + "img_src": "https://i0.hdslb.com/bfs/album/8acaf7c7897cb858cccab36c33a5e875adfef177.jpg", + "img_width": 2172, + "img_height": 3258, + "img_size": 2831 + }, { + "img_src": "https://i0.hdslb.com/bfs/album/1611b6b56d3d4328889a62b9f9bdc92e9d065532.jpg", + "img_width": 3456, + "img_height": 5184, + "img_size": 3024 + }, { + "img_src": "https://i0.hdslb.com/bfs/album/f3a30a2ef5b39711af8b945d54d85ffd1e932b8a.jpg", + "img_width": 1200, + "img_height": 757, + "img_size": 313 + }], + "count": 3, + "ctime": 1582881332, + "view": 1176646, + "like": 25734 + }] +} +``` + +
+ +### 查询用户投稿相簿明细 + +> http://api.vc.bilibili.com/link_draw/v1/doc/doc_list + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| --------- | ---- | ----------- | ------ | ------------------------------------------------------------ | +| uid | num | 目标用户UID | 必要 | | +| page_num | num | 页码 | 非必要 | 默认为1 | +| page_size | num | 每页项数 | 非必要 | 默认为20 | +| biz | str | 查询类型 | 非必要 | 全部:all
绘画:draw
摄影:photo
日常:daily
默认为all | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------- | +| code | num | 返回值 | 0:成功 | +| msg | str | 错误信息 | 默认为success | +| message | str | 错误信息 | 默认为success | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ------ | -------- | ---- | +| items | array | 相簿列表 | | + +`items`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | obj | 相簿内容1 | | +| n | obj | 相簿内容(n+1) | | +| …… | obj | …… | …… | + +`items`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ------ | ----------- | -------------- | +| count | num | 总计图片数 | | +| ctime | num | 发布时间 | 时间戳 | +| description | str | 简介 | | +| doc_id | num | 相簿ID | 非动态ID!!! | +| like | num | 点赞数 | | +| pictures | array | 图片内容 | | +| poster_uid | num | 上传用户UID | | +| title | str | 标题 | 动态内容无 | +| view | num | 浏览数 | | + +`items`数组中的对象中的`pictures`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | --------------------- | +| 0 | obj | 内容图片1 | | +| n | obj | 内容图片(n+1) | 项数取决于`count`的值 | +| …… | obj | …… | …… | + +`pictures`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | -------- | ----------- | +| img_height | num | 图片高度 | | +| img_size | num | 图片大小 | 单位为KByte | +| img_src | str | 图片url | | +| img_width | num | 图片宽度 | | + +**示例:** + +查询用户`UID=53456`的投稿明细中的全部类型 + +```shell +curl -G 'http://api.vc.bilibili.com/link_draw/v1/doc/doc_list' \ +--data-urlencode 'uid=2' \ +--data-urlencode 'page_num=1' \ +--data-urlencode 'page_size=2' \ +--data-urlencode 'biz=all' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "msg": "success", + "message": "success", + "data": { + "items": [{ + "doc_id": 59015720, + "poster_uid": 2, + "title": "", + "description": "6影是真的无脑,2个宝石都护不住(设计师:这真是太酷了)", + "pictures": [{ + "img_src": "http://i0.hdslb.com/bfs/album/8456f050ec8639c6e0cef36aba27bfdedc550590.jpg", + "img_width": 1824, + "img_height": 840, + "img_size": 1024 + }], + "count": 1, + "ctime": 1582894607, + "view": 707073, + "like": 7055 + }, { + "doc_id": 46853140, + "poster_uid": 2, + "title": "", + "description": "#年度报告# #新年Flag# https://www.bilibili.com/blackboard/timemachine2019.html\n决定了,这就是我的新年Flag!今年我一定要…", + "pictures": [{ + "img_src": "http://i0.hdslb.com/bfs/album/5b3ae76f79d7cf2501afc3ca7c7da509dcf0e38a.jpg", + "img_width": 1125, + "img_height": 2184, + "img_size": 465 + }, { + "img_src": "http://i0.hdslb.com/bfs/album/87789fe9644337a1f7e6a0655a32584705af8bda.jpg", + "img_width": 1125, + "img_height": 2184, + "img_size": 421 + }, { + "img_src": "http://i0.hdslb.com/bfs/album/f752d7f3bb7952f6c0013b3f48ddcb07060b4721.jpg", + "img_width": 1125, + "img_height": 2184, + "img_size": 524 + }, { + "img_src": "http://i0.hdslb.com/bfs/active/7a52a411bccb716c8e67fe70e6c330d5209346de.jpg", + "img_width": 1125, + "img_height": 2184, + "img_size": 534 + }], + "count": 4, + "ctime": 1577966163, + "view": 833193, + "like": 5667 + }] + } +} +``` + +
+ +## 频道 + + + +### 查询用户频道列表 + +> http://api.bilibili.com/x/space/channel/list + +*请求方式:GET* + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +| mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | -------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | 无则为空 | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ------ | ---------- | ---- | +| count | num | 总计频道数 | | +| list | array | 频道列表 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | --------------------- | +| 0 | obj | 频道1 | | +| n | obj | 频道(n+1) | 项数取决于`count`的值 | +| …… | obj | …… | …… | + +`data`中的`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------------- | -------- | +| cid | num | 频道ID | | +| count | num | 频道内含视频数 | | +| cover | str | 封面图片url | | +| intro | str | 简介 | 无则为空 | +| mid | num | 创建用户UID | | +| mtime | num | 创建时间 | 时间戳 | +| name | str | 标题 | | + +**示例:** + +查询用户`UID=53456`的频道列表 + +```shell +curl -G 'http://api.bilibili.com/x/space/channel/list' \ +--data-urlencode 'mid=53456' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 6, + "list": [{ + "cid": 100249, + "mid": 53456, + "name": "【实况】动物之森", + "intro": "", + "mtime": 1579898830, + "count": 2, + "cover": "http://i1.hdslb.com/bfs/archive/6a7ed9483c34e839dfca981b9e2b94cd4c4efa0a.jpg" + }, { + "cid": 79323, + "mid": 53456, + "name": "忆雨", + "intro": "忆雨出现过的视频", + "mtime": 1562535222, + "count": 7, + "cover": "http://i2.hdslb.com/bfs/archive/1783e4f03042b282495799adda1cb56270cea647.jpg" + }, { + "cid": 79322, + "mid": 53456, + "name": "大画家", + "intro": "", + "mtime": 1562535122, + "count": 6, + "cover": "http://i0.hdslb.com/bfs/archive/9c85a14e805c6c23cb7a42e1dbef97821bb68960.jpg" + }, { + "cid": 77758, + "mid": 53456, + "name": "灭火器", + "intro": "", + "mtime": 1561270856, + "count": 4, + "cover": "http://i2.hdslb.com/bfs/archive/0073208d086b4ebe9cdc540e7664aa74b483aeb6.jpg" + }, { + "cid": 75696, + "mid": 53456, + "name": "沃玛小剧场", + "intro": "", + "mtime": 1559129460, + "count": 5, + "cover": "http://i2.hdslb.com/bfs/archive/db2b20ecdb6ed013fc3780b0e741ea88d46b5b40.jpg" + }, { + "cid": 170, + "mid": 53456, + "name": "爆炸电台", + "intro": "闲聊的电台", + "mtime": 1503298893, + "count": 7, + "cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg" + }] + } +} +``` + +
+ + + +### 查询用户频道中的视频 + +> http://api.bilibili.com/x/space/channel/video + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | --------- | +| mid | num | 目标用户UID | 必要 | | +| cid | num | 目标频道ID | 必要 | | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页项数 | 非必要 | 默认为100 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无用户对应的频道 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| list | obj | 频道信息 | | +| page | obj | 页面信息 | | + +`data`中的`list`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ------ | -------------- | -------- | +| archives | array | 包含的视频列表 | | +| cid | num | 频道ID | | +| count | num | 频道内含视频数 | | +| cover | str | 封面图片url | | +| intro | str | 简介 | 无则为空 | +| mid | num | 创建用户UID | | +| mtime | num | 创建时间 | 时间戳 | +| name | str | 标题 | | + +`list`中的`archives`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | --------------------- | +| 0 | obj | 视频1 | | +| n | obj | 视频(n+1) | 项数取决于`count`的值 | +| …… | obj | …… | …… | + +`list`中的`archives`数组中的对象: + +基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息(avID/bvID互转))」中的data对象 + +`data`中的`page`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ---------- | ---- | +| count | num | 总计视频数 | | +| num | num | 当前页码 | | +| size | num | 每页项数 | | + +**示例:** + +查询用户`UID=53456`的频道`170`中的视频 + +```shell +curl -G 'http://api.bilibili.com/x/space/channel/video' \ +--data-urlencode 'mid=53456' \ +--data-urlencode 'cid=170' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "list": { + "cid": 170, + "mid": 53456, + "name": "爆炸电台", + "intro": "闲聊的电台", + "mtime": 1503298893, + "count": 7, + "cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg", + "archives": [{ + "aid": 87673204, + "videos": 1, + "tid": 21, + "tname": "日常", + "copyright": 1, + "pic": "http://i0.hdslb.com/bfs/archive/5387bdcbbe4d5551adbf0ee2e607e4b7d3d8f2f0.jpg", + "title": "【warma爆炸电台】迟来的自我介绍【第八期】", + "pubdate": 1581244539, + "ctime": 1581244540, + "desc": "时隔半年的新的一期爆炸电台来啦,这是我的一系列杂谈聊天电台,这次因为多了很多新关注的朋友们,所以来做个自我介绍吧!\n画师:Dr-H_喵_ 动画:K_Lacid\n结尾提到的壁纸稍后在动态发原图,动态壁纸在steam那个壁纸软件的创意工坊里搜warma能找到\n\n往期的电台:\n第一期:av6786024 \n第三期:av13619263\n第四期:av18862091\n第五期:av25092410\n第六期:av42492515\n第七期:av62910468", + "state": 0, + "attribute": 16512, + "duration": 2388, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 0, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 53456, + "name": "Warma", + "face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg" + }, + "stat": { + "aid": 87673204, + "view": 1383542, + "danmaku": 88908, + "reply": 9237, + "favorite": 32929, + "coin": 68849, + "share": 5140, + "now_rank": 0, + "his_rank": 52, + "like": 116164, + "dislike": 0 + }, + "dynamic": "来做个自我介绍吧! #warma##沃玛##爆炸电台#", + "cid": 149793525, + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "bvid": "BV1D7411t7Be", + "inter_video": false + }, { + "aid": 62910468, + "videos": 1, + "tid": 21, + "tname": "日常", + "copyright": 1, + "pic": "http://i2.hdslb.com/bfs/archive/4bd598f71a144d4505e259b143c0de0bf27968b2.jpg", + "title": "【warma爆炸电台】居然收到了几千条问题!【第七期】", + "pubdate": 1565345410, + "ctime": 1565338559, + "desc": "时隔半年的爆炸电台第七期终于来啦!在这一期里回答了很多问题,祝看得开心!此外,就在昨天,50万订阅了…真的谢谢大家!\n也欢迎来看往期的电台:\n第一期:av6786024 (2016年10月)\n第二期:av10373352(2017年5月)\n第三期:av13619263(2017年8月)\n第四期:av18862091(2018年1月)\n第五期:av25092410(2018年6月)\n第六期:av42492515(2019年2月)", + "state": 0, + "attribute": 16512, + "duration": 1987, + "mission_id": 11740, + "rights": { + "bp": 0, + "elec": 0, + "download": 0, + "movie": 0, + "pay": 0, + "hd5": 0, + "no_reprint": 1, + "autoplay": 1, + "ugc_pay": 0, + "is_cooperation": 0, + "ugc_pay_preview": 0, + "no_background": 0 + }, + "owner": { + "mid": 53456, + "name": "Warma", + "face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg" + }, + "stat": { + "aid": 62910468, + "view": 455277, + "danmaku": 19383, + "reply": 2108, + "favorite": 10507, + "coin": 19422, + "share": 1208, + "now_rank": 0, + "his_rank": 0, + "like": 31515, + "dislike": 0 + }, + "dynamic": "爆炸电台 第七期 来啦!", + "cid": 109284065, + "dimension": { + "width": 1920, + "height": 1080, + "rotate": 0 + }, + "bvid": "BV1gt411K7Ga", + "inter_video": false + }] + }, + "page": { + "count": 7, + "num": 1, + "size": 2 + } + } +} +``` + +
+ +### 创建频道 + +> http://api.bilibili.com/x/space/channel/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +创建成功后会返回新建频道的ID + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| name | str | 频道名 | 必要 | | +| intro | str | 频道简介 | 非必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53001:频道名字数超过限制
53002:频道简介字数超过限制
53004:创建的频道已经满额
53007:频道名称已经存在
53024:编辑内容命中敏感信息 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 数据本体 | 成功有此项 | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------ | ---- | +| cid | num | 频道ID | | + +**示例:** + +创建名为`test1`的频道,简介为空 + +```shell +curl 'http://api.bilibili.com/x/space/channel/add' \ +--data-urlencode 'name=test1' \ +--data-urlencode 'intro=' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "cid": 138996 + } +} +``` + +
+ +### 修改频道 + +> http://api.bilibili.com/x/space/channel/edit + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| cid | num | 频道ID | 必要 | | +| name | str | 频道名 | 必要 | | +| intro | str | 频道简介 | 非必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53001:频道名字数超过限制
53002:频道简介字数超过限制
53007:频道名称已经存在
53024:编辑内容命中敏感信息 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +修改频道`138996`名称为`测试`,简介为`123456` + +```shell +curl 'http://api.bilibili.com/x/space/channel/edit' \ +--data-urlencode 'cid=138996' \ +--data-urlencode 'name=测试' \ +--data-urlencode 'intro=123456' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 删除频道 + +> http://api.bilibili.com/x/space/channel/del + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| cid | num | 需要删除的频道ID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +删除频道`138996` + +```shell +curl 'http://api.bilibili.com/x/space/channel/del' \ +--data-urlencode 'cid=138996' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 频道添加视频 + +> http://api.bilibili.com/x/space/channel/video/add + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +仅能添加自己是UP主的视频 + +如添加多个视频,仅会添加正确的 + +**注:完成后需要使用接口「查询用户频道中的视频」刷新** + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---------------------- | +| cid | num | 频道ID | 必要 | | +| aids | nums | 要添加的目标稿件avID | 必要 | 多个使用","(%2C)分隔 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----- | ---------------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项
53003:本频道里的视频已满
53006:提交视频已失效或频道里有(非该视频UP主) | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | array | 出错稿件avID列表 | | + +`data`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ---- | +| 0 | num | 出错稿件avID1 | | +| n | num | 出错稿件avID(n+1) | | +| …… | num | …… | …… | + +**示例:** + +向频道`138995`中添加视频`av583785685`和`av243322853` + +```shell +curl 'http://api.bilibili.com/x/space/channel/video/add' \ +--data-urlencode 'cid=138995' \ +--data-urlencode 'aids=583785685,243322853' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": [] +} +``` + +
+ +### 频道删除视频 + +> http://api.bilibili.com/x/space/channel/video/del + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**注:完成后需要使用接口「查询用户频道中的视频」刷新** + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| cid | num | 频道ID | 必要 | | +| aid | num | 要删除的目标稿件avID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项
53008:频道内没有视频
53009:频道内没有该视频 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +删除频道`138995`中的视频`av583785685` + +```shell +curl 'http://api.bilibili.com/x/space/channel/video/del' \ +--data-urlencode 'cid=138995' \ +--data-urlencode 'aid=583785685' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 调整频道视频排序 + +> http://api.bilibili.com/x/space/channel/video/sort + +*请求方式:POST* + +认证方式:Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | +| cid | num | 频道ID | 必要 | | +| aid | num | 要移动的目标稿件avID | 必要 | | +| to | num | 视频排序倒数位置 | 非必要 | 默认为1
1为列表底部,视频总数为首端
与显示顺序恰好相反 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +调整`138995`中的视频`av583785685`位置为倒数第2 + +```shell +curl 'http://api.bilibili.com/x/space/channel/video/sort' \ +--data-urlencode 'cid=138995' \ +--data-urlencode 'aid=583785685' \ +--data-urlencode 'to=2' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +### 检查频道中有无失效视频 + +> http://api.bilibili.com/x/space/channel/video/check + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ---------- | ------ | ---- | +| cid | num | 目标频道ID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
-404:无此项
53005:频道内有失效视频 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +检查频道`138995` + +```shell +curl -G 'http://api.bilibili.com/x/space/channel/video/check +--data-urlencode 'cid=138995' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 收藏 + + + +### 查询用户创建的视频收藏夹 + +> http://api.bilibili.com/x/v3/fav/folder/created/list-all + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +查看私有收藏夹时需要认证 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| up_mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 隐藏时:null
公开时:obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | --------------------------------------- | -------------- | ---- | +| count | num | 创建的收藏夹数 | | +| list | 无收藏夹时:null
有收藏夹时:array | 收藏夹列表 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | --------------------- | +| 0 | obj | 收藏夹1 | | +| n | obj | 收藏夹(n+1) | 项数取决于`count`的值 | +| …… | obj | …… | | + +`data`中的`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ---------------- | --------------- | +| id | num | 收藏夹mlID | | +| fid | num | 原始收藏夹ID | 去除两位UID尾号 | +| mid | num | 创建用户UID | | +| attr | num | 收藏夹属性位配置 | | +| title | str | 收藏夹标题 | | +| fav_state | num | 0 | 作用尚不明确 | +| media_count | num | 收藏夹总计视频数 | | + +`attr`属性位二进制值表: + +| 位 | 内容 | 备注 | +| --------------- | ---------------- | -------------------------------- | +| 0 | 是否为默认收藏夹 | 0:默认收藏夹
1:其他收藏夹 | +| 1 | 私有收藏夹 | 0:公开
1:私有 | +| 其他有待补充... | | | + +**示例:** + +查询用户`UID=7792521`的收藏夹列表 + +```shell +curl -G 'http://api.bilibili.com/x/v3/fav/folder/created/list-all' \ +--data-urlencode 'up_mid=7792521' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 5, + "list": [{ + "id": 44233921, + "fid": 442339, + "mid": 7792521, + "attr": 0, + "title": "默认收藏夹", + "fav_state": 0, + "media_count": 85 + }, { + "id": 936347621, + "fid": 9363476, + "mid": 7792521, + "attr": 22, + "title": "放假君的鬼畜私房歌", + "fav_state": 0, + "media_count": 2 + }, { + "id": 845218621, + "fid": 8452186, + "mid": 7792521, + "attr": 22, + "title": "♪一言不合就开唱♪", + "fav_state": 0, + "media_count": 4 + }, { + "id": 844998121, + "fid": 8449981, + "mid": 7792521, + "attr": 22, + "title": "个人作品精选", + "fav_state": 0, + "media_count": 25 + }, { + "id": 381779121, + "fid": 3817791, + "mid": 7792521, + "attr": 22, + "title": "鬼畜小课堂", + "fav_state": 0, + "media_count": 25 + }] + } +} +``` + +
+ +### 查询用户收藏的视频收藏夹 + +> http://api.bilibili.com/x/v3/fav/folder/collected/list + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| ps | num | 每页项数 | 必要 | | +| pn | num | 页码 | 必要 | | +| up_mid | num | 目标用户UID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
40022:签名过长 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 隐藏时:null
公开时:obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | --------------------------------------- | -------------- | ---- | +| count | num | 创建的收藏夹数 | | +| list | 无收藏夹时:null
有收藏夹时:array | 收藏夹列表 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | --------------------- | +| 0 | obj | 收藏夹1 | | +| n | obj | 收藏夹(n+1) | 项数取决于`count`的值 | +| …… | obj | …… | | + +`data`中的`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----------- | ---- | ------------------ | ----------------------------------------- | +| id | num | 收藏夹mlID | | +| fid | num | 原始收藏夹ID | 去除两位UID尾号 | +| mid | num | 创建用户UID | | +| attr | num | 收藏夹属性 | 转换成8-bit二进制处理
详细说明见下表 | +| title | str | 收藏夹标题 | | +| cover | str | 收藏夹封面图片url | | +| upper | obj | 收藏夹创建用户信息 | | +| cover_type | num | 2 | 作用尚不明确 | +| intro | str | 空 | 作用尚不明确 | +| ctime | num | 创建时间 | 时间戳 | +| mtime | num | 审核时间 | 时间戳 | +| state | num | 0 | 作用尚不明确 | +| fav_state | num | 0 | 作用尚不明确 | +| media_count | num | 收藏夹总计视频数 | | + +`attr`属性二进制值表: + +| 其他有待补充... | 1:默认收藏夹 | 0:公开性 | +| --------------- | -------------------------------- | -------------------- | +| | 0:默认收藏夹
1:其他收藏夹 | 0:公开
1:私有 | + +`data`中的`list`数组中的对象中的`upper`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------- | ------------ | +| mid | num | 创建人UID | | +| name | str | 创建人昵称 | | +| face | str | 空 | 作用尚不明确 | + +**示例:** + +查询用户`UID=293793435`的收藏夹收藏列表 + +```shell +curl -G 'http://api.bilibili.com/x/v3/fav/folder/collected/list' \ +--data-urlencode 'up_mid=293793435' \ +--data-urlencode 'ps=20' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 2, + "list": [{ + "id": 496307088, + "fid": 4963070, + "mid": 412466388, + "attr": 22, + "title": "入站必刷", + "cover": "http://i0.hdslb.com/bfs/archive/baae2b4050363c0ab45465b7cf696b8304fdaca8.jpg", + "upper": { + "mid": 412466388, + "name": "热门菌", + "face": "" + }, + "cover_type": 2, + "intro": "", + "ctime": 1563394571, + "mtime": 1563394571, + "state": 0, + "fav_state": 0, + "media_count": 55 + }, { + "id": 381779121, + "fid": 3817791, + "mid": 7792521, + "attr": 22, + "title": "鬼畜小课堂", + "cover": "http://i2.hdslb.com/bfs/archive/09a668cfdb38fb3a85f905c10f48a2947e36a695.jpg", + "upper": { + "mid": 7792521, + "name": "还有一天就放假了", + "face": "" + }, + "cover_type": 2, + "intro": "", + "ctime": 1553700224, + "mtime": 1557291666, + "state": 0, + "fav_state": 0, + "media_count": 25 + }] + } +} +``` + +
+ +## 课程 + + + +### 查询用户发布的课程列表 + +> http://api.bilibili.com/pugv/app/web/season/page + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | -------- | +| mid | num | 目标用户UID | 必要 | | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页项数 | 非必要 | 默认为20 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ---------------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ----- | -------- | ---- | +| list | array | 课程列表 | | +| page | obj | 页面信息 | | + +`data`中的`page`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | -------------- | ------------------------------------- | +| next | bool | 是否存在下一页 | false:最后一页
true:存在下一页 | +| num | num | 当前页码 | | +| size | num | 每页项数 | | +| total | num | 总计项数 | | + +`data`中的`list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | -------------------------- | +| 0 | obj | 课程1 | | +| n | obj | 课程(n+1) | 按照目标用户的发布顺序排列 | +| …… | obj | …… | | + +`data`中的`list`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ------------ | ------------- | +| cover | str | 课程封面url | | +| ep_count | num | 课程集数 | | +| link | str | 课程页面url | 手机版页面url | +| page | num | 1 | 作用尚不明确 | +| play | num | 课程播放数 | | +| season_id | num | 课程ssID | | +| status | str | 更新状态说明 | | +| subtitle | str | 课程副标题 | | +| title | str | 课程标题 | | + +**示例:** + +查询用户`UID=33683045`的课程发布列表 + +```shell +curl -G 'http://api.bilibili.com/pugv/app/web/season/page' \ +--data-urlencode 'mid=33683045' \ +--data-urlencode 'ps=5' \ +--data-urlencode 'pn=1' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "data": { + "items": [ + { + "cover": "http://i0.hdslb.com/bfs/archive/596575057885fff7f0ceff047437186cba459358.jpg", + "ep_count": 10, + "link": "https://m.bilibili.com/cheese/play/ss80", + "page": 1, + "play": 174467, + "season_id": 80, + "status": "共10期", + "subtitle": "百科全书式军事科普短视频系列", + "title": "《战忽知道》第一季" + }, + { + "cover": "http://i0.hdslb.com/bfs/archive/322aa94d27cece62d2a859caf71ac2426f29eee2.jpg", + "ep_count": 1, + "link": "https://m.bilibili.com/cheese/play/ss145", + "page": 1, + "play": 22155, + "season_id": 145, + "status": "更新至第1期", + "subtitle": "此课程为《局座:第四次工业革命来了》部分集数,请谨慎购买", + "title": "【体验课】局座讲5G:5G如何改变我们的生活?" + }, + { + "cover": "http://i0.hdslb.com/bfs/archive/b9794ac4507f8764e219df413b661b5faf499a19.jpg", + "ep_count": 10, + "link": "https://m.bilibili.com/cheese/play/ss113", + "page": 1, + "play": 49833, + "season_id": 113, + "status": "更新至第10期", + "subtitle": "百科全书式军事科普短视频系列", + "title": "《战忽知道》第二季" + }, + { + "cover": "http://i0.hdslb.com/bfs/archive/7351fcb33592a4bc7aac9f71d421b4b5ce0177d3.jpg", + "ep_count": 10, + "link": "https://m.bilibili.com/cheese/play/ss51", + "page": 1, + "play": 4981037, + "season_id": 51, + "status": "共10期", + "subtitle": "洞悉国际局势,学习战略思维", + "title": "局座的国际战略课" + }, + { + "cover": "http://i0.hdslb.com/bfs/archive/31e2a170b5a815e34f0537a2727b28f1b87dca18.jpg", + "ep_count": 10, + "link": "https://m.bilibili.com/cheese/play/ss121", + "page": 1, + "play": 30754, + "season_id": 121, + "status": "更新至第10期", + "subtitle": "百科全书式军事科普短视频系列", + "title": "《战忽知道》第三季" + } + ], + "page": { + "next": true, + "num": 1, + "size": 5, + "total": 8 + } + }, + "message": "success" +} +``` + +
+ +## 订阅 + + + +### 查询用户追番预览列表 + +> http://space.bilibili.com/ajax/Bangumi/getList + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +如设置隐私查看自己的需要认证 + +带有转义,且只能获取最多15条 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ----------- | ------ | ---- | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -619,11 +3136,11 @@ http://api.bilibili.com/x/space/arc/search?mid=53456&ps=2&pn=1 `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ------ | ------------ | ------------ | -| count | num | 总计追番数 | | -| pages | num | 0 | 作用尚不明确 | -| result | arrary | 追番预览列表 | | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ----- | ------------ | ------------ | +| count | num | 总计追番数 | | +| pages | num | 0 | 作用尚不明确 | +| result | array | 追番预览列表 | | `data`中的`result`数组: @@ -654,7 +3171,14 @@ http://api.bilibili.com/x/space/arc/search?mid=53456&ps=2&pn=1 查看用户`UID=14082`的追番预览列表 -http://space.bilibili.com/ajax/Bangumi/getList?mid=14082 +```shell +curl -G 'http://space.bilibili.com/ajax/Bangumi/getList' \ +--data-urlencode 'mid=14082' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -693,26 +3217,26 @@ http://space.bilibili.com/ajax/Bangumi/getList?mid=14082 } ``` - +
### 查询用户追番(追剧)明细 - - > http://api.bilibili.com/x/space/bangumi/follow/list -*方式:GET* +*请求方式:GET* -如设置隐私查看自己的需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) -**参数:** +如设置隐私查看自己的需要认证 + +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | -------------------- | -| vmid | url | 目标用户UID | 必要 | | -| pn | url | 页码 | 非必要 | 默认为1 | -| ps | url | 每页项数 | 非必要 | 默认为15 | -| type | url | 查询类型 | 必要 | 1:追番
2:追剧 | +| vmid | num | 目标用户UID | 必要 | | +| pn | num | 页码 | 非必要 | 默认为1 | +| ps | num | 每页项数 | 非必要 | 默认为15 | +| type | num | 查询类型 | 必要 | 1:追番
2:追剧 | **json回复:** @@ -722,17 +3246,17 @@ http://space.bilibili.com/ajax/Bangumi/getList?mid=14082 | ------- | ---- | -------- | ---------------------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ---------- | ---- | -| list | arrary | 追番列表 | | -| pn | num | 当前页码 | | -| ps | num | 每页项数 | | -| total | num | 总计追番数 | | +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----- | ---------- | ---- | +| list | array | 追番列表 | | +| pn | num | 当前页码 | | +| ps | num | 每页项数 | | +| total | num | 总计追番数 | | `data`中的`list`数组: @@ -750,7 +3274,17 @@ http://space.bilibili.com/ajax/Bangumi/getList?mid=14082 查看用户`UID=14082`的追番明细 -http://api.bilibili.com/x/space/bangumi/follow/list?vmid=14082&pn=1&ps=2&type=1 +```shell +curl -G 'http://api.bilibili.com/x/space/bangumi/follow/list' \ +--data-urlencode 'vmid=14082' \ +--data-urlencode 'type=1' \ +--data-urlencode 'ps=2' \ +--data-urlencode 'pn=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -943,25 +3477,31 @@ http://api.bilibili.com/x/space/bangumi/follow/list?vmid=14082&pn=1&ps=2&type=1 } ``` +
+ + + ### 查询用户关注的TAG(话题) > http://space.bilibili.com/ajax/tags/getSubList -*方式:GET* +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +如设置隐私查看自己的需要认证 带有转义 只显示前100个 -如设置隐私查看自己的需要登录(SESSDATA) - -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -974,10 +3514,10 @@ http://api.bilibili.com/x/space/bangumi/follow/list?vmid=14082&pn=1&ps=2&type=1 `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ----------- | ---- | -| tags | arrary | 关注TAG列表 | | -| count | num | 关注TAG的数 | | +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----- | ----------- | ---- | +| tags | array | 关注TAG列表 | | +| count | num | 关注TAG的数 | | `data`中的`tags`数组: @@ -1003,7 +3543,14 @@ http://api.bilibili.com/x/space/bangumi/follow/list?vmid=14082&pn=1&ps=2&type=1 查询用户`UID=2`的关注TAG -http://space.bilibili.com/ajax/tags/getSubList?mid=2 +```shell +curl -G 'http://space.bilibili.com/ajax/tags/getSubList' \ +--data-urlencode 'mid=2' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -1031,1115 +3578,4 @@ http://space.bilibili.com/ajax/tags/getSubList?mid=2 } ``` - - - - -### 查询用户投稿相簿预览 - -> http://api.bilibili.com/x/space/album/index - -*方式:GET* - -所有类型的相簿 - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | ------- | -| mid | url | 目标用户UID | 必要 | | -| ps | url | 获取的相簿量 | 非必要 | 默认为8 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 相簿列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 相簿内容1 | | -| n | obj | 相簿内容(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ------ | ----------- | -------------- | -| count | num | 总计图片数 | | -| ctime | num | 发布时间 | 时间戳 | -| description | str | 简介 | | -| doc_id | num | 相册ID | 非动态ID!!! | -| like | num | 点赞数 | | -| pictures | arrary | 图片内容 | | -| poster_uid | num | 上传用户UID | | -| title | str | 标题 | 动态内容无 | -| view | num | 浏览数 | | - -`data`数组中的对象中的`pictures`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | --------------------- | -| 0 | obj | 内容图片1 | | -| n | obj | 内容图片(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`pictures`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ----------- | -| img_height | num | 图片高度 | | -| img_size | num | 图片大小 | 单位为KByte | -| img_src | str | 图片url | | -| img_width | num | 图片宽度 | | - -**示例:** - -查询用户`UID=53456`的投稿相簿预览 - -http://api.bilibili.com/x/space/album/index?mid=53456&ps=2 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "doc_id": 60470424, - "poster_uid": 53456, - "title": "", - "description": "你醒啦![tv_大佬]\n之前说到过的百万粉纪念的视频已经定时在了今天下午七点,欢迎来看呀!", - "pictures": [{ - "img_src": "https://i0.hdslb.com/bfs/album/2840366e30bf7c0aba9da5adde1a771255a57bc7.jpg", - "img_width": 625, - "img_height": 134, - "img_size": 14 - }], - "count": 1, - "ctime": 1583444859, - "view": 1677521, - "like": 29974 - }, { - "doc_id": 58962388, - "poster_uid": 53456, - "title": "", - "description": "上次的那些写实儿童画发出来啦!可以打印下来辟邪[tv_大佬]", - "pictures": [{ - "img_src": "https://i0.hdslb.com/bfs/album/8acaf7c7897cb858cccab36c33a5e875adfef177.jpg", - "img_width": 2172, - "img_height": 3258, - "img_size": 2831 - }, { - "img_src": "https://i0.hdslb.com/bfs/album/1611b6b56d3d4328889a62b9f9bdc92e9d065532.jpg", - "img_width": 3456, - "img_height": 5184, - "img_size": 3024 - }, { - "img_src": "https://i0.hdslb.com/bfs/album/f3a30a2ef5b39711af8b945d54d85ffd1e932b8a.jpg", - "img_width": 1200, - "img_height": 757, - "img_size": 313 - }], - "count": 3, - "ctime": 1582881332, - "view": 1176646, - "like": 25734 - }] -} -``` - - - -### 查询用户投稿相簿明细 - -> http://api.vc.bilibili.com/link_draw/v1/doc/doc_list - -*方式:GET* - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ----------- | ------ | ------------------------------------------------------------ | -| uid | url | 目标用户UID | 必要 | | -| page_num | url | 页码 | 非必要 | 默认为1 | -| page_size | url | 每页项数 | 非必要 | 默认为20 | -| biz | url | 查询类型 | 非必要 | 全部:all
绘画:draw
摄影:photo
日常:daily
默认为all | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------- | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | -------- | ---- | -| items | arrary | 相簿列表 | | - -`items`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 相簿内容1 | | -| n | obj | 相簿内容(n+1) | | -| …… | obj | …… | …… | - -`items`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ------ | ----------- | -------------- | -| count | num | 总计图片数 | | -| ctime | num | 发布时间 | 时间戳 | -| description | str | 简介 | | -| doc_id | num | 相册ID | 非动态ID!!! | -| like | num | 点赞数 | | -| pictures | arrary | 图片内容 | | -| poster_uid | num | 上传用户UID | | -| title | str | 标题 | 动态内容无 | -| view | num | 浏览数 | | - -`items`数组中的对象中的`pictures`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | --------------------- | -| 0 | obj | 内容图片1 | | -| n | obj | 内容图片(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`pictures`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ----------- | -| img_height | num | 图片高度 | | -| img_size | num | 图片大小 | 单位为KByte | -| img_src | str | 图片url | | -| img_width | num | 图片宽度 | | - -**示例:** - -查询用户`UID=53456`的投稿明细中的全部类型 - -http://api.vc.bilibili.com/link_draw/v1/doc/doc_list?uid=2&page_num=1&page_size=2&biz=all - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "items": [{ - "doc_id": 59015720, - "poster_uid": 2, - "title": "", - "description": "6影是真的无脑,2个宝石都护不住(设计师:这真是太酷了)", - "pictures": [{ - "img_src": "http://i0.hdslb.com/bfs/album/8456f050ec8639c6e0cef36aba27bfdedc550590.jpg", - "img_width": 1824, - "img_height": 840, - "img_size": 1024 - }], - "count": 1, - "ctime": 1582894607, - "view": 707073, - "like": 7055 - }, { - "doc_id": 46853140, - "poster_uid": 2, - "title": "", - "description": "#年度报告# #新年Flag# https://www.bilibili.com/blackboard/timemachine2019.html\n决定了,这就是我的新年Flag!今年我一定要…", - "pictures": [{ - "img_src": "http://i0.hdslb.com/bfs/album/5b3ae76f79d7cf2501afc3ca7c7da509dcf0e38a.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 465 - }, { - "img_src": "http://i0.hdslb.com/bfs/album/87789fe9644337a1f7e6a0655a32584705af8bda.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 421 - }, { - "img_src": "http://i0.hdslb.com/bfs/album/f752d7f3bb7952f6c0013b3f48ddcb07060b4721.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 524 - }, { - "img_src": "http://i0.hdslb.com/bfs/active/7a52a411bccb716c8e67fe70e6c330d5209346de.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 534 - }], - "count": 4, - "ctime": 1577966163, - "view": 833193, - "like": 5667 - }] - } -} -``` - - - -### 查询用户频道列表 - - - -> http://api.bilibili.com/x/space/channel/list - -*方式:GET* - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------ | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | 无则为空 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ---------- | ---- | -| count | num | 总计频道数 | | -| list | arrary | 频道列表 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | --------------------- | -| 0 | obj | 频道1 | | -| n | obj | 频道(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`data`中的`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------------- | -------- | -| cid | num | 频道ID | | -| count | num | 频道内含视频数 | | -| cover | str | 封面图片url | | -| intro | str | 简介 | 无则为空 | -| mid | num | 创建用户UID | | -| mtime | num | 创建时间 | 时间戳 | -| name | str | 标题 | | - -**示例:** - -查询用户`UID=53456`的频道列表 - -http://api.bilibili.com/x/space/channel/list?mid=53456 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 6, - "list": [{ - "cid": 100249, - "mid": 53456, - "name": "【实况】动物之森", - "intro": "", - "mtime": 1579898830, - "count": 2, - "cover": "http://i1.hdslb.com/bfs/archive/6a7ed9483c34e839dfca981b9e2b94cd4c4efa0a.jpg" - }, { - "cid": 79323, - "mid": 53456, - "name": "忆雨", - "intro": "忆雨出现过的视频", - "mtime": 1562535222, - "count": 7, - "cover": "http://i2.hdslb.com/bfs/archive/1783e4f03042b282495799adda1cb56270cea647.jpg" - }, { - "cid": 79322, - "mid": 53456, - "name": "大画家", - "intro": "", - "mtime": 1562535122, - "count": 6, - "cover": "http://i0.hdslb.com/bfs/archive/9c85a14e805c6c23cb7a42e1dbef97821bb68960.jpg" - }, { - "cid": 77758, - "mid": 53456, - "name": "灭火器", - "intro": "", - "mtime": 1561270856, - "count": 4, - "cover": "http://i2.hdslb.com/bfs/archive/0073208d086b4ebe9cdc540e7664aa74b483aeb6.jpg" - }, { - "cid": 75696, - "mid": 53456, - "name": "沃玛小剧场", - "intro": "", - "mtime": 1559129460, - "count": 5, - "cover": "http://i2.hdslb.com/bfs/archive/db2b20ecdb6ed013fc3780b0e741ea88d46b5b40.jpg" - }, { - "cid": 170, - "mid": 53456, - "name": "爆炸电台", - "intro": "闲聊的电台", - "mtime": 1503298893, - "count": 7, - "cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg" - }] - } -} -``` - - - -### 查询用户频道中的视频 - -> http://api.bilibili.com/x/space/channel/video - -*方式:GET* - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | --------- | -| mid | url | 目标用户UID | 必要 | | -| cid | url | 目标频道ID | 必要 | | -| pn | url | 页码 | 非必要 | 默认为1 | -| ps | url | 每页项数 | 非必要 | 默认为100 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无用户对应的频道 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| list | obj | 频道信息 | | -| page | obj | 页面信息 | | - -`data`中的`list`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ------ | -------------- | -------- | -| archives | arrary | 包含的视频列表 | | -| cid | num | 频道ID | | -| count | num | 频道内含视频数 | | -| cover | str | 封面图片url | | -| intro | str | 简介 | 无则为空 | -| mid | num | 创建用户UID | | -| mtime | num | 创建时间 | 时间戳 | -| name | str | 标题 | | - -`list`中的`archives`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | --------------------- | -| 0 | obj | 视频1 | | -| n | obj | 视频(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`list`中的`archives`数组中的对象: - -基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息(avID/bvID互转))」中的data对象 - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ---- | -| count | num | 总计视频数 | | -| num | num | 当前页码 | | -| size | num | 每页项数 | | - -**示例:** - -查询用户`UID=53456`的频道`170`中的视频 - -http://api.bilibili.com/x/space/channel/video?mid=53456&cid=170&ps=2&pn=1 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": { - "cid": 170, - "mid": 53456, - "name": "爆炸电台", - "intro": "闲聊的电台", - "mtime": 1503298893, - "count": 7, - "cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg", - "archives": [{ - "aid": 87673204, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/5387bdcbbe4d5551adbf0ee2e607e4b7d3d8f2f0.jpg", - "title": "【warma爆炸电台】迟来的自我介绍【第八期】", - "pubdate": 1581244539, - "ctime": 1581244540, - "desc": "时隔半年的新的一期爆炸电台来啦,这是我的一系列杂谈聊天电台,这次因为多了很多新关注的朋友们,所以来做个自我介绍吧!\n画师:Dr-H_喵_ 动画:K_Lacid\n结尾提到的壁纸稍后在动态发原图,动态壁纸在steam那个壁纸软件的创意工坊里搜warma能找到\n\n往期的电台:\n第一期:av6786024 \n第三期:av13619263\n第四期:av18862091\n第五期:av25092410\n第六期:av42492515\n第七期:av62910468", - "state": 0, - "attribute": 16512, - "duration": 2388, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 53456, - "name": "Warma", - "face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg" - }, - "stat": { - "aid": 87673204, - "view": 1383542, - "danmaku": 88908, - "reply": 9237, - "favorite": 32929, - "coin": 68849, - "share": 5140, - "now_rank": 0, - "his_rank": 52, - "like": 116164, - "dislike": 0 - }, - "dynamic": "来做个自我介绍吧! #warma##沃玛##爆炸电台#", - "cid": 149793525, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1D7411t7Be", - "inter_video": false - }, { - "aid": 62910468, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/4bd598f71a144d4505e259b143c0de0bf27968b2.jpg", - "title": "【warma爆炸电台】居然收到了几千条问题!【第七期】", - "pubdate": 1565345410, - "ctime": 1565338559, - "desc": "时隔半年的爆炸电台第七期终于来啦!在这一期里回答了很多问题,祝看得开心!此外,就在昨天,50万订阅了…真的谢谢大家!\n也欢迎来看往期的电台:\n第一期:av6786024 (2016年10月)\n第二期:av10373352(2017年5月)\n第三期:av13619263(2017年8月)\n第四期:av18862091(2018年1月)\n第五期:av25092410(2018年6月)\n第六期:av42492515(2019年2月)", - "state": 0, - "attribute": 16512, - "duration": 1987, - "mission_id": 11740, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 53456, - "name": "Warma", - "face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg" - }, - "stat": { - "aid": 62910468, - "view": 455277, - "danmaku": 19383, - "reply": 2108, - "favorite": 10507, - "coin": 19422, - "share": 1208, - "now_rank": 0, - "his_rank": 0, - "like": 31515, - "dislike": 0 - }, - "dynamic": "爆炸电台 第七期 来啦!", - "cid": 109284065, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1gt411K7Ga", - "inter_video": false - }] - }, - "page": { - "count": 7, - "num": 1, - "size": 2 - } - } -} -``` - - - -### 查看用户空间公告 - -> http://api.bilibili.com/x/space/notice - -*方式:GET* - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | str | 公告信息 | 无则为空 | - -**示例:** - -查看用户`UID=53456`的空间公告 - -http://api.bilibili.com/x/space/notice?mid=53456 - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":"我的微博 @_warma_\n直播录像上传到:warma养鸽场\n头像画师是:微博@Dr-H_喵_\n横幅画师:@薬屋" -} -``` - - - -### 查看用户个人TAG - -> http://api.bilibili.com/x/space/acc/tags - -*方式:GET* - -上限5条,且内容由用户自定义 - -带有转义 - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 信息本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------------- | -| 0 | obj | 信息本体 | 只有1项??? | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ------ | ----------- | ---- | -| mid | num | 目标用户UID | | -| tags | arrary | TAG名称 | | - -`data`数组中的对象中的`tags`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------- | -| 0 | str | TAG1 | | -| n | str | TAG(n+1) | | -| …… | str | …… | | -| 4 | str | TAG5 | 上限5条 | - -**示例:** - -查看用户`UID=53456`的个人TAG - -http://api.bilibili.com/x/space/acc/tags?mid=53456 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "mid": 53456, - "tags": ["\u6e38\u620f", "\u97f3\u4e50", "warma", "\u641e\u7b11", "\u52a8\u753b"] - }] -} -``` - - - -## 设置相关 - -### 修改个人签名 - -> http://api.bilibili.com/x/member/web/sign/update - -*方式:POST* - -签名最多支持70个字 - -修改签名不会立即生效,会等待审核队列稍后生效 - -需要登录(SESSDATA) - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ------------------- | ------ | ---------------------- | -| user_sign | data | 要设置的签名内容 | 非必要 | 删除签名留空或省去即可 | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
40022:签名过长 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -更新个人标签为`高中技术宅一枚,爱好MC&电子&音乐&数码&编程,资深猿厨` - -curl -b "SESSDATA=xxx" -d "user_sign=%E9%AB%98%E4%B8%AD%E6%8A%80%E6%9C%AF%E5%AE%85%E4%B8%80%E6%9E%9A%EF%BC%8C%E7%88%B1%E5%A5%BDMC&%E7%94%B5%E5%AD%90&%E9%9F%B3%E4%B9%90&%E6%95%B0%E7%A0%81&%E7%BC%96%E7%A8%8B%EF%BC%8C%E8%B5%84%E6%B7%B1%E7%8C%BF%E5%8E%A8&csrf=xxx" "http://api.bilibili.com/x/member/web/sign/update" - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - - - -### 修改用户空间公告 - -> http://api.bilibili.com/x/space/notice/set - -*方式:POST* - -需要登录(SESSDATA) - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ------------------------------------------- | -| notice | data | 要设置的公告内容 | 非必要 | 删除公告留空或省去即可
公告最多150字符 | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-304:未修改
-400:请求错误(超出长度限制) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -修改个人空间公告为`鸽子` - -curl -b "sessdata=xxx" -d "csrf=xxx¬ice=%E9%B8%BD%E5%AD%90" "http://api.bilibili.com/x/space/notice/set" - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - - - -### 修改空间隐私权限 - -> http://space.bilibili.com/ajax/settings/setPrivacy - -*方式:POST* - -需要登录(SESSDATA) - -需要验证`DedeUserID`及`DedeUserID__ckMd5`存在且不为0 - -需要验证`referer`为 `http://www.bilibili.com`或`https://www.bilibili.com`域名下 - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------- | ------ | ------------------------------ | -| fav_video | data | 收藏视频 | 非必要 | 0:隐藏
1:公开
下同 | -| bangumi | data | 追番及追剧 | 非必要 | | -| tags | data | 关注的TAG | 非必要 | | -| coins_video | data | 投币的视频 | 非必要 | | -| user_info | data | 个人信息 | 非必要 | | -| played_game | data | 玩过的游戏 | 非必要 | | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ----------------------------------- | -| ststus | bool | 操作结果 | true:操作成功
false:操作失败 | -| data | str | 错误信息 | 正确时无此项 | - -**示例:** - -设置`关注的TAG`为隐藏 - -curl --referer "http://www.bilibili.com" -b "SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;" -d "csrf=xxx&tags=0" "http://space.bilibili.com/ajax/settings/setPrivacy" - -```json -{ - "status": true -} -``` - - - -### 调整空间板块布局 - -> http://space.bilibili.com/ajax/settings/setIndexOrder - -*方式:POST* - -需要登录(SESSDATA) - -需要验证`DedeUserID`及`DedeUserID__ckMd5`存在且不为0 - -需要验证`referer`为 `http://www.bilibili.com`或`https://www.bilibili.com`域名下 - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------- | ------ | ------------------------------------------------------------ | -| index_order | data | 布局列表 | 必要 | 每个值之间用","(%2C)分隔
先左侧布局再右侧布局
值的意义见下表 | -| csrf | data | cookies中的bili_jct | 必要 | | - -布局参数`index_order`: - -| 值 | 含义 | -| ---- | ---------------------- | -| 1 | (左侧)我的稿件 | -| 2 | (左侧)我的收藏夹 | -| 3 | (左侧)订阅番剧 | -| 4 | (左侧)订阅标签 | -| 5 | (左侧)最近投币的视频 | -| 6 | **作用尚不明确** | -| 7 | (左侧)我的频道 | -| 8 | (左侧)我的专栏 | -| 9 | (左侧)我的相簿 | -| 21 | (右侧)公告 | -| 22 | (右侧)直播间 | -| 23 | (右侧)个人资料 | -| 24 | (右侧)官方活动 | -| 25 | (右侧)最近玩的游戏 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ----------------------------------- | -| ststus | bool | 操作结果 | true:操作成功
false:操作失败 | -| data | str | 错误信息 | 正确时无此项 | - -**示例:** - -调整空间布局为: - ->我的稿件 直播间 ->我的专栏 个人资料 ->订阅番剧 公告 ->我的收藏夹 官方活动 ->我的相簿 最近玩的游戏 ->最近投币的视频 ->订阅标签 ->我的频道 - -curl --referer "http://www.bilibili.com" -b "SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;" -d "csrf=xxx&index_order=1%2C8%2C3%2C2%2C9%2C5%2C4%2C7%2C22%2C23%2C21%2C24%2C25%2C6" "http://space.bilibili.com/ajax/settings/setIndexOrder" - -```json -{ - "status": true -} -``` - - - -### 修改个人TAG - -> http://api.bilibili.com/x/space/acc/tags/set - -*方式:POST* - -需要登录(SESSDATA) - -需要验证`DedeUserID`存在且不为0 - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ------------------------------------------------------------ | -| tags | data | 要设置的TAG内容 | 非必要 | 删除公告留空或省去即可
各TAG长度小于10字符
最多5个TAG
各TAG之间用","(%2C)分隔
重复TAG无效 | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误(超出长度限制) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -修改个人TAG为`minecraft,技术宅,大佬,小哥哥,可爱` - -curl -b "SESSDATA=xxx;DedeUserID=1" -d "csrf=xxx&tags=minecraft%2C%E6%8A%80%E6%9C%AF%E5%AE%85%2C%E5%A4%A7%E4%BD%AC%2C%E5%B0%8F%E5%93%A5%E5%93%A5%2C%E5%8F%AF%E7%88%B1" "http://api.bilibili.com/x/space/acc/tags/set" - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - - - -### 修改(添加)置顶视频 - -> http://api.bilibili.com/x/space/top/arc/set - -*方式:POST* - -需要登录(SESSDATA) - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ------------------ | -| aid | data | 置顶目标视频avID | 非必要 | avID与bvID任选一个 | -| bvid | data | 置顶目标视频bvID | 非必要 | avID与bvID任选一个 | -| reason | data | 置顶视频备注 | 非必要 | 置顶备注最大40字符 | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-304:未修改
-400:请求错误
53014:稿件已失效
53015:备注过长
53017:置顶非自己的稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -置顶视频`av98948772`/`BV1n741127LD` - -curl -b "SESSDATA=xxx" -b "aid=98948772&csrf=xxx" "http://api.bilibili.com/x/space/top/arc/set" - -同curl -b "SESSDATA=xxx" -b "bvid=BV1n741127LD&csrf=xxx" "http://api.bilibili.com/x/space/top/arc/set" - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - - - -### 取消置顶视频 - -> http://api.bilibili.com/x/space/top/arc/cancel - -*方式:POST* - -需要登录(SESSDATA) - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---- | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误(重复取消) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -curl -b "SESSDATA=xxx" -d "csrf=xxx" "http://api.bilibili.com/x/space/top/arc/cancel" - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - - - -### 添加代表作视频 - -> http://api.bilibili.com/x/space/masterpiece/add - -*方式:POST* - -需要登录(SESSDATA) - -代表作上限为3个稿件 - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ------------------ | -| aid | data | 置顶目标视频avID | 非必要 | avID与bvID任选一个 | -| bvid | data | 置顶目标视频bvID | 非必要 | avID与bvID任选一个 | -| reason | data | 代表作备注 | 非必要 | 置顶备注最大40字符 | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53014:稿件已失效
53015:备注过长
53017:置顶非自己的稿件
53019:达到上限
53020:已经存在该稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -添加视频`av94916552`/`BV1ZE411K7ux`到代表作列表 - -curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=94916552" "http://api.bilibili.com/x/space/masterpiece/add" - -同curl -b "SESSDATA=xxx" -d "csrf=xxx&bvid=BV1ZE411K7ux" "http://api.bilibili.com/x/space/masterpiece/add" - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - - - -### 删除代表作视频 - -> http://api.bilibili.com/x/space/masterpiece/cancel - -*方式:POST* - -需要登录(SESSDATA) - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------------------- | ------ | ------------------ | -| aid | data | 要删除的目标视频avID | 非必要 | avID与bvID任选一个 | -| bvid | data | 要删除的目标视频bvID | 非必要 | avID与bvID任选一个 | -| csrf | data | cookies中的bili_jct | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53021:置顶列表中没有该视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -删除置顶视频`av59765630`/`BV1Yt41137T6` - -curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=59765630" "http://api.bilibili.com/x/space/masterpiece/cancel" - -同curl -b "SESSDATA=xxx" -d "csrf=xxx&bvid=BV1Yt41137T6" "http://api.bilibili.com/x/space/masterpiece/cancel" - +
\ No newline at end of file diff --git a/user/status_number.md b/user/status_number.md index c227741..edc06a1 100644 --- a/user/status_number.md +++ b/user/status_number.md @@ -3,13 +3,16 @@ ## 关系状态数 > http://api.bilibili.com/x/relation/stat -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA)或APP -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| vmid | url | 目标用户UID | 必要 | | +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| vmid | num | 目标用户UID | 必要 | | **json回复:** @@ -19,24 +22,31 @@ | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ----------- | ---------------------------------------------------- | -| mid | num | 目标用户UID | | -| following | num | 关注数 | | -| whisper | num | 悄悄关注数 | 需要登录(SESSDATA)
只能查看自己的
默认为0 | -| black | num | 黑名单数 | 需要登录(SESSDATA)
只能查看自己的
默认为0 | -| follower | num | 粉丝数 | | +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | ----------- | ------------------------------------------------ | +| mid | num | 目标用户UID | | +| following | num | 关注数 | | +| whisper | num | 悄悄关注数 | 需要登录(Cooklie或APP)
未登录或非自己恒为0 | +| black | num | 黑名单数 | 需要登录(Cooklie或APP)
未登录或非自己恒为0 | +| follower | num | 粉丝数 | | **示例:** 查询用户`UID=332704117`的关系状态数 -http://api.bilibili.com/x/relation/stat?vmid=332704117 +```shell +curl -G 'http://api.bilibili.com/x/relation/stat' \ +--data-urlencode 'vmid=332704117' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -53,19 +63,24 @@ http://api.bilibili.com/x/relation/stat?vmid=332704117 } ``` - +
## UP主状态数 > http://api.bilibili.com/x/space/upstat -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA)或APP -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +注:该接口需要**任意用户**登录,否则**不会返回任何数据** + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -75,7 +90,7 @@ http://api.bilibili.com/x/relation/stat?vmid=332704117 | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -102,7 +117,15 @@ http://api.bilibili.com/x/relation/stat?vmid=332704117 查询用户`UID=456664753`的UP主状态数 -http://api.bilibili.com/x/space/upstat?mid=456664753 +```shell +curl -G 'http://api.bilibili.com/x/space/upstat' \ +--data-urlencode 'mid=456664753' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + ```json { "code": 0, @@ -120,19 +143,23 @@ http://api.bilibili.com/x/space/upstat?mid=456664753 } ``` +
+## ~~订阅&投稿状态数(已弃用)~~ + +
+查看折叠内容 -## 订阅&投稿状态数 > http://api.bilibili.com/x/space/navnum -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| mid | url | 目标用户UID | 必要 | | +| mid | num | 目标用户UID | 必要 | | **json回复:** @@ -142,7 +169,7 @@ http://api.bilibili.com/x/space/upstat?mid=456664753 | ------- | ---- | -------- | --------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -179,7 +206,15 @@ http://api.bilibili.com/x/space/upstat?mid=456664753 查询用户`UID=239202390`的订阅&投稿状态数 -http://api.bilibili.com/x/space/navnum?mid=239202390 +```shell +curl -G 'http://api.bilibili.com/x/space/navnum' \ +--data-urlencode 'mid=239202390' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + ```json { "code": 0, @@ -207,19 +242,20 @@ http://api.bilibili.com/x/space/navnum?mid=239202390 } ``` - +
+
## 投稿相簿数 > http://api.vc.bilibili.com/link_draw/v1/doc/upload_count -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | ----------- | ------ | ---- | -| uid | url | 目标用户UID | 必要 | | +| uid | num | 目标用户UID | 必要 | | **json回复:** @@ -245,7 +281,13 @@ http://api.bilibili.com/x/space/navnum?mid=239202390 查询用户`UID=53456`的投稿相簿数 -http://api.vc.bilibili.com/link_draw/v1/doc/upload_count?uid=53456 +```shell +curl -G 'http://api.vc.bilibili.com/link_draw/v1/doc/upload_count' \ +--data-urlencode 'uid=53456' +``` + +
+查看响应示例: ```json { @@ -261,3 +303,4 @@ http://api.vc.bilibili.com/link_draw/v1/doc/upload_count?uid=53456 } ``` +
diff --git a/video/info.md b/video/info.md index db8f352..ca357c4 100644 --- a/video/info.md +++ b/video/info.md @@ -2,77 +2,118 @@ -## 视频详细信息(avID/bvID互转及转epID) +## 获取视频详细信息(web端) > http://api.bilibili.com/x/web-interface/view -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDSTA) -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | +限制游客访问的视频需要登录 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | **json回复:** 根对象: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-403:权限不足
-404:无视频 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ----- | ------------------------------ | --------------------- | -| bvid | str | 视频bvID | | -| aid | num | 视频avID | | -| videos | num | 视频分P总数 | 默认为1 | -| tid | num | 分区ID | | -| tname | str | 子分区名称 | | -| copyright | num | 版权标志 | 1:自制
2:转载 | -| pic | str | 视频封面图片url | | -| title | str | 视频标题 | | -| pubdate | num | 视频上传时间 | 时间戳 | -| ctime | num | 视频审核通过时间 | 时间戳 | -| desc | str | 视频简介 | | -| state | num | 0 | 作用尚不明确 | -| attribute | num | | 作用尚不明确 | -| duration | num | 视频总计持续时长(所有分P) | 单位为秒 | -| mission_id | num | 视频参与的活动ID | 无为0 | -| redirect_url | str | 重定向url | 用于番剧&影视的av->ep | -| rights | obj | 视频属性标志 | | -| owner | obj | 视频UP主信息 | | -| stat | obj | 视频状态数 | | -| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | -| cid | num | 视频1P CID | | -| dimension | obj | 视频1P分辨率 | | -| no_cache | bool | true | 作用尚不明确 | -| pages | array | 视频分P列表 | | -| subtitle | obj | 视频CC字幕 | | -| staff | array | 合作成员列表 | 可不存在 | +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ----- | ------------------------------ | ------------------------------------------------------------ | +| bvid | str | 稿件bvID | | +| aid | num | 稿件avID | | +| videos | num | 稿件分P总数 | 默认为1 | +| tid | num | 分区tID | | +| tname | str | 子分区名称 | | +| copyright | num | 是否转载 | 1:原创
2:转载 | +| pic | str | 稿件封面图片url | | +| title | str | 稿件标题 | | +| pubdate | num | 稿件发布时间 | 时间戳 | +| ctime | num | 用户提交稿件的时间 | 时间戳 | +| desc | str | 视频简介 | | +| state | num | 视频状态 | (PS:以下部分内容来源不明,有待验证)
0:开放浏览
1:橙色通过
-1:待审
-2:被打回
-3:网警锁定
-4:被锁定
-5:管理员锁定(可浏览)
-6:修复待审
-7:暂缓审核
-8:补档待审
-9:等待转码
-10:延迟审核
-11:视频源待修
-12:转储失败
-13:允许评论待审
-14:临时回收站
-15:分发中
-16:转码失败
-20:创建未提交
-30:创建已提交
-40:定时发布
-100:用户删除 | +| attribute | num | 稿件属性位配置 | | +| duration | num | 稿件总时长(所有分P) | 单位为秒 | +| mission_id | num | 稿件参与的活动ID | 无为0 | +| redirect_url | str | 重定向url | 用于番剧及影视的av/bv->ep | +| rights | obj | 视频属性标志 | | +| owner | obj | 视频UP主信息 | | +| stat | obj | 视频状态数 | | +| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | +| cid | num | 视频1P CID | | +| dimension | obj | 视频1P分辨率 | | +| no_cache | bool | true | 作用尚不明确 | +| pages | array | 视频分P列表 | | +| subtitle | obj | 视频CC字幕 | | +| staff | array | 合作成员列表 | 非合作视频无此项 | + +`attribute`属性位二进制值表: + +(PS:以下部分内容来源不明,有待验证) + +| 位 | 内容 | 备注 | +| ---- | ---------------------- | --------------------------------------------- | +| 0 | 禁止排行 | | +| 1 | 动态禁止 | 禁止APP推送动态 | +| 2 | 禁止网页输出 | | +| 3 | 禁止客户端列表 | | +| 4 | 搜索禁止 | | +| 5 | 海外禁止 | | +| 6 | 禁止推荐 | 禁止被APP端天马列表推荐 | +| 7 | 是否显示“禁止转载“标志 | **注:此位并非限制分享** | +| 8 | 是否高清 | 视频清晰度>=1080P | +| 9 | 是否PGC稿件 | 番剧&影视 | +| 10 | 允许承包 | | +| 11 | 是否番剧 | | +| 12 | 是否私单 | | +| 13 | 是否限制地区 | 大多数番剧&影视 | +| 14 | 禁止其他人添加TAG | | +| 15 | ? | | +| 16 | 跳转 | 番剧及影视av/bv->ep跳转 | +| 17 | 是否影视 | | +| 18 | 是否付费 | | +| 19 | 推送动态 | | +| 20 | 家长模式 | | +| 21 | 是否限制游客和外链 | 部分视频未登录无法观看,且网页限制referer跳转 | +| 22 | ? | | +| 23 | ? | | +| 24 | 是否为联合投稿 | | +| 25 | ? | | +| 26 | ? | | +| 27 | ? | | +| 28 | ? | | +| 29 | 是否为互动视频 | | `data`中的`rights`对象: -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ---------------- | ---------------------------------------- | -| bp | num | 0 | 作用尚不明确 | -| elec | num | 0 | 作用尚不明确 | -| download | num | 允许下载标志 | 0:不允许
1:允许 | -| movie | num | 视频时电影标志 | 0:否
1:是 | -| pay | num | 仅会员可观看标志 | 0:无
1:有 | -| hd5 | num | 有高码率标志 | 0:无
1:有 | -| no_reprint | num | 禁止转载标志 | 0:无
1:禁止 | -| autoplay | num | 可自动播放标志 | 0:无
1:有 区别影视番剧与普通视频 | -| ugc_pay | num | 0 | 作用尚不明确 | -| is_cooperation | num | 视频合作标志 | 0:无
1:是 | -| ugc_pay_preview | num | 0 | 作用尚不明确 | -| no_background | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | ---------------------- | ------------ | +| bp | num | 0 | 作用尚不明确 | +| elec | num | 是否支持充电 | | +| download | num | 是否允许下载 | | +| movie | num | 是否电影 | | +| pay | num | 是否PGC付费 | | +| hd5 | num | 是否有高码率 | | +| no_reprint | num | 是否显示“禁止转载“标志 | | +| autoplay | num | 是否自动播放 | | +| ugc_pay | num | 是否UGC付费 | | +| is_cooperation | num | 是否为联合投稿 | | +| ugc_pay_preview | num | 0 | 作用尚不明确 | +| no_background | num | 0 | 作用尚不明确 | `data`中的`owner`对象: @@ -84,20 +125,20 @@ `data`中的`stat`对象: -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------------------------ | ------------ | -| aid | num | 视频avID | | -| view | num | 普通:观看次数
屏蔽时:-1 | | -| danmaku | num | 弹幕条数 | | -| reply | num | 评论条数 | | -| favorite | num | 收藏人数 | | -| coin | num | 投币枚数 | | -| share | num | 分享次数 | | -| now_rank | num | 0 | 作用尚不明确 | -| his_rank | num | 历史最高排行 | | -| like | num | 获赞次数 | | -| dislike | num | 0 | 作用尚不明确 | -| evaluation | str | 视频评分 | 默认为空 | +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ---- | ------------ | ------- | +| aid | num | 稿件avID | | +| view | num | 播放数 | | +| danmaku | num | 弹幕数 | | +| reply | num | 评论数 | | +| favorite | num | 收藏数 | | +| coin | num | 投币数 | | +| share | num | 分享数 | | +| now_rank | num | 当前排名 | | +| his_rank | num | 历史最高排行 | | +| like | num | 获赞数 | | +| dislike | num | 点踩数 | 恒为`0` | +| evaluation | str | 视频评分 | | `data`中的`pages`数组: @@ -107,26 +148,26 @@ | n | obj | (n+1)P内容 | | | …… | obj | …… | …… | -数组`pages`中的对象: +`pages`数组中的对象: -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | --------------- | ------------------------------------ | -| cid | num | 当前分P CID | | -| page | num | 当前分P | | -| from | str | 视频来源 | vupload:用户上传
hunan:芒果TV | -| part | str | 当前分P标题 | | -| duration | num | 当前分P持续时间 | 单位为秒 | -| vid | str | 空 | 作用尚不明确 | -| weblink | str | 空 | 作用尚不明确 | -| dimension | obj | 当前分P分辨率 | | +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | --------------- | --------------------------------------------------------- | +| cid | num | 当前分P CID | | +| page | num | 当前分P | | +| from | str | 视频来源 | vupload:普通上传(B站)
hunan:芒果TV
qq:腾讯 | +| part | str | 当前分P标题 | | +| duration | num | 当前分P持续时间 | 单位为秒 | +| vid | str | 站外视频vid | 仅站外视频有效 | +| weblink | str | 站外视频跳转url | 仅站外视频有效 | +| dimension | obj | 当前分P分辨率 | 部分较老视频无分辨率值 | -数组`pages`中的对象中的`dimension`对象:(同`data`中的`dimension`对象) +`pages`数组中的对象中的`dimension`对象(同`data`中的`dimension`对象): -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ------------ | -| width | num | 当前分P 宽度 | 可能为0 | -| height | num | 当前分P 高度 | 可能为0 | -| rotate | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------------- | -------------------- | +| width | num | 当前分P 宽度 | | +| height | num | 当前分P 高度 | | +| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | `subtitle`对象: @@ -143,7 +184,7 @@ | n | obj | 字幕(n+1) | | | …… | obj | …… | …… | -数组`list`中的对象: +`list`数组中的对象: | 字段 | 类型 | 内容 | 备注 | | ------------ | ---- | ------------------- | ---- | @@ -155,7 +196,7 @@ | subtitle_url | str | json格式字幕文件url | | | author | obj | 字幕上传者信息 | | -数组`list`中的对象中的`author`对象: +`list`数组中的对象中的`author`对象: | 字段 | 类型 | 内容 | 备注 | | --------------- | ---- | ----------------- | ------------ | @@ -177,7 +218,7 @@ | n | obj | 合作成员(n+1) | | | …… | obj | …… | …… | -数组`staff`中的对象: +`staff`数组中的对象: | 字段 | 类型 | 内容 | 备注 | | -------- | ---- | -------------- | ---- | @@ -189,7 +230,7 @@ | official | obj | 成员认证信息 | | | follower | num | 成员粉丝数 | | -数组`staff`中的对象中的`vip`对象: +`staff`数组中的对象中的`vip`对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | ---- | ------------ | ----------------------------------- | @@ -197,7 +238,7 @@ | status | num | 会员状态 | 0:无
1:有 | | theme_type | num | 0 | | -数组`staff`中的对象中的`official`对象: +`staff`数组中的对象中的`official`对象: | 字段 | 类型 | 内容 | 备注 | | ----- | ---- | ------------ | ----------------------------------------------- | @@ -208,9 +249,24 @@ **示例:** -http://api.bilibili.com/x/web-interface/view?aid=85440373 +获取视频`av85440373`/`BV117411r7R1`的基本信息 -同http://api.bilibili.com/x/web-interface/view?bvid=BV117411r7R1 +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/view' \ +--data-urlencode 'aid=85440373' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/view' \ +--data-urlencode 'bvid=BV117411r7R1' +``` + +
+查看响应示例: ```json { @@ -335,32 +391,52 @@ http://api.bilibili.com/x/web-interface/view?aid=85440373 } ``` -可得出视频封面为:**(可用于封面提取)** +
+ +视频标题为:`当我给拜年祭的快板加了电音配乐…` + +视频分区为:`tid=28(音乐->原创音乐)` + +视频时长:`486s` + +视频发布时间:`2020/1/30 17:40:55` + +视频投稿时间:`2020/1/28 19:51:3` + +视频分P为:`1` + +视频类型为:`1(原创)` + +视频UP主为:`66606350(Crazy_Bucket)` + +视频简介为: + +`【CB想说的】看完拜年祭之后最爱的一个节目!给有快板的部分简单加了一些不同风格的配乐hhh,感谢沃玛画的我!太可爱了哈哈哈哈哈哈哈!!!\n【Warma想说的】我画了打碟的CB,画风为了还原原版视频所以参考了四迹老师的画风,四迹老师的画真的太可爱啦!不过其实在画的过程中我遇到了一个问题,CB的耳机……到底是戴在哪个耳朵上呢?\n\n原版:av78977080\n编曲(配乐):Crazy Bucket\n人声(配音):Warma/谢拉\n曲绘:四迹/Warma\n动画:四迹/Crazy Bucket\n剧本:Mokurei-木灵君\n音频后期:DMYoung/纳兰寻风/Crazy Bucket\n包装:破晓天` + +视频状态为:`0(开放浏览)` + +视频属性为: `显示“禁止转载“标志`、`高清`、`禁止其他人添加TAG`、`联合投稿视频` + +视频封面为: http://i1.hdslb.com/bfs/archive/ea0dd34bf41e23a68175680a00e3358cd249105f.jpg ![](http://i1.hdslb.com/bfs/archive/ea0dd34bf41e23a68175680a00e3358cd249105f.jpg) -UP主头像为: - -http://i0.hdslb.com/bfs/face/5387950a59be8038daaae3f66dfb5a85e20d5737.jpg - - - -## 视频简介 +## 获取视频简介 > http://api.bilibili.com/x/web-interface/archive/desc -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | **json回复:** @@ -370,16 +446,29 @@ http://i0.hdslb.com/bfs/face/5387950a59be8038daaae3f66dfb5a85e20d5737.jpg | ------- | ---- | -------- | -------------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
62002:稿件不可见 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | str | 简介内容 | | **示例:** 查看视频~~(教主的咕鸽)~~`av39330059`/`BV1Bt411z799`的简介 -http://api.bilibili.com/x/web-interface/archive/desc?aid=39330059 +avID方式: -同http://api.bilibili.com/x/web-interface/archive/desc?bvid=BV1Bt411z799 +```shell +curl -G 'http://api.bilibili.com/x/archive/desc' \ +--data-urlencode 'aid=39330059' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/archive/desc' \ +--data-urlencode 'bvid=BV1Bt411z799' +``` + +
+查看响应示例: ```json { @@ -390,20 +479,20 @@ http://api.bilibili.com/x/web-interface/archive/desc?aid=39330059 } ``` +
- -## 视频分P列表 (avID/bvID转CID) +## 查询视频分P列表 (avID/bvID转CID) > http://api.bilibili.com/x/player/pagelist -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | **json回复:** @@ -413,7 +502,7 @@ http://api.bilibili.com/x/web-interface/archive/desc?aid=39330059 | ------- | ----- | -------- | --------------------------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | array | 分P列表 | | 数组`data`: @@ -426,32 +515,45 @@ http://api.bilibili.com/x/web-interface/archive/desc?aid=39330059 数组`data`中的对象: -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | --------------- | ------------------------------------ | -| cid | num | 当前分P CID | | -| page | num | 当前分P | | -| from | str | 视频来源 | vupload:用户上传
hunan:芒果TV | -| part | str | 当前分P标题 | | -| duration | num | 当前分P持续时间 | 单位为秒 | -| vid | str | 空 | 作用尚不明确 | -| weblink | str | 空 | 作用尚不明确 | -| dimension | obj | 当前分P分辨率 | | +| 字段 | 类型 | 内容 | 备注 | +| --------- | ---- | --------------- | --------------------------------------------------------- | +| cid | num | 当前分P CID | | +| page | num | 当前分P | | +| from | str | 视频来源 | vupload:普通上传(B站)
hunan:芒果TV
qq:腾讯 | +| part | str | 当前分P标题 | | +| duration | num | 当前分P持续时间 | 单位为秒 | +| vid | str | 站外视频vid | | +| weblink | str | 站外视频跳转url | | +| dimension | obj | 当前分P分辨率 | 有部分视频无法获取分辨率 | 数组`data`中的对象中的`dimension`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ------------ | -| width | num | 当前分P 宽度 | 可能为0 | -| height | num | 当前分P 高度 | 可能为0 | -| rotate | num | 0 | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------------- | -------------------- | +| width | num | 当前分P 宽度 | | +| height | num | 当前分P 高度 | | +| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | **示例:** 查询视频`av13502509`/`BV1ex411J7GE`的分P列表 -http://api.bilibili.com/x/player/pagelist?aid=13502509 +avID方式: -同http://api.bilibili.com/x/player/pagelist?bvid=BV1ex411J7GE +```shell +curl -G 'http://api.bilibili.com/x/player/pagelist' \ +--data-urlencode 'aid=13502509' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/pagelist' \ +--data-urlencode 'bvid=BV1ex411J7GE' +``` + +
+查看响应示例: ```json { @@ -516,5 +618,6 @@ http://api.bilibili.com/x/player/pagelist?aid=13502509 } ``` +
diff --git a/video/interact_video.md b/video/interact_video.md new file mode 100644 index 0000000..8d4b74b --- /dev/null +++ b/video/interact_video.md @@ -0,0 +1,369 @@ +# 互动视频信息 + +注:互动视频分P与普通视频分P不互通 + +## 获取互动视频模块详细信息 + +> http://api.bilibili.com/x/stein/edgeinfo_v2 + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------- | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| graph_version | num | 剧情图ID | 必要 | 位于`player.so`中 | +| edge_id | num | 模块编号 | 非必要 | 0或留空为起始模块 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频
99003:剧情图被修改已失效
99077:请输入aid/bvid | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ----- | ------------------- | ------------------------------------------------ | +| title | str | 视频模块(分P)标题 | | +| edge_id | num | 当前模块ID | | +| story_list | array | 进度回溯信息 | 未登录仅有起始模块 | +| edges | obj | 当前模块信息 | | +| preload | obj | 预加载的分P | | +| hidden_vars | array | 变量列表 | 无变量时不存在此项 | +| is_leaf | num | 是否为结束模块 | 0:当前模块为普通模块
1:当前模块为结束模块 | +| no_tutorial | num | 禁止记录选择 | 1:禁止
非禁止时无此项 | +| no_backtracking | num | 禁止进度回溯 | 1:禁止
非禁止时无此项 | +| no_evaluation | num | 禁止结尾评分 | 1:禁止
非禁止时无此项 | + +`data`中的`story_list`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ---- | +| 0 | obj | 回溯第一项模块 | | +| n | obj | 回溯第(n+1)项模块 | | +| …… | obj | …… | …… | + +`story_list`数组中的对象: + +| 项 | 类型 | 内容 | 备注 | +| ---------- | ---- | ---------------- | ----------------------------- | +| node_id | num | 模块编号 | | +| edge_id | num | **同上** | | +| title | str | 模块(分P)标题 | | +| cid | num | 模块(分P)CID | | +| start_pos | num | 记录播放开始位置 | 单位为毫秒 | +| cover | str | 分P封面url | | +| is_current | num | 是否为当前模块 | 1:是
仅为当前模块时存在 | +| cursor | num | 进度序号 | 从0开始向上增长 | + +`data`中的`edges`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------- | ----- | ------------- | ------------------------ | +| dimension | obj | 当前分P分辨率 | 有部分视频无法获取分辨率 | +| questions | array | 问题 | 结束模块无此项 | +| skin | obj | 问题外观 | | + +`edges`中的`dimension`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------------- | -------------------- | +| width | num | 当前分P 宽度 | | +| height | num | 当前分P 高度 | | +| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | +| sar | str | ??? | 作用尚不明确 | + +`edges`中的`questions`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| 0 | obj | 套了个娃 | | + +`edges`中的`questions`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------- | ----- | ---------------- | ------------------------------------------------------------ | +| id | num | ??? | 作用尚不明确 | +| type | num | 选项显示模式 | 0:不显示选项
1:底部选项模式
2:坐标定点模式
3:???
127:??? | +| start_time_r | num | 300 或 duration | 作用尚不明确 | +| duration | num | 回答限时 | 单位为毫秒
不限时为`-1` | +| pause_video | num | 是否暂停播放视频 | 0:不暂停
1:暂停播放 | +| title | str | 空 | 作用尚不明确 | +| choices | array | 选项列表 | | +| fade_in_time | num | 选项淡入时间 | 毫秒 | +| fade_out_time | num | 选项淡出时间 | 毫秒 | + +`questions`数组中的对象中的`choices`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------- | ---- | +| 0 | obj | 第一选项 | | +| n | obj | 第(n+1)选项 | | +| …… | obj | …… | …… | + +`questions`数组中的对象中的`choices`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ---- | -------------------- | ------------------------------------- | +| id | num | 选项所跳转的模块ID | | +| platform_action | str | 跳转信息文字 | JUMP+{所跳转的模块编号}+{所跳转的CID} | +| native_action | str | 点击后对变量运算语句 | 每项间用分号隔开
无为空 | +| condition | str | 选项出现条件判断语句 | 无为空 | +| cid | num | 选项所跳转分P的CID | | +| x | num | 选项出现的x坐标 | 仅坐标模式有此项 | +| y | num | 选项出现的y坐标 | 仅坐标模式有此项 | +| text_align | num | 选项文本对齐方式 | | +| option | str | 选项文字 | | +| selected | obj | 选择动画信息 | | +| submited | obj | 提交动画信息 | | +| is_default | num | 是否为默认选项 | 1:是
非默认选项无此项 | +| is_hidden | num | 是否为隐藏选项 | 1:是
非隐藏选项无此项 | + +`edges`中的`skin`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------------ | ---- | ------------------- | ---------------- | +| choice_image | str | 选项组件外观图片url | | +| title_text_color | str | 文字颜色 | 以下均为RGBA格式 | +| title_shadow_color | str | 文字阴影颜色 | | +| title_shadow_offset_x | num | 文字阴影x偏移 | | +| title_shadow_offset_y | num | 文字阴影y偏移 | | +| title_shadow_radius | num | 文字阴影半径 | | +| progressbar_color | str | 倒计时条颜色 | | +| progressbar_shadow_color | str | 倒计时条阴影颜色 | | + +`data`中的`preload`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ----- | ----------- | ---- | +| video | array | 预加载的分P | | + +`preload`中的`video`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ------------------------------------ | +| 0 | obj | 预加载第一项 | 预加载的内容为当前所有选项的跳转视频 | +| n | obj | 预加载第(n+1)项 | | +| …… | obj | …… | …… | + +`preload`中的`video`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | -------- | ---- | +| aid | num | 稿件avID | | +| cid | num | 分P CID | | + +`data`中的`hidden_vars`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 第一个变量 | | +| n | obj | 第(n+1)个变量 | | +| …… | obj | …… | …… | + +`data`中的`hidden_vars`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ------------ | -------------------------- | +| value | num | 变量值 | 随机值为随机整数 | +| id | str | 变量编号 | | +| id_v2 | str | 变量编号 | 语句中一般使用这种 | +| type | num | 变量类型 | 1:普通变量
2:随机值 | +| is_show | num | 是否展示变量 | 0:否
1:是 | +| name | str | 变量名 | | +| skip_overwrite | num | 0 | 作用尚不明确 | + +**示例:** + +查询互动视频`av73267982`下剧情图`155446`模块`5556092`的信息 + +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/stein/edgeinfo_v2' \ +--data-urlencode 'aid=73267982' \ +--data-urlencode 'graph_version=155446' \ +--data-urlencode 'edge_id=5556092' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/stein/edgeinfo_v2' \ +--data-urlencode 'bvid=BV1UE411y7Wy' \ +--data-urlencode 'graph_version=155446' \ +--data-urlencode 'edge_id=5556092' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "title": "4", + "edge_id": 5556092, + "story_list": [ + { + "node_id": 1, + "edge_id": 1, + "title": "0 片头", + "cid": 127486603, + "start_pos": 27000, + "cover": "http://i0.hdslb.com/bfs/steins-gate/127486603_screenshot.jpg", + "cursor": 0 + }, + { + "node_id": 5556092, + "edge_id": 5556092, + "title": "4", + "cid": 125499378, + "start_pos": 82000, + "cover": "http://i0.hdslb.com/bfs/steins-gate/125499378_screenshot.jpg", + "is_current": 1, + "cursor": 15 + } + ], + "edges": { + "dimension": { + "width": 1920, + "height": 1000, + "rotate": 0, + "sar": "" + }, + "questions": [ + { + "id": 0, + "type": 2, + "start_time_r": 300, + "duration": -1, + "pause_video": 1, + "title": "", + "choices": [ + { + "id": 5556133, + "platform_action": "JUMP 5556133 125499249", + "native_action": "", + "condition": "$H7g_64_PG2EVS>=1.00 && $H7g_64_PG2EVS<=80.00", + "cid": 125499249, + "x": 947, + "y": 499, + "text_align": 2, + "option": "A <你已成为杀手> 试图砍死萌新 (成功率20%)", + "is_default": 1 + }, + { + "id": 5556134, + "platform_action": "JUMP 5556134 125502707", + "native_action": "", + "condition": "$H7g_64_PG2EVS>=81.00 && $H7g_64_PG2EVS<=100.00", + "cid": 125502707, + "x": 949, + "y": 502, + "text_align": 2, + "option": "B <你已成为杀手> 试图砍死萌新 (成功率20%)" + }, + { + "id": 5556135, + "platform_action": "JUMP 5556135 125499249", + "native_action": "", + "condition": "", + "cid": 125499249, + "x": 120, + "y": 145, + "text_align": 2, + "option": "C 直接【砍杀失败】" + } + ] + } + ], + "skin": { + "choice_image": "https://i0.hdslb.com/bfs/app/db0ae7700d4fb1416c8b305bcfb6f0948f818cc9.png", + "title_text_color": "d8fbffff", + "title_shadow_color": "00000033", + "title_shadow_offset_y": 1, + "title_shadow_radius": 1, + "progressbar_color": "ffffffff", + "progressbar_shadow_color": "000000cc" + } + }, + "preload": { + "video": [ + { + "aid": 73267982, + "cid": 125499249 + }, + { + "aid": 73267982, + "cid": 125502707 + } + ] + }, + "hidden_vars": [ + { + "value": 97, + "id": "v-H7g@PG2EVS", + "id_v2": "$H7g_64_PG2EVS", + "type": 2, + "is_show": 0, + "name": "随机值", + "skip_overwrite": 0 + }, + { + "value": 0, + "id": "v-YWB6dk1oCP", + "id_v2": "$YWB6dk1oCP", + "type": 1, + "is_show": 1, + "name": "达成假结局次数", + "skip_overwrite": 0 + }, + { + "value": 0, + "id": "v-Zh4JACIiId", + "id_v2": "$Zh4JACIiId", + "type": 1, + "is_show": 1, + "name": "死亡次数", + "skip_overwrite": 0 + }, + { + "value": 0, + "id": "v-a2vplaQlsP", + "id_v2": "$a2vplaQlsP", + "type": 1, + "is_show": 1, + "name": "达成真结局次数", + "skip_overwrite": 0 + }, + { + "value": 1, + "id": "v-lMQqQ994Sk", + "id_v2": "$lMQqQ994Sk", + "type": 1, + "is_show": 1, + "name": "循环编号", + "skip_overwrite": 0 + } + ], + "is_leaf": 0 + } +} +``` + +
\ No newline at end of file diff --git a/video/like_coin_fav.md b/video/like_coin_fav.md index 7cd06f7..62ac31e 100644 --- a/video/like_coin_fav.md +++ b/video/like_coin_fav.md @@ -1,25 +1,27 @@ # 视频点赞&投币&收藏 -**本页所有操作均需登录(SESSDATA)** +**本页所有操作均需登录(Cookie或APP)** -## 操作 - -### 点赞视频 +## 点赞 +### 点赞视频(web端) + > http://api.bilibili.com/x/web-interface/archive/like -*方式:POST* +*请求方式:POST* -**参数( application/x-www-form-urlencoded ):** +认证方式:仅可Cookie(SESSDATA) -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---------------------- | -| aid | data | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | data | 视频bvID | 非必要 | avID与bvID任选一个 | -| like | data | 操作方式 | 必要 | 1:点赞
2:取消赞 | -| csrf | data | cookies中的bili_jct | 必要 | | +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------------ | ---------------------- | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| like | num | 操作方式 | 必要 | 1:点赞
2:取消赞 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -27,17 +29,36 @@ | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
65006:已赞过
65004:取消点赞失败 | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
65004:取消点赞失败
65006:重复点赞 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** -为视频av79677524/BV1uJ411r7hL点赞 +点赞视频`av79677524`/`BV1uJ411r7hL` -curl -b "SESSDATA=xxx" -d "aid=79677524&like=1&csrf=xxx" "http://api.bilibili.com/x/web-interface/archive/like" +avID方式: -同curl -b "SESSDATA=xxx" -d "aid=BV1uJ411r7hL&like=1&csrf=xxx" "http://api.bilibili.com/x/web-interface/archive/like" +```shell +curl 'http://api.bilibili.com/x/web-interface/archive/like' \ +--data-urlencode 'aid=79677524' \ +--data-urlencode 'like=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/web-interface/archive/like' \ +--data-urlencode 'bvid=BV1uJ411r7hL' \ +--data-urlencode 'like=1' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -47,25 +68,23 @@ curl -b "SESSDATA=xxx" -d "aid=79677524&like=1&csrf=xxx" "http://api.bilibili.co } ``` +
+### 点赞视频(APP端) -### 投币视频 +> http://app.bilibili.com/x/v2/view/like - +*请求方式:POST* -> http://api.bilibili.com/x/web-interface/coin/add +认证方式:仅可APP -*方式:POST* +**正文参数( application/x-www-form-urlencoded ):** -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------- | ------ | --------------------------------------- | -| aid | data | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | data | 视频bvID | 非必要 | avID与bvID任选一个 | -| select_like | data | 附加点赞 | 非必要 | 0:不点赞
1:同时点赞
默认为0 | -| multiply | data | 投币数量 | 必要 | 上限为2 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num | 稿件avID | 必要 | | +| like | num | 操作方式 | 必要 | 0:点赞
1:取消赞 | **json回复:** @@ -73,9 +92,137 @@ curl -b "SESSDATA=xxx" -d "aid=79677524&like=1&csrf=xxx" "http://api.bilibili.co | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34005:超过投币上限 | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
10003:不存在该稿件 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | +| data | obj | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ----- | ---- | ------------ | ---- | +| toast | str | 提示信息内容 | | + +**示例:** + +点赞视频`av79677524` + +```shell +curl 'http://app.bilibili.com/x/v2/view/like' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'aid=79677524' \ +--data-urlencode 'like=0' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "toast": "点赞收到!视频可能推荐哦" + } +} +``` + +
+ +### 判断视频是否被点赞(双端) + +> http://api.bilibili.com/x/web-interface/archive/has/like + +*请求方式:GET* + +认证方式:APP或Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ------------ | ------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | ---------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | num | 被点赞标志 | 0:未点赞
1:已点赞 | + +**示例:** + +视频`av39330059`/`BV1Bt411z799`的状态为已点赞 + +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/archive/has/like' \ +--data-urlencode 'aid=39330059' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl -G 'api.bilibili.com/x/web-interface/archive/has/like' \ +--data-urlencode 'bvid=BV1Bt411z799' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": 1 +} +``` + +
+ +## 投币 + + + + +### 投币视频(web端) + +> http://api.bilibili.com/x/web-interface/coin/add + +*请求方式:POST* + +认证方式:仅可Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ------------------------ | ------------ | --------------------------------------- | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| multiply | num | 投币数量 | 必要 | 上限为2 | +| select_like | num | 是否附加点赞 | 非必要 | 0:不点赞
1:同时点赞
默认为0 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34004:投币间隔太短
34005:超过投币上限 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | | data | obj | 信息本体 | | data 对象: @@ -88,9 +235,30 @@ data 对象: 为视频`av90671873`/`BV1N7411A7wC`投币2枚 -curl -b "SESSDATA=xxx" -d "aid=90671873&select_like=1&multiply=2&csrf=xxx" "http://api.bilibili.com/x/web-interface/coin/add" +avID方式: -同curl -b "SESSDATA=xxx" -d "bvid=BV1N7411A7wC&select_like=1&multiply=2&csrf=xxx" "http://api.bilibili.com/x/web-interface/coin/add" +```shell +curl 'http://api.bilibili.com/x/web-interface/coin/add' \ +--data-urlencode 'aid=90671873' \ +--data-urlencode 'select_like=1' \ +--data-urlencode 'multiply=2' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/web-interface/coin/add' \ +--data-urlencode 'bvid=BV1N7411A7wC' \ +--data-urlencode 'select_like=1' \ +--data-urlencode 'multiply=2' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -103,27 +271,24 @@ curl -b "SESSDATA=xxx" -d "aid=90671873&select_like=1&multiply=2&csrf=xxx" "http } ``` +
+### 投币视频(APP端) -### 收藏视频(暂不支持bvID) +> http://app.bilibili.com/x/v2/view/coin/add - +*请求方式:POST* -> http://api.bilibili.com/medialist/gateway/coll/resource/deal +认证方式:仅可APP -*方式:POST* +**正文参数( application/x-www-form-urlencoded ):** -需要验证`referer`为 `http://www.bilibili.com`或`https://www.bilibili.com`域名下 - -**参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------- | ---- | ------------------- | ------ | ----------------------- | -| rid | data | 视频avID | 必要 | | -| type | data | 必须为2 | 必要 | | -| add_media_ids | data | 需要加入的收藏夹ID | 非必要 | 同时添加多个,用`,`分隔 | -| del_media_ids | data | 需要取消的收藏夹ID | 非必要 | 同时取消多个,用`,`分隔 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ------------ | ----------- | --------------------------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num | 稿件avID | 必要 | | +| multiply | num | 投币数量 | 必要 | 上限为2 | +| select_like | num | 附加点赞 | 非必要 | 0:不点赞
1:同时点赞
默认为0 | **json回复:** @@ -131,21 +296,185 @@ curl -b "SESSDATA=xxx" -d "aid=90671873&select_like=1&multiply=2&csrf=xxx" "http | 字段 | 类型 | 内容 | 备注 | | ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足
10003:不存在该稿件
11201:已经收藏过了
11202:已经取消收藏了
72010017:参数错误 | +| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34004:投币间隔太短
34005:超过投币上限 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +data 对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------ | ----------------------------------------------------- | +| like | bool | 是否点赞成功 | true:成功
false:失败
已赞过则附加点赞失败 | + +为视频`av90671873`投币2枚 + +```shell +curl 'http://app.bilibili.com/x/v2/view/coin/add' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'aid=90671873' \ +--data-urlencode 'select_like=1' \ +--data-urlencode 'multiply=2' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "like": true + } +} +``` + +
+ +### 判断视频是否被投币(双端) + +> http://api.bilibili.com/x/web-interface/archive/coins + +*请求方式:GET* + +认证方式:APP或Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ------------ | ------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | --------- | +| multiply | num | 投币枚数 | 未投币为0 | + +**示例:** + +视频`av37896701`/`BV18t411q7zz`的投币数为2枚 + +avID方式: + +```shell +curl -G 'api.bilibili.com/x/web-interface/archive/coins' \ +--data-urlencode 'aid=37896701' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl -G 'api.bilibili.com/x/web-interface/archive/coins' \ +--data-urlencode 'bvid=BV18t411q7zz' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "multiply": 2 + } +} +``` + +
+ +## 收藏 + + + +### 收藏视频(双端) + +> http://api.bilibili.com/medialist/gateway/coll/resource/deal +> +> http://api.bilibili.com/x/v3/fav/resource/deal + +*请求方式:POST* + +认证方式:APP或Cookie(SESSDATA) + +鉴权方式:Cookie方式时需要验证referer为 `.bilibili.com`域名下 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------------- | ---- | ------------------------ | -------------- | ------------------------------ | +| access_key | str | APP登录Token | APP方式必要 | | +| rid | num | 稿件avID | 必要 | | +| type | num | 必须为2 | 必要 | | +| add_media_ids | nums | 需要加入的收藏夹ID | 非必要 | 同时添加多个,用`,`(%2C)分隔 | +| del_media_ids | nums | 需要取消的收藏夹ID | 非必要 | 同时取消多个,用`,`(%2C)分隔 | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足
10003:不存在该稿件
11201:已经收藏过了
11202:已经取消收藏了
11203:达到收藏上限
72010017:参数错误 | | message | str | 错误信息 | 正确为success | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----- | ------------ | -| prompt | bool | false | 作用尚不明确 | +| 字段 | 类型 | 内容 | 备注 | +| ------ | ---- | -------------------- | ----------------------- | +| prompt | bool | 是否为未关注用户收藏 | false:否
true:是 | **示例:** 将视频`av49166435`添加到收藏夹`49166435`中 -curl --referer "http://www.bilibili.com" -b "SESSDATA=xxx" -d "rid=90671873&type=2&add_media_ids=49166435&del_media_ids=&csrf=xxx" "http://api.bilibili.com/medialist/gateway/coll/resource/deal" +Cookie方式: + +```shell +curl 'http://api.bilibili.com/medialist/gateway/coll/resource/deal' \ +--data-urlencode 'rid=90671873' \ +--data-urlencode 'type=2' \ +--data-urlencode 'add_media_ids=49166435' \ +--data-urlencode 'del_media_ids=' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' \ +-e 'https://www.bilibili.com' +``` + +APP方式: + +```shell +curl 'http://api.bilibili.com/medialist/gateway/coll/resource/deal' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'rid=90671873' \ +--data-urlencode 'type=2' \ +--data-urlencode 'add_media_ids=49166435' \ +--data-urlencode 'del_media_ids=' +``` + +
+查看响应示例: ```json { @@ -157,25 +486,99 @@ curl --referer "http://www.bilibili.com" -b "SESSDATA=xxx" -d "rid=90671873&type } ``` +
+### 判断视频是否被收藏(双端) -### 一键三连视频 +> http://api.bilibili.com/x/v2/fav/video/favoured + +*请求方式:GET* + +认证方式:APP或Cookie(SESSDATA) + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | -------- | ------------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num或str | 稿件avID或稿件bvID | 必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +data 对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | -------- | ------------------------------- | +| count | num | 1 | 作用尚不明确 | +| favoured | bool | 是否收藏 | true:已收藏
false:未收藏 | + +**示例:** + +视频`av46281123`/`BV1Bb411H7Dv`的状态为已收藏 + +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/v2/fav/video/favoured' \ +--data-urlencode 'aid=46281123' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/v2/fav/video/favoured' \ +--data-urlencode 'aid=BV1Bb411H7Dv' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "count": 1, + "favoured": true + } +} +``` + +
+ +## 一键三连 +### 一键三连视频(web端) + > http://api.bilibili.com/x/web-interface/archive/like/triple -*方式:POST* +*请求方式:POST* + +认证方式:仅可Cookie(SESSDATA) 同时点赞投币收藏视频,收藏于默认收藏夹中 -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ------------------ | -| aid | data | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | data | 视频bvID | 非必要 | avID与bvID任选一个 | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -185,25 +588,42 @@ curl --referer "http://www.bilibili.com" -b "SESSDATA=xxx" -d "rid=90671873&type | ------- | ---- | -------- | ------------------------------------------------------------ | | code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------ | ------- | -| like | bool | 是否点赞成功 | | -| coin | bool | 是否投币成功 | | -| fav | bool | 是否收藏成功 | | -| multiply | num | 投币枚数 | 默认为2 | +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------ | --------------------------- | +| like | bool | 是否点赞成功 | true:成功
false:失败 | +| coin | bool | 是否投币成功 | true:成功
false:失败 | +| fav | bool | 是否收藏成功 | true:成功
false:失败 | +| multiply | num | 投币枚数 | 默认为2 | **示例:** 将视频`av91003840`/`BV1Wj411f79U`一键三连 -curl -b "SESSDATA=xxx" -d "aid=91003840&csrf=xxx" "http://api.bilibili.com/x/web-interface/archive/like/triple" +avID方式: -同curl -b "SESSDATA=xxx" -d "bvid=BV1Wj411f79U&csrf=xxx" "http://api.bilibili.com/x/web-interface/archive/like/triple" +```shell +curl 'http://api.bilibili.com/x/web-interface/archive/like/triple' \ +--data-urlencode 'aid=91003840' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl 'http://api.bilibili.com/x/web-interface/archive/like/triple' \ +--data-urlencode 'bvid=BV1Wj411f79U' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -219,148 +639,57 @@ curl -b "SESSDATA=xxx" -d "aid=91003840&csrf=xxx" "http://api.bilibili.com/x/web } ``` +
+### 一键三连视频(APP端) -## 判断状态 +> http://app.bilibili.com/x/v2/view/like/triple -### 视频是否被收藏 +*请求方式:POST* - +认证方式:仅可APP -> http://api.bilibili.com/x/v2/fav/video/favoured +同时点赞投币收藏视频,收藏于默认收藏夹中 -*方式:GET* +**正文参数( application/x-www-form-urlencoded ):** -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------ | ------ | ---- | -| aid | url | 视频avID或视频bvID | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------ | ----------- | ---- | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num | 稿件avID | 必要 | | **json回复:** 根对象: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ------------------------------- | -| count | num | 1 | 作用尚不明确 | -| favoured | bool | 是否收藏 | true:已收藏
false:未收藏 | - -**示例:** - -视频`av46281123`/`BV1Bb411H7Dv`的状态为已收藏 - -http://api.bilibili.com/x/v2/fav/video/favoured?aid=46281123 - -同http://api.bilibili.com/x/v2/fav/video/favoured?aid=BV1Bb411H7Dv - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 1, - "favoured": true - } -} -``` - - - -### 视频是否被点赞 - - - -> http://api.bilibili.com/x/web-interface/archive/has/like - -*方式:GET* - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | num | 被点赞标志 | 0:未点赞
1:已点赞 | - -**示例:** - -视频`av39330059`/`BV1Bt411z799`的状态为已点赞 - -http://api.bilibili.com/x/web-interface/archive/has/like?aid=39330059 - -同http://api.bilibili.com/x/web-interface/archive/has/like?bvid=BV1Bt411z799 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": 1 -} -``` - - - -### 视频是否被投币 - - - -> http://api.bilibili.com/x/web-interface/archive/coins - -*方式:GET* - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
10003:不存在该稿件 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | `data`对象: -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | --------- | -| multiply | num | 投币枚数 | 未投币为0 | +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------ | --------------------------- | +| like | bool | 是否点赞成功 | true:成功
false:失败 | +| coin | bool | 是否投币成功 | true:成功
false:失败 | +| fav | bool | 是否收藏成功 | true:成功
false:失败 | +| multiply | num | 投币枚数 | 默认为2 | **示例:** -视频`av37896701`/`BV18t411q7zz`的投币数为2枚 +将视频`av91003840`一键三连 -http://api.bilibili.com/x/web-interface/archive/coins?aid=37896701 +```shell +curl 'http://app.bilibili.com/x/v2/view/like/triple' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'aid=91003840' +``` -同http://api.bilibili.com/x/web-interface/archive/coins?bvid=BV18t411q7zz +
+查看响应示例: ```json { @@ -368,10 +697,12 @@ http://api.bilibili.com/x/web-interface/archive/coins?aid=37896701 "message": "0", "ttl": 1, "data": { + "like": true, + "coin": true, + "fav": true, "multiply": 2 } } ``` - - +
\ No newline at end of file diff --git a/video/pbp.md b/video/pbp.md new file mode 100644 index 0000000..26a0ecd --- /dev/null +++ b/video/pbp.md @@ -0,0 +1,69 @@ +# 高能进度条 + +高能进度条反应了在时域上,单位时间内弹幕发送量的变化趋势 + +并用曲线顶点表示在进度条上,实现可视化 + +## 获取弹幕趋势顶点列表 + +> http://bvc.bilivideo.com/pbp/data + +*请求方式:GET* + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------ | ---- | +| cid | num | 视频CID | 必要 | | +| aid | num | 稿件avID | 非必要 | | +| bvid | num | 稿件bvID | 非必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------- | ---- | ------------ | ---------------------------- | +| step_sec | num | 采样间隔时间 | 单位为秒
由视频时长决定 | +| tagstr | str | ??? | 作用尚不明确 | +| events | obj | 数据本体 | | +| debug | str | 调试信息 | json字串 | + +`events`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ------ | ---------- | ---- | +| default | array | 顶点值列表 | | + +`events`对象中的数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------- | -------------------------------- | +| 0 | num | 顶点1 | | +| n | num | 顶点(n+1) | 顶点个数由视频时长和采样时间决定 | +| …… | num | …… | …… | + +**示例:** + +获取视频`CID=3724723`的获取弹幕趋势顶点列表 + +```shell +curl -G 'http://api.bilibili.com/pbp/data' \ +--data-urlencode 'cid=3724723' +``` + +
+查看响应示例: + +```json +{ + "step_sec": 3, + "tagstr": "pbphide_0&client_&innersign_0&group_eg&nocheck_0&version_&pbphide_0", + "events": { + "default": [0, 8853, 8011, 8043.5, 8602.5, 9377, 18838, 9645, 10396, 10672.5, 10316.5, 9987, 9524, 9040, 9081, 8747, 8517, 8559.5, 8220.5, 8133, 7164, 5626, 4992, 4628.5, 4570.5, 4473.5, 4681.5, 4365.5, 3811.5, 3813, 3883, 4059.5, 4103.5, 4227.5, 4330.5, 4096.5, 4228.5, 4337, 5017, 5897, 6220, 5711.5, 4871.5, 4533, 4364, 3976, 4012, 3985, 3658, 3540, 3789, 3646, 3045, 2769, 2587, 2488.5, 2402.5, 2521.5, 2508.5, 2763.5, 2941.5, 3685.5, 3337.5, 2457, 2313, 2322.5, 2480.5, 2595, 2520, 2173.5, 2058.5, 2268.5, 2312.5, 2847, 1083, 1.5, 2.5, 0, 0, 2] + }, + "debug": "{\"max_time\":237,\"zero_points_ratio\":0.025,\"total_dm\":1000,\"event_count\":400147}" +} +``` + +
diff --git a/video/recommend.md b/video/recommend.md index bf4d8f9..649423d 100644 --- a/video/recommend.md +++ b/video/recommend.md @@ -1,19 +1,19 @@ # 视频推荐 -## 获取单视频推荐列表 +## 获取单视频推荐列表(web端) > http://api.bilibili.com/x/web-interface/archive/related -*方式:GET* +*请求方式:GET* 最多获取40条推荐视频 -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | **json回复:** @@ -23,8 +23,8 @@ | ------- | ------ | -------- | ---------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | 推荐列表 | | +| ttl | num | 1 | | +| data | array | 推荐列表 | | `data`数组: @@ -37,15 +37,28 @@ `data`数组中的对象: -基本同「[视频详细信息](info.md#视频详细信息)」中的data对象 +基本同「[获取视频详细信息(web端)](info.md#获取视频详细信息(web端))」中的data对象 **示例:** 查询视频`av7`/`BV1xx411c7m9`的推荐视频列表 -http://api.bilibili.com/x/web-interface/archive/related?aid=7 +avID方式: -同http://api.bilibili.com/x/web-interface/archive/related?bvid=BV1xx411c7m9 +```shell +curl -G 'http://api.bilibili.com/x/web-interface/archive/related' \ +--data-urlencode 'aid=7' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/archive/related' \ +--data-urlencode 'bvid=BV1xx411c7m9' +``` + +
+查看响应示例: ```json { @@ -274,3 +287,4 @@ http://api.bilibili.com/x/web-interface/archive/related?aid=7 } ``` +
diff --git a/video/report.md b/video/report.md new file mode 100644 index 0000000..d6b6465 --- /dev/null +++ b/video/report.md @@ -0,0 +1,146 @@ +# 视频观看数据上报 + +**本页所有操作均需登录(Cookie或APP)** + +## 上报观看进度(双端) + +> http://api.bilibili.com/x/v2/history/report + +*请求方式:POST* + +认证方式:APP或Cookie(SESSDATA) + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ---------- | ---- | ------------------------ | -------------- | --------------------- | +| access_key | str | APP登录Token | APP方式必要 | | +| aid | num | 稿件avID | 必要 | | +| cid | num | 视频CID | 必要 | 用于识别分P | +| progress | num | 观看进度 | 非必要 | 单位为秒
默认为0 | +| platform | str | 平台标识 | 非必要 | 可为android | +| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +记录视频`av13662970`(`CID=126654047`)的观看记录位于`1248`秒 + +Cookie方式: + +```shell +curl 'http://api.bilibili.com/x/v2/history/report' \ +--data-urlencode 'aid=13662970' \ +--data-urlencode 'cid=126654047' \ +--data-urlencode 'progress=1248' \ +--data-urlencode 'platform=android' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +APP方式: + +```shell +curl 'http://api.bilibili.com/x/v2/history/report' \ +--data-urlencode 'access_key=xxx' \ +--data-urlencode 'aid=13662970' \ +--data-urlencode 'cid=126654047' \ +--data-urlencode 'progress=1248' \ +--data-urlencode 'platform=android' +``` + + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
+ +## 上报视频播放心跳(web端) + +> http://api.bilibili.com/x/click-interface/web/heartbeat + +*请求方式:POST* + +认证方式:仅可Cookie(SESSDATA) + +默认间隔15秒一次 + +亦可记录播放历史 + +**正文参数( application/x-www-form-urlencoded ):** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ----------- | ---- | ------------------------ | ------------ | ------------------------------------------------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| cid | num | 视频CID | 非必要 | 用于识别分P | +| epid | num | 番剧epID | 非必要 | | +| sid | num | 番剧ssID | 非必要 | | +| mid | num | 当前用户UID | 非必要 | | +| played_time | num | 视频播放进度 | 非必要 | 单位为秒
默认为0 | +| realtime | num | 总计播放时间 | 非必要 | 单位为秒 | +| start_ts | num | 开始播放时刻 | 非必要 | 时间戳 | +| type | num | 视频类型 | 非必要 | 3:投稿视频
4:剧集
10:课程 | +| sub_type | num | 剧集副类型 | 非必要 | 当`type=4`时本参数有效
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | +| dt | num | 2 | 非必要 | | +| play_type | num | 播放动作 | 非必要 | 0:播放中
1:开始播放
2:暂停
3:继续播放 | +| csrf | str | CSRF Token(位于cookie) | 非必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | --------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | + +**示例:** + +上报一次视频`av2`/`BV1xx411c7mD`的心跳数据 + +```shell +curl 'api.bilibili.com/x/click-interface/web/heartbeat' \ +--data-urlencode 'aid=2' \ +--data-urlencode 'bvid=BV1xx411c7mD' \ +--data-urlencode 'cid=62131' \ +--data-urlencode 'played_time=60' \ +--data-urlencode 'realtime=60' \ +--data-urlencode 'start_ts=1592720840' \ +--data-urlencode 'type=3' \ +--data-urlencode 'dt=2' \ +--data-urlencode 'play_type=0' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1 +} +``` + +
diff --git a/video/snapshot.md b/video/snapshot.md index 49ac8d3..5b6ffa7 100644 --- a/video/snapshot.md +++ b/video/snapshot.md @@ -6,19 +6,19 @@ 截取时间表的时间和快照一一对应,并按照从左到右 从上到下的顺序排布 -## 获取视频快照1(用于进度条预览) +## 获取视频快照(web端) > http://api.bilibili.com/x/player/videoshot -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------ | ------ | ----------------------------------- | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | -| cid | url | 分P CID | 非必要 | 默认为1P | -| index | url | json数组截取时间表 | 非必要 | 1:需要
0:不需要
默认为0 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------ | ------------ | ----------------------------------- | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| cid | num | 分P CID | 非必要 | 默认为1P | +| index | num | json数组截取时间表 | 非必要 | 1:需要
0:不需要
默认为0 | **json回复:** @@ -28,7 +28,7 @@ | ------- | ---- | -------- | ------------------------------------------------ | | code | num | 返回值 | 0:成功
40001:请求错误
40003:无视频 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -62,9 +62,26 @@ **示例:** -http://api.bilibili.com/x/player/videoshot?aid=26273789&index=1 +获取视频`av26273789`/`BV1os411H7wm`的快照 -同http://api.bilibili.com/x/player/videoshot?bvid=BV1os411H7wm&index=1 +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/videoshot' \ +--data-urlencode 'aid=26273789' \ +--data-urlencode 'index=1' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/videoshot' \ +--data-urlencode 'bvid=BV1os411H7wm' \ +--data-urlencode 'index=1' +``` + +
+查看响应示例: ```json { @@ -83,21 +100,106 @@ http://api.bilibili.com/x/player/videoshot?aid=26273789&index=1 } ``` +
+## 获取视频快照(APP端) -## 获取视频快照2 (用于封面预览 暂不支持bvID) +> http://app.bilibili.com/x/v2/view/video/shot + +*请求方式:GET* + +鉴权方式:appkey + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ---------- | ----------- | ---- | +| appkey | str | APP密钥 | APP方式必要 | | +| aid | num | 稿件avID | 必要 | | +| cid | num | 分P CID | 必要 | | +| ts | num | 当前时间戳 | APP方式必要 | | +| sign | str | APP签名 | APP方式必要 | | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误
10008:稿件的缩略图不存在 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ----- | -------------------- | --------- | +| pvdata | str | bin格式截取时间表url | | +| img_x_len | num | 每行图片数 | 一般为10 | +| img_y_len | num | 每列图片数 | 一般为10 | +| img_x_size | num | 每张图片长 | 一般为160 | +| img_y_size | num | 每张图片宽 | 一般为90 | +| image | array | 图片拼版 | | + +`data`中的`image`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | -------------------------- | +| 0 | str | 图片拼版1 url | | +| n | str | 图片拼版(n+1) url | 第一张拼版占满时延续第二张 | +| …… | str | …… | …… | + +示例: + +获取视频`av26273789`(`CID=49075258`)的快照 + +```shell +curl -G 'http://app.bilibili.com/x/v2/view/video/shot' \ +--data-urlencode 'appkey=1d8b6e7d45233436' \ +--data-urlencode 'aid=26273789' \ +--data-urlencode 'cid=49075258' \ +--data-urlencode 'ts=0' \ +--data-urlencode 'sign=06c0a4f2ede21984313552bd9439db18' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "pvdata": "http://i0.hdslb.com/bfs/videoshot/49075258.bin", + "img_x_len": 10, + "img_y_len": 10, + "img_x_size": 160, + "img_y_size": 90, + "image": [ + "http://i0.hdslb.com/bfs/videoshot/49075258.jpg", + "http://i0.hdslb.com/bfs/videoshot/49075258-1.jpg" + ] + } +} +``` + +
+ +## 获取视频快照(web端)(用于封面预览) > http://api.bilibili.com/pvideo -*方式:GET* +*请求方式:GET* -内容与「获取视频快照1」加参数「index」=1相同,但url带有转义,仅限第1P +内容与「获取视频快照1」加参数index=1相同,但url带有转义,仅限第1P -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------- | ------ | ---- | -| aid | url | 视频avID | 必要 | | +| aid | num | 稿件avID | 必要 | | **json回复:** @@ -107,7 +209,7 @@ http://api.bilibili.com/x/player/videoshot?aid=26273789&index=1 | ------- | ---- | -------- | ---------------------------------------------- | | code | num | 返回值 | 0:成功
40001:请求错误
-404:无视频 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: @@ -141,7 +243,15 @@ http://api.bilibili.com/x/player/videoshot?aid=26273789&index=1 **示例:** -http://api.bilibili.com/pvideo?aid=26273789 +获取视频`av26273789`的快照 + +```shell +curl -G 'http://api.bilibili.com/pvideo' \ +--data-urlencode 'aid=26273789' +``` + +
+查看响应示例: ```json { @@ -160,7 +270,7 @@ http://api.bilibili.com/pvideo?aid=26273789 } ``` - +
## 图片拼版 @@ -207,4 +317,3 @@ hex内容如下: 00000150 05 1a 05 23 05 29 05 30 05 3c 05 43 05 4a 05 51 |...#.).0.<.C.J.Q| 00000160 05 56 05 5b 05 67 05 6e 05 74 05 7b 05 87 |.V.[.g.n.t.{..| ``` - diff --git a/video/status_number.md b/video/status_number.md index b66ce89..e18685b 100644 --- a/video/status_number.md +++ b/video/status_number.md @@ -1,15 +1,15 @@ # 视频状态数 -## 视频状态数1(备用 不封python 暂不支持bvID) +## 视频状态数1(仅avID) > http://api.bilibili.com/archive_stat/stat -*方式:GET* +*请求方式:GET* -**参数:** +**url参数:** | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------ | ---- | -------- | ------ | ---- | -| aid | url | 视频avID | 必要 | | +| aid | num | 稿件avID | 必要 | | **json回复:** @@ -19,14 +19,14 @@ | ------- | ---- | -------- | ----------------------------------------------- | | code | num | 返回值 | 0:成功
40001:请求错误
40003:无视频 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | | data | obj | 信息本体 | | `data`对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | ------------------------ | ------------------------------ | -------------------- | -| aid | num | 视频avID | | +| aid | num | 稿件avID | | | view | 正常:num
屏蔽:str | 正常:播放次数
屏蔽:"--" | | | danmaku | num | 弹幕条数 | | | reply | num | 评论条数 | | @@ -44,7 +44,15 @@ 查询视频`av91572143`的状态数 -http://api.bilibili.com/archive_stat/stat?aid=91572143 +avID方式: + +```shell +curl -G 'http://api.bilibili.com/archive_stat/stat' \ +--data-urlencode 'aid=91572143' +``` + +
+查看响应示例: ```json { @@ -69,44 +77,40 @@ http://api.bilibili.com/archive_stat/stat?aid=91572143 } ``` +
- -## 视频状态数2(常用 封杀python) +## 视频状态数2(禁python) > http://api.bilibili.com/x/web-interface/archive/stat -*方式:GET* +*请求方式:GET* -**此API克python,UA中只要存在\*python\*字眼就无法获取正确内容,如用py请改UA** +此接口请求头中UA值存在`python`字串,会返回-412错误 -**此API克python,UA中只要存在\*python\*字眼就无法获取正确内容,如用py请改UA** +**url参数:** -**此API克python,UA中只要存在\*python\*字眼就无法获取正确内容,如用py请改UA** - -**参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | **json回复:** 根对象: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
40003:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | obj | 信息本体 | | +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------------------------------------------------------------ | +| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截
40003:无视频 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | `data`对象: | 字段 | 类型 | 内容 | 备注 | | ---------- | ------------------------ | ------------------------------ | -------------------- | -| aid | num | 视频avID | | -| bvid | str | 视频bvID | | +| aid | num | 稿件avID | | +| bvid | str | 稿件bvID | | | view | 正常:num
屏蔽:str | 正常:播放次数
屏蔽:"--" | | | danmaku | num | 弹幕条数 | | | reply | num | 评论条数 | | @@ -126,9 +130,22 @@ http://api.bilibili.com/archive_stat/stat?aid=91572143 查询视频`av2271112`/`BV1es411D7sW`的状态数 -http://api.bilibili.com/x/web-interface/archive/stat?aid=2271112 +avID方式: -同http://api.bilibili.com/x/web-interface/archive/stat?bvid=BV1es411D7sW +```shell +curl -G 'http://api.bilibili.com/x/web-interface/archive/stat' \ +--data-urlencode 'aid=2271112' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/web-interface/archive/stat' \ +--data-urlencode 'bvid=BV1es411D7sW' +``` + +
+查看响应示例: ```json { @@ -155,5 +172,26 @@ http://api.bilibili.com/x/web-interface/archive/stat?aid=2271112 } ``` +
+当UA为`2333python2333`时,则无法访问此接口: +```shell +curl -G 'http://api.bilibili.com/x/web-interface/archive/stat' \ +--data-urlencode 'aid=2271112' \ +-A '2333python2333' +``` + +
+查看响应示例: + +```json +{ + "code":-412, + "message":"请求被拦截", + "ttl":1, + "data":null +} +``` + +
diff --git a/video/tags.md b/video/tags.md index 609dc7b..622c42d 100644 --- a/video/tags.md +++ b/video/tags.md @@ -2,16 +2,18 @@ ## 获取视频TAG信息 -> http://https://api.bilibili.com/x/tag/archive/tags +> http://api.bilibili.com/x/tag/archive/tags -*方式:GET* +*请求方式:GET* -**参数:** +认证方式:Cookie(SESSDATA) -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------------------ | -| aid | url | 视频avID | 非必要 | avID与bvID任选一个 | -| bvid | url | 视频bvID | 非必要 | avID与bvID任选一个 | +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | -------- | ------------ | ------------------ | +| aid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | **json回复:** @@ -21,8 +23,8 @@ | ------- | ------ | -------- | ---------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | arrary | TAG列表 | 无TAG为空 | +| ttl | num | 1 | | +| data | array | TAG列表 | 无TAG为空 | `data`数组: @@ -46,12 +48,12 @@ | state | num | 0 | | | ctime | num | 创建时间 | 时间戳 | | count | obj | 状态数 | | -| is_atten | num | 是否关注 | 0:未关注
1:已关注
需要登录(SESSDATA)
未登录为0 | +| is_atten | num | 是否关注 | 0:未关注
1:已关注
需要登录(Cookie)
未登录为0 | | likes | num | 0 | 作用尚不明确 | | hates | num | 0 | 作用尚不明确 | | attribute | num | 0 | 作用尚不明确 | -| liked | num | 是否已经点赞 | 0:未点赞
1:已点赞
需要登录(SESSDATA)
未登录为0 | -| hated | num | 是否已经点踩 | 0:未点踩
1:已点踩
需要登录(SESSDATA)
未登录为0 | +| liked | num | 是否已经点赞 | 0:未点赞
1:已点赞
需要登录(Cookie)
未登录为0 | +| hated | num | 是否已经点踩 | 0:未点踩
1:已点踩
需要登录(Cookie)
未登录为0 | `data`数组中的对象中的`count`对象: @@ -65,9 +67,24 @@ 查询视频`av89772773`/`BV1M741177Kg`的TAG -http://api.bilibili.com/x/tag/archive/tags?aid=89772773 +avID方式: -同http://api.bilibili.com/x/tag/archive/tags?bvid=BV1M741177Kg +```shell +curl -G 'http://api.bilibili.com/x/tag/archive/tags' \ +--data-urlencode 'aid=89772773' \ +-b 'SESSDATA=xxx' +``` + +bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/tag/archive/tags' \ +--data-urlencode 'bvid=BV1M741177Kg' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -183,25 +200,25 @@ http://api.bilibili.com/x/tag/archive/tags?aid=89772773 } ``` +
- -## 点赞&取消点赞视频TAG(暂不支持bvID) +## 点赞&取消点赞视频TAG > http://api.bilibili.com/x/tag/archive/like2 -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) -重复访问为取消 +重复请求为取消 -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---- | -| aid | data | 视频avID | 必要 | | -| tag_id | data | TAGID | 必要 | | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| aid | num | 稿件avID | 必要 | | +| tag_id | num | TAGID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -211,13 +228,22 @@ http://api.bilibili.com/x/tag/archive/tags?aid=89772773 | ------- | ---- | -------- | ---------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** -为视频`av89772773`的TAG`TAGID=12620189`点赞 +为视频`av89772773`的TAG`12620189`点赞 -curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=89772773&tag_id=12620189" "http://api.bilibili.com/x/tag/archive/like2" +```shell +curl 'http://api.bilibili.com/x/tag/archive/like2' \ +--data-urlencode 'aid=89772773' \ +--data-urlencode 'tag_id=12620189' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -227,25 +253,25 @@ curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=89772773&tag_id=12620189" "http://api.bi } ``` +
- -## 点踩&取消点踩视频TAG(暂不支持bvID) +## 点踩&取消点踩视频TAG > http://api.bilibili.com/x/tag/archive/hate2 -*方式:POST* +*请求方式:POST* -需要登录(SESSDATA) +认证方式:Cookie(SESSDATA) 重复访问为取消 -**参数( application/x-www-form-urlencoded ):** +**正文参数( application/x-www-form-urlencoded ):** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---- | -| aid | data | 视频avID | 必要 | | -| tag_id | data | TAGID | 必要 | | -| csrf | data | cookies中的bili_jct | 必要 | | +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ------------------------ | ------ | ---- | +| aid | num | 稿件avID | 必要 | | +| tag_id | num | TAGID | 必要 | | +| csrf | str | CSRF Token(位于cookie) | 必要 | | **json回复:** @@ -255,13 +281,22 @@ curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=89772773&tag_id=12620189" "http://api.bi | ------- | ---- | -------- | ---------------------------- | | code | num | 返回值 | 0:成功
-400:请求错误 | | message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | +| ttl | num | 1 | | **示例:** -为视频`av89772773`的TAG`TAGID=7520816`点踩 +为视频`av89772773`的TAG`7520816`点踩 -curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=89772773&tag_id=7520816" "http://api.bilibili.com/x/tag/archive/hate2" +```shell +curl 'http://pi.bilibili.com/x/tag/archive/hate2' \ +--data-urlencode 'aid=89772773' \ +--data-urlencode 'tag_id=7520816' \ +--data-urlencode 'csrf=xxx' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: ```json { @@ -271,3 +306,4 @@ curl -b "SESSDATA=xxx" -d "csrf=xxx&aid=89772773&tag_id=7520816" "http://api.bil } ``` +
diff --git a/video/video_zone.md b/video/video_zone.md index a3ba5c4..c73b753 100644 --- a/video/video_zone.md +++ b/video/video_zone.md @@ -1,6 +1,6 @@ # 视频分区一览 -用于通过视频avID判断所在的分区,或推荐分区视频等....... +用于通过稿件avID判断所在的分区,或推荐分区视频等....... 亦可用于更深♂入了解B站的分区 @@ -8,216 +8,254 @@ -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | --------- | ---- | ------------------------------------------------------------ | ------------------ | -| 动画(主分区) | douga | 1 | | /v/douga | -| MAD·AMV | mad | 24 | 具有一定制作程度的动画或静画的二次创作视频 | /v/douga/mad | -| MMD·3D | mmd | 25 | 使用MMD(MikuMikuDance)和其他3D建模类软件制作的视频 | /v/douga/mmd | -| 短片·手书·配音 | voice | 47 | 追求创新并具有强烈特色的短片、手书(绘)及ACG相关配音 | /v/douga/voice | -| 特摄 | tokusatsu | 86 | 特摄相关衍生视频 | /v/douga/tokusatsu | -| 综合 | other | 27 | 以动画及动画相关内容为素材,包括但不仅限于音频替换、杂谈、排行榜等内容 | /v/douga/other | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | --------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 动画(主分区) | douga | 1 | | [/v/douga](https://www.bilibili.com/v/douga) | +| MAD·AMV | mad | 24 | 具有一定制作程度的动画或静画的二次创作视频 | [/v/douga/mad](https://www.bilibili.com/v/douga/mad) | +| MMD·3D | mmd | 25 | 使用MMD(MikuMikuDance)和其他3D建模类软件制作的视频 | [/v/douga/mmd](https://www.bilibili.com/v/douga/mmd) | +| 短片·手书·配音 | voice | 47 | 追求创新并具有强烈特色的短片、手书(绘)及ACG相关配音 | [/v/douga/voice](https://www.bilibili.com/v/douga/voice) | +| 特摄 | tokusatsu | 86 | 特摄相关衍生视频 | [/v/douga/tokusatsu](https://www.bilibili.com/v/douga/tokusatsu) | +| 综合 | other | 27 | 以动画及动画相关内容为素材,包括但不仅限于音频替换、杂谈、排行榜等内容 | [/v/douga/other](https://www.bilibili.com/v/douga/other) | ## 番剧 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ----------- | ---- | -------------------------------------------------- | -------------------- | -| 番剧(主分区) | anime | 13 | | /anime | -| 连载动画 | serial | 33 | 当季连载的动画番剧 | /v/anime/serial | -| 完结动画 | finish | 32 | 已完结的动画番剧合集 | /v/anime/finish | -| 资讯 | information | 51 | 动画番剧相关资讯视频 | /v/anime/information | -| 官方延伸 | offical | 152 | 动画番剧为主题的宣传节目、采访视频,及声优相关视频 | /v/anime/offical | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ----------- | ---- | -------------------------------------------------- | ------------------------------------------------------------ | +| 番剧(主分区) | anime | 13 | | [/anime](https://www.bilibili.com/anime) | +| 连载动画 | serial | 33 | 当季连载的动画番剧 | [/v/anime/serial](https://www.bilibili.com/v/anime/serial) | +| 完结动画 | finish | 32 | 已完结的动画番剧合集 | [/v/anime/finish](https://www.bilibili.com/v/anime/finish) | +| 资讯 | information | 51 | 动画番剧相关资讯视频 | [/v/anime/information](https://www.bilibili.com/v/anime/information) | +| 官方延伸 | offical | 152 | 动画番剧为主题的宣传节目、采访视频,及声优相关视频 | [/v/anime/offical](https://www.bilibili.com/v/anime/offical) | ## 国创 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ----------- | ---- | ----------------- | ------------------------ | -| 国创(主分区) | guochuang | 167 | | /guochuang | -| 国产动画 | chinese | 153 | 我国出品的PGC动画 | /v/guochuang/chinese | -| 国产原创相关 | original | 168 | | /v/guochuang/original | -| 布袋戏 | puppetry | 169 | | /v/guochuang/puppetry | -| 动态漫·广播剧 | motioncomic | 195 | | /v/guochuang/motioncomic | -| 资讯 | information | 170 | | /v/guochuang/information | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ----------- | ---- | ----------------- | ------------------------------------------------------------ | +| 国创(主分区) | guochuang | 167 | | [/guochuang](https://www.bilibili.com/guochuang) | +| 国产动画 | chinese | 153 | 我国出品的PGC动画 | [/v/guochuang/chinese](https://www.bilibili.com/v/guochuang/chinese) | +| 国产原创相关 | original | 168 | | [/v/guochuang/original](https://www.bilibili.com/v/guochuang/original) | +| 布袋戏 | puppetry | 169 | | [/v/guochuang/puppetry](https://www.bilibili.com/v/guochuang/puppetry) | +| 动态漫·广播剧 | motioncomic | 195 | | [/v/guochuang/motioncomic](https://www.bilibili.com/v/guochuang/motioncomic) | +| 资讯 | information | 170 | | [/v/guochuang/information](https://www.bilibili.com/v/guochuang/information) | ## 音乐 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ---------- | ---- | ------------------------------------------------------------ | ------------------- | -| 音乐(主分区) | music | 3 | | /v/music | -| 原创音乐 | original | 28 | 个人或团队制作以音乐为主要原创因素的歌曲或纯音乐 | /v/music/original | -| 翻唱 | cover | 31 | 一切非官方的人声再演绎歌曲作品 | /v/music/cover | -| VOCALOID·UTAU | vocaloid | 30 | 以雅马哈Vocaloid和UTAU引擎为基础,包含其他调教引擎,运用各类音源进行的歌曲创作内容 | /v/music/vocaloid | -| 电音 | electronic | 194 | 以电子合成器、音乐软体等产生的电子声响制作的音乐 | /v/music/electronic | -| 演奏 | perform | 59 | 传统或非传统乐器及器材的演奏作品 | /v/music/perform | -| MV | mv | 193 | 音乐录影带,为搭配音乐而拍摄的短片 | /v/music/mv | -| 音乐现场 | live | 29 | 音乐实况表演视频 | /v/music/live | -| 音乐综合 | other | 130 | 收录无法定义到其他音乐子分区的音乐视频 | /v/music/other | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ---------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 音乐(主分区) | music | 3 | | [/v/music](https://www.bilibili.com/v/music) | +| 原创音乐 | original | 28 | 个人或团队制作以音乐为主要原创因素的歌曲或纯音乐 | [/v/music/original](https://www.bilibili.com/v/music/original) | +| 翻唱 | cover | 31 | 一切非官方的人声再演绎歌曲作品 | [/v/music/cover](https://www.bilibili.com/v/music/cover) | +| VOCALOID·UTAU | vocaloid | 30 | 以雅马哈Vocaloid和UTAU引擎为基础,包含其他调教引擎,运用各类音源进行的歌曲创作内容 | [/v/music/vocaloid](https://www.bilibili.com/v/music/vocaloid) | +| 电音 | electronic | 194 | 以电子合成器、音乐软体等产生的电子声响制作的音乐 | [/v/music/electronic](https://www.bilibili.com/v/music/electronic) | +| 演奏 | perform | 59 | 传统或非传统乐器及器材的演奏作品 | [/v/music/perform](https://www.bilibili.com/v/music/perform) | +| MV | mv | 193 | 音乐录影带,为搭配音乐而拍摄的短片 | [/v/music/mv](https://www.bilibili.com/v/music/mv) | +| 音乐现场 | live | 29 | 音乐实况表演视频 | [/v/music/live](https://www.bilibili.com/v/music/live) | +| 音乐综合 | other | 130 | 收录无法定义到其他音乐子分区的音乐视频 | [/v/music/other](https://www.bilibili.com/v/music/other) | ## 舞蹈 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ------- | ---- | ------------------------------------------------------------ | ---------------- | -| 舞蹈(主分区) | dance | 129 | | /v/dance | -| 宅舞 | otaku | 20 | 与ACG相关的翻跳、原创舞蹈 | /v/dance/otaku | -| 街舞 | hiphop | 198 | 收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、FREESTYLE等 | /v/dance/hiphop | -| 明星舞蹈 | star | 199 | 国内外明星发布的官方舞蹈及其翻跳内容 | /v/dance/star | -| 中国舞 | china | 200 | 传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等 | /v/dance/china | -| 舞蹈综合 | three_d | 154 | 收录无法定义到其他舞蹈子分区的舞蹈视频 | /v/dance/three_d | -| 舞蹈教程 | demo | 156 | 镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频 | /v/dance/demo | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 舞蹈(主分区) | dance | 129 | | [/v/dance](https://www.bilibili.com/v/dance) | +| 宅舞 | otaku | 20 | 与ACG相关的翻跳、原创舞蹈 | [/v/dance/otaku](https://www.bilibili.com/v/dance/otaku) | +| 街舞 | hiphop | 198 | 收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、FREESTYLE等 | [/v/dance/hiphop](https://www.bilibili.com/v/dance/hiphop) | +| 明星舞蹈 | star | 199 | 国内外明星发布的官方舞蹈及其翻跳内容 | [/v/dance/star](https://www.bilibili.com/v/dance/star) | +| 中国舞 | china | 200 | 传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等 | [/v/dance/china](https://www.bilibili.com/v/dance/china) | +| 舞蹈综合 | three_d | 154 | 收录无法定义到其他舞蹈子分区的舞蹈视频 | [/v/dance/three_d](https://www.bilibili.com/v/dance/three_d) | +| 舞蹈教程 | demo | 156 | 镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频 | [/v/dance/demo](https://www.bilibili.com/v/dance/demo) | ## 游戏 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ----------- | ---- | ------------------------------------------------------------ | ------------------- | -| 游戏(主分区) | game | 4 | | /v/game | -| 单机游戏 | stand_alone | 17 | 以所有平台(PC、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、CG、实况解说及相关的评测、杂谈与视频剪辑等 | /v/game/stand_alone | -| 电子竞技 | esports | 171 | 具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频 | /v/game/esports | -| 手机游戏 | mobile | 172 | 以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频 | /v/game/mobile | -| 网络游戏 | online | 65 | 由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频 | /v/game/online | -| 桌游棋牌 | board | 173 | 桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频 | /v/game/board | -| GMV | gmv | 121 | 由游戏素材制作的MV视频。以游戏内容或CG为主制作的,具有一定创作程度的MV类型的视频 | /v/game/gmv | -| 音游 | music | 136 | 各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频 | /v/game/music | -| Mugen | mugen | 19 | 以Mugen引擎为平台制作、或与Mugen相关的游戏视频 | /v/game/mugen | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ----------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 游戏(主分区) | game | 4 | | [/v/game](https://www.bilibili.com/v/game) | +| 单机游戏 | stand_alone | 17 | 以所有平台(PC、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、CG、实况解说及相关的评测、杂谈与视频剪辑等 | [/v/game/stand_alone](https://www.bilibili.com/v/game/stand_alone) | +| 电子竞技 | esports | 171 | 具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频 | [/v/game/esports](https://www.bilibili.com/v/game/esports) | +| 手机游戏 | mobile | 172 | 以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频 | [/v/game/mobile](https://www.bilibili.com/v/game/mobile) | +| 网络游戏 | online | 65 | 由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频 | [/v/game/online](https://www.bilibili.com/v/game/online) | +| 桌游棋牌 | board | 173 | 桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频 | [/v/game/board](https://www.bilibili.com/v/game/board) | +| GMV | gmv | 121 | 由游戏素材制作的MV视频。以游戏内容或CG为主制作的,具有一定创作程度的MV类型的视频 | [/v/game/gmv](https://www.bilibili.com/v/game/gmv) | +| 音游 | music | 136 | 各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频 | [/v/game/music](https://www.bilibili.com/v/game/music) | +| Mugen | mugen | 19 | 以Mugen引擎为平台制作、或与Mugen相关的游戏视频 | [/v/game/mugen](https://www.bilibili.com/v/game/mugen) | -## 科技 +## 知识(~~原科技分区~~) - +(已改版) -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ------------- | ---- | ------------------------------------------------ | --------------------------- | -| 科技(主分区) | technology | 36 | | /v/technology | -| 趣味科普人文 | fun | 124 | 含有科普或人文性质的视频 | /v/technology/fun | -| 野生技术协会 | wild | 122 | 展示一定改装/创作能力的视频 | /v/technology/wild | -| 演讲·公开课 | speech_course | 39 | 演讲、教育课程相关的视频 | /v/technology/speech_course | -| 星海 | military | 96 | 军事相关视频 | /v/technology/military | -| 机械 | mechanical | 98 | 机械设备展示或制作视频 | /v/technology/mechanical | -| 汽车 | automobile | 176 | 汽车、摩托车、公交车以及竞赛用车等轮式交通工具相 | /v/technology/automobile | +新:旧: + +| 名称 | 代号 | tID | 简介 | url路由 | +| ---------------------------- | ----------------- | ---- | --------------------------------------------------------- | ------------------------------------------------------------ | +| 知识(主分区) | technology | 36 | | [/v/technology](https://www.bilibili.com/v/technology) | +| 科学科普 | science | 201 | 回答你的十万个为什么 | [/v/technology/science](https://www.bilibili.com/v/technology/science) | +| 社科人文(~~趣味科普人文~~) | fun | 124 | 聊聊财经/社会/法律,看看历史趣闻,品品人文艺术 | [/v/technology/fun](https://www.bilibili.com/v/technology/fun) | +| 财经 | finance | 207 | 宏观经济分析,证券市场动态,商业帝国故事,知识与财富齐飞~ | [/v/technology/finance](https://www.bilibili.com/v/technology/finance) | +| 校园学习 | campus | 208 | 老师很有趣,同学多人才,我们都爱搞学习 | [/v/technology/campus](https://www.bilibili.com/v/technology/campus) | +| 职业职场 | career | 209 | 职场加油站,成为最有料的职场人 | [/v/technology/career](https://www.bilibili.com/v/technology/career) | +| 野生技术协会 | wild | 122 | 是时候展现真正的技术了 | [/v/technology/wild](https://www.bilibili.com/v/technology/wild) | +| ~~演讲·公开课~~(已下线) | ~~speech_course~~ | 39 | ~~涨知识的好地方,给爱学习的你~~ | ~~/v/technology/speech_course~~ | +| ~~星海~~(已下线) | ~~military~~ | 96 | ~~军事类内容的圣地~~ | ~~/v/technology/military~~ | +| ~~机械~~(已下线) | ~~mechanical~~ | 98 | ~~机械设备展示或制作视频~~ | ~~/v/technology/mechanical~~ | ## 数码 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | --------------- | ---- | ---------------------------- | -------------------------- | -| 数码(主分区) | digital | 188 | | /v/digital | -| 手机平板 | mobile | 95 | 手机平板设备相关视频 | /v/digital/mobile | -| 电脑装机 | pc | 189 | 电脑装机及配件等相关视频 | /v/digital/pc | -| 摄影摄像 | photography | 190 | 摄影摄像器材等相关视频 | /v/digital/photography | -| 影音智能 | intelligence_av | 191 | 影音设备、智能产品等相关视频 | /v/digital/intelligence_av | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | --------------- | ---- | ---------------------------- | ------------------------------------------------------------ | +| 数码(主分区) | digital | 188 | | [/v/digital](https://www.bilibili.com/v/digital) | +| 手机平板 | mobile | 95 | 手机平板设备相关视频 | [/v/digital/mobile](https://www.bilibili.com/v/digital/mobile) | +| 电脑装机 | pc | 189 | 电脑装机及配件等相关视频 | [/v/digital/pc](https://www.bilibili.com/v/digital/pc) | +| 摄影摄像 | photography | 190 | 摄影摄像器材等相关视频 | [/v/digital/photography](https://www.bilibili.com/v/digital/photography) | +| 影音智能 | intelligence_av | 191 | 影音设备、智能产品等相关视频 | [/v/digital/intelligence_av](https://www.bilibili.com/v/digital/intelligence_av) | ## 生活 +(已改版) + -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | -------- | ---- | ----------------------------------------------------- | ---------------- | -| 生活(主分区) | life | 160 | | /v/life | -| 搞笑 | funny | 138 | 搞笑的、轻松有趣的、具有独特笑点或娱乐精神的视频 | /v/life/funny | -| 日常 | daily | 21 | 漫展、cosplay、体育运动及其他一般日常向视频 | /v/life/daily | -| 美食圈 | food | 76 | 美食鉴赏&料理制作教程 | /v/life/food | -| 动物圈 | animal | 75 | 这里有各种萌萌哒动物哦 | /v/life/animal | -| 手工 | handmake | 161 | 简易手工艺品的diy制作视频,例如;折纸、手账、橡皮章等 | /v/life/handmake | -| 绘画 | painting | 162 | 绘画爱好者们关于绘画技巧、绘图过程的分享交流场所 | /v/life/painting | -| 运动 | sports | 163 | 一般向运动项目以及惊险刺激的户外极限运动 | /v/life/sports | -| 其他 | other | 174 | 对于分区归属不明的视频进行归纳整合的特定分区 | /v/life/other | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------------- | ---------- | ------ | ----------------------------------------------------- | ------------------------------------------------------------ | +| 生活(主分区) | life | 160 | | [/v/life](https://www.bilibili.com/v/life) | +| 搞笑 | funny | 138 | 搞笑的、轻松有趣的、具有独特笑点或娱乐精神的视频 | [/v/life/funny](https://www.bilibili.com/v/life/funny) | +| 日常 | daily | 21 | 漫展、cosplay、体育运动及其他一般日常向视频 | [/v/life/daily](https://www.bilibili.com/v/life/daily) | +| ~~美食圈~~(重定向) | ~~food~~ | ~~76~~ | ~~美食鉴赏&料理制作教程~~ | ~~/v/life/food~~ | +| 动物圈 | animal | 75 | 这里有各种萌萌哒动物哦 | [/v/life/animal](https://www.bilibili.com/v/life/animal) | +| 手工 | handmake | 161 | 简易手工艺品的diy制作视频,例如;折纸、手账、橡皮章等 | [/v/life/handmake](https://www.bilibili.com/v/life/handmake) | +| 绘画 | painting | 162 | 绘画爱好者们关于绘画技巧、绘图过程的分享交流场所 | [/v/life/painting](https://www.bilibili.com/v/life/painting) | +| 运动 | sports | 163 | 一般向运动项目以及惊险刺激的户外极限运动 | [/v/life/sports](https://www.bilibili.com/v/life/sports) | +| 汽车 | automobile | 176 | 专业汽车资讯,分享车生活 | [/v/life/automobile](https://www.bilibili.com/v/life/automobile) | +| 其他 | other | 174 | 对于分区归属不明的视频进行归纳整合的特定分区 | [/v/life/other](https://www.bilibili.com/v/life/other) | + +## 美食 + +(新分区) + + + +| 名称 | 代号 | tID | 简介 | url路由 | +| ------------------------------ | ----------- | ---- | -------------------------------- | ------------------------------------------------------------ | +| 美食(主分区) | food | 211 | | [/v/food](https://www.bilibili.com/v/food) | +| 美食制作(原[生活]->[美食圈]) | make | 76 | 学做人间美味,展示精湛厨艺 | [/v/food/make](https://www.bilibili.com/v/food/make) | +| 美食侦探 | detective | 212 | 寻找美味餐厅,发现街头美食 | [/v/food/detective](https://www.bilibili.com/v/food/detective) | +| 美食测评 | measurement | 213 | 吃货世界,品尝世间美味 | [/v/food/measurement](https://www.bilibili.com/v/food/measurement) | +| 田园美食 | rural | 214 | 品味乡野美食,寻找山与海的味道 | [/v/food/rural](https://www.bilibili.com/v/food/rural) | +| 美食记录 | record | 215 | 记录一日三餐,给生活添一点幸福感 | [/v/food/record](https://www.bilibili.com/v/food/record) | ## 鬼畜 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | --------------- | ---- | ------------------------------------------------------------ | -------------------------- | -| 鬼畜(主分区) | kichiku | 119 | | /v/kichiku | -| 鬼畜调教 | guide | 22 | 使用素材在音频、画面上做一定处理,达到与BGM一定的同步感 | /v/kichiku/guide | -| 音MAD | mad | 26 | 使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件 | /v/kichiku/mad | -| 人力VOCALOID | manual_vocaloid | 126 | 将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术 | /v/kichiku/manual_vocaloid | -| 教程演示 | course | 127 | 鬼畜相关的教程演示 | /v/kichiku/course | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | --------------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 鬼畜(主分区) | kichiku | 119 | | [/v/kichiku](https://www.bilibili.com/v/kichiku) | +| 鬼畜调教 | guide | 22 | 使用素材在音频、画面上做一定处理,达到与BGM一定的同步感 | [/v/kichiku/guide](https://www.bilibili.com/v/kichiku/guide) | +| 音MAD | mad | 26 | 使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件 | [/v/kichiku/mad/v/kichiku/mad](https://www.bilibili.com/v/kichiku/mad) | +| 人力VOCALOID | manual_vocaloid | 126 | 将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术 | [/v/kichiku/manual_vocaloid](https://www.bilibili.com/v/kichiku/manual_vocaloid) | +| 教程演示 | course | 127 | 鬼畜相关的教程演示 | [/v/kichiku/course](https://www.bilibili.com/v/kichiku/course) | ## 时尚 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | -------- | ---- | ------------------------------------------------------------ | ------------------- | -| 时尚(主分区) | fashion | 155 | | /v/fashion | -| 美妆 | makeup | 157 | 涵盖妆容、发型、美甲等教程,彩妆、护肤相关产品测评、分享等 | /v/fashion/makeup | -| 服饰 | clothing | 158 | 服饰风格、搭配技巧相关的展示和教程视频 | /v/fashion/clothing | -| 健身 | aerobics | 164 | 器械、有氧、拉伸运动等,以达到强身健体、减肥瘦身、形体塑造目的 | /v/fashion/aerobics | -| T台 | catwalk | 159 | 发布会走秀现场及模特相关时尚片、采访、后台花絮 | /v/fashion/catwalk | -| 风尚标 | trends | 192 | 时尚明星专访、街拍、时尚购物相关知识科普 | /v/fashion/trends | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | -------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 时尚(主分区) | fashion | 155 | | [/v/fashion](https://www.bilibili.com/v/fashion) | +| 美妆 | makeup | 157 | 涵盖妆容、发型、美甲等教程,彩妆、护肤相关产品测评、分享等 | [/v/fashion/makeup](https://www.bilibili.com/v/fashion/makeup) | +| 服饰 | clothing | 158 | 服饰风格、搭配技巧相关的展示和教程视频 | [/v/fashion/clothing](https://www.bilibili.com/v/fashion/clothing) | +| 健身 | aerobics | 164 | 器械、有氧、拉伸运动等,以达到强身健体、减肥瘦身、形体塑造目的 | [/v/fashion/aerobics](https://www.bilibili.com/v/fashion/aerobics) | +| T台 | catwalk | 159 | 发布会走秀现场及模特相关时尚片、采访、后台花絮 | [/v/fashion/catwalk](https://www.bilibili.com/v/fashion/catwalk) | +| 风尚标 | trends | 192 | 时尚明星专访、街拍、时尚购物相关知识科普 | [/v/fashion/trends](https://www.bilibili.com/v/fashion/trends) | -## 广告 +## 资讯 + +(新分区) + + + +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ----------- | ---- | -------------------------------------------- | ------------------------------------------------------------ | +| 资讯(主分区) | information | 202 | | [/v/information](https://www.bilibili.com/v/information) | +| 热点 | hotspot | 203 | 全民关注的时政热门资讯 | [/v/information/hotspot](https://www.bilibili.com/v/information/hotspot) | +| 环球 | global | 204 | 全球范围内发生的具有重大影响力的事件动态 | [/v/information/global](https://www.bilibili.com/v/information/global) | +| 社会 | social | 205 | 日常生活的社会事件、社会问题、社会风貌的报道 | [/v/information/social](https://www.bilibili.com/v/information/social) | +| 综合 | multiple | 206 | 除上述领域外其它垂直领域的综合资讯 | [/v/information/multiple](https://www.bilibili.com/v/information/multiple) | + +## ~~广告~~ + +(已下线) -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ---- | ---- | ---- | -------- | -| 广告(主分区) | ad | 165 | | /v/ad | -| 广告 | ad | 166 | | /v/ad/ad | +| 名称 | 代号 | tID | 简介 | url路由 | +| ------------------ | ------ | ------- | ---- | ------------ | +| ~~广告(主分区)~~ | ~~ad~~ | ~~165~~ | | ~~/v/ad~~ | +| ~~广告~~ | ~~ad~~ | ~~166~~ | | ~~/v/ad/ad~~ | ## 娱乐 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ------- | ---- | ---------------------------------- | -------------- | -| 娱乐(主分区) | ent | 5 | | /v/ent | -| 综艺 | variety | 71 | 国内外有趣的综艺和综艺相关精彩剪辑 | /v/ent/variety | -| 明星 | star | 137 | 娱乐圈动态、明星资讯相关 | /v/ent/star | -| Korea相关 | korea | 131 | Korea相关音乐、舞蹈、综艺等视频 | /v/ent/korea | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ------- | ---- | ---------------------------------- | -------------------------------------------------------- | +| 娱乐(主分区) | ent | 5 | | [/v/ent](https://www.bilibili.com/v/ent) | +| 综艺 | variety | 71 | 国内外有趣的综艺和综艺相关精彩剪辑 | [/v/ent/variety](https://www.bilibili.com/v/ent/variety) | +| 明星 | star | 137 | 娱乐圈动态、明星资讯相关 | [/v/ent/star](https://www.bilibili.com/v/ent/star) | +| Korea相关 | korea | 131 | Korea相关音乐、舞蹈、综艺等视频 | [/v/ent/korea](https://www.bilibili.com/v/ent/korea) | ## 影视 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ------------ | ---- | -------------------------------- | ------------------------- | -| 影视(主分区) | cinephile | 181 | | /v/cinephile | -| 影视杂谈 | cinecism | 182 | 影视评论、解说、吐槽、科普等 | /v/cinephile/cinecism | -| 影视剪辑 | montage | 183 | 对影视素材进行剪辑再创作的视频 | /v/cinephile/montage | -| 短片 | shortfilm | 85 | 追求自我表达且具有特色的短片 | /v/cinephile/shortfilm | -| 预告·资讯 | trailer_info | 184 | 影视类相关资讯,预告,花絮等视频 | /v/cinephile/trailer_info | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ------------ | ---- | -------------------------------- | ------------------------------------------------------------ | +| 影视(主分区) | cinephile | 181 | | [/v/cinephile](https://www.bilibili.com/v/cinephile) | +| 影视杂谈 | cinecism | 182 | 影视评论、解说、吐槽、科普等 | [/v/cinephile/cinecism](https://www.bilibili.com/v/cinephile/cinecism) | +| 影视剪辑 | montage | 183 | 对影视素材进行剪辑再创作的视频 | [/v/cinephile/montage](https://www.bilibili.com/v/cinephile/montage) | +| 短片 | shortfilm | 85 | 追求自我表达且具有特色的短片 | [/v/cinephile/shortfilm](https://www.bilibili.com/v/cinephile/shortfilm) | +| 预告·资讯 | trailer_info | 184 | 影视类相关资讯,预告,花絮等视频 | [/v/cinephile/trailer_info](https://www.bilibili.com/v/cinephile/trailer_info) | ## 纪录片 -| 名称 | 代号 | tID | 简介 | url路由 | -| ---------------- | ----------- | ---- | ---- | ----------------------- | -| 纪录片(主分区) | documentary | 177 | | /documentary | -| 人文·历史 | history | 37 | | /v/documentary/history | -| 科学·探索·自然 | science | 178 | | /v/documentary/science | -| 军事 | military | 179 | | /v/documentary/military | -| 社会·美食·旅行 | travel | 180 | | /v/documentary/travel | +| 名称 | 代号 | tID | 简介 | url路由 | +| ---------------- | ----------- | ---- | ---- | ------------------------------------------------------------ | +| 纪录片(主分区) | documentary | 177 | | [/documentary](https://www.bilibili.com/documentary) | +| 人文·历史 | history | 37 | | [/v/documentary/history](https://www.bilibili.com/v/documentary/history) | +| 科学·探索·自然 | science | 178 | | [/v/documentary/science](https://www.bilibili.com/v/documentary/science) | +| 军事 | military | 179 | | [/v/documentary/military](https://www.bilibili.com/v/documentary/military) | +| 社会·美食·旅行 | travel | 180 | | [/v/documentary/travel](https://www.bilibili.com/v/documentary/travel) | ## 电影 -| 名称 | 代号 | tID | 简介 | url路由 | -| -------------- | ------- | ---- | ---- | ---------------- | -| 电影(主分区) | movie | 23 | | /movie | -| 华语电影 | chinese | 147 | | /v/movie/chinese | -| 欧美电影 | west | 145 | | /v/movie/west | -| 日本电影 | japan | 146 | | /v/movie/japan | -| 其他国家 | movie | 83 | | /v/movie/movie | +| 名称 | 代号 | tID | 简介 | url路由 | +| -------------- | ------- | ---- | ---- | ------------------------------------------------------------ | +| 电影(主分区) | movie | 23 | | [/movie](https://www.bilibili.com/movie) | +| 华语电影 | chinese | 147 | | [/v/movie/chinese](https://www.bilibili.com/v/movie/chinese) | +| 欧美电影 | west | 145 | | [/v/movie/west](https://www.bilibili.com/v/movie/west) | +| 日本电影 | japan | 146 | | [/v/movie/japan](https://www.bilibili.com/v/movie/japan) | +| 其他国家 | movie | 83 | | [/v/movie/movie](https://www.bilibili.com/v/movie/movie) | ## 电视剧 -| 名称 | 代号 | tID | 简介 | url路由 | -| ---------------- | -------- | ---- | ---- | -------------- | -| 电视剧(主分区) | tv | 11 | | /tv | -| 国产剧 | mainland | 185 | | /v/tv/mainland | -| 海外剧 | overseas | 187 | | /v/tv/overseas | - +| 名称 | 代号 | tID | 简介 | url路由 | +| ---------------- | -------- | ---- | ---- | -------------------------------------------------------- | +| 电视剧(主分区) | tv | 11 | | [/tv](https://www.bilibili.com/tv) | +| 国产剧 | mainland | 185 | | [/v/tv/mainland](https://www.bilibili.com/v/tv/mainland) | +| 海外剧 | overseas | 187 | | [/v/tv/overseas](https://www.bilibili.com/v/tv/overseas) | diff --git a/video/videostream_url.md b/video/videostream_url.md new file mode 100644 index 0000000..ad1d25a --- /dev/null +++ b/video/videostream_url.md @@ -0,0 +1,871 @@ +# 视频流URL + + + +分辨率代码: + +| 值 | 含义 | +| ---- | ---------------------------------- | +| 6 | 240P 极速(仅mp4方式) | +| 16 | 360P 流畅 | +| 32 | 480P 清晰 | +| 64 | 720P 高清(登录) | +| 74 | 720P60 高清(大会员) | +| 80 | 1080P 高清(登录) | +| 112 | 1080P+ 高清(大会员) | +| 116 | 1080P60 高清(大会员) | +| 120 | 4K 超清(大会员)(需要`fourk=1`) | + +音质代码: + +| 值 | 含义 | +| ----- | ---- | +| 30216 | 64K | +| 30232 | 132K | +| 30280 | 192K | + +## 关于视频流获取方式 + +视频流获取方式有3种,分别是flv模式、低清mp4方式、dash方式 + +各种模式的特性例举如下 + +flv方式(fnval=0或fnval=2): + +- 编码:H.264编码 + +- 格式:存在flv与mp4两种格式 +- 分辨率:最高支持4K +- 限速情况:存在限速 +- 分段情况:部分视频可能会有分段(尤其是老视频) + +低清mp4方式(fnval=1): + +- 编码:H.264编码 +- 格式:视频格式固定为mp4 +- 分辨率:仅支持240P与360P清晰度 +- 限速情况:限速65K/s +- 分段情况:无视频分段 + +dash方式(fnval=16): + +- 编码:H.264/H.265编码,音频采用aac编码 +- 格式:音视频分流,音视频格式固定为m4s(音频为aac格式,视频为mp4) +- 分辨率:最高支持4K +- 限速情况:速度最快(不确定限速) +- 分段情况:无视频分段 + +## 获取视频流URL(web端) + +> http://api.bilibili.com/x/player/playurl + +*请求方式:GET* + +认证方式:Cookie(SESSDATA) + +--- + +关于视频流会员鉴权: + +- 获取720P及以上清晰度视频时需要登录(Cookie) + +- 获取高帧率(1080P60)/高码率(1080P+)视频时需要有大会员的账号登录(Cookie) + +- 获取会员专属视频时需要登录(Cookie) + +--- + +获取的url有效时间为120min,超时失效需要重新获取 + +**部分视频**会有**分段**,需要特别注意 + +若视频有分P,仅为单P的视频的url,换P则需更换CID重新获取 + +**url参数:** + +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ---------------- | ------------ | ------------------------------------------------------------ | +| avid | num | 稿件avID | 必要(可选) | avID与bvID任选一个 | +| bvid | str | 稿件bvID | 必要(可选) | avID与bvID任选一个 | +| cid | num | 视频CID | 必要 | | +| qn | num | 视频清晰度选择 | 非必要 | 未登录默认32(480P)
登录默认64(720P)
**值含义见上表**
注:dash方式无效 | +| fnval | num | 视频获取方式选择 | 非必要 | 默认为0
0 2:flv方式(可能会有分段)
1:低清mp4方式(仅240P与360P,且限速65K/s)
16:dash方式(音视频分流,支持H.265) | +| fnver | num | 0 | 非必要 | 固定为0 | +| fourk | num | 是否允许4K视频 | 非必要 | 默认为0
画质最高1080P:0
画质最高4K:1 | + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ----------------------------- | -------- | ---------------------------------------------- | +| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | 有效时:obj
无效时:null | 数据本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------------ | ------ | ------------------------ | ---------------------------------------- | +| from | str | local | 作用尚不明确 | +| result | str | suee | 作用尚不明确 | +| message | str | 空 | 作用尚不明确 | +| quality | num | 当前的视频分辨率代码 | **值含义见上表** | +| format | str | 视频格式 | | +| timelength | num | 视频长度 | 单位为毫秒
不同分辨率/格式可能有略微差异 | +| accept_format | str | 视频支持的全部格式 | 每项用`,`分隔 | +| accept_description | array | 视频支持的分辨率列表 | | +| accept_quality | array | 视频支持的分辨率代码列表 | **值含义见上表** | +| video_codecid | num | 7 | 作用尚不明确 | +| seek_param | str | start | 作用尚不明确 | +| seek_type | str | ??? | 作用尚不明确 | +| durl | array | 视频分段 | **注:仅flv/mp4存在此项** | +| dash | obj | dash音视频流信息 | **注:仅dash存在此项** | + +`data`中的`accept_description`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 分辨率名称1 | | +| n | str | 分辨率名称(n+1) | | +| …… | str | …… | | + +`data`中的`accept_quality`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | --------------- | ---- | +| 0 | str | 分辨率代码1 | | +| n | str | 分辨率代码(n+1) | | +| …… | str | …… | | + +--- + +**flv/mp4方式:** + +`data`中的`durl`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ----------------- | ------------------------- | +| 0 | obj | 视频分段1信息 | **注:仅flv方式具有分段** | +| n | obj | 视频分段(n+1)信息 | | +| …… | obj | …… | | + +`durl`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---------- | ------ | ------------ | ---------------------------------- | +| order | num | 视频分段序号 | 某些视频会分为多个片段(从1顺序增长) | +| length | num | 视频长度 | 单位为毫秒 | +| size | num | 视频大小 | 单位为Byte | +| ahead | str | 空 | 作用尚不明确 | +| vhead | str | 空 | 作用尚不明确 | +| url | str | 视频流url | **注:url内容存在转义符**
有效时间为120min | +| backup_url | array | 备用视频流 | | + +`durl`数组中的对象中的`backup_url`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------- | ----------------------------------------------- | +| 0 | str | 备用视频流url 1 | **注:url内容存在转义符**
有效时间为120min | +| n | str | 备用视频流url (n+1) | | +| …… | str | …… | | + +**示例:** + +**视频无分段时:** + +获取视频`av99999999`/`BV1y7411Q7Eq`中的1P(CID=`171776208`)的视频流url,清晰度为1080P+,使用flv方式获取 + +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/playurl' \ +--data-urlencode 'avid=99999999' \ +--data-urlencode 'cid=171776208' \ +--data-urlencode 'qn=112' \ +--data-urlencode 'fnval=0' \ +--data-urlencode 'fnver=0' \ +--data-urlencode 'fourk=1' \ +-b 'SESSDATA=xxx' +``` + + bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/playurl' \ +--data-urlencode 'bvid=BV1y7411Q7Eq' \ +--data-urlencode 'cid=171776208' \ +--data-urlencode 'qn=112' \ +--data-urlencode 'fnval=0' \ +--data-urlencode 'fnver=0' \ +--data-urlencode 'fourk=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "from": "local", + "result": "suee", + "message": "", + "quality": 112, + "format": "hdflv2", + "timelength": 283701, + "accept_format": "hdflv2,flv,flv720,flv480,mp4", + "accept_description": [ + "高清 1080P+", + "高清 1080P", + "高清 720P", + "清晰 480P", + "流畅 360P" + ], + "accept_quality": [ + 112, + 80, + 64, + 32, + 16 + ], + "video_codecid": 7, + "seek_param": "start", + "seek_type": "offset", + "durl": [ + { + "order": 1, + "length": 283701, + "size": 219827828, + "ahead": "", + "vhead": "", + "url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-112.flv?e=ig8euxZM2rNcNbhMnwhVhwdlhzK3hzdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1589565412&gen=playurl&os=hwbv&oi=606631998&trid=e0fa5f9a7610440a871279a28fae85aau&platform=pc&upsig=5f469cb4c190ed54b89bd40cc37eddff&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", + "backup_url": [ + "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-112.flv?e=ig8euxZM2rNcNbhMnwhVhwdlhzK3hzdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1589565412&gen=playurl&os=ks3cbv&oi=606631998&trid=e0fa5f9a7610440a871279a28fae85aau&platform=pc&upsig=914ef921c5258e067c382601a4b1f81c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" + ] + } + ] + } +} +``` + +
+ +**视频有分段时:** + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "from": "local", + "result": "suee", + "message": "", + "quality": 16, + "format": "flv360", + "timelength": 1437918, + "accept_format": "flv,flv720,flv480,flv360", + "accept_description": [ + "高清 1080P", + "高清 720P", + "清晰 480P", + "流畅 360P" + ], + "accept_quality": [ + 80, + 64, + 32, + 16 + ], + "video_codecid": 7, + "seek_param": "start", + "seek_type": "offset", + "durl": [ + { + "order": 1, + "length": 364417, + "size": 23018310, + "ahead": "", + "vhead": "", + "url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/98/24/872498/872498-1-15.flv?e=ig8euxZM2rNcNbRB7zUVhoM17WuBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=hwbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=f99db2dc9b8c65c245515b29b9ca8b16&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", + "backup_url": [ + "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-1-15.flv?e=ig8euxZM2rNcNbRB7zUVhoM17WuBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=74d0d62697364346f88d9c39430ce23c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" + ] + }, + { + "order": 2, + "length": 364395, + "size": 23694756, + "ahead": "", + "vhead": "", + "url": "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/98/24/872498/872498-2-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=cosbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=308c87c55f3325bdaac2a3e8632948ee&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", + "backup_url": [ + "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-2-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=eb8f043e0f36f82ab9c62fd002143438&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" + ] + }, + { + "order": 3, + "length": 352333, + "size": 22835734, + "ahead": "", + "vhead": "", + "url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/98/24/872498/872498-3-15.flv?e=ig8euxZM2rNcNbRjhwdVhoM17bdVhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=hwbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=2685b7649f4bb6eb90f986f125432d78&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", + "backup_url": [ + "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-3-15.flv?e=ig8euxZM2rNcNbRjhwdVhoM17bdVhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=922543bfb26184f901187bf9c39c69b2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" + ] + }, + { + "order": 4, + "length": 356773, + "size": 23466279, + "ahead": "", + "vhead": "", + "url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/98/24/872498/872498-4-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=kodobv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=9d29707faf012797ef2b6de21523fcf2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", + "backup_url": [ + "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-4-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=9ad4524d31c8d9695ae07b400b73ed29&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" + ] + } + ] + } +} +``` + +
+ +--- + +**dash方式:** + +`data`中的`dash`对象: + +| 字段 | 类型 | 内容 | 备注 | +| --------------- | ----- | ---------- | ------------ | +| duration | num | 677 | 作用尚不明确 | +| minBufferTime | num | 1.5 | 作用尚不明确 | +| min_buffer_time | num | 1.5 | 作用尚不明确 | +| video | array | 视频流信息 | | +| audio | array | 音频流信息 | | + +`dash`中的`video`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ---------------------- | ---- | +| 0 | obj | 清晰度1 H.264编码 | | +| 1 | obj | 清晰度1 H.265编码 | | +| n | obj | 清晰度n H.264编码 | | +| n+1 | obj | 清晰度 (n-1) H.265编码 | | +| …… | obj | …… | | + +`dash`中的`audio`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------- | ---- | +| 0 | obj | 清晰度1 | | +| n | obj | 清晰度(n+1) | | +| …… | obj | …… | | + +`video`及`audio`数组中的对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ----- | --------------------- | ----------------------------------------------- | +| id | num | 音视频清晰度代码 | **见上表** | +| baseUrl | str | 默认视频/音频流url | **注:url内容存在转义符**
有效时间为120min | +| base_url | str | **同上** | | +| backupUrl | array | 备用视频/音频流url | | +| backup_url | array | **同上** | | +| bandwidth | num | 视频/音频所需最低带宽 | | +| mimeType | str | 视频/音频格式类型 | | +| mime_type | str | **同上** | | +| codecs | str | 编码/音频类型 | | +| width | num | 视频宽度 | 单位为像素
仅视频有效 | +| height | num | 视频高度 | 单位为像素
仅视频有效 | +| frameRate | str | 视频帧率 | 仅视频有效 | +| frame_rate | str | **同上** | | +| sar | str | 1:1 | 作用尚不明确 | +| startWithSap | num | 1 | 作用尚不明确 | +| start_with_sap | num | **同上** | | +| SegmentBase | obj | ??? | 作用尚不明确 | +| segment_base | obj | **同上** | | +| codecid | num | 7 | 作用尚不明确 | + +`video`数组中的对象中的`backup_url`数组: + +| 项 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------------ | ----------------------------------------------- | +| 0 | str | 备用视频/音频流url 1 | **注:url内容存在转义符**
有效时间为120min | +| n | str | 备用视频/音频流url (n+1) | | +| …… | str | …… | | + +`video`数组中的对象中的`backup_url`对象: + +| 字段 | 类型 | 内容 | 备注 | +| -------------- | ---- | ------ | ------------ | +| index_range | str | ??? | 作用尚不明确 | +| initialization | str | ??? | 作用尚不明确 | + +**示例:** + +获取视频`av99999999`/`BV1y7411Q7Eq`中的1P(CID=`171776208`)的视频流url,使用dash方式获取 + +avID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/playurl' \ +--data-urlencode 'avid=99999999' \ +--data-urlencode 'cid=171776208' \ +--data-urlencode 'qn=0' \ +--data-urlencode 'fnval=16' \ +--data-urlencode 'fnver=0' \ +--data-urlencode 'fourk=1' \ +-b 'SESSDATA=xxx' +``` + + bvID方式: + +```shell +curl -G 'http://api.bilibili.com/x/player/playurl' \ +--data-urlencode 'bvid=BV1y7411Q7Eq' \ +--data-urlencode 'cid=171776208' \ +--data-urlencode 'qn=0' \ +--data-urlencode 'fnval=16' \ +--data-urlencode 'fnver=0' \ +--data-urlencode 'fourk=1' \ +-b 'SESSDATA=xxx' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "from": "local", + "result": "suee", + "message": "", + "quality": 64, + "format": "flv720", + "timelength": 283723, + "accept_format": "hdflv2,flv,flv720,flv480,mp4", + "accept_description": [ + "高清 1080P+", + "高清 1080P", + "高清 720P", + "清晰 480P", + "流畅 360P" + ], + "accept_quality": [ + 112, + 80, + 64, + 32, + 16 + ], + "video_codecid": 7, + "seek_param": "start", + "seek_type": "offset", + "dash": { + "duration": 284, + "minBufferTime": 1.5, + "min_buffer_time": 1.5, + "video": [ + { + "id": 80, + "baseUrl": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=e0421530d95fb093d3ab8435e2698604&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=e0421530d95fb093d3ab8435e2698604&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=e0421530d95fb093d3ab8435e2698604&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=9b0cda7e09114236c87bc1092349eef3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=e0421530d95fb093d3ab8435e2698604&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=9b0cda7e09114236c87bc1092349eef3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 2484399, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "avc1.640032", + "width": 1920, + "height": 1080, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "1:1", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-993", + "indexRange": "994-1709" + }, + "segment_base": { + "initialization": "0-993", + "index_range": "994-1709" + }, + "codecid": 7 + }, + { + "id": 80, + "baseUrl": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=42e5c5ba33a5589a34ed7abbdb9b2b5e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=42e5c5ba33a5589a34ed7abbdb9b2b5e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=42e5c5ba33a5589a34ed7abbdb9b2b5e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f3dbd3480a91a398c454b0ad366bff75&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=42e5c5ba33a5589a34ed7abbdb9b2b5e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f3dbd3480a91a398c454b0ad366bff75&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 1741084, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "hev1.1.6.L120.90", + "width": 1920, + "height": 1080, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "1:1", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-1177", + "indexRange": "1178-1893" + }, + "segment_base": { + "initialization": "0-1177", + "index_range": "1178-1893" + }, + "codecid": 12 + }, + { + "id": 64, + "baseUrl": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30064.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=ad9b42045aa4272b14a36e6bf9c69821&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30064.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=ad9b42045aa4272b14a36e6bf9c69821&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30064.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=ad9b42045aa4272b14a36e6bf9c69821&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30064.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=114091f7503183123a12b994bd920615&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30064.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=ad9b42045aa4272b14a36e6bf9c69821&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30064.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=114091f7503183123a12b994bd920615&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 1657387, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "avc1.640028", + "width": 1280, + "height": 720, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "1:1", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-991", + "indexRange": "992-1707" + }, + "segment_base": { + "initialization": "0-991", + "index_range": "992-1707" + }, + "codecid": 7 + }, + { + "id": 64, + "baseUrl": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=45bcf80f209783888e83477b1867df50&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=45bcf80f209783888e83477b1867df50&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=45bcf80f209783888e83477b1867df50&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f8ab10a8b7f73180e45dfeb4367c81e2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=45bcf80f209783888e83477b1867df50&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30066.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f8ab10a8b7f73180e45dfeb4367c81e2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 1163699, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "hev1.1.6.L120.90", + "width": 1280, + "height": 720, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "1:1", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-1178", + "indexRange": "1179-1894" + }, + "segment_base": { + "initialization": "0-1178", + "index_range": "1179-1894" + }, + "codecid": 12 + }, + { + "id": 32, + "baseUrl": "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=7c620c8aa36a3dcfb7da8ef9b9f65cdd&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=7c620c8aa36a3dcfb7da8ef9b9f65cdd&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=7c620c8aa36a3dcfb7da8ef9b9f65cdd&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorcosb.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=fe91d0deb5e513c2178759f8b18d1fd3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=7c620c8aa36a3dcfb7da8ef9b9f65cdd&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorcosb.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=fe91d0deb5e513c2178759f8b18d1fd3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 746163, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "avc1.64001F", + "width": 852, + "height": 480, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "640:639", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-995", + "indexRange": "996-1711" + }, + "segment_base": { + "initialization": "0-995", + "index_range": "996-1711" + }, + "codecid": 7 + }, + { + "id": 32, + "baseUrl": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8dacad471933a15a6622f46798b994da&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8dacad471933a15a6622f46798b994da&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8dacad471933a15a6622f46798b994da&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=4945b7ab9e60365f90df320aa7fb1d84&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8dacad471933a15a6622f46798b994da&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=4945b7ab9e60365f90df320aa7fb1d84&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 525139, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "hev1.1.6.L120.90", + "width": 852, + "height": 480, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "640:639", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-1181", + "indexRange": "1182-1897" + }, + "segment_base": { + "initialization": "0-1181", + "index_range": "1182-1897" + }, + "codecid": 12 + }, + { + "id": 16, + "baseUrl": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8ea061cf6cb355006542d797e308c022&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8ea061cf6cb355006542d797e308c022&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8ea061cf6cb355006542d797e308c022&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8c8f0edd92f6a3c009d9d4e5b17b472f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8ea061cf6cb355006542d797e308c022&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=8c8f0edd92f6a3c009d9d4e5b17b472f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 235648, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "hev1.1.6.L120.90", + "width": 640, + "height": 360, + "frameRate": "16000/544", + "frame_rate": "16000/544", + "sar": "1:1", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-1178", + "indexRange": "1179-1894" + }, + "segment_base": { + "initialization": "0-1178", + "index_range": "1179-1894" + }, + "codecid": 12 + }, + { + "id": 16, + "baseUrl": "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=d3f79bd8a314b5bf270b699d8a764660&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=d3f79bd8a314b5bf270b699d8a764660&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=d3f79bd8a314b5bf270b699d8a764660&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorcosb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=3d93563edba83b2da10eede39963c435&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=d3f79bd8a314b5bf270b699d8a764660&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorcosb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=cosbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=3d93563edba83b2da10eede39963c435&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 390901, + "mimeType": "video/mp4", + "mime_type": "video/mp4", + "codecs": "avc1.64001E", + "width": 640, + "height": 360, + "frameRate": "16000/528", + "frame_rate": "16000/528", + "sar": "1:1", + "startWithSap": 1, + "start_with_sap": 1, + "SegmentBase": { + "Initialization": "0-1014", + "indexRange": "1015-1730" + }, + "segment_base": { + "initialization": "0-1014", + "index_range": "1015-1730" + }, + "codecid": 7 + } + ], + "audio": [ + { + "id": 30280, + "baseUrl": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=c2baedea8d725e83b43f52530b4d3afa&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=c2baedea8d725e83b43f52530b4d3afa&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=c2baedea8d725e83b43f52530b4d3afa&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=e21dcc3c565199054de9daac0e6c8c5f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=c2baedea8d725e83b43f52530b4d3afa&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=e21dcc3c565199054de9daac0e6c8c5f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 324403, + "mimeType": "audio/mp4", + "mime_type": "audio/mp4", + "codecs": "mp4a.40.2", + "width": 0, + "height": 0, + "frameRate": "", + "frame_rate": "", + "sar": "", + "startWithSap": 0, + "start_with_sap": 0, + "SegmentBase": { + "Initialization": "0-907", + "indexRange": "908-1623" + }, + "segment_base": { + "initialization": "0-907", + "index_range": "908-1623" + }, + "codecid": 0 + }, + { + "id": 30216, + "baseUrl": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=01cbdb1a7eaa1c7175fd14c797b4874b&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=01cbdb1a7eaa1c7175fd14c797b4874b&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=01cbdb1a7eaa1c7175fd14c797b4874b&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=a71970a80181541af9e85ea6c5114ddf&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=01cbdb1a7eaa1c7175fd14c797b4874b&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorhwb.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=hwbbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=a71970a80181541af9e85ea6c5114ddf&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 67151, + "mimeType": "audio/mp4", + "mime_type": "audio/mp4", + "codecs": "mp4a.40.2", + "width": 0, + "height": 0, + "frameRate": "", + "frame_rate": "", + "sar": "", + "startWithSap": 0, + "start_with_sap": 0, + "SegmentBase": { + "Initialization": "0-930", + "indexRange": "931-1646" + }, + "segment_base": { + "initialization": "0-930", + "index_range": "931-1646" + }, + "codecid": 0 + }, + { + "id": 30232, + "baseUrl": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f328717d45a24f7313361eaf3aa436f5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "base_url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f328717d45a24f7313361eaf3aa436f5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=0,3&agrr=0&logo=80000000", + "backupUrl": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f328717d45a24f7313361eaf3aa436f5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=b59599d3ec0684003a562d6f92818a71&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "backup_url": [ + "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=f328717d45a24f7313361eaf3aa436f5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=1,3&agrr=0&logo=40000000", + "http://upos-sz-mirrorkodob.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1598627692&gen=playurl&os=kodobbv&oi=606633919&trid=7d8affda587741c1b390fa7b2b6536a5u&platform=pc&upsig=b59599d3ec0684003a562d6f92818a71&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&orderid=2,3&agrr=0&logo=40000000" + ], + "bandwidth": 132686, + "mimeType": "audio/mp4", + "mime_type": "audio/mp4", + "codecs": "mp4a.40.2", + "width": 0, + "height": 0, + "frameRate": "", + "frame_rate": "", + "sar": "", + "startWithSap": 0, + "start_with_sap": 0, + "SegmentBase": { + "Initialization": "0-907", + "indexRange": "908-1623" + }, + "segment_base": { + "initialization": "0-907", + "index_range": "908-1623" + }, + "codecid": 0 + } + ] + } + } +} +``` + +
+ +## 视频的获取 + +将`data`.`durl`.`[1-n]`.`url`或`data`.`durl`.`[1-n]`.`backup_url`.`[0]`中的内容作为url进行GET操作, 如果有多个视频, 需要手动合并处理(注意转义符) + +需要验证请求`referer`为 `.bilibili.com`域名下(防盗链),且`user-agent` 不为空 + +**referer或user-agent错误的情况会返回403 Forbidden**故无法获取 + +**以上述视频url为例:** + +```shell +wget 'http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/08/62/171776208/171776208-1-112.flv?e=ig8euxZM2rNcNbhMnwhVhwdlhzK3hzdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1589565412&gen=playurl&os=hwbv&oi=606631998&trid=e0fa5f9a7610440a871279a28fae85aau&platform=pc&upsig=5f469cb4c190ed54b89bd40cc37eddff&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000' \ +-e 'https://www.bilibili.com' \ +-O 'Download_video.flv' +``` + +响应正文将返回一个flv文件 \ No newline at end of file diff --git a/web_widget/zone_upload.md b/web_widget/zone_upload.md new file mode 100644 index 0000000..773eba9 --- /dev/null +++ b/web_widget/zone_upload.md @@ -0,0 +1,94 @@ +# 获取分区当日投稿稿件数 + +> http://api.bilibili.com/x/web-interface/online + +*请求方式:GET* + +**json回复:** + +根对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------- | ---- | -------- | ------- | +| code | num | 返回值 | 0:成功 | +| message | str | 错误信息 | 默认为0 | +| ttl | num | 1 | | +| data | obj | 信息本体 | | + +`data`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ------------ | ---- | ---------------- | ---- | +| region_count | obj | 分区当日投稿稿件数信息 | | + +`data`中的`region_count`对象: + +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ------------------------- | ---- | +| 1 | num | 当日投稿稿件数-动画(主分区) | | +| 13 | num | 当日投稿稿件数-番剧(主分区) | | +| 167 | num | 当日投稿稿件数-国创(主分区) | | +| 3 | num | 当日投稿稿件数-音乐(主分区) | | +| 129 | num | 当日投稿稿件数-舞蹈(主分区) | | +| 4 | num | 当日投稿稿件数-游戏(主分区) | | +| 17 | num | 当日投稿稿件数-单机游戏 | | +| 36 | num | 当日投稿稿件数-知识(主分区) | | +| 188 | num | 当日投稿稿件数-数码(主分区) | | +| 160 | num | 当日投稿稿件数-生活(主分区) | | +| 138 | num | 当日投稿稿件数-搞笑 | | +| 76 | num | 当日投稿稿件数-美食圈 | | +| 75 | num | 当日投稿稿件数-动物圈 | | +| 119 | num | 当日投稿稿件数-鬼畜(主分区) | | +| 155 | num | 当日投稿稿件数-时尚(主分区) | | +| 202 | num | 当日投稿稿件数-资讯(主分区) | | +| 165 | num | 当日投稿稿件数-广告(主分区) | | +| 5 | num | 当日投稿稿件数-娱乐(主分区) | | +| 181 | num | 当日投稿稿件数-影视(主分区) | | +| 177 | num | 当日投稿稿件数-纪录片(主分区) | | +| 23 | num | 当日投稿稿件数-电影(主分区) | | +| 11 | num | 当日投稿稿件数-电视剧(主分区) | | + +**示例:** + +```shell +curl 'http://api.bilibili.com/x/web-interface/online' +``` + +
+查看响应示例: + +```json +{ + "code": 0, + "message": "0", + "ttl": 1, + "data": { + "region_count": { + "1": 28, + "11": 0, + "119": 0, + "129": 13, + "13": 2, + "138": 21, + "155": 13, + "160": 215, + "165": 0, + "167": 3, + "17": 86, + "177": 0, + "181": 61, + "188": 5, + "202": 0, + "23": 0, + "3": 67, + "36": 27, + "4": 235, + "5": 33, + "75": 12, + "76": 17 + } + } +} +``` + +