🚀调整项目结构

This commit is contained in:
SocialSisterYi 2023-02-22 00:56:04 +08:00
parent 5493134f73
commit b85e835ce7
No known key found for this signature in database
GPG Key ID: 4359DB0F41BEEBBA
209 changed files with 193 additions and 85322 deletions

View File

@ -1,4 +1,4 @@
name: Build and Deploy
name: deploy and pubish
on: [push]
jobs:
build-and-deploy:

7
.gitignore vendored
View File

@ -1,8 +1,7 @@
mkdocs/html/*
README.md
/.gitignore
mkdocs/html/
/.vuepress/.cache/
/.vuepress/.temp/
/.vuepress/dist/
.idea
/node_modules/
.idea/
.vscode/

View File

@ -1,26 +1,31 @@
module.exports = {
base: "/bilibili-API-collect/",
title: "BAC Document",
description: "社区开源的第三方哔哩哔哩 API 文档",
head: [
['link', { rel: 'icon', href: './logo2.jpg' }]
],
locales: {
'/': {
lang: 'zh-CN',
},
},
head: [
['link', { rel: 'icon', href: './logo.png' }]
],
title: "bilibili-API-collect",
description: "本项目旨在对 B站 WEB、APP、TV 等客户端中,散落在世界各地的野生 API 进行收集整理,研究使用方法并对其进行说明。",
themeConfig: {
logo: './logo2.jpg',
nav: [
{ text: '介绍', link: '/' },
{ text: '目录', link: '/contents.html' },
{ text: 'Github', link: 'https://github.com/SocialSisterYi/bilibili-API-collect' },
{text: '首页', link: '/'},
{text: '目录', link: '/#🍴目录'},
{text: '贡献指南', link: '/CONTRIBUTING.html'},
{text: 'GitHub', link: 'https://github.com/SocialSisterYi/bilibili-API-collect'},
],
sidebar: 'auto',
smoothScroll: true
},
plugins: [
'@vuepress/back-to-top',
],
markdown: {
lineNumbers: true,
plugins: ['task-lists']
},
plugins: ['@vuepress/back-to-top'],
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 KiB

View File

@ -1,572 +0,0 @@
# APP端开屏图片
- [获取APP端开屏图片列表](#获取APP端开屏图片列表)
- [获取APP端开屏幕广告信息](#获取APP端开屏幕广告信息)
---
## 获取APP端开屏图片列表
> https://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成功<br />-3API校验密匙错误<br />-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 'https://app.bilibili.com/x/v2/splash/brand/list' \
--data-urlencode 'appkey=1d8b6e7d45233436' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=78a89e153cd6231a4a4d55013aa063ce'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
}
```
</details>
如id=11的图片为
![]( https://i0.hdslb.com/bfs/archive/fe737da5cdedf9dad038e5fd30e957be8a063bc2.png )
## 获取APP端开屏幕广告信息
> https://app.bilibili.com/x/v2/splash/list
*请求方式: GET*
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|----------|-----|-----------------------|-----|-----|
| build | int | 客户端内部版本号 | 必要 | |
| mobi_app | str | android, iphone, ipad | 必要 | |
| platform | str | android, ios | 必要 | |
| height | int | 屏幕高度 | 必要 | |
| width | int | 屏幕宽度 | 必要 | |
| birth | str | 生日日期(四位数,例 0101) | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|---------------------------------------|
| code | num | 返回值 | 0成功<br />-3API校验密匙错误<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
|-------------------|--------|---------------------|---------|
| splash_request_id | 当前请求id | 长度为33, 前13位是当前秒级时间戳 | |
| max_time | int | 最长显示时间? | |
| min_interval | int | 最少显示时间? | 千分之一秒单位 |
| pull_interval | int | 显示时间? | |
| keep_ids | int | 显示时间? | |
| list | list | 广告 list | |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|----------------------------|-------|---------------|--------|
| id | int | 广告id | |
| type | int | 1 | |
| card_type | int | 39 | |
| duration | int | 持续时间? | |
| begin_time | int | 开始展示时间 | 秒级时间戳 |
| end_time | int | 停止展示时间 | 毫秒级时间戳 |
| thumb | url | 广告图片 | |
| hash | str | 作用尚不明确 | |
| logo_url | str | 空值 | |
| logo_hash | str | 空值 | |
| skip | int | 是否跳转? | |
| uri | str | 跳转的url | |
| video_url | str | 视频url | |
| video_hash | str | 视频hash | |
| video_width | num | 视频宽度 | |
| video_height | num | 视频高度 | |
| uri_title | str | 空值 | |
| source | int | 929 | |
| cm_mark | int | 1 | |
| ad_cb | str | 作用尚不明确 | |
| resource_id | int | 926 | |
| request_id | str | 作用尚不明确 | |
| client_ip | str | 客户端IP | |
| is_ad | bool | 作用尚不明确 | |
| is_ad_loc | bool | 作用尚不明确 | |
| schema_title | str | 滑动进入第三方应用 | |
| schema_callup_white_list | array | 跳转的 APP 的白名单 | |
| extra | obj | 显示信息? | |
| enable_pre_download | bool | 是否可以当场下载 APP? | |
| enable_background_download | bool | 是否可以静默下载 APP? | |
| interact_type | int | 是否可以跳转(互动) | |
| interact_url | str | 跳转(互动) url | |
| interact_distance | int | 作用尚不明确 | |
| guide_button_list | array | 所有的按钮 | |
| mark_with_skip_style | num | 作用尚不明确 | |
| skip_button_height | num | 作用尚不明确 | |
`extra`对象:
| 字段 | 类型 | 内容 | 备注 |
|----------------------------|-------|-----|-----|
| use_ad_web_v2 | bool | | |
| show_urls | array | | |
| click_urls | array | | |
| show_1s_urls | array | | |
| download_whitelist | array | | |
| open_whitelist | array | | |
| card | obj | | |
| report_time | num | | |
| sales_type | num | | |
| special_industry | bool | | |
| preload_landingpage | num | | |
| share_info | obj | | |
| upzone_entrance_type | num | | |
| upzone_entrance_report_id | num | | |
| topview_pic_url | str | | |
| topview_video_url | str | | |
| click_area | num | | |
| shop_id | num | | |
| up_mid | num | | |
| track_id | str | | |
| enable_store_direct_launch | int | | |
| enable_double_jump | bool | | |
| store_callup_card | bool | | |
| enable_h5_alert | bool | | |
| special_industry_style | num | | |
| macro_replace_priority | num | | |
| feedback_panel_style | num | | |
| ad_content_type | num | | |
| enable_h5_pre_load | num | | |
| hot_activity_id | num | | |
| product_id | num | | |
| landingpage_download_style | num | | |
`guide_button_list` 中的对象:
| 字段 | 类型 | 内容 | 备注 |
|------------------------------|-------|-----|-------|
| id | int | | |
| x | int | | |
| y | int | | |
| bg_color | str | | |
| bg_color_night | str | | |
| text_color | str | | |
| text_color_night | str | | |
| guide_instructions | str | | |
| guide_instructions_new | str | 空值 | |
| width | str | | |
| jump_url | str | | |
| schema_package_name | str | | |
| schema_title | str | | |
| schema_title_new | str | 空值 | |
| height | str | | |
| slide_threshold_value | str | | |
| slide_border_color | str | | |
| guide_image_url | str | | |
| guide_image_md5 | str | | |
| interact_style | str | | |
| jump_image_url | str | | |
| jump_image_md5 | str | | |
| schema_image_url | str | | |
| schema_image_md5 | str | | |
| click_expand_ratio | str | | |
| logo_image_url | str | | |
| logo_image_md5 | str | | |
| related_ids | array | 空 | |
| schema_list | array | 空 | |
| font_ratio | num | | |
| seq | num | | |
| degrade_type | num | | |
| twist_angle | num | | |
| twist_speed | num | | |
| secondary_guide_instructions | str | | |
| secondary_font_ratio | num | | |
| secondary_text_color | str | | |
| secondary_text_color_night | str | | |
| activity_time | num | | 秒级时间戳 |
| time_show_type | num | | |
**示例:**
```shell
curl -X GET 'https://app.bilibili.com/x/v2/splash/list' \
--data-urlencode 'build=999999999' \
--data-urlencode 'mobi_app=android' \
--data-urlencode 'platform=android' \
--data-urlencode 'height=1920' \
--data-urlencode 'width=1080' \
--data-urlencode 'birth=0101'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"max_time": 4,
"min_interval": 14400,
"pull_interval": 900,
"keep_ids": null,
"list": [
{
"id": 9460,
"type": 1,
"card_type": 39,
"duration": 5,
"begin_time": 1663689600,
"end_time": 1663775999,
"thumb": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/cb001c291c6011940e29531dcce6b1e8.webp",
"hash": "712d3df973f99fdcd30c2419d19630dc",
"logo_url": "",
"logo_hash": "",
"skip": 1,
"uri": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"video_url": "http://upos-sz-static.bilivideo.com/ssaxcode/89/jl/n220831a21uql976d44zun4y0ykmjl89-1-SPLASH.mp4",
"video_hash": "ae10333c160452cc2755d079db10b597",
"video_width": 1080,
"video_height": 1920,
"uri_title": "",
"source": 929,
"cm_mark": 1,
"ad_cb": "COfrARC7jxUY9EkgADDWwCE4oQdCIDE2NjM2NDY2MzY1ODhxMTcyYTI2YTE5MmE5NnE1NDE0SKy0xMi1MFIG5aSp5rSlaP///////////wFw////////////AYABS4gB5+sBsgEg8mQFw0bBxGOGYE8OBhMOd3DE8OGFZXhookrFX4s3UrrwAruPFdgD9Ek=",
"resource_id": 926,
"request_id": "1663646636588q172a26a192a96q5414",
"client_ip": "117.14.146.37",
"is_ad": true,
"is_ad_loc": true,
"schema_title": "滑动进入第三方应用",
"schema_callup_white_list": [
"tmall",
"taobao",
"openapp.jdmobile",
"weixin",
"alipays",
"tbopen",
"eleme",
"qqmusic",
"pddopen",
"upwallet",
"yocial://plaza/?tab=0",
"hiapplink",
"meiju",
"midea-meiju",
"uclink",
"qklink",
"taobaolite",
"lazyaudio",
"meituanwaimai",
"baiduboxapp://",
"baiduboxapp",
"fleamarket",
"dewuapp",
"duappmoblink",
"cmblife",
"imeituan",
"vmall",
"music",
"pinduoduo"
],
"extra": {
"use_ad_web_v2": true,
"show_urls": [
"https://g.cn.miaozhen.com/x/k=2315612&p=8EUuC&dx=__IPDX__&rt=2&pro=s&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&vg=__AUTOPLAY__&nh=__AUTOREFRESH__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&m14=__CAID__&m5a=__IDFV__&mn=__ANAME__&m5b=__IDFA1__&m11a=__OAID1__&m14a=__CAID1__&o="
],
"click_urls": [
"https://e.cn.miaozhen.com/r/k=2315612&p=8EUuC&dx=__IPDX__&rt=2&pro=s&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&m14=__CAID__&m5a=__IDFV__&mn=__ANAME__&m5b=__IDFA1__&m11a=__OAID1__&m14a=__CAID1__&o="
],
"show_1s_urls": [],
"download_whitelist": [],
"open_whitelist": [
"tmall",
"taobao",
"openapp.jdmobile",
"weixin",
"alipays",
"tbopen",
"eleme",
"qqmusic",
"pddopen",
"upwallet",
"yocial://plaza/?tab=0",
"hiapplink",
"meiju",
"midea-meiju",
"uclink",
"qklink",
"taobaolite",
"lazyaudio",
"meituanwaimai",
"baiduboxapp://",
"baiduboxapp",
"fleamarket",
"dewuapp",
"duappmoblink",
"cmblife",
"imeituan",
"vmall",
"music",
"pinduoduo"
],
"card": {
"card_type": 0,
"extreme_team_status": false,
"support_transition": false,
"under_player_interaction_style": 0,
"grade_denominator": 0,
"star_level": 0,
"live_booking_population_threshold": 0,
"ori_mark_hidden": 0,
"use_multi_cover": false,
"fold_time": 0,
"live_room_popularity": 0,
"live_tag_show": false,
"grade_level": 0
},
"report_time": 0,
"sales_type": 75,
"special_industry": false,
"preload_landingpage": 0,
"share_info": {},
"upzone_entrance_type": 0,
"upzone_entrance_report_id": 0,
"topview_pic_url": "",
"topview_video_url": "",
"click_area": 0,
"shop_id": 0,
"up_mid": 0,
"track_id": "pbaes.Y5ATuPVlG6ysPF6cvl6W8B-BYexhSJzrKH3NYfC3KIHDb9W5cxPA4_FTEPWYDED5DjfRwb3tcrLppYAqQ87SSg==",
"enable_store_direct_launch": 0,
"enable_double_jump": false,
"store_callup_card": false,
"enable_h5_alert": false,
"special_industry_style": 0,
"macro_replace_priority": 1,
"feedback_panel_style": 0,
"ad_content_type": 0,
"enable_h5_pre_load": 0,
"hot_activity_id": 0,
"product_id": 0,
"landingpage_download_style": 2
},
"enable_pre_download": true,
"enable_background_download": true,
"interact_type": 1,
"interact_url": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"interact_distance": 60,
"guide_button_list": [
{
"id": 49037,
"x": 50,
"y": 78,
"bg_color": "#80000000",
"bg_color_night": "#80000000",
"text_color": "#FFFFFFFF",
"text_color_night": "#FFFFFFFF",
"guide_instructions": "点击进入活动页",
"guide_instructions_new": "",
"width": 70,
"jump_url": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"schema_package_name": "",
"schema_title": "",
"schema_title_new": "",
"height": 7,
"slide_threshold_value": 5,
"slide_border_color": "#40FFFFFF",
"guide_image_url": "",
"guide_image_md5": "",
"interact_style": 6,
"jump_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"jump_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"schema_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"schema_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"click_expand_ratio": 100,
"logo_image_url": "https://i0.hdslb.com/bfs/sycp/mgk/img/202106/17006d50ec506813727b1cb5c6fc58b1.png",
"logo_image_md5": "86bc1b68ce4708d918cd4e01a975ca17",
"related_ids": [],
"schema_list": [],
"font_ratio": 0.23,
"seq": 0,
"degrade_type": 1,
"twist_angle": 0,
"twist_speed": -1,
"secondary_guide_instructions": "",
"secondary_font_ratio": 0,
"secondary_text_color": "",
"secondary_text_color_night": "",
"activity_time": 1662532059,
"time_show_type": 0
},
{
"id": 49040,
"x": 50,
"y": 83,
"bg_color": "#80000000",
"bg_color_night": "#80000000",
"text_color": "#FFFFFFFF",
"text_color_night": "#FFFFFFFF",
"guide_instructions": "即可前往 开吃新品",
"guide_instructions_new": "",
"width": 64,
"jump_url": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"schema_package_name": "",
"schema_title": "滑动进入第三方应用",
"schema_title_new": "",
"height": 3,
"slide_threshold_value": 5,
"slide_border_color": "#40FFFFFF",
"guide_image_url": "",
"guide_image_md5": "",
"interact_style": 3,
"jump_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"jump_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"schema_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"schema_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"click_expand_ratio": 100,
"logo_image_url": "https://i0.hdslb.com/bfs/sycp/mgk/img/202106/17006d50ec506813727b1cb5c6fc58b1.png",
"logo_image_md5": "86bc1b68ce4708d918cd4e01a975ca17",
"related_ids": [
49037
],
"schema_list": [],
"font_ratio": 0.23,
"seq": 99,
"degrade_type": 0,
"twist_angle": 0,
"twist_speed": -1,
"secondary_guide_instructions": "",
"secondary_font_ratio": 0,
"secondary_text_color": "",
"secondary_text_color_night": "",
"activity_time": 1662532059,
"time_show_type": 0
}
],
"mark_with_skip_style": 0,
"skip_button_height": 0.0557
}
],
"splash_request_id": "1663646636605q172a24a57a232q5796"
}
}
```
</details>

341
README.md
View File

@ -1,5 +1,5 @@
<p align="center">
<img src="./imgs/logo.png" width="250" height="200">
<img src="./assets/img/logo.png" width="250" height="200">
</p>
<h1 align="center">哔哩哔哩-API收集整理</h1>
<p align="center">
@ -12,12 +12,15 @@
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/network" style="text-decoration:none" >
<img src="https://img.shields.io/github/forks/SocialSisterYi/bilibili-API-collect.svg" alt="GitHub forks"/>
</a>
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/actions">
<img src="https://img.shields.io/github/actions/workflow/status/SocialSisterYi/bilibili-API-collect/vuepress-deploy.yml">
</a>
<a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE" style="text-decoration:none" >
<img src="https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg" alt="GitHub license"/>
</a>
</p>
<h3 align="center">野生API文档</h3>
<h3 align="center">不断更新中....</h3>
<h3 align="center">野生API文档</h3>
<h3 align="center">不断更新中....</h3>
本项目旨在对 B站 WEB、APP、TV 等客户端中,散落在世界各地的野生 API 进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、代码逆向分析、拆包及反编译法、网络抓包法等研究办法
@ -25,11 +28,11 @@
B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC少部分接口为 WebSocketREST API 接口请求数据大多为 url query 表单或 JSON返回数据大多为 JSON 或 Protobuf强制使用 https 协议
📖阅读地址:[GithubPages](https://socialsisteryi.github.io/bilibili-API-collect/)
小小的 Demo~~av583785685~~ [视频失效原因](https://shakaianee.top/archives/56/) ([Youtube备链](https://www.youtube.com/watch?v=nfF91Z6fqGk))
联动项目:[Hsury/Bilibili-Toolkit](https://github.com/Hsury/Bilibili-Toolkit)
## ⚠️声明
::: warning ⚠️声明
1. 本项目遵守 CC-BY-NC 4.0 协议,禁止一切商业使用,如需转载请注明作者 ID
2. **请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!请勿滥用,本项目仅用于学习和测试!**
@ -37,6 +40,8 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC少部分接
4. 由于本项目的特殊性,可能随时停止开发或删档
5. 本项目为开源项目,不接受任何形式的催单和索取行为,更不容许存在付费内容
:::
## 🌱参与贡献
欢迎各位 dalao 对本项目做出贡献,也希望每个使用者都能提出宝贵的意见
@ -44,194 +49,194 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC少部分接
目前本项目存在的问题包括但不限于:
1. 文档二级目录尚未完成
2. 文档需要使用 Vue Press 构建 html 版本发布
3. 部分文档较旧,修改与更新没有跟进
2. 部分文档较旧,修改与更新没有跟进
3. 目前文档使用 markdown 语法编写,不易生成编程语言的 SDK详见 [#604](https://github.com/SocialSisterYi/bilibili-API-collect/issues/604)
更多信息请浏览 [贡献指南](CONTRIBUTING.md)
## 🍴[目录](contents.md)
## 🍴目录
计划整理分类 & 目录:(文档已完结请选中 checkbox)
- [x] [API 签名](other/API_sign.md)
- [x] [公共错误码](other/errcode.md)
- [x] [图片格式化](other/picture.md)
- [x] [bvid 说明](other/bvid_desc.md)
- [x] [API 签名](docs/other/API_sign.md)
- [x] [公共错误码](docs/other/errcode.md)
- [x] [图片格式化](docs/other/picture.md)
- [x] [bvid 说明](docs/other/bvid_desc.md)
- [ ] [gRPC API 接口定义](grpc_api)
- [ ] [登录](login)
- [x] [登录操作 (人机认证)](login/login_action)
- [x] [短信登录](login/login_action/SMS.md)
- [x] [密码登录](login/login_action/password.md)
- [x] [二维码登录](login/login_action/QR.md)
- [ ] [登录](docs/login)
- [x] [登录操作 (人机认证)](docs/login/login_action)
- [x] [短信登录](docs/login/login_action/SMS.md)
- [x] [密码登录](docs/login/login_action/password.md)
- [x] [二维码登录](docs/login/login_action/QR.md)
- [ ] SNS 登录 (QQ & 微信 & 微博)
- [x] [登录基本信息](login/login_info.md)
- [ ] [个人中心](login/member_center.md)
- [ ] [注销登录](login/exit.md)
- [x] [登录记录](login/login_notice.md)
- [ ] [消息中心](message)
- [ ] [通知类消息](message/msg.md)
- [ ] [私信](message/private_msg.md)
- [ ] [设置](message/config.md)
- [ ] [用户](user)
- [x] [基本信息](user/info.md)
- [x] [状态数](user/status_number.md)
- [x] [关系](user/relation.md)
- [ ] [个人空间](user/space.md)
- [x] [检查昵称是否可注册](user/check_nickname.md)
- [x] [用户注册](user/register.md)
- [ ] [大会员](vip)
- [ ] [大会员基本信息](vip/info.md)
- [ ] [大会员中心](vip/center.md)
- [ ] [大会员签到](vip/clockin.md)
- [ ] [大会员操作](vip/action.md)
- [ ] [视频](video)
- [x] [视频分区一览 (分区代码)](video/video_zone.md)
- [x] [基本信息](video/info.md)
- [x] [状态数](video/status_number.md)
- [x] [快照](video/snapshot.md)
- [x] [点赞 & 投币 & 收藏 & 分享](video/like_coin_fav.md)
- [ ] [TAG](video/tags.md)
- [x] [视频推荐](video/recommend.md)
- [x] [播放&下载地址 (视频流)](video/videostream_url.md)
- [ ] [互动视频](video/interact_video.md)
- [x] [高能进度条](video/pbp.md)
- [ ] [信息上报 (心跳及记录历史)](video/report.md)
- [x] [视频属性数据](video/attribute_data.md)
- [x] [视频在线人数](video/online.md)
- [ ] [剧集 (番剧、影视)](bangumi)
- [ ] [基本信息](bangumi/info.md)
- [ ] [播放&下载地址(视频流)](bangumi/videostream_url.md)
- [ ] [时间轴](bangumi/timeline.md)
- [x] [登录基本信息](docs/login/login_info.md)
- [ ] [个人中心](docs/login/member_center.md)
- [ ] [注销登录](docs/login/exit.md)
- [x] [登录记录](docs/login/login_notice.md)
- [ ] [消息中心](docs/message)
- [ ] [通知类消息](docs/message/msg.md)
- [ ] [私信](docs/message/private_msg.md)
- [ ] 设置
- [ ] [用户](docs/user)
- [x] [基本信息](docs/user/info.md)
- [x] [状态数](docs/user/status_number.md)
- [x] [关系](docs/user/relation.md)
- [ ] [个人空间](docs/user/space.md)
- [x] [检查昵称是否可注册](docs/user/check_nickname.md)
- [x] [用户注册](docs/user/register.md)
- [ ] [大会员](docs/vip)
- [ ] [大会员基本信息](docs/vip/info.md)
- [ ] [大会员中心](docs/vip/center.md)
- [ ] [大会员签到](docs/vip/clockin.md)
- [ ] [大会员操作](docs/vip/action.md)
- [ ] [视频](docs/video)
- [x] [视频分区一览 (分区代码)](docs/video/video_zone.md)
- [x] [基本信息](docs/video/info.md)
- [x] [状态数](docs/video/status_number.md)
- [x] [快照](docs/video/snapshot.md)
- [x] [点赞 & 投币 & 收藏 & 分享](docs/video/action.md)
- [ ] [TAG](docs/video/tags.md)
- [x] [视频推荐](docs/video/recommend.md)
- [x] [播放&下载地址 (视频流)](docs/video/videostream_url.md)
- [ ] [互动视频](docs/video/interact_video.md)
- [x] [高能进度条](docs/video/pbp.md)
- [ ] [信息上报 (心跳及记录历史)](docs/video/report.md)
- [x] [视频属性数据](docs/video/attribute_data.md)
- [x] [视频在线人数](docs/video/online.md)
- [ ] [剧集 (番剧、影视)](docs/bangumi)
- [ ] [基本信息](docs/bangumi/info.md)
- [ ] [播放&下载地址(视频流)](docs/bangumi/videostream_url.md)
- [ ] [时间轴](docs/bangumi/timeline.md)
- [ ] 状态数
- [ ] 操作
- [ ] [视频弹幕](danmaku)
- [x] [protobuf 实时弹幕](danmaku/danmaku_proto.md)
- [x] [protobuf 弹幕元数据BAS 弹幕 / 互动弹幕)](danmaku/danmaku_view_proto.md)
- [x] [xml 实时弹幕](danmaku/danmaku_xml.md)
- [x] [历史弹幕](danmaku/history.md)
- [x] [快照](danmaku/snapshot.md)
- [ ] [弹幕操作](danmaku/action.md)
- [ ] [视频弹幕](docs/danmaku)
- [x] [protobuf 实时弹幕](docs/danmaku/danmaku_proto.md)
- [x] [protobuf 弹幕元数据BAS 弹幕 / 互动弹幕)](docs/danmaku/danmaku_view_proto.md)
- [x] [xml 实时弹幕](docs/danmaku/danmaku_xml.md)
- [x] [历史弹幕](docs/danmaku/history.md)
- [x] [快照](docs/danmaku/snapshot.md)
- [ ] [弹幕操作](docs/danmaku/action.md)
- [ ] 高级弹幕
- [ ] 屏蔽管理
- [ ] 智能防挡弹幕
- [x] [弹幕个人配置修改](danmaku/config.md)
- [x] [名词解释](danmaku/buzzword.md)
- [x] [视频笔记](note)
- [x] [笔记列表](note/list.md)
- [x] [笔记详细信息](note/info.md)
- [x] [笔记操作](note/action.md)
- [ ] [专栏](article)
- [x] [弹幕个人配置修改](docs/danmaku/config.md)
- [x] [名词解释](docs/danmaku/buzzword.md)
- [x] [视频笔记](docs/note)
- [x] [笔记列表](docs/note/list.md)
- [x] [笔记详细信息](docs/note/info.md)
- [x] [笔记操作](docs/note/action.md)
- [ ] [专栏](docs/article)
- [ ] 分区
- [X] [基本信息](article/info.md)
- [X] [点赞 & 投币 & 收藏 & 分享](article/like_coin_fav.md)
- [X] [文集基本信息](article/articles.md)
- [X] [获取用户专栏文章列表](article/list.md)
- [ ] [音频](audio)
- [x] [歌曲基本信息](audio/info.md)
- [ ] [歌单 & 音频收藏夹详细信息](audio/music_list.md)
- [ ] [状态数](audio/status_number.md)
- [ ] [投币 & 收藏](audio/coin&fav.md)
- [x] [播放 & 下载地址(音频流)](audio/musicstream_url.md)
- [X] [基本信息](docs/article/info.md)
- [X] [点赞 & 投币 & 收藏 & 分享](docs/article/like_coin_fav.md)
- [X] [文集基本信息](docs/article/articles.md)
- [X] [获取用户专栏文章列表](docs/article/list.md)
- [ ] [音频](docs/audio)
- [x] [歌曲基本信息](docs/audio/info.md)
- [ ] [歌单 & 音频收藏夹详细信息](docs/audio/music_list.md)
- [ ] [状态数](docs/audio/status_number.md)
- [ ] [投币 & 收藏](docs/audio/action.md)
- [x] [播放 & 下载地址(音频流)](docs/audio/musicstream_url.md)
- [ ] 音频榜单
- [ ] [排行榜 & 最新视频](ranking&dynamic)
- [ ] [排行榜](ranking&dynamic/ranking.md)
- [ ] [热门视频](ranking&dynamic/popular.md)
- [ ] [最新视频](ranking&dynamic/dynamic.md)
- [ ] [搜索](search)
- [x] [搜索请求](search/search_request.md)
- [x] [搜索结果](search/search_response.md)
- [x] [默认搜索 & 热搜](search/hot.md)
- [x] [搜索建议](search/suggest.md)
- [ ] [小黑屋](blackroom)
- [ ] [排行榜 & 最新视频](docs/ranking&dynamic)
- [ ] [排行榜](docs/ranking&dynamic/ranking.md)
- [ ] [热门视频](docs/ranking&dynamic/popular.md)
- [ ] [最新视频](docs/ranking&dynamic/dynamic.md)
- [ ] [搜索](docs/search)
- [x] [搜索请求](docs/search/search_request.md)
- [x] [搜索结果](docs/search/search_response.md)
- [x] [默认搜索 & 热搜](docs/search/hot.md)
- [x] [搜索建议](docs/search/suggest.md)
- [ ] [小黑屋](docs/blackroom)
- [ ] 基本信息
- [x] [封禁公示](blackroom/banlist.md)
- [x] [风纪委员及众裁案件相关](blackroom/jury)
- [x] [风纪委员基本信息](blackroom/jury/base_info.md)
- [x] [众裁案件基本信息](blackroom/jury/judgement_info.md)
- [x] [裁决操作](blackroom/jury/action.md)
- [x] [评论区](comment)
- [x] [评论区明细](comment/list.md)
- [x] [操作](comment/action.md)
- [ ] [表情](emoji)
- [x] [表情及表情包信息](emoji/list.md)
- [x] [操作](emoji/action.md)
- [ ] [创作中心](creativecenter)
- [ ] [统计与数据](creativecenter/statistics&data.md)
- [x] [封禁公示](docs/blackroom/banlist.md)
- [x] [风纪委员及众裁案件相关](docs/blackroom/jury)
- [x] [风纪委员基本信息](docs/blackroom/jury/base_info.md)
- [x] [众裁案件基本信息](docs/blackroom/jury/judgement_info.md)
- [x] [裁决操作](docs/blackroom/jury/action.md)
- [x] [评论区](docs/comment)
- [x] [评论区明细](docs/comment/list.md)
- [x] [操作](docs/comment/action.md)
- [ ] [表情](docs/emoji)
- [x] [表情及表情包信息](docs/emoji/list.md)
- [x] [操作](docs/emoji/action.md)
- [ ] [创作中心](docs/creativecenter)
- [ ] [统计与数据](docs/creativecenter/statistics&data.md)
- [ ] 列表查询相关
- [x] [电磁力数据](creativecenter/railgun.md)
- [x] [实时广播(通讯协议)](broadcast)
- [x] [视频内广播](broadcast/video_room.md)
- [ ] [充电](electric)
- [x] [B币方式](electric/Bcoin.md)
- [x] [微信 & 支付宝方式](electric/WeChat&Alipay.md)
- [x] [充电留言](electric/charge_msg.md)
- [x] [充电列表](electric/charge_list.md)
- [ ] [动态](dynamic)
- [ ] [动态基本信息](dynamic/basicInfo.md)
- [ ] [发送 & 转载动态](dynamic/publish.md)
- [ ] [根据关键字搜索用户at 别人时的填充列表)](dynamic/atlist.md)
- [ ] [操作](dynamic/action.md)
- [x] [电磁力数据](docs/creativecenter/railgun.md)
- [x] [实时广播(通讯协议)](docs/broadcast)
- [x] [视频内广播](docs/broadcast/video_room.md)
- [ ] [充电](docs/electric)
- [x] [B币方式](docs/electric/Bcoin.md)
- [x] [微信 & 支付宝方式](docs/electric/WeChat&Alipay.md)
- [x] [充电留言](docs/electric/charge_msg.md)
- [x] [充电列表](docs/electric/charge_list.md)
- [ ] [动态](docs/dynamic)
- [ ] [动态基本信息](docs/dynamic/basicInfo.md)
- [ ] [发送 & 转载动态](docs/dynamic/publish.md)
- [ ] [根据关键字搜索用户at 别人时的填充列表)](docs/dynamic/atlist.md)
- [ ] [操作](docs/dynamic/action.md)
- [ ] 动态列表
- [x] [特定话题动态列表](/dynamic/tag_dynamics.md)
- [ ] [动态内容](/dynamic/get_dynamic_detail.md)
- [ ] [相簿](album)
- [x] [基本信息](album/info.md)
- [x] [相簿列表](album/list.md)
- [x] [推荐作者](album/recommend_author.md)
- [x] [活动列表](album/activity_list.md)
- [x] [操作](album/action.md)
- [x] [特定话题动态列表](docs/dynamic/tag_dynamics.md)
- [ ] [动态内容](docs/dynamic/get_dynamic_detail.md)
- [ ] [相簿](docs/album)
- [x] [基本信息](docs/album/info.md)
- [x] [相簿列表](docs/album/list.md)
- [x] [推荐作者](docs/album/recommend_author.md)
- [x] [活动列表](docs/album/activity_list.md)
- [x] [操作](docs/album/action.md)
- [ ] 投稿
- [ ] [历史记录 & 稍后再看](history&toview)
- [x] [历史记录](history&toview/history.md)
- [x] [稍后再看](history&toview/toview.md)
- [ ] [收藏夹](fav)
- [x] [基本信息](fav/info.md)
- [x] [收藏夹内容](fav/list.md)
- [ ] [收藏夹操作](fav/action.md)
- [ ] [课程](cheese)
- [x] [课程基本信息](cheese/info.md)
- [ ] [历史记录 & 稍后再看](docs/history&toview)
- [x] [历史记录](docs/history&toview/history.md)
- [x] [稍后再看](docs/history&toview/toview.md)
- [ ] [收藏夹](docs/fav)
- [x] [基本信息](docs/fav/info.md)
- [x] [收藏夹内容](docs/fav/list.md)
- [ ] [收藏夹操作](docs/fav/action.md)
- [ ] [课程](docs/cheese)
- [x] [课程基本信息](docs/cheese/info.md)
- [ ] 已购课程
- [ ] 分区推荐列表
- [ ] 操作
- [x] [播放 & 下载地址(视频流)](cheese/videostream_url.md)
- [ ] [直播](live)
- [ ] [直播间基本信息](live/info.md)
- [ ] [直播分区](live/live_area.md)
- [ ] [直播间管理](live/manage.md)
- [x] [播放 & 下载地址(视频流)](docs/cheese/videostream_url.md)
- [ ] [直播](docs/live)
- [ ] [直播间基本信息](docs/live/info.md)
- [ ] [直播分区](docs/live/live_area.md)
- [ ] [直播间管理](docs/live/manage.md)
- [ ] 直播间操作
- [ ] [直播视频流](live/live_stream.md)
- [ ] [直播信息流](live/message_stream.md)
- [ ] [直播红包](live/redpocket.md)
- [ ] [转正答题](newbie_exam)
- [x] [查询信息](newbie_exam/info.md)
- [x] [拉取题目](newbie_exam/fetch.md)
- [x] [操作](newbie_exam/action.md)
- [ ] [直播视频流](docs/live/live_stream.md)
- [ ] [直播信息流](docs/live/message_stream.md)
- [ ] [直播红包](docs/live/redpocket.md)
- [ ] [转正答题](docs/newbie_exam)
- [x] [查询信息](docs/newbie_exam/info.md)
- [x] [拉取题目](docs/newbie_exam/fetch.md)
- [x] [操作](docs/newbie_exam/action.md)
- [ ] B币钱包
- [ ] 基本信息
- [ ] B币充值
- [ ] 贝壳相关
- [ ] [哔哩哔哩漫画](manga)
- [x] [签到](manga/ClockIn.md)
- [x] [积分商城](manga/point_shop.md)
- [x] [漫画操作](manga/Comic.md)
- [x] [漫画赛季](manga/Season.md)
- [x] [漫读券/已购相关](manga/User.md)
- [x] [下载](manga/Download.md)
- [x] [data.index解析](manga/index_file.md)
- [ ] [哔哩哔哩漫画](docs/manga)
- [x] [签到](docs/manga/ClockIn.md)
- [x] [积分商城](docs/manga/point_shop.md)
- [x] [漫画操作](docs/manga/Comic.md)
- [x] [漫画赛季](docs/manga/Season.md)
- [x] [漫读券/已购相关](docs/manga/User.md)
- [x] [下载](docs/manga/Download.md)
- [x] [data.index解析](docs/manga/index_file.md)
- [ ] 哔哩哔哩游戏
- [ ] [终端网络查询](clientinfo)
- [x] [基于ip的地理位置查询](clientinfo/ip.md)
- [x] [终端信息查询](clientinfo/client_info.md)
- [ ] [其他](other)
- [x] [获取当前时间戳](other/time_stamp.md)
- [ ] [web端组件](web_widget)
- [x] [分区当日投稿数](web_widget/zone_upload.md)
- [x] [404 页漫画收集](web_widget/404_manga.md)
- [ ] [APP端组件](APP_widget)
- [x] [开屏图片 + 恰饭珍贵录像](APP_widget/splash.md)
- [ ] [个性装扮](garb)
- [x] [APP 主题](garb/skin.md)
- [x] [主题色](garb/color.md)
- [ ] [终端网络查询](docs/clientinfo)
- [x] [基于ip的地理位置查询](docs/clientinfo/ip.md)
- [x] [终端信息查询](docs/clientinfo/client_info.md)
- [ ] [其他](docs/other)
- [x] [获取当前时间戳](docs/other/time_stamp.md)
- [ ] [web端组件](docs/web_widget)
- [x] [分区当日投稿数](docs/web_widget/zone_upload.md)
- [x] [404 页漫画收集](docs/web_widget/404_manga.md)
- [ ] [APP端组件](docs/APP_widget)
- [x] [开屏图片 + 恰饭珍贵录像](docs/APP_widget/splash.md)
- [ ] [个性装扮](docs/garb)
- [x] [APP 主题](docs/garb/skin.md)
- [x] [主题色](docs/garb/color.md)
## ✨鸣谢
@ -251,7 +256,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a )
## 💦交流
<img src="./imgs/up_face.jpg" width="100" height="100">
<img src="https://avatars.githubusercontent.com/u/45892418" width="100" height="100">
⚠注意:开源社群欢迎交流探讨,**拒绝**咨询、**不支持**合作,**黑产号**一经发现立即拉黑并举报相关 SRC
@ -266,7 +271,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a )
WeChat & Alipay
<img src="./imgs/sponsorQR.jpg" width="300" height="300">
<img src="./assets/img/sponsorQR.jpg" width="300" height="300">
OR Aifadian[https://afdian.net/@ShakaiAneE](https://afdian.net/@ShakaiAneE)

View File

@ -1,176 +0,0 @@
# 相簿操作
- [~~点赞相簿~~](#~~点赞相簿~~)
- [~~收藏相簿~~](#~~收藏相簿~~)
- [取消收藏相簿](#取消收藏相簿)
---
## ~~点赞相簿~~
> https://api.vc.bilibili.com/link_draw/v2/Vote/operate
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | ---------------------- |
| doc_id | num | 相簿id | 必要 | |
| type | num | 操作方式 | 必要 | 1点赞<br />2取消赞 |
| csrf_token | str | CSRF Token位于cookie | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />1参数错误<br />3未登录<br />110022已经操作过了 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---------------------- |
| type | num | 操作方式 | 1点赞<br />2取消赞 |
**示例:**
点赞相簿`id=99184721`
```shell
curl 'https://api.vc.bilibili.com/link_draw/v2/Vote/operate' \
--data-urlencode 'doc_id=99184721' \
--data-urlencode 'type=1' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": {
"type": 1
}
}
```
</details>
## ~~收藏相簿~~
> https://api.vc.bilibili.com/user_plus/v1/Fav/add
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | ------------ |
| fav_id | num | 相簿id | 必要 | |
| biz_type | num | 2 | 必要 | 作用尚不明确 |
| csrf_token | str | CSRF Token位于cookie | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-400参数错误<br />-500未登录<br />-507已收藏 |
| msg | str | 错误信息 | 默认为OK |
| message | str | 错误信息 | 默认为OK |
| data | array | 空 | |
**示例:**
收藏相簿`id=99184721`
```shell
curl 'https:///api.vc.bilibili.com/user_plus/v1/Fav/add' \
--data-urlencode 'fav_id=99184721' \
--data-urlencode 'biz_type=2' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "OK",
"message": "OK",
"data": []
}
```
</details>
## 取消收藏相簿
> https://api.vc.bilibili.com/user_plus/v1/Fav/delete
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | ------------ |
| fav_id | num | 相簿id | 必要 | |
| biz_type | num | 2 | 必要 | 作用尚不明确 |
| csrf_token | str | CSRF Token位于cookie | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | --------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400参数错误<br />-500未登录 |
| msg | str | 错误信息 | 默认为OK |
| message | str | 错误信息 | 默认为OK |
| data | array | 空 | |
**示例:**
取消收藏相簿`id=99184721`
```shell
curl 'https://api.vc.bilibili.com/user_plus/v1/Fav/delete' \
--data-urlencode 'fav_id=99184721' \
--data-urlencode 'biz_type=2' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "OK",
"message": "OK",
"data": []
}
```
</details>

View File

@ -1,152 +0,0 @@
# 相簿活动列表
- [获取相簿热门活动列表](#获取相簿热门活动列表)
---
## 获取相簿热门活动列表
> https://api.vc.bilibili.com/photo_activity/v2/Activity/list
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------ | --------------------------------------------- |
| type | num | 活动类型 | 非必要 | 0全部<br/>1展示类<br/>2比赛类 |
| biz | num | 分区 | 非必要 | 0全部<br />1画友<br/>2摄影<br />默认为0 |
| page_num | num | 页码 | 非必要 | 默认为4 |
| page_size | num | 每页项数 | 非必要 | 默认为0 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------ |
| code | num | 返回值 | 0成功<br />1参数错误 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ----- | ---------- | ---- |
| total_count | str | 总计活动数 | |
| items | array | 活动列表 | |
`data`中的`items`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| 0 | obj | 活动 1 | |
| n | obj | 活动 (n+1) | |
| …… | obj | …… | …… |
`data`中的`items`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------- | ------------------------ |
| cover | str | 活动图片url | |
| title | str | 活动标题 | |
| link | str | 活动页面url | |
| type | num | 活动类型 | 1展示类<br/>2比赛类 |
| biz | num | 所属分区 | 1画友<br/>2摄影 |
| tag | str | 活动关联的TAG | |
| start_time | num | 开始时间 | 时间戳 |
| end_time | num | 结束时间 | 时间戳 |
| desc | str | 备注 | |
| desc_type | num | 活动状态 | 1已结束<br />2进行中 |
**示例:**
获取`画友`分区全部类型的5条活动
```shell
curl -G 'https://api.vc.bilibili.com/photo_activity/v2/Activity/list' \
--data-urlencode 'type=0' \
--data-urlencode 'biz=1' \
--data-urlencode 'page_num=0' \
--data-urlencode 'page_size=5'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": {
"total_count": 21,
"items": [
{
"cover": "http://i0.hdslb.com/bfs/vc/344d175cf88f217ce8bd0f004a2c5e770eff2e03.png",
"title": "#月饼拟人#创作大赛!丰厚奖励等你来拿!",
"link": "https://www.bilibili.com/read/cv1102416",
"type": 1,
"biz": 1,
"tag": "",
"start_time": 1535817600,
"end_time": 1540915200,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/63d48fbc37f0142a9c72e06ebc950d4089f881d6.png",
"title": "「ISLAND」同人绘画大赛",
"link": "https://www.bilibili.com/blackboard/activity-rkOlNomMQ.html",
"type": 2,
"biz": 1,
"tag": "ISLAND同人绘画",
"start_time": 1530720000,
"end_time": 1534435200,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/08d20bc6c10e1e310946ebaaf56c2c90c921644d.jpg",
"title": "我家大师兄脑子有坑同人绘画大赛",
"link": "https://www.bilibili.com/blackboard/activity-S1lV0Ot6M.html",
"type": 2,
"biz": 1,
"tag": "兄坑同人绘画大赛",
"start_time": 1525449600,
"end_time": 1528473600,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/4eb48398ec0824e96fc878235536f2e0b4a8aef5.jpg",
"title": "国宝复“活”计划",
"link": "https://www.bilibili.com/blackboard/activity-SJ4hL_UFz.html",
"type": 2,
"biz": 1,
"tag": "国宝复“活”计划",
"start_time": 1521388800,
"end_time": 1525017600,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/9068f91f62ea5a36cbafff263d7e47af99cc9836.jpg",
"title": "画师专访——管郁生",
"link": "https://www.bilibili.com/blackboard/interview-guanyusheng.html",
"type": 1,
"biz": 1,
"tag": "",
"start_time": 1517414400,
"end_time": 0,
"desc": "进行中",
"desc_type": 2
}
]
}
}
```
</details>

View File

@ -1,249 +0,0 @@
# 相簿基本信息
- [获取相簿详细信息](#获取相簿详细信息)
---
## 获取相簿详细信息
>https://api.vc.bilibili.com/link_draw/v1/doc/detail
*请求方式GET*
认证方式CookieSESSDSTA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---------- | ------ | ---- |
| doc_id | num | 目标相簿id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------- |
| code | num | 返回值 | 0成功<br />110001找不到目标相簿 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| user | obj | 作者信息 | |
| item | obj | 相簿信息 | |
`data`中的`user`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ---------- | ---- |
| uid | num | 作者mid | |
| head_url | str | 头像url | |
| name | str | 昵称 | |
| vip | obj | 会员信息 | |
| upload_count | str | 相簿投稿数 | |
`user`中的`vip`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------ | ------------------------------------------------- |
| vipType | num | 会员类型 | 0<br />1月度大会员<br />2年度及以上大会员 |
| vipDueDate | num | 会员到期时间 | 毫秒 时间戳 |
| dueRemark | str | 空 | 作用尚不明确 |
| accessStatus | num | 0 | 作用尚不明确 |
| vipStatus | num | 会员开通状态 | 0<br />1有 |
| vipStatusWarn | str | 空 | 作用尚不明确 |
| themeType | num | 0 | 作用尚不明确 |
| label | obj | | 作用尚不明确 |
`vip`中的`label`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ------------ |
| path | str | 空 | 作用尚不明确 |
`data`中的`item`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ----- | ------------------ | ------------------------------------------------------------ |
| biz | num | 相簿分区 | 1画友<br />2摄影<br />3日常 |
| doc_id | num | 相簿id | |
| poster_uid | num | 作者mid | |
| category | str | 子分区标识 | coscosplay<br />daily日常<br />illustration插画<br />comic漫画<br />draw其他<br />sifu私服 |
| type | num | 相簿类型 | 0原创<br />1同人 |
| title | str | 标题 | |
| tags | array | 相簿TAG | |
| pictures | array | 相簿图片 | |
| source | null | | 作用尚不明确 |
| upload_time | str | 投稿时间(时间码) | YYYY-MM-DD hh:mm:ss |
| upload_timestamp | num | 投稿时间(时间戳) | |
| upload_time_text | str | 投稿时间(文本) | |
| description | str | 简介 | |
| role | null | | 作用尚不明确 |
| settings | obj | 权限配置 | |
| already_collected | num | 是否已收藏 | 需要登录Cookie<br />否则恒为0 |
| already_liked | num | 0 | 作用尚不明确 |
| user_status | num | 0 | 作用尚不明确 |
| at_control | str | 空 | 作用尚不明确 |
| view_count | num | 观看数 | |
| like_count | num | 0 | 作用尚不明确 |
| collect_count | num | 收藏数 | |
| verify_status | num | 1 | 作用尚不明确 |
| already_voted | num | 是否已点赞 | 需要登录Cookie<br />否则恒为0 |
| vote_count | num | 点赞数 | |
| comment_count | num | 评论数 | |
`item`中的`tags`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ---- |
| 0 | obj | TAG 1 | |
| n | obj | TAG (n+1) | |
| …… | obj | …… | …… |
`item`中的`tags`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | --------------- | --------------- |
| tag | str | TAG名 | |
| type | num | 类型? | |
| category | str | TAG所属子分区名 | |
| link | str | 活动页面url | 是活动TAG有此项 |
| text | str | TAG名 | |
| name | str | TAG名 | |
`item`中的`pictures`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| 0 | obj | 图片 1 | |
| n | obj | 图片 (n+1) | |
| …… | obj | …… | …… |
`item`中的`pictures`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------- | ----------- |
| img_src | str | 图片url | |
| img_width | num | 图片宽度 | |
| img_height | num | 图片高度 | |
| img_size | num | 图片大小 | 单位为KByte |
`item`中的`settings`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------ | ------------------------------------------------------------ |
| copy_forbidden | num | 禁止转载标志 | 0不设置转载权限<br />1开放授权-署名-非商用转载<br />2作者授权-署名-非商用转载<br />3禁止转载 |
**示例:**
查询相簿`id=99184721`的详细信息
```shell
curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/detail' \
--data-urlencode 'doc_id=99184721' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": {
"user": {
"uid": 813818,
"head_url": "https://i2.hdslb.com/bfs/face/26b12390399f3e82fb913922938f8a6662d28665.jpg",
"name": "QYS3",
"vip": {
"vipType": 2,
"vipDueDate": 1613750400000,
"dueRemark": "",
"accessStatus": 0,
"vipStatus": 1,
"vipStatusWarn": "",
"themeType": 0,
"label": {
"path": ""
}
},
"upload_count": "171"
},
"item": {
"biz": 1,
"doc_id": 99184721,
"poster_uid": 813818,
"category": "illustration",
"type": 1,
"title": "旅行",
"tags": [
{
"tag": "魔女之旅",
"type": 4,
"category": "illustration",
"text": "魔女之旅",
"name": "魔女之旅"
},
{
"tag": "伊蕾娜",
"type": 3,
"category": "illustration",
"text": "伊蕾娜",
"name": "伊蕾娜"
},
{
"tag": "旅行",
"type": 3,
"category": "illustration",
"text": "旅行",
"name": "旅行"
},
{
"tag": "魔女",
"type": 3,
"category": "illustration",
"text": "魔女",
"name": "魔女"
}
],
"pictures": [
{
"img_src": "https://i0.hdslb.com/bfs/album/d531e3dae34ef65b44ecdb2914d4cc4f5a4da998.jpg",
"img_width": 1236,
"img_height": 1600,
"img_size": 508
}
],
"source": null,
"upload_time": "2020-11-23 23:03:12",
"upload_timestamp": 1606143792,
"upload_time_text": "3天前",
"description": "伊蕾娜世界第一~",
"role": null,
"settings": {
"copy_forbidden": 0
},
"already_collected": 0,
"already_liked": 0,
"user_status": 0,
"at_control": "",
"view_count": 143699,
"like_count": 0,
"collect_count": 54,
"verify_status": 1,
"already_voted": 0,
"vote_count": 2258,
"comment_count": 98
}
}
}
```
</details>

File diff suppressed because it is too large Load Diff

View File

@ -1,171 +0,0 @@
# 相簿推荐作者
- [获取摄影推荐作者](#获取摄影推荐作者)
- [获取画友推荐作者](#获取画友推荐作者)
---
## 获取摄影推荐作者
> https://api.vc.bilibili.com/link_draw/v2/Photo/uper
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------- |
| num | num | 请求数量 | 非必要 | 默认为6 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------- |
| code | num | 返回值 | 0成功 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | array | 信息本体 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| 0 | obj | 作者 1 | |
| n | obj | 作者 (n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------- | ------------ |
| uid | num | 作者mid | |
| head_url | str | 头像url | |
| name | str | 昵称 | |
| is_followed | num | 0 | 作用尚不明确 |
**示例:**
请求获取摄影推荐作者数量为5
```shell
curl -G 'https://api.vc.bilibili.com/link_draw/v2/Photo/uper' \
--data-urlencode 'num=5'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": [
{
"uid": 36974706,
"head_url": "https://i2.hdslb.com/bfs/face/fa7ef3a5124e2ebfd2094e0bc2f42c752c1abd21.jpg",
"name": "幹物小幺",
"is_followed": 0
},
{
"uid": 3223860,
"head_url": "https://i0.hdslb.com/bfs/face/c5400d25eb7700cd41d88dff5b800bd55ec27cfe.jpg",
"name": "您算哪根葱",
"is_followed": 0
},
{
"uid": 941228,
"head_url": "https://i2.hdslb.com/bfs/face/f38f000d4df21e9bea96d3573efdf81ae02f4ddf.jpg",
"name": "碳酸熊卡",
"is_followed": 0
},
{
"uid": 2624541,
"head_url": "https://i0.hdslb.com/bfs/face/86ccd746af8b1e8bfcdd432de7f0ce1e2b2cb8b0.jpg",
"name": "_一之濑光",
"is_followed": 0
},
{
"uid": 29963706,
"head_url": "https://i1.hdslb.com/bfs/face/c054f097f1b882fc6ad8a67d0f0f88e3acd3bc88.jpg",
"name": "公子温温温如",
"is_followed": 0
}
]
}
```
</details>
## 获取画友推荐作者
> https://api.vc.bilibili.com/link_draw/v2/Doc/drawer
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------- |
| num | num | 请求数量 | 非必要 | 默认为6 |
**json回复**
见[获取摄影推荐作者](#获取摄影推荐作者)中的响应内容
**示例:**
请求获取画友推荐作者数量为5
```shell
curl -G 'https://api.vc.bilibili.com/link_draw/v2/Doc/drawer' \
--data-urlencode 'num=5'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": [
{
"uid": 7905675,
"head_url": "http://i1.hdslb.com/bfs/face/d4765fd020e8b96e331861cb4d6a3afde4e70d1d.jpg",
"name": "我真的是离城",
"is_followed": 0
},
{
"uid": 20356494,
"head_url": "http://i0.hdslb.com/bfs/face/0686141506894df969832d7dda91f2a0c4cdc24b.jpg",
"name": "ZM-PANDA",
"is_followed": 0
},
{
"uid": 4836885,
"head_url": "http://i1.hdslb.com/bfs/face/48822c5aa7aeae9d3dd2010388baa2b0e1c5cc0a.jpg",
"name": "六六子w",
"is_followed": 0
},
{
"uid": 2575079,
"head_url": "http://i1.hdslb.com/bfs/face/cb3d6f4fb2fbe5aa85ab8773a1a19cec6d8ff1e1.jpg",
"name": "念萦墨葵",
"is_followed": 0
},
{
"uid": 1904878,
"head_url": "http://i0.hdslb.com/bfs/face/f6de926b3905ec7bb9e36202d80eb931d12f70ac.jpg",
"name": "fedsnk",
"is_followed": 0
}
]
}
```
</details>

View File

@ -1,315 +0,0 @@
# 文集基本信息
- [获取文集基本信息](#获取文集基本信息)
---
## 获取文集基本信息
> https://api.bilibili.com/x/article/list/web/articles
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 文集rlid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无此信息 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ---------------- | ------------------------------------------------------------ |
| list | obj | 文集概览 | |
| articles | array | 文集内的文章列表 | |
| author | obj | 文集作者信息 | |
| last | obj | - | 作用尚不明确<br />结构与data.articles[]中相似 |
| attention | bool | 是否关注文集作者 | false未关注<br />true已关注<br />需要登录(Cookie) <br />未登录为false |
`data`中的`list`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | --------------- | ------------ |
| id | num | 文集rlid | |
| mid | num | 文集作者mid | |
| 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未点赞<br />1已点赞<br />需要登录(Cookie) <br />未登录为0 |
`articles`数组中的对象中的`stats`
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| view | num | 阅读数 | |
| favorite | num | 收藏数 | |
| like | num | 点赞数 | |
| dislike | num | 点踩数 | |
| reply | num | 评论数 | |
| share | num | 分享数 | |
| coin | num | 投币数 | |
| dynamic | num | 动态转发数 | |
`articles`数组中的对象中的`author`
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | -------------- | ---- |
| mid | num | 作者mid | |
| name | str | 作者昵称 | |
| face | str | 作者头像url | |
| official_verify | obj | 作者认证信息 | |
| nameplate | obj | 作者勋章 | |
| vip | obj | 作者大会员状态 | |
**示例:**
查询文集`rl207146`的基本信息
```shell
curl -G 'https://api.bilibili.com/x/article/list/web/articles' \
--data-urlencode 'id=207146' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>

View File

@ -1,81 +0,0 @@
# 专栏分类
## 游戏
| id | parent_id | name |
|-----|-----------|------|
| 1 | 0 | 游戏 |
| 6 | 1 | 单机游戏 |
| 7 | 1 | 电子竞技 |
| 8 | 1 | 手机游戏 |
| 9 | 1 | 网络游戏 |
| 10 | 1 | 桌游棋牌 |
## 动画
| id | parent_id | name |
|-----|-----------|------|
| 2 | 0 | 动画 |
| 4 | 2 | 动漫杂谈 |
| 5 | 2 | 动漫资讯 |
| 31 | 2 | 动画技术 |
## 生活
| id | parent_id | name |
|-----|-----------|------|
| 3 | 0 | 生活 |
| 13 | 3 | 美食 |
| 14 | 3 | 时尚 |
| 15 | 3 | 日常 |
| 21 | 3 | 萌宠 |
| 22 | 3 | 运动 |
## 轻小说
| id | parent_id | name |
|-----|-----------|------|
| 16 | 0 | 轻小说 |
| 18 | 16 | 原创连载 |
| 19 | 16 | 同人连载 |
| 20 | 16 | 小说杂谈 |
| 32 | 16 | 短篇小说 |
## 科技
| id | parent_id | name |
|-----|-----------|------|
| 17 | 0 | 科技 |
| 25 | 17 | 人文历史 |
| 26 | 17 | 数码 |
| 27 | 17 | 汽车 |
| 33 | 17 | 自然 |
| 34 | 17 | 学习 |
## 影视
| id | parent_id | name |
|-----|-----------|------|
| 28 | 0 | 影视 |
| 12 | 28 | 电影 |
| 35 | 28 | 电视剧 |
| 36 | 28 | 纪录片 |
| 37 | 28 | 综艺 |
## 兴趣
| id | parent_id | name |
|-----|-----------|------|
| 29 | 0 | 兴趣 |
| 11 | 29 | 模型手办 |
| 23 | 29 | 绘画 |
| 24 | 29 | 手工 |
| 38 | 29 | 摄影 |
| 39 | 29 | 音乐舞蹈 |
## 笔记
| id | parent_id | name |
|-----|-----------|------|
| 41 | 0 | 笔记 |
| 42 | 41 | 全部笔记 |

View File

@ -1,186 +0,0 @@
# 专栏基本信息
- [获取专栏文章基本信息](#获取专栏文章基本信息)
---
## 获取专栏文章基本信息
> https://api.bilibili.com/x/article/viewinfo
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 专栏cvid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无此信息 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ------ | ---------------- | ------------------------------------------------------------ |
| like | num | 是否点赞 | 0未点赞<br />1已点赞<br />需要登录(Cookie) <br />未登录为0 |
| attention | bool | 是否关注文章作者 | false未关注<br />true已关注<br />需要登录(Cookie) <br />未登录为false |
| favorite | bool | 是否收藏 | false未收藏<br />true已收藏<br />需要登录(Cookie) <br />未登录为false |
| coin | num | 为文章投币数 | |
| stats | obj | 状态数信息 | |
| title | str | 文章标题 | |
| banner_url | str | 文章头图url | |
| mid | num | 文章作者mid | |
| 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<br />true是 |
| pre | num | 上一篇文章cvid | 无为0 |
| next | num | 下一篇文章cvid | 无为0 |
| share_channels | array | 分享方式列表 | |
| type | num | 文章类别 | 0文章<br />2笔记 |
`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 'https://api.bilibili.com/x/article/viewinfo' \
--data-urlencode 'id=2' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"like": 0,
"attention": false,
"favorite": false,
"coin": 0,
"stats": {
"view": 1072619,
"favorite": 5481,
"like": 16465,
"dislike": 0,
"reply": 1865,
"share": 351,
"coin": 3436,
"dynamic": 37
},
"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"
}
],
"type": 0,
"video_url": "",
"location": "",
"disable_share": false
}
}
```
</details>

View File

@ -1,178 +0,0 @@
# 专栏投币&点赞&收藏
- [点赞文章](#点赞文章)
- [投币文章](#投币文章)
- [收藏文章](#收藏文章)
---
## 点赞文章
<img src="/imgs/like.svg" width="100" height="100"/>
> https://api.bilibili.com/x/article/like
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------- | ------ | ---------------------- |
| id | num | 文章cvid | 必要 | |
| type | num | 操作方式 | 必要 | 1点赞<br />2取消赞 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功 <br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />10003不存在该稿件<br />65006已赞过<br />65004取消点赞失败 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
为文章`cv5806746`点赞
```shell
curl 'https://api.bilibili.com/x/article/like' \
--data-urlencode 'id=5806746' \
--data-urlencode 'type=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 投币文章
<img src="/imgs/coin.svg" width="100" height="100"/>
> https://api.bilibili.com/x/web-interface/coin/add
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------- | ------ | ------- |
| aid | num | 文章cvid | 必要 | |
| upid | num | 文章作者mid | 必要 | |
| multiply | num | 投币数量 | 必要 | 上限为2 |
| avtype | num | 2 | 必要 | 必须为2 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-104硬币不足<br />-111csrf校验失败<br />-400请求错误<br />10003不存在该稿件<br />34002不能给自己投币<br />34003非法的投币数量<br />34005超过投币上限 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
data 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------ | ----------------------------------------------------- |
| like | bool | 是否点赞成功 | true成功<br />false失败<br />已赞过则附加点赞失败 |
**示例:**
为文章`cv5806746`投币1枚
```shell
curl 'https://api.bilibili.com/x/web-interface/coin/add' \
--data-urlencode 'aid=5806746' \
--data-urlencode 'upid=486980924' \
--data-urlencode 'multiply=1' \
--data-urlencode 'avtype=2' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"like": false
}
}
```
</details>
## 收藏文章
<img src="/imgs/fav.svg" width="100" height="100"/>
>https://api.bilibili.com/x/article/favorites/add
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------- | ------ | ---- |
| id | num | 文章cvid | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-404无此项 |
| message | str | 错误信息 | 正确为success |
| data | obj | 信息本体 | |
**示例:**
收藏文章`cv5806746`
```shell
curl 'https://api.bilibili.com/x/article/favorites/add' \
--data-urlencode 'id=5806746' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

View File

@ -1,677 +0,0 @@
# 获取用户专栏信息
- [获取用户专栏文章列表](#获取用户专栏文章列表)
- [获取用户专栏文集列表](#获取用户专栏文集列表)
---
## 获取用户专栏文章列表
> https://api.bilibili.com/x/space/article
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|------|-----|-------|--------------------------------------------------------------------------|-----|
| mid | num | 用户uid | | √ |
| pn | num | | 默认1 | |
| ps | num | | 默认30<br/>范围:[1,30] | |
| sort | str | | `publish_time`:最新发布<br/>`view`:最多阅读<br/>`fav`:最多收藏<br/>默认:`publish_time` | |
**json回复**
### 根对象
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|--------------------|
| code | num | 返回值 | 0成功<br/>-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
### `data`对象
| 字段名 | 类型 | 内容 | 备注 |
|----------|-------|----------|-----|
| articles | array | 专栏文章信息列表 | |
| pn | num | 本次请求分页页数 | |
| ps | num | 本次请求分页大小 | |
| count | num | 专栏文章总数 | |
### `data`对象 -> `articles`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------------|-------|----------|------|
| id | num | 专栏文章id | |
| category | obj | 分类 | |
| categories | array | 分类 | |
| title | str | 标题 | |
| summary | str | 摘要 | |
| banner_url | str | 封面图 | |
| template_id | num | | |
| state | num | | |
| author | obj | UP主信息 | |
| reprint | num | | |
| image_urls | array | | |
| publish_time | num | 发布时间戳 | 单位:秒 |
| ctime | num | 提交时间戳 | 单位:秒 |
| stats | obj | 专栏文章数据统计 | |
| tags | array | 标签 | |
| words | num | | |
| dynamic | str | 粉丝动态文案 | |
| origin_image_urls | array | | |
| list | | `null` | |
| is_like | bool | | |
| media | obj | | |
| apply_time | str | `空串` | |
| check_time | str | `空串` | |
| original | num | | |
| act_id | num | | |
| dispute | | `null` | |
| authenMark | | `null` | |
| cover_avid | num | | |
| top_video_info | | `null` | |
| type | num | | |
### `data`对象 -> `articles`数组中的对象 -> `category`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|--------|-----|
| id | num | 分类id | |
| parent_id | num | 父级分类id | |
| name | str | 分类名称 | |
### `data`对象 -> `articles`数组中的对象 -> `categories`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|--------|-----|
| id | num | 分类id | |
| parent_id | num | 父级分类id | |
| name | str | 分类名称 | |
### `data`对象 -> `articles`数组中的对象 -> `author`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------------|-----|--------|-----|
| mid | num | 用户uid | |
| name | str | 用户名 | |
| face | str | 头像 | |
| pendant | obj | 头像框信息 | |
| official_verify | obj | 账号认证信息 | |
| nameplate | obj | 成就勋章信息 | |
| vip | obj | 大会员信息 | |
### `data`对象 -> `articles`数组中的对象 -> `author`对象 -> `pendant`对象
| 字段名 | 类型 | 内容 | 备注 |
|--------|-----|----------|-----|
| pid | num | 头像框id | |
| name | str | 头像框名称 | |
| image | str | 头像框图片url | |
| expire | num | 过期时间 | |
### `data`对象 -> `articles`数组中的对象 -> `author`对象 -> `official_verify`对象
| 字段名 | 类型 | 内容 | 备注 |
|------|-----|------|------------------------------|
| type | num | 是否认证 | -1<br />0个人认证<br />1机构认证 |
| desc | str | 认证备注 | |
### `data`对象 -> `articles`数组中的对象 -> `author`对象 -> `nameplate`对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------|-----|---------|-----|
| nid | num | 勋章id | |
| name | str | 勋章名称 | |
| image | str | 勋章图标 | |
| image_small | str | 勋章图标(小) | |
| level | str | 勋章等级 | |
| condition | str | 获取条件 | |
### `data`对象 -> `articles`数组中的对象 -> `author`对象 -> `vip`对象
| 字段名 | 类型 | 内容 | 备注 |
|------------------|-----|------------|---------------------------------|
| type | num | 大会员类型 | 0<br />1月大会员<br />2年度及以上大会员 |
| status | num | 大会员状态 | 0<br />1有 |
| due_date | num | 大会员过期时间时间戳 | 单位:毫秒 |
| vip_pay_type | num | 支付类型 | |
| theme_type | num | `0` | |
| label | obj | 大会员标签 | |
| avatar_subscript | num | 是否显示大会员图标 | 0不显示<br />1显示 |
| nickname_color | str | 大会员昵称颜色 | |
### `data`对象 -> `articles`数组中的对象 -> `author`对象 -> `vip`对象 -> `label`对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------|-----|--------|------------------------------------------------------------------------------------------------------------------------------|
| path | str | `空串` | |
| text | str | 会员类型文案 | `大会员` `年度大会员` `十年大会员` `百年大会员` `最强绿鲤鱼` |
| label_theme | str | 会员标签 | vip大会员<br />annual_vip年度大会员<br />ten_annual_vip十年大会员<br />hundred_annual_vip百年大会员<br/>fools_day_hundred_annual_vip最强绿鲤鱼 |
### `data`对象 -> `articles`数组中的对象 -> `stats`对象
| 字段名 | 类型 | 内容 | 备注 |
|----------|-----|-----|-------|
| view | num | 浏览数 | |
| favorite | num | 收藏数 | |
| like | num | 点赞数 | |
| dislike | num | 点踩数 | 恒为`0` |
| reply | num | 回复数 | |
| share | num | 转发数 | |
| coin | num | 投币数 | |
| dynamic | num | | |
### `data`对象 -> `articles`数组中的对象 -> `tags`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|------|-----|------|-----|
| tid | num | 标签id | |
| name | str | 标签名称 | |
### `data`对象 -> `articles`数组中的对象 -> `media`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|------|-----|
| score | num | `0` | |
| media_id | num | `0` | |
| title | str | `空串` | |
| cover | str | `空串` | |
| area | str | `空串` | |
| type_id | num | `0` | |
| type_name | str | `空串` | |
| spoiler | num | `0` | |
**示例:**
```shell
curl -L -X GET 'https://api.bilibili.com/x/space/article?mid=300021061&pn=1&ps=2&sort=publish_time'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"articles": [
{
"id": 18989884,
"category": {
"id": 15,
"parent_id": 3,
"name": "日常"
},
"categories": [
{
"id": 3,
"parent_id": 0,
"name": "生活"
},
{
"id": 15,
"parent_id": 3,
"name": "日常"
}
],
"title": "B站UP主日报2022年10月08日23点v1.1",
"summary": "冠:罗翔说刑法(2485.45万粉,+7204) 涨:肯德基(+18.37万粉) 掉Overidea_China(-186850粉) 播:开心锤锤(+927.56万) 赞:荒草音乐(+31.02万) 赞:飞翔的丘丘人(+22.08万) 充冰糖IO(+210)",
"banner_url": "https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg",
"template_id": 4,
"state": 0,
"author": {
"mid": 300021061,
"name": "狸工智能",
"face": "https://i1.hdslb.com/bfs/face/4cba9bc9d6cf6935a37ec156dedb8f8d26c1df95.jpg",
"pendant": {
"pid": 0,
"name": "",
"image": "",
"expire": 0
},
"official_verify": {
"type": -1,
"desc": ""
},
"nameplate": {
"nid": 3,
"name": "白银殿堂",
"image": "https://i2.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png",
"image_small": "https://i2.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png",
"level": "高级勋章",
"condition": "单个自制视频总播放数>=10万"
},
"vip": {
"type": 0,
"status": 0,
"due_date": 0,
"vip_pay_type": 0,
"theme_type": 0,
"label": {
"path": "",
"text": "",
"label_theme": ""
},
"avatar_subscript": 0,
"nickname_color": ""
}
},
"reprint": 0,
"image_urls": [
"https://i0.hdslb.com/bfs/article/8e5497f7854e7df3468fbc29b0dd10fcf17d1223.png"
],
"publish_time": 1665278884,
"ctime": 1665278884,
"stats": {
"view": 689,
"favorite": 2,
"like": 61,
"dislike": 0,
"reply": 18,
"share": 0,
"coin": 1,
"dynamic": 0
},
"words": 0,
"dynamic": "狸子的UP主日报📰v1.1,每天稳定更新如果咕咕咕了请艾特狸子LePtC检查狐务器 [tv_微笑] #排行榜##大数据##狸工智能#",
"origin_image_urls": [
"https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg"
],
"list": null,
"is_like": false,
"media": {
"score": 0,
"media_id": 0,
"title": "",
"cover": "",
"area": "",
"type_id": 0,
"type_name": "",
"spoiler": 0
},
"apply_time": "",
"check_time": "",
"original": 1,
"act_id": 0,
"dispute": null,
"authenMark": null,
"cover_avid": 0,
"top_video_info": null,
"type": 0
},
{
"id": 18972446,
"category": {
"id": 15,
"parent_id": 3,
"name": "日常"
},
"categories": [
{
"id": 3,
"parent_id": 0,
"name": "生活"
},
{
"id": 15,
"parent_id": 3,
"name": "日常"
}
],
"title": "B站UP主日报2022年10月07日23点v1.1",
"summary": "冠:罗翔说刑法(2484.73万粉,+8020) 涨:靖菌命(+3.61万粉) 掉Overidea_China(-8593粉) 播:开心锤锤(+971.44万) 赞:荒草音乐(+53.14万) 赞:南方都市报(+18.05万) 充:内德维德(+190)",
"banner_url": "https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg",
"template_id": 4,
"state": 0,
"author": {
"mid": 300021061,
"name": "狸工智能",
"face": "https://i1.hdslb.com/bfs/face/4cba9bc9d6cf6935a37ec156dedb8f8d26c1df95.jpg",
"pendant": {
"pid": 0,
"name": "",
"image": "",
"expire": 0
},
"official_verify": {
"type": -1,
"desc": ""
},
"nameplate": {
"nid": 3,
"name": "白银殿堂",
"image": "https://i2.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png",
"image_small": "https://i2.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png",
"level": "高级勋章",
"condition": "单个自制视频总播放数>=10万"
},
"vip": {
"type": 0,
"status": 0,
"due_date": 0,
"vip_pay_type": 0,
"theme_type": 0,
"label": {
"path": "",
"text": "",
"label_theme": ""
},
"avatar_subscript": 0,
"nickname_color": ""
}
},
"reprint": 0,
"image_urls": [
"https://i0.hdslb.com/bfs/article/8e5497f7854e7df3468fbc29b0dd10fcf17d1223.png"
],
"publish_time": 1665189149,
"ctime": 1665189149,
"stats": {
"view": 1021,
"favorite": 1,
"like": 66,
"dislike": 0,
"reply": 21,
"share": 2,
"coin": 2,
"dynamic": 0
},
"tags": [
{
"tid": 1598,
"name": "粉丝"
},
{
"tid": 422982,
"name": "狸子"
},
{
"tid": 526616,
"name": "大数据"
},
{
"tid": 14082112,
"name": "狸工智能"
},
{
"tid": 438,
"name": "排行榜"
}
],
"words": 0,
"dynamic": "狸子的UP主日报📰v1.1,每天稳定更新如果咕咕咕了请艾特狸子LePtC检查狐务器 [tv_微笑] #排行榜##大数据##狸工智能#",
"origin_image_urls": [
"https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg"
],
"list": null,
"is_like": false,
"media": {
"score": 0,
"media_id": 0,
"title": "",
"cover": "",
"area": "",
"type_id": 0,
"type_name": "",
"spoiler": 0
},
"apply_time": "",
"check_time": "",
"original": 1,
"act_id": 0,
"dispute": null,
"authenMark": null,
"cover_avid": 0,
"top_video_info": null,
"type": 0
}
],
"pn": 1,
"ps": 2,
"count": 1563
}
}
```
</details>
## 获取用户专栏文集列表
> https://api.bilibili.com/x/article/up/lists
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|----------|-----|-------|-----|-------------------|
| mid | num | 用户uid | √ | |
| sort | num | 排序方式 | | 0最近更新<br/>1最多阅读 |
| jsonp | str | | | |
| callback | str | | | |
**json回复**
### 根对象
| 字段名 | 类型 | 内容 | 备注 |
|---------|-----|------|--------------------|
| code | num | 响应码 | 0成功<br/>-400请求错误 |
| message | str | 0 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
### `data`对象
| 字段名 | 类型 | 内容 | 备注 |
|-------|-------|--------|-----|
| lists | array | 文集信息列表 | |
| total | num | 文集总数 | |
### `data`对象 -> `lists`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|----------------|-----|---------|------|
| id | num | 文集id | |
| mid | num | 作者uid | |
| name | str | 文集名称 | |
| image_url | str | 封面 | |
| update_time | num | 最后更新时间戳 | 单位:秒 |
| ctime | num | 创建时间戳 | 单位:秒 |
| publish_time | num | | 单位:秒 |
| summary | str | `空串` | |
| words | num | 总字数 | |
| read | num | 阅读量 | |
| articles_count | num | 包含文章数 | |
| state | num | `1` | |
| reason | str | `空串` | |
| apply_time | str | `空串` | |
| check_time | str | `空串` | |
**示例:**
```shell
curl -X GET 'https://api.bilibili.com/x/article/up/lists' \
--data-urlencode 'mid=2859372' \
--data-urlencode 'sort=0'
```
<details>
<summary>点击查看</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"lists": [
{
"id": 77163,
"mid": 2859372,
"name": "碟报",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1664854854,
"ctime": 1554785697,
"publish_time": 1664863200,
"summary": "",
"words": 71532,
"read": 478726,
"articles_count": 113,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 26407,
"mid": 2859372,
"name": "周榜",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1664721205,
"ctime": 1537942450,
"publish_time": 1664721307,
"summary": "",
"words": 102099,
"read": 1366280,
"articles_count": 206,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 107952,
"mid": 2859372,
"name": "制作委员会",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1646663919,
"ctime": 1563107348,
"publish_time": 1646910000,
"summary": "",
"words": 47564,
"read": 72911,
"articles_count": 10,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 26457,
"mid": 2859372,
"name": "实时榜",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1603115712,
"ctime": 1537955117,
"publish_time": 1603115719,
"summary": "",
"words": 206741,
"read": 1136352,
"articles_count": 76,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 49769,
"mid": 2859372,
"name": "预测",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1593933314,
"ctime": 1546153226,
"publish_time": 1593933314,
"summary": "",
"words": 2518,
"read": 55123,
"articles_count": 6,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 96916,
"mid": 2859372,
"name": "书籍周榜",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1559815260,
"ctime": 1559815159,
"publish_time": 1559815577,
"summary": "",
"words": 272,
"read": 2955,
"articles_count": 1,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 96610,
"mid": 2859372,
"name": "原始周榜存档",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1559721231,
"ctime": 1559720762,
"publish_time": 1559721271,
"summary": "",
"words": 290,
"read": 1498,
"articles_count": 1,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 26453,
"mid": 2859372,
"name": "杂谈",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1557303117,
"ctime": 1537954625,
"publish_time": 1557303168,
"summary": "",
"words": 10673,
"read": 38363,
"articles_count": 4,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 59028,
"mid": 2859372,
"name": "新春访谈",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1549878596,
"ctime": 1549343048,
"publish_time": 1549884125,
"summary": "",
"words": 33472,
"read": 34597,
"articles_count": 13,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
}
],
"total": 9
}
}
```
</details>

View File

@ -1,152 +0,0 @@
# 音频投币&收藏
- [查询音频收藏状态](#查询音频收藏状态)
- [查询音频投币数](#查询音频投币数)
- [投币音频](#投币音频)
---
## 查询音频收藏状态
> https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002账号未登陆<br />7201006该音频不存在或已被下架 |
| msg | str | 错误信息 | 默认为success |
| data | bool | 是否收藏 | false未收藏<br />true已收藏 |
**示例:**
查询音频`au13598`的收藏状态
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll' \
--data-urlencode 'sid=13598' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": true
}
```
</details>
## 查询音频投币数
> https://www.bilibili.com/audio/music-service-c/web/coin/audio
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002账号未登陆<br />7201006该音频不存在或已被下架 |
| msg | str | 错误信息 | 默认为success |
| data | num | 投币数量 | 0为未投币上限为2 |
**示例:**
查询音频`au13598`的投币数
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/coin/audio' \
--data-urlencode 'sid=15664' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": 1
}
```
## 投币音频
> https://www.bilibili.com/audio/music-service-c/web/coin/add
*请求方式POST*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------- | ------ | ---- |
| sid | num | 音频 auid | 必要 | |
| multiply | num | 投币数量(最大为 2 | 必要 | |
| csrf | str | CSRF Token位于 cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002账号未登陆<br />7201006该音频不存在或已被下架 |
| msg | str | 错误信息 | 默认为 0 |
| data | str | 当前投币数量 | 0 为未投币,上限为 2 |
**示例:**
为音频`au13598`投币
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/coin/add' \
--data-urlencode 'sid=15664' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "0",
"data": "1"
}
```
</details>

View File

@ -1,432 +0,0 @@
# 歌曲基本信息
- [查询歌曲基本信息](#查询歌曲基本信息)
- [查询歌曲TAG](#查询歌曲TAG)
- [查询歌曲创作成员列表](#查询歌曲创作成员列表)
- [获取歌曲歌词](#获取歌曲歌词)
---
## 查询歌曲基本信息
> https://www.bilibili.com/audio/music-service-c/web/song/info
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />7201006该音频不存在或已被下架<br />72010027版权音乐重定向 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ------ | ------------------ | ------------------ |
| id | num | 音频auid | |
| uid | num | UP主mid | |
| 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 | 歌曲所在的收藏夹mlid | 需要登录(SESSDATA) |
| coin_num | num | 投币数 | |
`data`中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| sid | num | 音频auid | |
| play | num | 播放次数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
`data`中的`vipInfo`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | ----------------------------------- |
| type | num | 会员类型 | 0<br />1月会员<br />2年会员 |
| status | num | 会员状态 | 0<br />1有 |
| due_date | num | 会员到期时间 | 时间戳 毫秒 |
| vip_pay_type | num | 会员开通状态 | 0<br />1有 |
`data`中的`collectIds`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------------- | ---- |
| 0 | num | 第1个所在的收藏夹mlid | |
| n | num | 第n+1个所在的收藏夹mlid | |
| …… | num | …… | …… |
**示例:**
查询音频`au13598`的基本信息
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/song/info' \
--data-urlencode 'sid=13598' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
## 查询歌曲TAG
> https://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 'https://www.bilibili.com/audio/music-service-c/web/tag/song' \
--data-urlencode 'sid=15664'
```
<details>
<summary>查看响应示例:</summary>
```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": "流行"
}
]
}
```
</details>
## 查询歌曲创作成员列表
> https://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歌手<br />2作词<br />3作曲<br />4编曲<br />5后期/混音<br />7封面制作<br />8音源<br />9调音<br />10演奏<br />11乐器<br />127UP主 |
`data`数组中的对象中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ---- |
| 0 | str | 成员1 | |
| n | str | 成员(n+1) | |
| …… | str | …… | …… |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ---------- | ---------------- |
| mid | num | 0 | **作用尚不明确** |
| name | str | 成员名 | |
| member_id | num | 成员id | **作用尚不明确** |
**示例:**
查询音频`au815861`的创作成员信息
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/member/song' \
--data-urlencode 'sid=815861'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
```
</details>
## 获取歌曲歌词
> https://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<br />错误时null | lrc格式歌词信息 | 无为空 |
**示例:**
获取音频`au15664`的歌词信息
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/song/lyric' \
--data-urlencode 'sid=15664' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
```
</details>

View File

@ -1,790 +0,0 @@
# 歌单&音频收藏夹详细信息
- [歌单&音频收藏夹详细信息](#歌单音频收藏夹详细信息)
- [查询自己创建的歌单](#查询自己创建的歌单)
- [查询音频收藏夹(默认歌单)信息](#查询音频收藏夹默认歌单信息)
- [查询热门歌单](#查询热门歌单)
- [查询热门榜单](#查询热门榜单)
---
## 查询自己创建的歌单
> https://www.bilibili.com/audio/music-service-c/web/collections/list
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| pn | num | 页码 | 必要 | |
| ps | num | 每页项数 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------ | ---- |
| curPage | num | 当前页码 | |
| pageCount | num | 总计页数 | |
| totalSize | num | 总计收藏夹数 | |
| pageSize | num | 当前页面项数 | |
| data | array | 歌单列表 | |
`data`中的`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | ---- |
| 0 | obj | 音频收藏夹mlid1 | |
| n | obj | 音频收藏夹mlid(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------------------ | -------------------------------- |
| id | num | 音频收藏夹mlid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 歌单标题 | |
| type | num | 收藏夹属性 | 0普通收藏夹<br />1默认收藏夹 |
| published | num | 是否公开 | 0不公开<br />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 'https://www.bilibili.com/audio/music-service-c/web/collections/list' \
--data-urlencode 'ps=2' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
共计创建了两个歌单,如下
<details>
<summary>查看响应示例:</summary>
```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
}
}
]
}
}
```
</details>
## 查询音频收藏夹(默认歌单)信息
> https://www.bilibili.com/audio/music-service-c/web/collections/info
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | ------------------ |
| sid | num | 音频收藏夹mlid | 必要 | 必须为默认收藏夹mlid |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------------------ | ---------------------- |
| id | num | 音频收藏夹mlid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 默认歌单 | 恒为`默认歌单` |
| type | num | 1 | 恒为`1` |
| published | num | 是否公开 | 0不公开<br />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 'https://www.bilibili.com/audio/music-service-c/web/collections/info' \
--data-urlencode 'sid=15967839 ' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
}
```
</details>
## 查询热门歌单
> https://www.bilibili.com/audio/music-service-c/web/menu/hit
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | ---- | --- | --- |
| pn | num | 页码 | 必要 | |
| ps | num | 每页项数 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | --------------------- | ---- | ----------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ------ | --- |
| curPage | num | 当前页码 | |
| pageCount | num | 总计页数 | |
| totalSize | num | 总计收藏夹数 | |
| pageSize | num | 当前页面项数 | |
| data | array | 歌单列表 | |
`data`中的`data`数组:
| 项 | 类型 | 内容 | 备注 |
| --- | --- | -------------- | --- |
| 0 | obj | 音频收藏夹mlid1 | |
| n | obj | 音频收藏夹mlid(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | --- | -------------- | ----------------------------- |
| menuId | num | 音频收藏夹对应的歌单amid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 歌单标题 | |
| cover | str | 歌单封面图片url | |
| intro | str | 歌单介绍 | |
| type | num | 歌单属性 | 1普通歌单<br/>2置顶歌单<br/>5PGC歌单 |
| off | num | 歌单是否公开 | 0公开<br/>1私密 |
| ctime | num | 歌单创建时间 | 时间戳 |
| curtime | num | 当前时间 | 时间戳 |
| statistic | obj | 歌单状态数信息 | |
| snum | num | 歌单包含歌曲个数 | |
`data`中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | --- | -------------- | --- |
| sid | num | 音频收藏夹对应的歌单amid | |
| play | num | 播放数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/menu/hit' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=6'
```
使用参数:`ps=1&qn=2`
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"curPage": 1,
"pageCount": 1,
"totalSize": 11,
"pageSize": 3,
"data": [{
"menuId": 10624,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "新曲推荐",
"cover": "http://i0.hdslb.com/bfs/music/a32c1ed4f6ec3f74f8240f4486a750dda3a509e5.jpg",
"intro": "每天11:00更新为你推送最新音乐",
"type": 2,
"off": 0,
"ctime": 1501209433,
"curtime": 1655712354,
"statistic": {
"sid": 10624,
"play": 2366255,
"collect": 20565,
"comment": 1104,
"share": 622
},
"snum": 16,
"attr": 0,
"isDefault": 0,
"collectionId": 0
}, {
"menuId": 125312,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "丧甜可口?你意想不到的软萌电音",
"cover": "http://i0.hdslb.com/bfs/music/04f6c29ed094368253bc05fecb7bf990cee2d3a3.jpg",
"intro": "这个化学反应是怦然心动?",
"type": 1,
"off": 0,
"ctime": 1533298738,
"curtime": 1655712354,
"statistic": {
"sid": 125312,
"play": 298018,
"collect": 9928,
"comment": 89,
"share": 239
},
"snum": 19,
"attr": 0,
"isDefault": 0,
"collectionId": 0
}, {
"menuId": 26241,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "那些听了会泪目的动漫歌曲",
"cover": "http://i0.hdslb.com/bfs/music/006832318fc85fdf287667d51d83dba3b78be808.jpg",
"intro": "那些年陪伴我们的动漫歌曲,你还记得吗?\n",
"type": 1,
"off": 0,
"ctime": 1509608572,
"curtime": 1655712354,
"statistic": {
"sid": 26241,
"play": 370120,
"collect": 8390,
"comment": 110,
"share": 131
},
"snum": 12,
"attr": 0,
"isDefault": 0,
"collectionId": 0
}]
}
}
```
</details>
## 查询热门榜单
> https://www.bilibili.com/audio/music-service-c/web/menu/rank
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | ---- | --- | --- |
| pn | num | 页码 | 必要 | |
| ps | num | 每页项数 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | --------------------- | ---- | ----------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ------ | --- |
| curPage | num | 当前页码 | |
| pageCount | num | 总计页数 | |
| totalSize | num | 总计收藏夹数 | |
| pageSize | num | 当前页面项数 | |
| data | array | 歌单列表 | |
`data`中的`data`数组:
| 项 | 类型 | 内容 | 备注 |
| --- | --- | -------------- | --- |
| 0 | obj | 音频收藏夹mlid1 | |
| n | obj | 音频收藏夹mlid(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------------- | ----------------------------- |
| menuId | num | 音频收藏夹对应的歌单amid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 歌单标题 | |
| cover | str | 歌单封面图片url | |
| intro | str | 歌单介绍 | |
| type | num | 歌单属性 | 1普通歌单<br/>2置顶歌单<br/>5PGC歌单 |
| off | num | 歌单是否公开 | 0公开<br/>1私密 |
| ctime | num | 歌单创建时间 | 时间戳 |
| curtime | num | 当前时间 | 时间戳 |
| statistic | obj | 歌单状态数信息 | |
| snum | num | 歌单包含歌曲个数 | |
| audios | array | 歌单中的音乐信息(部分) | |
`data`数组中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | --- | -------------- | --- |
| sid | num | 音频收藏夹对应的歌单amid | |
| play | num | 收藏数 | |
| collect | num | 点赞数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
`data`数组中的`audios`数组:
| 项 | 类型 | 内容 | 备注 |
| --- | --- | ------- | --- |
| 0 | obj | 音频1 | |
| n | obj | 音频(n+1) | |
| …… | obj | …… | …… |
`audios`数组中的`audios`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | --- | ---- | ------- |
| id | num | 音频id | |
| title | str | 音频标题 | |
| duration | num | 音频时长 | 单位:秒(s) |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/menu/rank' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=6'
```
使用参数:`ps=1&qn=6`
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"curPage": 1,
"pageCount": 2,
"totalSize": 12,
"pageSize": 6,
"data": [{
"menuId": 10624,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "新曲推荐",
"cover": "http://i0.hdslb.com/bfs/music/a32c1ed4f6ec3f74f8240f4486a750dda3a509e5.jpg",
"intro": "每天11:00更新为你推送最新音乐",
"type": 2,
"off": 0,
"ctime": 1501209433,
"curtime": 1655713346,
"statistic": {
"sid": 10624,
"play": 2366255,
"collect": 20565,
"comment": 1104,
"share": 622
},
"snum": 16,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1572281,
"title": "【Mitchie M】Nechusho No!No! (feat. 初音未来 & MEIKO)",
"duration": 112
}, {
"id": 1551077,
"title": "【洛天依原创】双星伴生",
"duration": 197
}, {
"id": 1544428,
"title": "【小柔】寄り酔いcover",
"duration": 216
}]
}, {
"menuId": 10627,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "热歌榜每日11:00更新",
"cover": "http://i0.hdslb.com/bfs/music/bc735b32ab123f7ddc602b9194defae2cd66062f.jpg",
"intro": "每日上午11:00更新精选三日内热门投稿作品。",
"type": 2,
"off": 0,
"ctime": 1501211353,
"curtime": 1655713346,
"statistic": {
"sid": 10627,
"play": 2289612,
"collect": 11437,
"comment": 434,
"share": 223
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1955567,
"title": "山海(原唱:草东没有派对)",
"duration": 215
}, {
"id": 923884,
"title": "platiunm",
"duration": 181
}, {
"id": 1954370,
"title": "Dark Dawn v1",
"duration": 200
}]
}, {
"menuId": 10628,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "原创榜每日11:00更新",
"cover": "http://i0.hdslb.com/bfs/music/58782504cefb307878d12422fd365ed7f971fad1.jpg",
"intro": "每日上午11:00更新精选三日内原创投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501211627,
"curtime": 1655713346,
"statistic": {
"sid": 10628,
"play": 395817,
"collect": 2583,
"comment": 314,
"share": 88
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 923884,
"title": "platiunm",
"duration": 181
}, {
"id": 1954370,
"title": "Dark Dawn v1",
"duration": 200
}, {
"id": 1954654,
"title": "张真源 - 你要快乐 (Live)",
"duration": 235
}]
}, {
"menuId": 10629,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "中文人声三日榜",
"cover": "http://i0.hdslb.com/bfs/music/f547e3b96d3f283eaa6a3a071de22092fb5101f8.jpg",
"intro": "每日上午11:00更新精选三日内中文人声投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501211818,
"curtime": 1655713346,
"statistic": {
"sid": 10629,
"play": 842507,
"collect": 5102,
"comment": 362,
"share": 137
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1955567,
"title": "山海(原唱:草东没有派对)",
"duration": 215
}, {
"id": 1955546,
"title": "爱你",
"duration": 86
}, {
"id": 1954654,
"title": "张真源 - 你要快乐 (Live)",
"duration": 235
}]
}, {
"menuId": 10630,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "日文人声三日榜",
"cover": "http://i0.hdslb.com/bfs/music/7dd5d629f50481e22e2f5eced510f5fbd89f5233.jpg",
"intro": "每日上午11:00更新精选三日内日文人声投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501211959,
"curtime": 1655713346,
"statistic": {
"sid": 10630,
"play": 891268,
"collect": 8671,
"comment": 601,
"share": 169
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1954053,
"title": "派对浪客诸葛孔明 插入歌『ChocoPate』久远七海 starring Lezel",
"duration": 117
}, {
"id": 1956316,
"title": "ただ君に晴れ(只给予你的晴天)",
"duration": 196
}, {
"id": 1956321,
"title": "うまぴょい伝説(马儿蹦跳传说)",
"duration": 262
}]
}, {
"menuId": 10631,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "VOCALOID三日榜",
"cover": "http://i0.hdslb.com/bfs/music/ce8b1646cbbd5513de7976ba81d0fd9c340c1899.jpg",
"intro": "每日上午11:00更新精选三日内VOCALOID投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501212166,
"curtime": 1655713346,
"statistic": {
"sid": 10631,
"play": 170112,
"collect": 2900,
"comment": 528,
"share": 60
},
"snum": 10,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1954717,
"title": "弦歌引-翻调",
"duration": 230
}, {
"id": 1956148,
"title": "告RADIO - 春色リップ",
"duration": 253
}, {
"id": 1954302,
"title": "susan说",
"duration": 195
}]
}]
}
}
```
</details>

View File

@ -1,282 +0,0 @@
# 音频流URL
<img src="/imgs/download.svg" width="100" height="100"/>
- [获取音频流URL无法获取付费音频web端](#获取音频流url无法获取付费音频web端)
- [获取音频流URL可获取付费音频双端](#获取音频流url可获取付费音频双端)
- [音频流的获取](#音频流的获取)
---
音质`qn`参数:
| 代码 | 含义 |
| ---- | -------------------- |
| 0 | 流畅 128K |
| 1 | 标准 192K |
| 2 | 高品质 320K |
| 3 | 无损 FLAC (大会员) |
## 获取音频流URL无法获取付费音频web端
> https://www.bilibili.com/audio/music-service-c/web/url
*请求方式GET*
**注web端无法播放完整付费歌曲付费歌曲为30s试听片段**
本接口仅能获取192K音质的音频
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ----------------------------------------------------------- |
| code | num | 返回值 | 0:成功<br />7201006未找到或已下架<br />72000000请求错误 |
| msg | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | --------- | --------------------------------------- |
| sid | num | 音频auid | |
| type | num | 音质标识 | -1试听片段192K<br />1192K |
| info | str | 空 | **作用尚不明确** |
| timeout | num | 有效时长 | 单位为秒<br />一般为3h |
| size | num | 文件大小 | 单位为字节<br />当`type`为-1时`size`为0 |
| cdns | array | 音频流url | |
| qualities | null | - | |
| title | null | - | |
| cover | null | - | |
`data`对象的`cdns`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | str | 音频流url | |
| 1 | str | 备用音频流url | |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \
--data-urlencode 'sid=sid=15664'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
## 获取音频流URL可获取付费音频双端
> https://api.bilibili.com/audio/music-service-c/url
*请求方式GET*
认证方式APP或CookieSESSDATA
**注付费音乐需要有带大会员或音乐包的账号登录Cookie或APP否则为试听片段**
无损音质需要登录的用户为会员
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | -------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| songid | num | 音频auid | 必要 | |
| quality | num | 音质代码 | 必要 | **详情见上表** |
| privilege | num | 必须为`2` | 必要 | |
| mid | num | 当前用户mid | 必要 | 可为任意值 |
| platform | str | 平台标识 | 必要 | 可为任意值 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ----------------------------------------------------------- |
| code | num | 返回值 | 0:成功<br />7201006未找到或已下架<br />72000000请求错误 |
| msg | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ----------- | ------------------------------------------------------------ |
| sid | num | 音频auid | |
| type | num | 音质标识 | -1试听片段192K<br />0128K<br />1192K<br />2320K<br />3FLAC |
| info | str | 空 | **作用尚不明确** |
| timeout | num | 有效时长 | 单位为秒<br />一般为3h |
| size | num | 文件大小 | 单位为字节<br />当`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不需要<br />1需要 |
| requiredesc | str | 会员权限标签 | |
**示例:**
获取音频`au682118`的音频流url音质为`3无损`
Cookie方式
```shell
curl -G 'https://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 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
}
```
</details>
## 音频流的获取
将`data`.`cdns`.`[0]`或`data`.`cdns`.`[1]`中的内容作为url进行GET操作
需要验证请求`user-agent` 不为空
**user-agent错误并且referer不在`*.bilibili.com`域名下的情况下会导致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文件

View File

@ -1,67 +0,0 @@
# 音频状态数
- [歌曲状态数](#歌曲状态数)
---
## 歌曲状态数
>https://www.bilibili.com/audio/music-service-c/web/stat/song
*请求方式GET*
唯缺投币数2333333
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误 |
| msg | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| sid | num | 音频auid | |
| play | num | 播放次数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
**示例:**
查询歌曲`au15664`的状态数
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/stat/song' \
--data-urlencode 'sid=15664'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"sid": 15664,
"play": 1377390,
"collect": 44340,
"comment": 2756,
"share": 4114
}
}
```
</details>

View File

@ -1,129 +0,0 @@
# 追番相关
- [追番](#追番)
- [取消追番](#取消追番)
---
## 追番
> https://api.bilibili.com/pgc/web/follow/add
*请求方式POST*
鉴权方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|----------|-----|--------|-----|-----|
| season_id | str | 剧集ssid | 必要 | |
| csrf | str | csrf token(位于cookies中的bili_jct) | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------- |
| code | num | 返回值 | 0成功<br />-111csrf校验失败 |
| message | str | 信息 | 成功时success |
| result | obj |见下表| |
根对象中的`result`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| fmid | num | 0 | |
| relation | bool | false | |
| status | num | 2 | |
| toast | str | 自己追的番就要好好看完哟^o^ | |
**示例:**
追番`ssid=41410`的番剧
```shell
curl -G 'https://api.bilibili.com/pgc/web/follow/add' \
--data-urlencode 'season_id=41410' \
--data-urlencode 'csrf=xxx' \
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": {
"fmid": 0,
"relation": false,
"status": 2,
"toast": "自己追的番就要好好看完哟^o^"
}
}
```
</details>
## 取消追番
> https://api.bilibili.com/pgc/web/follow/del
*请求方式POST*
鉴权方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | ----------------------------------- | ------ | ---- |
| season_id | str | 剧集ssid | 必要 | |
| csrf | str | csrf token(位于cookies中的bili_jct) | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------- |
| code | num | 返回值 | 0成功<br />-111csrf校验失败 |
| message | str | 信息 | 成功时success |
| result | obj | 见下表 | |
根对象中的`result`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| fmid | num | 0 | |
| relation | bool | true | |
| status | num | 0 | |
| toast | str | 已取消追番 | |
**示例:**
取消`ssid=41410`的追番
```shell
curl -G 'https://api.bilibili.com/pgc/web/follow/del' \
--data-urlencode 'season_id=41410' \
--data-urlencode 'csrf=xxx' \
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": {
"fmid": 0,
"relation": false,
"status": 0,
"toast": "已取消追番"
}
}
```
</details>

File diff suppressed because it is too large Load Diff

View File

@ -1,804 +0,0 @@
# 番剧或影视时间线
- [获取番剧或影视时间线](#获取番剧或影视时间线)
---
## 获取番剧或影视时间线
> https://api.bilibili.com/pgc/web/timeline
*请求方式GET*
鉴权方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------ | ------ | ----------------------------- |
| types | str | 类别 | 必要 | 1`番剧`<br />3`电影`<br />4`国创` |
| before | num | 开始于前几日 | 必要 | ∈N∩[0,7] |
| after | num | 结束于后几日 | 必要 | ∈N∩[0,7] |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404错误 |
| message | str | 错误信息 | 默认为success |
| result | array | 信息本体 | |
`result`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------------------- | ---- |
| 0 | obj | `before`天前信息 | |
| n | obj | 从`before`天前开始第n天信息 | |
| …… | obj | …… | |
`result`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ----- | -------------- | ----------------- |
| date | str | 当日日期 | |
| date_ts | num | 当日日期时间戳 | |
| day_of_week | num | 一周中第几天 | ∈N∩[1,7] |
| episodes | array | 剧集列表 | |
| is_today | num | 是否今日 | |
`result`数组中的对象中的`episodes`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| 0 | obj | 剧集1 | |
| n | obj | 剧集n+1 | |
| …… | obj | …… | |
`episodes`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------- | --------------- |
| cover | str | 封面图url | |
| delay | num | 是否推迟 | |
| delay_id | num | 推迟一话epid | |
| delay_index | str | 推迟一话名称 | |
| delay_reason | str | 推迟原因 | |
| ep_cover | str | 最新一话图url | |
| episode_id | num | 最新一话的epid | |
| pub_index | str | 最新一话名称 | |
| pub_time | str | 发布时间 | |
| pub_ts | num | 发布时间戳 | |
| published | num | 是否已发布 | |
| follows | str | - | |
| plays | str | - | |
| season_id | num | 剧集ssid | |
| square_cover | str | 缩略图url | |
| title | str | 剧集标题 | |
**示例:**
查询从`3`天前到`7`天后的`番剧`时间轴
```shell
curl -G 'https://api.bilibili.com/pgc/web/timeline' \
--data-urlencode 'types=1' \
--data-urlencode 'before=3' \
--data-urlencode 'after=7' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": [
{
"date": "5-15",
"date_ts": 1652544000,
"day_of_week": 7,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/9918f6e67c26d6bd1ddad8dab70bcc7af3bfae9b.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/0067a09911e2fa252a3ef5126d8dc5392189dd8a.jpg",
"episode_id": 508403,
"follows": "-",
"plays": "-",
"pub_index": "第3话",
"pub_time": "01:30",
"pub_ts": 1652549400,
"published": 1,
"season_id": 41416,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/926fd09277605204c2f7c94b322de3156ef9da52.png",
"title": "式守同学不只可爱而已"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/3a9815ca239735c51fc7daf2399c3721bbe00160.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/56e8d4b13dac855c51060dcda286be049fde4a46.png",
"episode_id": 466766,
"follows": "-",
"plays": "-",
"pub_index": "第6话",
"pub_time": "11:00",
"pub_ts": 1652583600,
"published": 1,
"season_id": 41005,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/b3dd92da1ca35758f329fa5aa649991b118a98ca.png",
"title": "鬼灭之刃 无限列车篇 中配版"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/71d54cae830d32a5af776dcc46632146fbdba868.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/00c1dff8457183671f0402e0a2826313a1994a9b.jpg",
"episode_id": 480434,
"follows": "-",
"plays": "-",
"pub_index": "第240话",
"pub_time": "17:30",
"pub_ts": 1652607000,
"published": 1,
"season_id": 5978,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/3121473d5dd03a9bcccb8490034207e724e731b3.jpg",
"title": "博人传 火影忍者新时代"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/91e75030be41d67b9f19b96bb512b0c98ae781bd.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/e701f39cef52e6b0737e3463faf7cb0cee61e935.jpg",
"episode_id": 510647,
"follows": "-",
"plays": "-",
"pub_index": "第4话",
"pub_time": "20:00",
"pub_ts": 1652616000,
"published": 1,
"season_id": 41557,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4329384cba4ab0390eae1a84a719e4649bf61cfb.png",
"title": "这个治疗有点烦"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/c9723d8c77d881a8debba2852d580e97826b43d0.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/2a01ab590fd8b1331096b94cc6fc09dbdad1bbec.png",
"episode_id": 478918,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "21:00",
"pub_ts": 1652619600,
"published": 1,
"season_id": 41591,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/1ffa24e100583c3aa96812dea680943291c5c384.jpg",
"title": "恋爱游戏世界对路人角色很不友好"
}
],
"is_today": 0
},
{
"date": "5-16",
"date_ts": 1652630400,
"day_of_week": 1,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/e468c854628b97b5373baaf4c43e1346a9806baa.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/219161297558531d2475da73e863dc237e83baa1.png",
"episode_id": 511342,
"follows": "-",
"plays": "-",
"pub_index": "第1话",
"pub_time": "20:00",
"pub_ts": 1652702400,
"published": 1,
"season_id": 41419,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/75a291010c128ce2de17267fd2a4842d19898236.png",
"title": "魔法使黎明期"
}
],
"is_today": 0
},
{
"date": "5-17",
"date_ts": 1652716800,
"day_of_week": 2,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/4e6c505b1b1631c542ea76c3da1ce08bb43faad6.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/bf37e15c52889a7a9dca16346354bb7c6663c899.png",
"episode_id": 510132,
"follows": "-",
"plays": "-",
"pub_index": "第146话",
"pub_time": "18:00",
"pub_ts": 1652781600,
"published": 1,
"season_id": 23841,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/5c2f289eac0ec49bc5e6b9483f4191c42ffa2254.jpg",
"title": "美妙☆频道"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/9eef1df9ab157be52d2c4d70d3500442f00cafc3.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/d9831c3170bcbba38edc2204ee5059f583823913.png",
"episode_id": 509043,
"follows": "-",
"plays": "-",
"pub_index": "第11话",
"pub_time": "18:00",
"pub_ts": 1652781600,
"published": 1,
"season_id": 38950,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/13fd7c96659a20c61409e155a2a913a59348d122.png",
"title": "魔法纪录 魔法少女小圆外传 第二季"
}
],
"is_today": 0
},
{
"date": "5-18",
"date_ts": 1652803200,
"day_of_week": 3,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/fba0229f1a6eec6ed692b7ae91c634d5cbde0727.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/0ebefe529449ff98d544395d1576402bb0d0ae5b.png",
"episode_id": 510498,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "21:00",
"pub_ts": 1652878800,
"published": 0,
"season_id": 41413,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/247f8326019e035338529306e94baea3336c43b4.png",
"title": "盾之勇者成名录 第二季"
}
],
"is_today": 1
},
{
"date": "5-19",
"date_ts": 1652889600,
"day_of_week": 4,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/99277ce3f41d1cb4dcda9f6010ebe9c9e6d345e5.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/c989d496e3a075e8bc134b0d4d53d6ca5c2ae634.jpg",
"episode_id": 510760,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "12:00",
"pub_ts": 1652932800,
"published": 0,
"season_id": 41417,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ef45828cb99309169e95d1bf54ec833d7968bf22.png",
"title": "夏日重现"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/1cd26af47cf9d9ca045ec36f56ce14a66867438d.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/3dc8d348937528779b7ad9a3070d37276518080f.png",
"episode_id": 399655,
"follows": "-",
"plays": "-",
"pub_index": "第50话",
"pub_time": "18:00",
"pub_ts": 1652954400,
"published": 0,
"season_id": 38353,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4bd7b0a4c270ce62ca2adf3e18487a96e4fde92e.png",
"title": "通灵王"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/5f5b16bc8edd1310fbf0ac8bce04a11144dc858e.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/aed167a32445ed294ea75ed674442c766d56cb2a.png",
"episode_id": 511494,
"follows": "-",
"plays": "-",
"pub_index": "第4话",
"pub_time": "23:00",
"pub_ts": 1652972400,
"published": 0,
"season_id": 41422,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/924c550415ccdd142145dbf102bd81fcbb018ffd.png",
"title": "骸骨骑士大人奇幻世界冒险中"
}
],
"is_today": 0
},
{
"date": "5-20",
"date_ts": 1652976000,
"day_of_week": 5,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/a29f3b00a94d1b4a029054f72963cc10d98bae99.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/4b9b98677b039b9126614f5a5259aa1484cea227.jpg",
"episode_id": 510757,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "01:28",
"pub_ts": 1652981280,
"published": 0,
"season_id": 41520,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/2a0ca7be587039eef380f802f8ae71bd21d2ea2c.png",
"title": "街角魔族 第二季"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/ecb52c79def9f5a6099c5a0770f56e20479fb008.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/36d3079e1b24395b07f9f95128adc9568459c3e5.png",
"episode_id": 478238,
"follows": "-",
"plays": "-",
"pub_index": "第17话",
"pub_time": "02:25",
"pub_ts": 1652984700,
"published": 0,
"season_id": 40873,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/13f437706d3f27dee7566a5e489928605663e40f.png",
"title": "川尻小玉的懒散生活"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/a7517ca25c5c7a132a16f589e3a3c4d9f49af196.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/17f34f6c51b8b9371af1998f0612d51f0ba03df2.png",
"episode_id": 508842,
"follows": "-",
"plays": "-",
"pub_index": "第6话",
"pub_time": "07:00",
"pub_ts": 1653001200,
"published": 0,
"season_id": 41534,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/3267da68f7f832ccfc7eaa77c6ab3fb806d2de98.png",
"title": "银河英雄传说:全新命题 激战"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/fecb68763f24d371167389abedf05742b0bf024f.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/f4116e5dcc44d6104cd72d9e0e833cde3959a835.png",
"episode_id": 476164,
"follows": "-",
"plays": "-",
"pub_index": "第32话",
"pub_time": "18:25",
"pub_ts": 1653042300,
"published": 0,
"season_id": 38366,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/56b8e4369871fc0c55bfa9df3f3f8002d40f0691.png",
"title": "妖怪手表"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/81c9dc929e6071a2d42f1b5a207bbcef4a1aead7.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/7c62ad9f559ee6b0fafc1c08d990636c21c4fa8d.png",
"episode_id": 510653,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "21:30",
"pub_ts": 1653053400,
"published": 0,
"season_id": 41432,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/930ae7ff644dc31ada9abcb3ea30fee5fbc6f397.png",
"title": "约会大作战 第四季"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/d464543dd6720efd43e5487acee74b646423b4d1.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/ca7a19d51feb54162d8f286af416aa5a804e72c4.png",
"episode_id": 511497,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "22:00",
"pub_ts": 1653055200,
"published": 0,
"season_id": 41418,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ab50117450baffba62c71c80052ecbad1842a1f3.png",
"title": "恋爱要在世界征服后"
}
],
"is_today": 0
},
{
"date": "5-21",
"date_ts": 1653062400,
"day_of_week": 6,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/68aee547fc85b1eab8be3d5c7e946276e4252b79.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/75583ce830522c6fd391cd6ffac31e3ab96db50e.png",
"episode_id": 510568,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "00:30",
"pub_ts": 1653064200,
"published": 0,
"season_id": 39725,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/a4fa3f4ecaa4efc883aa1ef2ca7ed736edb38b8c.png",
"title": "理科生坠入情网,故尝试证明。 第二季"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/f711a34e0f18293ba5068fd85d8de891bb01c2be.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/aa3e0fc7ecb422c7c8ed107267befaa18f6dcf89.png",
"episode_id": 510935,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "00:30",
"pub_ts": 1653064200,
"published": 0,
"season_id": 41506,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/d2dea82606b8dd0ee7934c62dbc7016b0a17255f.png",
"title": "处刑少女的生存之道"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/91ec1f4bc4af307dbfbd68c9ba6d838b27adee0f.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/6d9499e4e5453e5e353939980524102c3b707edb.png",
"episode_id": 477129,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "01:25",
"pub_ts": 1653067500,
"published": 0,
"season_id": 39180,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/f23cf19d1d6068e83edfd6b3d207ce692ef58ef3.png",
"title": "测不准的阿波连同学"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/bad807ac5a8d4094ead26c08ec2d9b97dbb8c4a1.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/8e563a29a9fb6b91df791a12eb5f869d038fc1e9.png",
"episode_id": 510677,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "02:00",
"pub_ts": 1653069600,
"published": 0,
"season_id": 41533,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4ef341fa95646a7c2549e08ba00358b411fba0ee.png",
"title": "舞动不止"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/4ab5cf1efbd1c5883b8f0580cb0304f5452c4665.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/8ea1f90444d04a0b989584df9f18e59a824b0e90.png",
"episode_id": 341403,
"follows": "-",
"plays": "-",
"pub_index": "第71话",
"pub_time": "09:30",
"pub_ts": 1653096600,
"published": 0,
"season_id": 34425,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ae36d43ebe7ea7176d18bab794de3d8930284feb.png",
"title": "勇者斗恶龙 达伊的大冒险"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/23f393513ab8fdfbb351aa80e8b7423e7361ad98.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/d470a1bf53c96210f2238024dc1947f52cb58f3a.png",
"episode_id": 510681,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "18:00",
"pub_ts": 1653127200,
"published": 0,
"season_id": 41535,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/f3f69f8747e8464ba46b9bbe24678966809c8021.png",
"title": "Love All Play热血羽毛球"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/38e2a273f528fd01c34f1fc4df0f69c64487efad.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/6c108526eade13d04882b803f1d1e0dfe2a1886e.png",
"episode_id": 459329,
"follows": "-",
"plays": "-",
"pub_index": "第1101话",
"pub_time": "19:30",
"pub_ts": 1653132600,
"published": 0,
"season_id": 33378,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ecc9a64f3f43eb00ee2bf1549b6ab76182cf5f8b.png",
"title": "名侦探柯南"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/f641f81aa1933d73c91d5ef76b525acbcdbcf3e7.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/c7ccf71fcf65b4e5655403b01a7af3529d2891e8.png",
"episode_id": 510754,
"follows": "-",
"plays": "-",
"pub_index": "第10话",
"pub_time": "20:00",
"pub_ts": 1653134400,
"published": 0,
"season_id": 39433,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/1b4cc42a3909ad2d03563d3163b105c6cad80d20.png",
"title": "鬼灭之刃 游郭篇"
}
],
"is_today": 0
},
{
"date": "5-22",
"date_ts": 1653148800,
"day_of_week": 7,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/3a9815ca239735c51fc7daf2399c3721bbe00160.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/30908825b7c8076b9d7b58d8cd949a87f48866e6.png",
"episode_id": 466767,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "11:00",
"pub_ts": 1653188400,
"published": 0,
"season_id": 41005,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/b3dd92da1ca35758f329fa5aa649991b118a98ca.png",
"title": "鬼灭之刃 无限列车篇 中配版"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/71d54cae830d32a5af776dcc46632146fbdba868.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/3baf5335e3f1df882b54d69c0c6c9ffa76069eef.png",
"episode_id": 480435,
"follows": "-",
"plays": "-",
"pub_index": "第241话",
"pub_time": "17:30",
"pub_ts": 1653211800,
"published": 0,
"season_id": 5978,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/3121473d5dd03a9bcccb8490034207e724e731b3.jpg",
"title": "博人传 火影忍者新时代"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/91e75030be41d67b9f19b96bb512b0c98ae781bd.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/cff6617c1c7e28f8cd9db3d33d5366a5029e3aa9.png",
"episode_id": 510648,
"follows": "-",
"plays": "-",
"pub_index": "第5话",
"pub_time": "20:00",
"pub_ts": 1653220800,
"published": 0,
"season_id": 41557,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4329384cba4ab0390eae1a84a719e4649bf61cfb.png",
"title": "这个治疗有点烦"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/c9723d8c77d881a8debba2852d580e97826b43d0.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/c91b2b96c272eb28aa3dd74aa58fc272fc62d577.png",
"episode_id": 478919,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "21:00",
"pub_ts": 1653224400,
"published": 0,
"season_id": 41591,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/1ffa24e100583c3aa96812dea680943291c5c384.jpg",
"title": "恋爱游戏世界对路人角色很不友好"
}
],
"is_today": 0
},
{
"date": "5-23",
"date_ts": 1653235200,
"day_of_week": 1,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/e468c854628b97b5373baaf4c43e1346a9806baa.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/26f87214a2481680a93bfda294ac080c0b336a40.png",
"episode_id": 511343,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "20:00",
"pub_ts": 1653307200,
"published": 0,
"season_id": 41419,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/75a291010c128ce2de17267fd2a4842d19898236.png",
"title": "魔法使黎明期"
}
],
"is_today": 0
},
{
"date": "5-24",
"date_ts": 1653321600,
"day_of_week": 2,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/4e6c505b1b1631c542ea76c3da1ce08bb43faad6.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/4e6c505b1b1631c542ea76c3da1ce08bb43faad6.jpg",
"episode_id": 510133,
"follows": "-",
"plays": "-",
"pub_index": "第147话",
"pub_time": "18:00",
"pub_ts": 1653386400,
"published": 0,
"season_id": 23841,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/5c2f289eac0ec49bc5e6b9483f4191c42ffa2254.jpg",
"title": "美妙☆频道"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/9eef1df9ab157be52d2c4d70d3500442f00cafc3.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/a651c55bb430cdea19d5f4253969d1f7b83567c7.png",
"episode_id": 509044,
"follows": "-",
"plays": "-",
"pub_index": "第12话",
"pub_time": "18:00",
"pub_ts": 1653386400,
"published": 0,
"season_id": 38950,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/13fd7c96659a20c61409e155a2a913a59348d122.png",
"title": "魔法纪录 魔法少女小圆外传 第二季"
}
],
"is_today": 0
},
{
"date": "5-25",
"date_ts": 1653408000,
"day_of_week": 3,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/fba0229f1a6eec6ed692b7ae91c634d5cbde0727.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/0ebefe529449ff98d544395d1576402bb0d0ae5b.png",
"episode_id": 510499,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "21:00",
"pub_ts": 1653483600,
"published": 0,
"season_id": 41413,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/247f8326019e035338529306e94baea3336c43b4.png",
"title": "盾之勇者成名录 第二季"
}
],
"is_today": 0
}
]
}
```
</details>

View File

@ -1,366 +0,0 @@
# 视频流URL
<img src="/imgs/download.svg" width="100" height="100"/>
B站的番剧视频为http流媒体需要对应的api以视频id获取取流url并进行取流
- [qn视频清晰度标识](#qn视频清晰度标识)
- [fnver视频流版本标识](#fnver视频流版本标识)
- [fnval视频流格式标识](#fnval视频流格式标识)
- [视频伴音音质代码](#视频伴音音质代码)
- [获取番剧视频流URL](#获取番剧视频流URL)
- [视频的取流web端及APP端](#视频的取流web端及APP端)
---
## qn视频清晰度标识
**注该值在dash模式且非下载模式时无效**
| 值 | 含义 | 备注 |
|-----|-------------|-----------------------------------------------------------------------------|
| 6 | 240P 极速 | 仅mp4方式支持 |
| 16 | 360P 流畅 | |
| 32 | 480P 清晰 | |
| 64 | 720P 高清 | web端默认值<br />B站前端需要登录才能选择但是直接发送请求可以不登录就拿到720P的取流地址<br />**无720P时则为720P60** |
| 74 | 720P60 高帧率 | 需要认证登录账号 |
| 80 | 1080P 高清 | TV端与APP端默认值<br />需要认证登录账号 |
| 112 | 1080P+ 高码率 | 大多情况需求认证大会员账号 |
| 116 | 1080P60 高帧率 | 大多情况需求认证大会员账号 |
| 120 | 4K 超清 | 需要`fnval&128=128`且`fourk=1`<br />大多情况需求认证大会员账号 |
| 125 | HDR 真彩色 | 仅支持dash方式<br />需要`fnval&64=64`<br />大多情况需求认证大会员账号 |
| 126 | 杜比视界 | 仅支持dash方式<br />需要`fnval&512=512`<br />大多情况需求认证大会员账号 |
| 127 | 8K 超高清 | 仅支持dash方式<br />需要`fnval&1024=1024`<br />大多情况需求认证大会员账号 |
例如请求1080P+的视频,则`qn=112`
## fnver视频流版本标识
目前该值恒为0即`fnver=0`
## fnval视频流格式标识
该代码为二进制属性位,如需组合功能需要使用`OR`运算结合一下数值
| 值 | 含义 | 备注 |
|------|-------------|-------------------------------------------------------------|
| 0 | flv格式 | 仅H.264编码<br />部分老视频存在分段现象<br />与mp4格式及dash格式互斥 |
| 1 | mp4格式 | 仅H.264编码<br />不存在视频分段<br />与flv格式及dash格式互斥 |
| 16 | dash格式 | H.264编码或H.265编码<br />部分老视频的清晰度上限低于flv格式<br />与mp4格式及flv格式互斥 |
| 64 | 是否需求 HDR 视频 | 必须为dash格式<br />需要`qn=125`<br />大多情况需求认证大会员账号 |
| 128 | 是否需求 4K 分辨率 | 该值与`fourk`字段协同作用<br />需要`qn=120`<br />大多情况需求认证大会员账号 |
| 256 | 是否需求杜比音频 | 必须为dash格式<br />大多情况需求认证大会员账号 |
| 512 | 是否需求杜比视界 | 必须为dash格式<br />大多情况需求认证大会员账号 |
| 1024 | 是否需求 8K 分辨率 | 必须为dash格式<br />需要`qn=127`<br />大多情况需求认证大会员账号 |
| 2048 | 是否需求 av1 编码 | 必须为dash格式 |
例如请求dash格式且需要HDR的视频流则`fnval=16|64=80`
## 视频编码代码
| 值 | 含义 | 备注 |
|-----|--------|----------|
| 7 | AVC编码 | 8K视频无此格式 |
| 12 | HEVC编码 | |
| 13 | AV1编码 | |
## 视频伴音音质代码
| 值 | 含义 |
|-------|------|
| 30216 | 64K |
| 30232 | 132K |
| 30280 | 192K |
## 获取番剧视频流URL
> https://api.bilibili.com/pgc/player/web/playurl
*请求方式GET*
认证方式CookieSESSDATA
---
关于视频流会员鉴权:
- 获取480P及以上清晰度视频时需要登录Cookie
- 获取高帧率1080P60/高码率1080P+视频时需要有大会员的账号登录Cookie
- 获取会员专属番剧视频时需要登录Cookie
---
获取的url有效时间为120min超时失效需要重新获取
**部分视频**会有**分段**,需要特别注意
若视频有分P仅为单P的视频的url换P则需更换cid重新获取
需要设置Referer为`https://www.bilibili.com`否则无法获取1080清晰度以上的流信息。
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---------------|-----|----------|--------|--------------------------------------------------------------------------------------------------|
| avid | num | 稿件avid | 非必要 | |
| bvid | str | 稿件bvid | 非必要 | |
| ep_id | num | 稿件epid | 必要(可选) | ep_id与cid任选一个 |
| cid | num | 视频cid | 必要(可选) | ep_id与cid任选一个 |
| qn | num | 视频清晰度选择 | 非必要 | 未登录默认32480P<br />登录默认64720P<br />**值含义见上表**<br />dash方式无效 |
| fnval | num | 视频获取方式选择 | 非必要 | 默认为0<br />0 2flv方式可能会有分段<br />1低清mp4方式仅240P与360P且限速65K/s<br />16 80dash方式音视频分流支持H.265 |
| fnver | num | 0 | 非必要 | 固定为0 |
| fourk | num | 是否允许4K视频 | 非必要 | 默认为0<br />画质最高1080P0<br />画质最高4K1 |
| session | str | | 非必要 | 从视频播放页的网页源码中获取 |
| from_client | str | BROWSER | 非必要 | |
| drm_tech_type | num | 2 | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----------------------|------|------------------------------------|
| code | num | 返回值 | 0成功 <br />-400请求错误<br />-404无视频 |
| message | str | 错误信息 | 成功为success |
| result | 有效时obj<br />无效时null | 数据本体 | |
`result`对象:
| 字段 | 类型 | 内容 | 备注 |
|--------------------|-------|-----------------------------------|----------------------------|
| code | num | 0 | 作用尚不明确 |
| is_preview | num | 0 | 作用尚不明确 |
| fnver | num | 请求时提供的fnver | |
| fnval | num | 请求时提供的fnval | |
| video_project | bool | true | |
| type | str | 视频流类型DASH、FLV、MP4 | DASH |
| bp | num | 是否可以承包 | 0 |
| vip_type | num | 当前用户大会员类型 | |
| vip_status | num | 当前用户大会员状态 | |
| is_drm | bool | false | |
| no_rexcode | num | 0 | |
| has_paid | bool | false | |
| status | num | 2 | |
| from | str | local | 作用尚不明确 |
| result | str | suee | 作用尚不明确 |
| message | str | 空 | 作用尚不明确 |
| quality | num | 当前的视频分辨率代码 | **值含义见上表** |
| format | str | 视频格式 | |
| timelength | num | 视频长度 | 单位为毫秒<br />不同分辨率/格式可能有略微差异 |
| accept_format | str | 视频支持的全部格式 | 每项用`,`分隔 |
| accept_description | array | 视频支持的分辨率列表 | |
| accept_quality | array | 视频支持的分辨率代码列表 | **值含义见上表** |
| video_codecid | num | 默认选择视频流的编码id | 见**视频编码代码** |
| seek_param | str | 固定值start | 作用尚不明确 |
| seek_type | str | offsetdash、flv<br/> secondmp4 | 作用尚不明确 |
| durl | array | 视频分段 | **注仅flv/mp4存在此项** |
| dash | obj | dash音视频流信息 | **注仅dash存在此项** |
| support_formats | array | 支持格式的详细信息 | |
| clip_info_list | array | | 空,待补充 |
| record_info | obj | 备案登记信息 | |
`result`中的`accept_description`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|------------|-----|
| 0 | str | 分辨率名称1 | |
| n | str | 分辨率名称(n+1) | |
| …… | str | …… | |
`result`中的`accept_quality`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|------------|-----|
| 0 | str | 分辨率代码1 | |
| n | str | 分辨率代码(n+1) | |
| …… | str | …… | |
`result`中的`support_formats`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|---------------|-----|
| 0 | obj | 播放格式详细信息1 | |
| n | obj | 播放格式详细信息(n+1) | |
| …… | obj | …… | |
`support_formats`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|-----------------|-------|---------|-----|
| quality | num | 视频清晰度代码 | |
| format | str | 视频格式 | |
| new_description | str | 格式描述 | |
| description | str | 格式描述 | |
| display_desc | str | 格式描述 | |
| superscript | str | (?) | |
| codecs | array | 编码格式列表 | |
| need_login | bool | 需要登录 | |
| need_vip | bool | 需要大会员 | |
`support_formats`中的`codecs`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|------|-----------------------------|
| 0 | str | 编码格式 | 如avc1.640032意为AVC编码 |
| 1 | str | 编码格式 | 如hev1.1.6.L153.90意为HEVC编码 |
`result`中的`record_info`对象:
| 项 | 类型 | 内容 | 备注 |
|-------------|-----|------|-----------------------|
| record_icon | str | 空串 | |
| record | str | 显示文案 | 登记号10417060172092207 |
---
**flv/mp4方式**
`result`中的`durl`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|-------------|------------------|
| 0 | obj | 视频分段1信息 | **注仅flv方式具有分段** |
| n | obj | 视频分段(n+1)信息 | |
| …… | obj | …… | |
`durl`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|------------|-------|--------|-----------------------------------|
| order | num | 视频分段序号 | 某些视频会分为多个片段从1顺序增长 |
| length | num | 视频长度 | 单位为毫秒 |
| size | num | 视频大小 | 单位为Byte |
| vhead | str | 空 | 作用尚不明确 |
| url | str | 视频流url | **注url内容存在转义符**<br />有效时间为120min |
| backup_url | array | 备用视频流 | |
`durl`数组中的对象中的`backup_url`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|----------------|-----------------------------------|
| 0 | str | 备用视频流url 1 | **注url内容存在转义符**<br />有效时间为120min |
| n | str | 备用视频流url (n+1) | |
| …… | str | …… | |
**示例:**
**视频无分段时:**
获取视频`ep85046`/`av2325306`中的1Pcid=`3629601`的视频流url清晰度为480p使用flv方式获取
avid/epid方式
```shell
curl -G 'https://api.bilibili.com/pgc/player/web/playurl' \
--data-urlencode 'avid=2325306' \
--data-urlencode 'cid=3629601' \
--data-urlencode 'ep_id=85046' \
-b 'SESSDATA=xxx'
```
https://api.bilibili.com/pgc/player/web/playurl?avid=2325306&cid=3629601&ep_id=85046
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": {
"accept_format": "flv480,mp4",
"code": 0,
"seek_param": "start",
"is_preview": 0,
"fnval": 0,
"video_project": true,
"fnver": 0,
"type": "FLV",
"bp": 0,
"result": "suee",
"seek_type": "offset",
"from": "local",
"video_codecid": 7,
"record_info": {
"record_icon": "",
"record": ""
},
"durl": [
{
"size": 111138876,
"ahead": "",
"length": 1394090,
"vhead": "",
"backup_url": [
"https://upos-sz-mirrorcoso1.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098195&gen=playurlv2&os=coso1bv&oi=2946990771&trid=a1db84b216ea45dd89225f02a09093fdp&mid=0&platform=pc&upsig=878be08cc0e6bdea705952529e7e6785&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&agrr=1&bw=79726&logo=40000000",
"https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098195&gen=playurlv2&os=cosbv&oi=2946990771&trid=a1db84b216ea45dd89225f02a09093fdp&mid=0&platform=pc&upsig=8c31064c84d8e981704815992cfe315c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&agrr=1&bw=79726&logo=40000000"
],
"url": "https://cn-lnsy-cu-v-02.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098195&gen=playurlv2&os=bcache&oi=2946990771&trid=0000a1db84b216ea45dd89225f02a09093fdp&mid=0&platform=pc&upsig=7a5c4f25b9056359127191390a73bedc&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&cdnid=3281&bvc=vod&nettype=0&orderid=0,3&agrr=1&bw=79726&logo=80000000",
"order": 1,
"md5": ""
}
],
"no_rexcode": 0,
"format": "flv480",
"support_formats": [
{
"display_desc": "480P",
"superscript": "",
"codecs": [ ],
"format": "flv480",
"description": "清晰 480P",
"quality": 32,
"new_description": "480P 清晰"
},
{
"display_desc": "360P",
"superscript": "",
"codecs": [ ],
"format": "mp4",
"description": "流畅 360P",
"quality": 16,
"new_description": "360P 流畅"
}
],
"message": "",
"accept_quality": [
32,
16
],
"quality": 32,
"timelength": 1394090,
"has_paid": false,
"clip_info_list": [ ],
"accept_description": [
"清晰 480P",
"流畅 360P"
],
"status": 2
}
}
```
</details>
## 视频的取流web端及APP端
**注意:**
1. 如flv模式则可能产生分段情况将`$.data.durl[1-n].url`或`$.data.durl[1-n].backup_url[0]`中的内容作为url进行GET操作, 如果有多个视频, 需要手动合并处理
2. 如mp4模式则需要获取对应的视频流方法同上
3. 如dash模式则需要同时获取对应的视频流和伴音流方法同上
4. web端取流需要验证防盗链即`referer`为 `.bilibili.com`域名下且UA不能为空app端也需要验证防盗链即UA需要含有`Mozilla/5.0 BiliDroid/*.*.* (bbcallen@gmail.com)`*为版本);如`referer`或UA错误的情况会被判定为盗链返回403 Forbidden故无法取流
5. **注意unicode转义符**
以上述视频流url为例
```shell
wget 'https://upos-sz-mirrorhwo1.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098026&gen=playurlv2&os=hwo1bv&oi=0&trid=f0a1d2d854264369803462f3dd524154p&mid=0&platform=pc&upsig=76c1438153942fda51fbf4eb07e6e5a1&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=0,2&agrr=1&bw=79726&logo=80000000' \
--referer 'https://www.bilibili.com' \
-O 'Download_video.flv'
```
响应正文将返回一个flv文件

View File

@ -1,304 +0,0 @@
# 封禁公示
- [获取封禁用户公示列表](#获取封禁用户公示列表)
- [封禁处理公示详情](#封禁处理公示详情)
---
###### 表1已知的封禁原因类型代码总览
| 代码 | 含义 |
| ---- | -------------------- |
| 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 | 恶意冒充他人 |
###### 表2已知的违规类型代码
| 代码 | 含义 |
| ---- | -------- |
| 0 | 全部类型 |
| 1 | 评论 |
| 2 | 弹幕 |
| 3 | 私信 |
| 4 | 标签 |
| 5 | 个人资料 |
| 6 | 投稿 |
| 8 | 专栏 |
| 10 | 动态 |
| 11 | 相簿 |
## 获取封禁用户公示列表
> https://api.bilibili.com/x/credit/blocked/list
*请求方式GET*
每页最多10项
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------------------------------------------------------------ |
| btype | num | 来源筛选 | 非必要 | 空:全部类型<br />`0`:系统封禁<br />`1`:风纪仲裁(仲裁系统升级后此类型已不再更新) |
| otype | num | 类型筛选 | 非必要 | **见[表2](#表2已知的违规类型代码)**<br />默认为`0`:全部类型 |
| pn | num | 页码 | 非必要 | 默认为`1` |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | `0`:成功 |
| message | str | 错误信息 | 默认为`0` |
| ttl | num | `1` | |
| data | array | 公示列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | --------------- | ---- |
| 0 | object | 封禁公示1 | |
| n | object | 封禁公示n+1 | |
| …… | object | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | ---------------- | ------------------------------------------- |
| id | num | 封禁公示id | |
| uname | str | 对象用户名 | |
| face | str | 对象用户头像url | |
| uid | num | 对象用户mid | |
| originTitle | str | 来源标题 | |
| blockedRemark | str | | |
| originUrl | str | 来源url | |
| originContentModify | str | 裁决正文 | |
| originType | num | 来源类型 | **见[表2](#表2已知的违规类型代码)** |
| originTypeName | str | 来源名 | |
| punishTitle | str | 公示标题 | |
| punishTime | num | 处罚时间 | 时间戳 |
| punishType | num | 处理手段类型 | `2`:封禁<br />`3`:永久封禁 |
| punishTypeName | str | 处理手段名 | |
| moralNum | num | `0`节操值 | 被封禁用户节操值均为`0` |
| blockedDays | num | 封禁天数 | 永封为`0` |
| publishStatus | num | `1` | 作用尚不明确 |
| blockedType | num | 处理来源 | `0`:系统封禁<br />1风纪仲裁 |
| blockedForever | num | 是否永封 | `0`:非永封<br />`1`:永封 |
| reasonType | num | 封禁原因类型 | **见[表1](#表1已知的封禁原因类型代码总览)** |
| reasonTypeName | str | 封禁原因类型名称 | |
| operatorName | str | 空 | 作用尚不明确 |
| caseId | num | 仲裁信息id | 系统封禁时固定为0 |
| ctime | num | 创建时间 | 时间戳 |
| commentSum | num | 该条目评论数 | |
**示例:**
查询所有类型所有来源的第1页的封禁公示列表
```shell
curl -G 'https://api.bilibili.com/x/credit/blocked/list' \
--data-urlencode 'btype=' \
--data-urlencode 'otype=0' \
--data-urlencode 'pn=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [{
"id": 1118220,
"uname": "漫城林语",
"face": "http://i2.hdslb.com/bfs/face/970f2da4a58f83879e69e259f4a9d3587cba03f0.jpg",
"uid": 135913,
"originTitle": "【罗翔】聊聊网络喷子与键盘侠",
"blockedRemark": "内容涉及人身攻击",
"originUrl": "https://www.bilibili.com/video/av752825895",
"originContentModify": "<p>案情:</p><p>1、大量刷屏/引战</p><p>我看新闻了竹鼠全部被ZF无害化处理了看的爽死我了亏死你们啊哈哈哈x10</p><p>【BV16g4y187he2020-4-21 104623104647】</p><p>2、大量人身攻击</p><p>N * * L</p><p>Deine Mu**er ist tot. x10</p><p>【BV1rk4y1R7id2020-4-21 203108203223】</p><p>3、引战</p><p>每次看他厨房乱七八糟的可能有数不清的小强你们还看美食看的有味也是奇PA</p><p>【BV1Kg4y1z7mA2020-4-22&nbsp; 005237】<br/></p><p>批注:</p><p>满地狼藉招摇过,人皆愤懑怒拳握。</p><p>余恶不堪漏夜扫,正气于心涤龌龊。</p><p><br/></p><p>(发现违规引战、人身攻击、刷屏评论,请按照相应分类进行举报。若发现反复进行上述行为,可联系工作人员反馈相关违规账号信息,我们会予以排查。)</p><p>(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)</p><p>【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】</p><p><br/></p>",
"originType": 1,
"originTypeName": "评论",
"punishTitle": "在评论中发布人身攻击言论",
"punishTime": 1587494264,
"punishType": 3,
"punishTypeName": "永久封禁",
"moralNum": 0,
"blockedDays": 0,
"publishStatus": 1,
"blockedType": 0,
"blockedForever": 1,
"reasonType": 7,
"reasonTypeName": "发布人身攻击言论",
"operatorName": "",
"caseId": 0,
"ctime": 1587494264,
"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": "<p>具体违规情况说明:</p><ol class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\"><li><p>经查实确认,该账号<span style=\"text-decoration: underline;\">从未申请</span><span style=\"text-decoration: underline;\">从未担任</span>过风纪委员职务。</p></li><li><p>发布多条 “您的稿件/评论涉及违规,即将下架/删除”的恐吓性言论。</p></li><li><p>谎称曾经封禁了某个up主事实上风纪委员<span style=\"text-decoration: underline;\">无法封禁up主投稿</span>且该up也从未被封禁。</p></li><li><p>威胁他人“要不要到小黑屋坐坐”,事实上风纪委员无法直接封禁用户。通过管理员封禁或风纪委员投票封禁的账号亦有据实申诉的机会。</p></li><li><p>故意挑衅他人“那你可以试着骂我,我们试试(举报)有没有用”。</p></li><li><p>误导他人“此评论区和弹幕无需保持礼仪”。</p></li></ol><p>批注:</p><p>如您发现假冒风纪委员身份招摇撞骗、炫耀风纪委员身份、借风纪委员职务之便威胁恐吓他人、在风纪观点中发布违规内容等违规行为请及时联系我们进行举报。您可直接将举报材料发送至judgement@bilibili.com。</p><p>(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)</p><p>【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】</p>",
"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
},
…………
]
}
```
</details>
## 封禁处理公示详情
> https://api.bilibili.com/x/credit/blocked/info
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---------- | ------ | ---- |
| id | num | 封禁公示id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无此信息 |
| message | str | 错误信息 | 默认为`0` |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | ---------------- | ------------------------------------------- |
| id | num | 封禁公示id | |
| uname | str | 对象用户名 | |
| face | str | 对象用户头像url | |
| uid | num | 对象用户mid | |
| originTitle | str | 来源标题 | |
| blockedRemark | str | | |
| originUrl | str | 来源url | |
| originContentModify | str | 裁决正文 | |
| originType | num | 来源类型 | **见[表2](#表2已知的违规类型代码)** |
| originTypeName | str | 来源名 | |
| punishTitle | str | 公示标题 | |
| punishTime | num | 处罚时间 | 时间戳 |
| punishType | num | 处理手段类型 | `2`:封禁<br />`3`:永久封禁 |
| punishTypeName | str | 处理手段名 | |
| moralNum | num | `0`节操值 | 被封禁用户节操值均为`0` |
| blockedDays | num | 封禁天数 | 永封为`0` |
| publishStatus | num | `1` | 作用尚不明确 |
| blockedType | num | 处理来源 | `0`:系统封禁<br />`1`:风纪仲裁 |
| blockedForever | num | 是否永封 | `0`:非永封<br />`1`:永封 |
| reasonType | num | 封禁原因类型 | **见[表1](#表1已知的封禁原因类型代码总览)** |
| reasonTypeName | str | 封禁原因类型名称 | |
| operatorName | str | 空 | 作用尚不明确 |
| caseId | num | 仲裁信息id | 系统封禁时固定为0 |
| ctime | num | 创建时间 | 时间戳 |
| commentSum | num | 该条目评论数 | |
**示例:**
查询公示id为`1091621`的公示详情
```shell
curl -G 'https://api.bilibili.com/x/credit/blocked/info' \
--data-urlencode 'id=1091621'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1091621,
"uname": "风纪委员会会长零八",
"face": "http://i1.hdslb.com/bfs/face/6ea4296f7591b9a724f540a41d48df728a0881b0.jpg",
"uid": 305542374,
"originTitle": "巅峰赛大乔游走辅助,队友说自家法师湖南卫视都不敢像法师这么演哈哈!",
"blockedRemark": "内容涉及传播不实信息",
"originUrl": "https://www.bilibili.com/video/BV1qK4y1C7dd",
"originContentModify": "<p>具体违规情况说明:</p><ol class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\"><li><p>经查实确认,该账号<span style=\"text-decoration: underline;\">从未申请</span><span style=\"text-decoration: underline;\">从未担任</span>过风纪委员职务。</p></li><li><p>发布多条 “您的稿件/评论涉及违规,即将下架/删除”的恐吓性言论。</p></li><li><p>谎称曾经封禁了某个up主事实上风纪委员<span style=\"text-decoration: underline;\">无法封禁up主投稿</span>且该up也从未被封禁。</p></li><li><p>威胁他人“要不要到小黑屋坐坐”,事实上风纪委员无法直接封禁用户。通过管理员封禁或风纪委员投票封禁的账号亦有据实申诉的机会。</p></li><li><p>故意挑衅他人“那你可以试着骂我,我们试试(举报)有没有用”。</p></li><li><p>误导他人“此评论区和弹幕无需保持礼仪”。</p></li></ol><p>批注:</p><p>如您发现假冒风纪委员身份招摇撞骗、炫耀风纪委员身份、借风纪委员职务之便威胁恐吓他人、在风纪观点中发布违规内容等违规行为请及时联系我们进行举报。您可直接将举报材料发送至judgement@bilibili.com。</p><p>(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)</p><p>【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】</p>",
"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
}
}
```
</details>

View File

@ -1,367 +0,0 @@
# 仲裁操作
- [申请加入风纪委员会](#申请加入风纪委员会)
- [拉取新案件](#拉取新案件)
- [进行仲裁投票](#进行仲裁投票)
---
## 申请加入风纪委员会
> https://api.bilibili.com/x/credit/v2/jury/apply
*请求方式POST*
认证方式Cookie
只有用户会员90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会
申请成功后可获得30天资格
**正文参数( application/x-www-form-urlencoded**
| 参数名 | 类型 | 内容 | 必要性 |
| ------ | ---- | ---------------------- | ------ |
| csrf | str | cookie中`bili_jct`的值 | 必要 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />25001申请等级限制(会员等级<3)<br />25002没有实名认证<br />2500390天内有封禁记录<br />25013不能重复申请风纪委资格<br />25016当日风纪委员名额已发完 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
#### 旧API
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/apply
*请求方式POST*
认证方式CookieSESSDATA或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成功<br />-101账号未登录<br />-111csrf 校验失败<br />25001申请等级限制(会员等级<3)<br />25002没有实名认证<br />2500390天内有封禁记录<br />25013不能重复申请风纪委资格<br />25016当日风纪委员名额已发完 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/apply' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/apply' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
</details>
## 拉取新案件
> https://api.bilibili.com/x/credit/v2/jury/case/next
*请求方式GET*
认证方式Cookie
**标头参数Headers**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | ---- |
| Cookie | str | Cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>25006风纪委员资格已过期<br />25008没有案件<br/>25014已审满 |
| message | str | 信息 | 默认为0当code不为0时显示错误信息 |
| ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------- | ---- |
| case_id | str | 仲裁案件id | |
**示例:**
Cookie方式
```shell
curl -G 'https://api.bilibili.com/x/credit/v2/jury/case/next' \
--header 'cookie: XXXXX'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"case_id": "AC2m4HlrIrHv"
}
}
```
</details>
#### 旧API
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/caseObtain
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>25005不是风纪委员<br />25008没有案件<br/>25014已审满 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| id | num | 仲裁案件id | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/caseObtain' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/caseObtain' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1239790
}
}
```
</details>
</details>
## 进行仲裁投票
> https://api.bilibili.com/x/credit/v2/jury/vote
*请求方式POST*
认证方式Cookie
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | ---------------------- | ------ | ----------------------------------------------------- |
| case_id | str | 案件id | 必要 | |
| vote | num | 投票类型 | 必要 | 见「[众裁信息](judgement_info.md)」中表 |
| insiders | num | 是否观看此类视频 | 非必要 | 默认值为0<br/>见「[众裁信息](judgement_info.md)」中表 |
| content | str | 理由 | 非必要 | |
| anonymous | num | 是否匿名 | 非必要 | 默认值为0<br/>0不匿名<br />1匿名 |
| csrf | str | cookie中`bili_jct`的值 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>-101未登录<br />-111csrf 错误<br />-400请求错误投票类型错误<br />25005不是风纪委员<br />25011投票类型错误<br />25018不能进行此操作<br/><br/>*注:新版本对于一个不存在的`case_id`,不会报错。* |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
#### 旧API
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/vote
*请求方式POST*
认证方式CookieSESSDATA或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匿名<br />1不匿名 |
| apply_type | num | 是否更改原因 | 非必要 | 0保持原来原因<br />1投票给新原因 |
| origin_reason | num | 原始原因 | 非必要 | 见「封禁公示」中表 |
| apply_reason | num | 新原因 | 非必要 | 见「封禁公示」中表 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>-101未登录<br />-111csrf 错误<br />-400请求错误投票类型错误<br />25005不是风纪委员<br />25009 案件不存在<br/>25011投票类型错误<br />25012重复投票 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
**示例:**
为案件`2333`投票,建议封禁,无理由,不匿名,无支持/反对观点,不修改投票原因
Cookie方式
```shell
curl 'https://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 'https://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='
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
</details>

View File

@ -1,338 +0,0 @@
# 风纪委员会用户基本信息
- [基本数据](#基本数据)
- [统计信息](#统计信息)
- [新API2021年10月任期之后](#新api2021年10月任期之后)
- [旧API](#旧api)
- [检查申请风纪委员会资格](#检查申请风纪委员会资格)
---
## 基本数据
> https://api.bilibili.com/x/credit/v2/jury/jury
_请求方式GET_
认证方式CookieSESSDATA或 APP
**url 参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | -------------- | ------------ | ---- |
| access_key | str | APP 登录 Token | APP 方式必要 | |
**json 回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 信息 | 默认为 0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | -------------------------------------------------------------------------------------------------- |
| allow_apply | bool | true | 尚不明确(用户从未担任风纪委员时也为 true |
| apply_status | num | 任期审核状态 | -1 资格失效,且未申请<br />0 刚申请连任时<br />5 申请后,等待审核<br />3 申请连任成功status 为 1 |
| case_total | num | 总众裁数 | |
| err_msg | str | 空 | 尚不明确 |
| face | str | 用户头像 url | |
| status | num | 当前资格状态 | 0 未曾拥有资格<br />1 任期内<br />2 资格失效 |
| term_end | num | 任期结束时间 | 时间戳(秒级),无任期时为 0 |
| uname | str | 用户昵称 | |
**旧API**
部分字段信息停留在 2021 年 10 月。
<details>
<summary>查看旧 api</summary>
> https://api.bilibili.com/x/credit/jury/jury (旧)
根数据与新 API 一致,`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------------------- | ---------------------------- |
| caseTotal | num | 总众裁数 | |
| face | str | 用户头像 url | |
| restDays | num | 当前资格剩余天数 | 自 2021 年 10 月起,固定为 0 |
| rightRadio | num | 当前裁决正确率百分比 | 裁决数小于 3 时固定为 50 |
| status | num | 当前状态 | 1具有资格<br />2资格失效 |
| uname | str | 用户昵称 | |
</details>
## 统计信息
#### 新API2021年10月任期之后
>https://api.bilibili.com/x/credit/v2/jury/kpi
*方式GET*
认证方式Cookie
***备注**该api只收录2021年10月开始风纪委员改版之后的数据且每次只返回一次任期的数据。*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------- | ---- | ------- | ------------ | -------------------------------------- |
| term_id | num | 任期 id | 可不传此参数或将值留空或设为`0` | 未传参或留空时,**只**返回最近一次已结束的任期的数据 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />25018不能进行此操作还没有成为新风纪委员或传入了不属于你的`term_id` |
| message | str | 信息 | 默认为 0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 项 | 类型 | 内容 | 备注 |
| --------------- | ------ | ------------------ | ------------------------------------------------------------ |
| mid | num | 用户 UID | |
| uname | str | 留空 | |
| face | str | 留空 | |
| term_id | num | 任期 ID | 未传入`term_id`时返回的是最近一次已结束的任期的id |
| term_start | num | 任期开始时间 | 时间戳,精确到秒 |
| term_end | num | 任期结束时间 | 时间戳,精确到秒 |
| case_total | num | 任内总投票数 | |
| active_days | num | 活跃天数 | |
| like_num | num | 发表观点,被点赞数 | |
| accuracy_rate | num | 投中率 | 所选观点与大多数风纪委员一致,记为一次“投中” |
| pass | num | 任期是否合格 | 0 不合格<br />1 合格 |
| status | num | 当前资格状态 | 0 未曾拥有资格<br />1 任期内<br />2 资格失效 |
| apply_status | num | 当前资格申请状态 | -1 资格失效,且未申请<br />0 刚申请连任时<br />5 申请后,等待审核<br />3 申请连任成功status 为 1 |
| prev_term_id | num | 上一任期的任期 ID | 新版风纪委员启用后的第一个任期,此项的值为 0 |
| next_term_id | num | 下一任期的任期 ID | 若当前任期尚未结束,此项的值为 0 |
| rewards | object | 任期奖励 | 有`pendant`和`coin`两个子项 |
| rewards.pendant | num | 头像挂件礼包 ID | 合格后一般为 1不合格为 0 |
| rewards.coin | num | 硬币礼包 ID | 合格后一般为 3不合格为 0 |
<details>
<summary>查看响应示例:</summary>
注:本示例未传入`term_id`,返回的是最近一次已结束任期的统计结果
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"mid": 10001,
"uname": "",
"face": "",
"term_id": 300009,
"term_start": 1669100000,
"term_end": 1671690000,
"case_total": 591,
"active_days": 30,
"like_num": 0,
"accuracy_rate": 74,
"pass": 1,
"status": 1,
"apply_status": 3,
"prev_term_id": 300007,
"next_term_id": 0,
"rewards": {
"pendant": 1,
"coin": 3
}
}
}
```
</details>
#### 旧API
<details>
<summary>查看旧 api</summary>
> https://api.bilibili.com/x/credit/jury/kpi (旧)
*方式GET*
认证方式CookieSESSDATA或APP
***备注**该api只统计到2021年9月任期风纪委员改版之前。风纪委员改版之后的数据未收录*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-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 | 任期完成度 | 1=A2=S3=S+4=S++ |
| 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 'https://api.bilibili.com/x/credit/jury/kpi' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/kpi' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
```
</details>
</details>
## 检查申请风纪委员会资格
> ~~https://api.bilibili.com/x/credit/jury/requirement~~ (旧版)
> https://api.bilibili.com/x/credit/v2/jury/requirement (新版)
*请求方式GET*
认证方式CookieSESSDATA或APP
新版 api 与旧版的区别仅在新版没有 `level` 字段(新版风纪委员没有等级限制)。
只有用户~~会员等级≥Lv4、~~ 90 天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会。
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ------------------------------------- |
| blocked | bool | 是否被封禁 | true<br />false<br />**下同** |
| cert | bool | 是否实名认证 | |
| level | bool | 等级是否>=4 | 新版无该字段 |
| rule | bool | 是否90天内无违规 | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/v2/jury/requirement' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/v2/jury/requirement' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"blocked": false,
"cert": true,
"rule": true
}
}
```
</details>

View File

@ -1,998 +0,0 @@
# 众裁信息
- [查询投票过的单个案件](#查询投票过的单个案件)
- [查询案件众裁信息](#查询案件众裁信息)
- [查询我的众裁记录](#查询我的众裁记录)
- [获取众议观点](#获取众议观点)
---
<table>
<tr>
<th colspan="3">投票类型码总览</th>
</tr >
<tr>
<td>代码</td>
<td>含义</td>
</tr>
<tr>
<td >0</td>
<td>未投票</td>
</tr>
<tr>
<td >1</td>
<td>封禁</td>
</tr>
<tr>
<td>2</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>弃权</td>
</tr>
<tr>
<td>4</td>
<td>删除</td>
</tr>
</table>
<table>
<tr>
<th colspan="3">投票选项码总览</th>
</tr >
<tr>
<td >任务类型</td>
<td>代码</td>
<td>含义</td>
</tr>
<tr >
<td rowspan="4">单条评论(弹幕)</td>
<td >1</td>
<td>合适</td>
</tr>
<tr>
<td>2</td>
<td>一般</td>
</tr>
<tr>
<td>3</td>
<td>不合适</td>
</tr>
<tr>
<td>4</td>
<td>无法判断</td>
</tr>
<tr>
<td rowspan="4">评论(弹幕)氛围</td>
<td>11</td>
<td></td>
</tr>
<tr>
<td>12</td>
<td>一般</td>
</tr>
<tr>
<td>13</td>
<td></td>
</tr>
<tr>
<td>14</td>
<td>无法判断</td>
</tr>
</table>
## 查询投票过的单个案件
> https://api.bilibili.com/x/credit/v2/jury/case/info
*请求方式GET*
认证方式CookieSESSDATA或APP
可查询任意案件,无论自己是否参与投票。
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| case_id | str | 案件id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| case_id | str | 案件id | |
| case_type | num | 任务类型 | 1单条评论<br />2评论氛围<br />3单条弹幕<br />4弹幕氛围 |
| jury_state | num | `1` | 改版后未见过其它值 |
| participate | num | 是否投票 | 0未投票<br />1已投票 |
| vote_items | object | 投票选项 | 见开头「投票选项码总览」 |
| default_vote | num | 默认投票选项 | `4`或`14`即`无法判断` |
| status | num | 裁决状态(新版) | 0进行中<br />1已结束 |
| origin_start | num | 案件关联视频,播放进度条起始坐标 | 单位:`秒` |
| avid | num | 视频av号 | |
| cid | num | 弹幕池id | 弹幕相关参见「[xml弹幕](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku_xml.md)」 |
| vote_cd | num | `-1` | 暂不明确 |
| result | num | 众议结论 | 见开头「投票选项码总览」 |
| result_text | str | 众议结论文本 | |
| title | str | 视频标题 | |
| case_info | object | 案件信息 | 见「[附表1](#附表1data-对象下的case_info对象)」 |
| my_point | object | 我的观点 | 见「[附表4](#附表4data-对象下的my_point对象)」 |
| vote_info | object | 投票信息 | 见「[附表5](#附表5data-对象下的vote_info对象)」 |
###### 附表1`data` 对象下的`case_info`对象
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ------ | ------------ | ------------------------------------------------------------ |
| comment | object | 单条评论信息 | 仅当`case_type`为`1`有值。见「[附表2](#附表2评论信息)」 |
| danmu_img | str | 弹幕截图 | 仅当`case_type`为`4`有值截图URL |
| comments | object | 若干条评论 | 仅当`case_type`为`2`有值。见「[附表2](#附表2评论信息)」 |
| single_danmu | str | 单条弹幕信息 | 仅当`case_type`为`3`有值。见「[附表3](#附表3弹幕信息)」 |
###### 附表2评论信息
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| mid | num | 用户uid | |
| uname | str | 用户名 | |
| face | str | 用户头像 | 头像URL |
| content | str | 评论内容 | |
| child_comments | object | 子评论(对该评论的回复) | 见「[附表2](#附表2评论信息)」,单条评论和子评论下无`child_comments`字段 |
###### 附表3弹幕信息
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ------------------------------------------------------------ |
| id_str | str | 弹幕dmid | 见「[xml弹幕](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku_xml.md#%E5%B1%9E%E6%80%A7-p)」 |
| content | str | 弹幕内容 | |
| progress | num | | 尚不明确 |
###### 附表4`data` 对象下的`my_point`对象
记录了某个风纪委员的某个投票(观点)信息
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ---------------- | ------------------------------------------------------------ |
| opid | num | 观点编号 | 每当某个一个风纪委员给某个仲裁案件发表观点,就+1 |
| mid | num | 风纪委员用户ID | |
| uname | str | 风纪委员用户名 | 风纪委勾选匿名投票则显示“匿名用户” |
| face | str | 头像URL | 头像 |
| vote | num | 投票选项 | “合适题”分别为 `1` 或者 `2` 或者 `3` 或者 `4`<br/>对应:“合适”、“一般”、“不合适”、“无法判断”<br/><br/>“氛围题”分别为 `11` 或者 `12` 或者 `13` 或者 `14`<br/>对应:“好”、“一般”、“差”、“无法判断”<br/><br/>注释<br/>合适题:“单条弹幕(评论)是否合适?”<br/>氛围题:“弹幕(评论区)氛围如何” |
| vote_text | | 内容为空 | *现在系统已不再展示其他风纪委所投的票* |
| content | str | 观点内容 | 该风纪委员所发表的观点内容 |
| anonymous | num | 0 | 尚不明确 |
| like | num | 被点赞数量 | |
| hate | num | 被点踩数量 | |
| like_status | num | 点赞(踩)状态 | 本账号是否给该条评论点赞:<br/>0没做操作1给评论点赞2给评论点踩 |
| vote_time | num | 投票时间 | 时间戳,精确到秒 |
| insiders | num | 是否观看此类视频 | 1平时观看此类视频0平时不观看此类视频 |
###### 附表5`data` 对象下的`vote_info`对象
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ----- | -------- | -------------------------------------------- |
| all_count | num | 总投票数 | |
| counts | array | 观点分布 | 格式:`[合适, 一般, 不合适, 无法判断]` |
| insiders_counts | array | 行为分布 | 格式:`[平时会看此类视频, 平时不看此类视频]` |
**示例:**
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"case_id": "AC2SiaD8jlrL",
"case_type": 3,
"jury_state": 1,
"participate": 1,
"vote_items": [
{
"vote": 1,
"vote_text": "合适"
},
{
"vote": 2,
"vote_text": "一般"
},
{
"vote": 3,
"vote_text": "不合适"
},
{
"vote": 4,
"vote_text": "无法判断"
}
],
"default_vote": 4,
"status": 1,
"origin_start": 0,
"avid": 727792866,
"cid": 756815216,
"vote_cd": -1,
"result": 3,
"result_text": "不合适",
"title": "“国家队”守门员和朋友打赌,谁能在湿滑的地面踢进足球就送美刀",
"case_info": {
"comment": null,
"danmu_img": "",
"comments": null,
"single_danmu": {
"id_str": "1086612690354524160",
"content": "这守门员干啥呢?给块骨头我家狗都比他防的好",
"progress": 27859
}
},
"my_point": {
"opid": 10001,
"mid": 10001,
"uname": "风纪委员用户名",
"face": "http://i0.hdslb.com/bfs/face/e48952d599dbf011c2235239fafa2bf0deccef5a.jpg",
"vote": 3,
"vote_text": "不合适",
"content": "",
"anonymous": 0,
"like": 0,
"hate": 0,
"like_status": 0,
"vote_time": 1663655000,
"insiders": 1
},
"vote_info": {
"all_count": 306,
"counts": [90, 33, 177, 6],
"insiders_counts": [245, 61]
}
}
}
```
</details>
#### 旧 api
<details>
<summary>查看旧 api</summary>
> https://api.bilibili.com/x/credit/jury/juryCase
*请求方式GET*
认证方式CookieSESSDATA或APP
只能查询自己参与众裁的
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| cid | num | 案件id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误<br />25010没有权限查看案件 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| id | num | 案件id | |
| mid | num | 被举报用户mid | |
| status | num | 裁决状态 | 1投票中<br />2停止发放<br />3复核中结案中<br />4已裁决<br />5待重启<br />6未裁决<br />7冻结中<br />8队列中 |
| statusTitle | str | 封禁时间文字 | `judgeType`=1时有效 |
| originType | num | 来源类型 | 见「封禁公示」中表 |
| reasonType | num | 原因类型 | 见「封禁公示」中表 |
| originContent | str | 被举报的原文 | |
| punishResult | num | 处理结果 | 0<br />1封禁3天<br />2封禁7天<br />3永封<br />4其他封禁天数<br />5封禁15天<br />6仅删除不封禁 |
| punishTitle | str | 处罚原因 | |
| judgeType | num | 裁决类型 | `status`=4时有效<br />0未裁决<br/>1违规<br/>2不违规 |
| originUrl | str | 来源url | |
| blockedDays | num | 封禁时间 | `judgeType`=1时有效 |
| putTotal | num | | 作用尚不明确 |
| voteRule | num | 投票不违规人数 | |
| voteBreak | num | 投票建议封禁人数 | |
| voteDelete | num | 投票建议删除人数 | |
| startTime | num | 裁决起始时间 | 时间戳 |
| endTime | num | 裁决截止时间 | 时间戳<br />未结案固定为24小时 |
| ctime | num | 举报创建时间 | 时间戳 |
| mtime | num | 开始拉取时间 | 时间戳 |
| originTitle | str | 来源标题 | |
| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} |
| face | str | 被举报用户头像url | |
| uname | str | 被举报用户昵称 | |
| vote | num | 我的投票 | **见上表** |
| case_type | num | 众裁类型 | 0小众众裁<br />1大众众裁 |
**示例:**
查询案件`1239790`的信息
Cookie方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \
--data-urlencode 'cid=1239790' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \
--data-urlencode 'access_key=xxx' \
--data-urlencode 'cid=1239790' \
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
</details>
## 查询案件众裁信息
这是一个旧版的API暂未找到对应的新版API。
<details>
<summary>展开:</summary>
> https://api.bilibili.com/x/credit/jury/caseInfo
*请求方式GET*
注:该接口无需登录
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | ---- |
| cid | num | 案件id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | -------------------------------- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有效时object<br />无效时null | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ----------------- | ------------------------------------------------------------ |
| id | num | 案件id | |
| mid | num | 被举报用户mid | |
| status | num | 裁决状态 | 1投票中<br />2停止发放<br />3复核中结案中<br />4已裁决<br />5待重启<br />6未裁决<br />7冻结中<br />8队列中 |
| originType | num | 来源类型 | 见「封禁公示」中表 |
| reasonType | num | 原因类型 | 见「封禁公示」中表 |
| originContent | str | 被举报的原文 | |
| punishResult | num | 处理结果 | 0<br />1封禁3天<br />2封禁7天<br />3永封<br />4其他封禁天数<br />5封禁15天<br />6仅删除不封禁 |
| judgeType | num | 裁决类型 | `status`=4时有效<br />0未裁决<br/>1违规<br/>2不违规 |
| originUrl | str | 来源url | |
| blockedDays | num | 封禁时间 | `judgeType`=1时有效 |
| putTotal | num | | 作用尚不明确 |
| voteRule | num | 投票不违规人数 | |
| voteBreak | num | 投票建议封禁人数 | |
| voteDelete | num | 投票建议删除人数 | |
| startTime | num | 裁决起始时间 | 时间戳 |
| endTime | num | 裁决截止时间 | 时间戳<br />未结案固定为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小众众裁<br />1大众众裁 |
**示例:**
查询案件`1239790`的信息
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \
--data-urlencode 'cid=1239790'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
</details>
## 查询我的众裁记录
> https://api.bilibili.com/x/credit/v2/jury/case/list
*请求方式GET*
认证方式Cookie
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | -------------------- |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页显示数量 | 非必要 | 默认为30<br />最大30 |
**Headers参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---- | ------ | ---- |
| cookie | str | | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ------ | ------------ | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
| data.total | num | 仲裁案例数 | |
| data.list | array | 仲裁记录列表 | |
`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | --------------- | ------------ |
| 0 | object | 仲裁记录1 | |
| n | object | 仲裁记录n+1 | 按照时间顺序 |
| …… | object | …… | …… |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ------------------------------------------------------------ |
| case_id | str | 案件id | |
| case_type | num | 案件类型 | 1单条评论<br/>2评论氛围<br/>3单条弹幕<br/>4弹幕氛围 |
| status | num | 裁决状态 | 0投票中<br />1已结束 |
| vote | num | 投票选项 | “单条评论(弹幕)”分别为 `1` 或者 `2` 或者 `3` 或者 `4`<br/>对应:“合适”、“一般”、“不合适”、“无法判断”<br/><br/>“评论(弹幕)氛围”分别为 `11` 或者 `12` 或者 `13` 或者 `14`<br/>对应:“好”、“一般”、“差”、“无法判断” |
| vote_text | str | 投票选项文本 | *参考上条* |
| vote_time | num | 投票时间 | 时间戳,精确到秒 |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"total": 5428,
"list": [
{
"case_id": "AC2sOiNenwj1",
"case_type": 4,
"status": 1,
"vote": 11,
"vote_text": "好",
"vote_time": 1662700609
}
]
}
}
```
</details>
#### 旧 api
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/caseList
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页显示数量 | 非必要 | 默认为30<br />最大30 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | array | 仲裁记录列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | --------------- | ------------ |
| 0 | object | 仲裁记录1 | |
| n | object | 仲裁记录n+1 | 按照时间顺序 |
| …… | object | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ----------------- | ------------------------------------------------------------ |
| id | num | 案件id | |
| mid | num | 被举报用户mid | |
| status | num | 裁决状态 | 1投票中<br />2停止发放<br />3复核中结案中<br />4已裁决<br />5待重启<br />6未裁决<br />7冻结中<br />8队列中 |
| originType | num | 来源类型 | 见「封禁公示」中表 |
| reasonType | num | 原因类型 | 见「封禁公示」中表 |
| originContent | str | 被举报的原文 | |
| punishResult | num | 处理结果 | 0<br />1封禁3天<br />2封禁7天<br />3永封<br />4其他封禁天数<br />5封禁15天<br />6仅删除不封禁 |
| punishTitle | str | 处罚原因 | |
| judgeType | num | 裁决类型 | `status`=4时有效<br />0未裁决<br/>1违规<br/>2不违规 |
| originUrl | str | 来源url | |
| blockedDays | num | 封禁时间 | `judgeType`=1时有效 |
| putTotal | num | | 作用尚不明确 |
| voteRule | num | 投票不违规人数 | |
| voteBreak | num | 投票建议封禁人数 | |
| voteDelete | num | 投票建议删除人数 | |
| startTime | num | 裁决起始时间 | 时间戳 |
| endTime | num | 裁决截止时间 | 时间戳<br />未结案固定为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小众众裁<br />1大众众裁 |
**示例:**
查询我的历史众裁第1页每页显示1个案件
Cookie方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/caseList' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/caseList' \
--data-urlencode 'access_key=xxx' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=1'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
```
</details>
</details>
## 获取众议观点
> https://api.bilibili.com/x/credit/v2/jury/case/opinion
*请求方式GET*
认证方式Cookie
**标头参数Headers**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | ---- |
| Cookie | str | Cookie | 必要 | |
**URL参数Query Params**
| 参数名 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------- | ------------------------------------------- |
| case_id | str | 仲裁案件id | **必填** |
| pn | num | | 显示第x页default = 1 |
| ps | num | | 每页显示y条观点Max = 20default = 10 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br>-400`ps`参数大于可允许的最大值`20` |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ----- | -------------------------- | ---- |
| total | num | 当前案件众议观点总数 | |
| list | array | 无数据时是一个空数组:“[]” | |
`data.list`对象是一个数组,里面包含`ps`个object参数`ps`见上文object结构见「[附表4](#附表4data-对象下的my_point对象)」)
**示例:**
查看案件`AC1xx411c7ac`的众议观点,每页`2`项,查看第`1`页
```shell
curl -G 'https://api.bilibili.com/x/credit/v2/jury/case/opinion' \
--data-urlencode 'case_id=AC1xx411c7ac' \
--data-urlencode 'pn=1' \
--data-urlencode 'ps=2' \
--header 'cookie: xxxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"total": 48,
"list": [
{
"opid": 46087379,
"mid": 22006415,
"uname": "匿名用户",
"face": "http://i0.hdslb.com/bfs/face/e48952d599dbf011c2235239fafa2bf0deccef5a.jpg",
"vote": 11,
"vote_text": "",
"content": "正常评论",
"anonymous": 1,
"like": 0,
"hate": 0,
"like_status": 0,
"vote_time": 1661430391,
"insiders": 1
},
{
"opid": 46087280,
"mid": 19243907,
"uname": "匿名用户",
"face": "http://i0.hdslb.com/bfs/face/e85d7ab3425d3dd0f0796bd7f945b47ac27ca82a.jpg",
"vote": 11,
"vote_text": "",
"content": "并未发现明显问题。",
"anonymous": 1,
"like": 0,
"hate": 0,
"like_status": 0,
"vote_time": 1661430337,
"insiders": 0
}
]
}
}
```
</details>
#### 旧 api
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/case/opinion
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| cid | num | 案件id | 必要 | |
| ps | num | 每页项数 | 非必要 | 默认为10 |
| pn | num | 页码 | 非必要 | 默认为1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| count | num | 观点总数 | |
| opinion | 有效时array<br />无效时null | 观点列表 | |
`data` 中的`opinion` 数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | ----------- | ------------ |
| 0 | object | 观点1 | |
| n | object | 观点n+1 | 按照时间顺序 |
| …… | object | …… | …… |
`opinion` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| mid | num | 用户mid | 仅非匿名有此项 |
| face | str | 用户头像 | 仅非匿名有此项 |
| name | str | 用户昵称 | 仅非匿名有此项 |
| opid | num | 观点id | |
| vote | num | 投票选择 | **见上表** |
| content | str | 观点内容 | |
| attr | num | 是否匿名 | 0匿名<br />1不匿名 |
| hate | num | 喜欢人数 | |
| like | num | 不喜欢人数 | |
**示例:**
查看案件`1239790`的众议观点每页10项查看第一页
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/case/opinion' \
--data-urlencode 'cid=1239790' \
--data-urlencode 'ps=10' \
--data-urlencode 'pn=1' \
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
}
```
</details>
</details>

View File

@ -1,184 +0,0 @@
# 全站广播
可用的广播服务:
- [视频实时信息](video_room.md)√
## 获取广播服务器地址
> https://api.bilibili.com/x/web-interface/broadcast/servers
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | --------------------------------- |
| platform | str | 平台选择 | 必要 | 为web时输出域名<br />其他时输出ip |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-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 'https://api.bilibili.com/x/web-interface/broadcast/servers' \
--data-urlencode 'platform=web'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
当`platform`=其他时显示节点ip
```shell
curl -G 'https://api.bilibili.com/x/web-interface/broadcast/servers' \
--data-urlencode 'platform=1'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
## 服务器数据包
连接服务器分为三种方式分别是ws wss tcp数据包分为上行和下行
单个数据包分为头部和正文
其中上行的有认证包 心跳包,下行的有认证包回复 心跳包回复 普通包
建立连接后超过30s内未发送认证包或握手后30s内未发送心跳包或发送了错误的认证包都会被强制断开连接
操作流程:
1.发送认证包,等待接收认证回复
2.确认握手成功后每30s内发送心跳包并立即接收心跳包回复
3.空闲时间接收普通包
### 数据包结构
头部通用于上行和下行数据包
头部格式:
| 偏移量 | 长度(字节) | 类型 | 含义 |
| ------ | ------------ | ------ | ---------------------------------------------------- |
| 0x00 | 4 | uint32 | 封包总大小(头部大小+正文大小) |
| 0x04 | 2 | uint16 | 头部大小一般为0x001218字节 |
| 0x06 | 2 | uint16 | 协议版本可取常数1 |
| 0x08 | 4 | uint32 | 操作码(包类型)<br />**见下表** |
| 0x0C | 4 | uint32 | sequence请求次数可取常数1<br />对于普通包恒为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|
```

View File

@ -1,152 +0,0 @@
# 视频实时信息
- [认证包(上行)](#认证包上行)
- [认证包回复(下行)](#认证包回复下行)
- [心跳包(上行)](#心跳包上行)
- [心跳包回复(实时观看数)(下行)](#心跳包回复实时观看数下行)
- [普通包(实时弹幕)(下行)](#普通包实时弹幕下行)
---
## 认证包(上行)
**正文内容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 |]|
```

View File

@ -1,645 +0,0 @@
# 课程基本信息
- [获取课程基本信息](#获取课程基本信息)
- [获取课程分集列表](#获取课程分集列表)
---
课程ssid与epid和番剧不互通
课程avid与普通视频绝大部分api接口不能互通少部分互通接口如下
1. 获取视频简介
2. 查询视频状态数
3. 查询分P列表
4. 视频快照
5. 获取弹幕使用cid
6. 发送弹幕
7. 高能进度条使用cid
## 获取课程基本信息
> https://api.bilibili.com/pugv/view/web/season
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式referer为 `.bilibili.com`域名下
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------------ | -------------------------------------------------- |
| season_id | num | 课程ssid | 必要(可选) | season_id与ep_id任选其一<br />**与番剧ssid不互通** |
| ep_id | num | 课程epid | 必要(可选) | season_id与ep_id任选其一<br />**与番剧epid不互通** |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------- |
| code | num | 返回值 | 0成功<br />-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可观看<br />2不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />false未观看<br />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`**<br />0未关注<br />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未收藏<br />1已收藏 |
| favored_count | num | 1 | **作用尚不明确** |
| payed | num | 是否购买 | 0未购买<br />1已购买 |
| progress | obj | 课程进度 | 未登录无此项 |
`user_status`中的`progress`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------------ | -------- |
| last_ep_id | num | 最后观看的epid | |
| last_ep_index | str | 最后观看的标题 | |
| last_time | num | 最后观看的时间进度 | 单位为秒 |
**示例:**
查询课程`ss61`或分集`ep790`的信息
ssid方式
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'season_id=61' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
epid方式
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'ep_id=790' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
<details>
<summary>查看响应示例:</summary>
```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.68B币起/53期",
"discount_desc": "262.68B币",
"discount_prefix": "券后",
"pay_shade": "券后支付262.68B币即可观看所有视频",
"price": 398.0,
"price_format": "398"
},
"purchase_note": {
"content": "1. 本内容为付费内容,购买成功后方可观看。<br/>2. 本内容为虚拟服务,已购买内容不支持退款,敬请谅解。<br/>3. 实际购买价格以页面展示的价格及订单结算页显示价格为准。<br/>4. 如您在购买付费内容时有任何疑问,可随时咨询在线客服。<br/>完整的购买协议,请点击阅读<a href=\"https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html\" color=\"#0ba395\" target=\"_blank\">《bilibili付费内容购买协议》</a>",
"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"
}
```
</details>
## 获取课程分集列表
> https://api.bilibili.com/pugv/view/web/ep/list
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式referer为 `.bilibili.com`域名下
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------ | -------------------- |
| season_id | num | 课程ssid | 必要 | **与番剧ssid不互通** |
| ps | num | 每页项数 | 非必要 | 默认为50 |
| pn | num | 页码 | 非必要 | 默认为1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------- |
| code | num | 返回值 | 0成功<br />-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可观看<br />2不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />false未观看<br />true已观看 |
| watchedHistory | num | 该集观看历史 | **需要登录SESSDATA且referer为`https://www.bilibili.com`** |
`data`中的`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------------- | ----------------------------------------- |
| next | bool | 是否存在下一页 | false不存在下一页<br />true存在下一页 |
| num | num | 当前页码 | |
| size | num | 每页项数 | |
| total | num | 总价项数 | |
**示例:**
按照每页5项查询课程`ss61`的分集列表第1页
```shell
curl -G 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
```
</details>

View File

@ -1,226 +0,0 @@
# 课程视频流URL
- [获取课程视频流URLweb端](#获取课程视频流URLweb端)
---
<img src="/imgs/download.svg" width="100" height="100"/>
## 获取课程视频流URLweb端
> https://api.bilibili.com/pugv/player/web/playurl
*请求方式GET*
认证方式CookieSESSDATA
**注:**
1. 本接口为课程视频专用,故与普通视频不互通
2. 大部分使用方法及视频的取流方法继承[视频流url文档](../video/videostream_url.md)
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------------- | ------ | ------------------------------------------------------------ |
| avid | num | 课程avid | 必要 | |
| ep_id | num | 课程epid | 必要 | |
| cid | num | 视频cid | 必要 | |
| qn | num | 视频清晰度选择 | 非必要 | 参考[qn定义](../video/videostream_url.md#qn视频清晰度标识) |
| fnver | num | 视频流版本 | 非必要 | 参考[fnver定义](../video/videostream_url.md#fnver视频流版本标识) |
| fnval | num | 视频流类型 | 非必要 | 参考[fnval定义](../video/videostream_url.md#fnval视频流格式标识) |
| fourk | num | 是否允许4K视频 | 非必要 | 默认为0<br />画质最高1080P0<br />画质最高4K1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功 <br />-400请求错误<br />-404无视频<br />-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 | 视频长度 | 单位为毫秒<br />不同分辨率可能有略微差异 |
| 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 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
```
</details>

View File

@ -1,95 +0,0 @@
# 终端信息查询
- [终端信息查询](#终端信息查询)
---
## 终端信息查询
> https://api.bilibili.com/client_info
*请求方式:任意*
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | -------- | ------------------- | ------------ |
| country | str | 国家/地区名 | |
| ip | str | 公网IP地址 | |
| province | str | 省/州 | 非必须存在项 |
| city | str | 城市 | 非必须存在项 |
| district | district | | |
| isp | str | 运营商名 | |
| dns | str | dns服务器ip | |
| dns_isp | str | dns服务器ip运营商名 | |
| headers | obj | 头部字段 | |
`data`中的`headers`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------------------------- | ---- | ----------------- | ---- |
| HTTP_ACCEPT_ENCODING | str | | |
| HTTP_X_CACHE_SERVER | str | CDN服务器名 | |
| HTTP_X_CACHE_SERVER_ADDR | str | CDN服务器ip | |
| HTTP_X_BACKEND_BILI_REAL_IP | str | 真实服务器ip | |
| HTTP_X_BACKEND_BILI_REAL_IPPORT | str | 真实服务器端口 | |
| HTTP_X_BACKEND_BILI_REAL_IP_CHAIN | str | 真实服务器ip+端口 | |
| HTTP_X_SCHEME | str | 访问协议 | |
| HTTP_HOST | str | 访问域名 | |
| HTTP_USER_AGENT | str | 客户端UA | |
| HTTP_ACCEPT | str | | |
| HTTP_CACHE_CONTROL | str | | |
**示例:**
```shell
curl 'https://api.bilibili.com/client_info'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "ok",
"data": {
"country": "中国",
"ip": "36.40.120.140",
"province": "陕西",
"city": "渭南",
"district": null,
"isp": "电信",
"dns": null,
"dns_isp": null,
"headers": {
"HTTP_ACCEPT_ENCODING": "gzip",
"HTTP_X_CACHE_SERVER": "ks-bj-webcdn-07",
"HTTP_X_CACHE_SERVER_ADDR": "10.33.2.170",
"HTTP_X_BACKEND_BILI_REAL_IP": "36.40.120.140",
"HTTP_X_BACKEND_BILI_REAL_IPPORT": "22058",
"HTTP_X_BACKEND_BILI_REAL_IP_CHAIN": "36.40.120.140:22058",
"HTTP_X_SCHEME": "https",
"HTTP_HOST": "api.bilibili.com",
"HTTP_USER_AGENT": "PostmanRuntime/7.26.8",
"HTTP_ACCEPT": "*/*",
"HTTP_CACHE_CONTROL": "no-cache"
}
}
}
```
</details>

View File

@ -1,66 +0,0 @@
# 通过ip确定地理位置
- [通过ip确定位置](#通过ip确定位置)
---
## 通过ip确定位置
> https://api.bilibili.com/x/web-interface/zone
*请求方式GET*
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------- | ------------ |
| addr | str | 公网IP地址 | |
| country | str | 国家/地区名 | |
| province | str | 省/州 | 非必须存在项 |
| city | str | 城市 | 非必须存在项 |
| isp | str | 运营商名 | |
| latitude | num | 纬度 | |
| longitude | num | 经度 | |
| zone_id | num | ip数据库id | |
| country_code | num | 国家/地区代码 | |
**示例:**
```shell
curl 'https://api.bilibili.com/x/web-interface/zone'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"addr":"36.40.120.145",
"country":"中国",
"province":"陕西",
"city":"渭南",
"isp":"电信",
"latitude":34.4995,
"longitude":109.492821,
"zone_id":4472912,
"country_code":86
}
}
```
</details>

View File

@ -1,544 +0,0 @@
# 评论区操作
- [发表评论](#发表评论)
- [点赞评论](#点赞评论)
- [点踩评论](#点踩评论)
- [删除评论](#删除评论)
- [置顶评论](#置顶评论)
- [举报评论](#举报评论)
---
## 发表评论
> https://api.bilibili.com/x/v2/reply/add
*请求方式POST*
认证方式CookieSESSDATA或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<br />大于二级评论为要回复的评论id |
| message | str | 发送评论内容 | 必要 | 最大1000字符<br />表情使用表情转义符 |
| plat | num | 发送平台标识 | 非必要 | 1web端<br />2安卓客户端<br />3ios客户端<br />4wp客户端<br />默认为1 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-509请求过于频繁<br />12001已经存在评论主题<br />12002评论区已关闭<br />12003禁止回复<br />12006没有该评论<br />12009评论主体的type不合法<br />12015需要评论验证码<br />12016评论内容包含敏感信息<br />12025评论字数过多<br />12035该账号被UP主列入评论黑名单<br />12051重复评论请勿刷屏<br />12052评论区已关闭<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | <br /> |
| 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<br />若为二级评论则为该评论id<br />大于二级评论为上一级评论id |
| dialog_str | str | 回复对方rpid | 字串格式 |
| root | num | 根评论rpid | 若为一级评论则为0<br />大于一级评论则为根评论id |
| root_str | str | 根评论rpid | 字串格式 |
| parent | num | 回复父评论rpid | 若为一级评论则为0<br />若为二级评论则为根评论id<br />大于二级评论为上一级评论id |
| parent_str | str | 回复父评论rpid | 字串格式 |
| emote | obj | 表情转义符信息 | [对象定义见表](readme.md#评论条目对象) |
| reply | 有效时obj<br />无效时null | | [对象定义见表](readme.md#评论条目对象) |
**示例:**
给视频`av243322853`发送内容为`测试test[泠鸢yousa_awsl]`的评论带有表情转义符平台标识为1web端
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
}
```
</details>
## 点赞评论
> https://api.bilibili.com/x/v2/reply/action
*请求方式POST*
认证方式CookieSESSDATA或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<br />0取消赞<br />1点赞 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12004禁止操作 赞或踩<br />12006没有该评论<br />12009评论主体的type不合法<br />12011不合法的赞或踩<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
点赞视频`av243322853`下评论`rpid=3039053308`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 点踩评论
> https://api.bilibili.com/x/v2/reply/hate
*请求方式POST*
认证方式CookieSESSDATA或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<br />0取消踩<br />1点踩 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12004禁止操作 赞或踩<br />12006没有该评论<br />12009评论主体的type不合法<br />12011不合法的赞或踩<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
点踩视频`av243322853`下评论`rpid=3039053308`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 删除评论
> https://api.bilibili.com/x/v2/reply/del
*请求方式POST*
认证方式CookieSESSDATA或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成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-403权限不足<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12009评论主体的type不合法<br />12022已经被删除了<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | **作用尚不明确** |
**示例:**
删除`av243322853`下评论`rpid=3039053308`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 置顶评论
> https://api.bilibili.com/x/v2/reply/top
*请求方式POST*
认证方式CookieSESSDATA或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<br />0取消置顶<br />1设为置顶 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-403权限不足<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12006没有该评论<br />12009评论主体的type不合法<br />12029已经有置顶评论<br />12030不能置顶非一级评论<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
置顶视频`av243322853`下评论`rpid=2940645593`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 举报评论
> https://api.bilibili.com/x/v2/reply/report
*请求方式POST*
认证方式CookieSESSDATA或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成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-403权限不足<br />-404无此项<br />-500服务器错误<br />-509请求过于频繁<br />12002评论区已关闭<br />12006没有该评论<br />12008已经举报过了<br />12009评论主体的type不合法<br />12019举报过于频繁<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
举报视频` av752881391 `下评论`rpid=3062537442`,理由是`引战`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

File diff suppressed because it is too large Load Diff

View File

@ -1,336 +0,0 @@
# 评论区
<img src="/imgs/comment.svg" width="100" height="100"/>
评论系统为全站通用且APP与web端接口共用以type标明对象类型以oid指向响应的对象id
---
**继续查看:**
- [查询类](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 | 评论区对象 id | |
| type | num | 评论区类型代码 | **类型代码见上表** |
| mid | num | 发送者 mid | |
| root | num | 根评论 rpid | 若为一级评论则为 0<br />大于一级评论则为根评论 id |
| parent | num | 回复父评论 rpid | 若为一级评论则为 0<br />若为二级评论则为根评论 rpid<br />大于二级评论为上一级评 论 rpid |
| dialog | num | 回复对方 rpid | 若为一级评论则为 0<br />若为二级评论则为该评论 rpid<br />大于二级评论为上一级评论 rpid |
| count | num | 二级评论条数 | |
| rcount | num | 回复评论条数 | |
| floor | num | 评论楼层号 | **注:若不支持楼层则无此项** |
| state | num | (?) | |
| fansgrade | num | 是否具有粉丝标签 | 0<br />1有 |
| attr | num | 某属性位? | |
| ctime | num | 评论发送时间 | 时间戳 |
| rpid_str | str | 评论rpid | 字串格式 |
| root_str | str | 根评论rpid | 字串格式 |
| parent_str | str | 回复父评论rpid | 字串格式 |
| like | num | 评论获赞数 | |
| action | num | 当前用户操作状态 | 需要登录(Cookie 或 APP) <br />否则恒为 0<br />0<br />1已点赞<br />2已点踩 |
| member | obj | 评论发送者信息 | |
| content | obj | 评论信息 | |
| replies | 无效时null<br />有效时array | 评论回复条目预览 | **仅嵌套一层**<br />否则为 null |
| assist | num | (?) | |
| folder | obj | 折叠信息 | |
| up_action | obj | 评论 UP 主操作信息 | |
| show_follow | bool | (?) | |
| invisible | bool | | |
| card_label | obj | 右上角卡片标签信息 | |
| reply_control | obj | 评论提示文案信息 | |
`评论条目`中的`member`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ----------------------------- | ---------------------- | ------------------------------------------------------------ |
| mid | str | 发送者 mid | |
| uname | str | 发送者昵称 | |
| sex | str | 发送者性别 | 男 女 保密 |
| sign | str | 发送者签名 | |
| avatar | str | 发送者头像 url | |
| rank | str | (?) | |
| DisplayRank | str | (?) | |
| level_info | obj | 发送者等级 | |
| pendant | obj | 发送者头像框信息 | |
| nameplate | obj | 发送者勋章信息 | |
| official_verify | obj | 发送者认证信息 | |
| vip | obj | 发送者会员信息 | |
| fans_detail | 无效时null<br />有效时obj | 发送者粉丝标签 | |
| following | num | 是否关注该用户 | 需要登录(Cookie或APP) <br />否则恒为0<br />0未关注<br />1已关注 |
| is_followed | num | 是否被该用户关注 | 需要登录(Cookie或APP) <br />否则恒为0<br />0未关注<br />1已关注 |
| user_sailing | obj | 发送者评论条目装扮信息 | |
| is_contractor | bool | 是否为合作用户? | |
| contract_desc | str | 合作用户说明? | |
`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 | |
| image_enhance_frame | str | (?) | |
`member`中的`nameplate`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ----------------- | ---- |
| nid | num | 勋章 id | |
| name | str | 勋章名称 | |
| image | str | 挂件图片 url 正常 | |
| image_small | str | 勋章图片 url 小 | |
| level | str | 勋章等级 | |
| condition | str | 勋章条件 | |
`member`中的`official_verify`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---------------------------------------- |
| type | num | 是否认证 | -1<br />0个人认证<br />1机构认证 |
| desc | str | 认证信息 | 无为空 |
`member`中的`vip`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | ---- | -------------- | --------------------------------------- |
| vipType | num | 大会员类型 | 0<br />1月会员<br />2年以上会员 |
| vipDueDate | num | 大会员到期时间 | 毫秒 时间戳 |
| dueRemark | str | (?) | |
| accessStatus | num | (?) | |
| vipStatus | num | 大会员状态 | 0<br />1有 |
| vipStatusWarn | str | (?) | |
| theme_type | num | 会员样式 id | |
| label | obj | 会员铭牌样式 | |
| avatar_subscript | num | (?) | |
| avatar_subscript_url | str | (?) | |
| nickname_color | str | 昵称颜色 | |
`vip`中的`label`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | ------------------------------------------------------------ |
| path | str | (?) | |
| text | str | 会员类型文案 | |
| label_theme | str | 会员类型 | vip大会员<br />annual_vip年度大会员<br />ten_annual_vip十年大会员<br />hundred_annual_vip百年大会员 |
| text_color | str | 文字颜色? | |
| bg_style | num | (?) | |
| bg_color | str | 背景颜色? | |
| border_color | str | 描边颜色? | |
`member`中的`fans_detail`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------ | ---- |
| uid | num | 用户 mid | |
| medal_id | num | 粉丝标签 id | |
| medal_name | str | 粉丝标签名 | |
| score | num | (?) | |
| level | num | 当前标签等级 | |
| intimacy | num | (?) | |
| master_status | num | (?) | |
| is_receive | num | (?) | |
`member`中的`user_sailing`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ----------------------------- | ------------ | ---- |
| pendant | 无效时null<br />有效时obj | 头像框信息 | |
| cardbg | 无效时null<br />有效时obj | 评论卡片装扮 | |
| cardbg_with_focus | null | (?) | |
`user_sailing`中的`pendant`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | -------------- | -------------------------------------- |
| id | num | 头像框 id | |
| name | str | 头像框名称 | |
| image | str | 头像框图片 url | |
| jump_url | str | 空 | |
| type | str | 装扮类型 | suit一般装扮<br />vip_suitvip 装扮 |
| image_enhance | str | (?) | |
| image_enhance_frame | str | (?) | |
`user_sailing`中的`cardbg`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------------------ | -------------------------------------- |
| id | num | 评论条目装扮 id | |
| name | str | 评论条目装扮名称 | |
| image | str | 评论条目装扮图片 url | |
| jump_url | str | 评论条目装扮商城页面 url | |
| fan | obj | 粉丝专属信息 | |
| type | str | 装扮类型 | suit一般装扮<br />vip_suitvip 装扮 |
`cardbg`中的`fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------------ | ---------------- |
| is_fan | num | 是否为粉丝专属装扮 | 0<br />1是 |
| number | num | 粉丝专属编号 | |
| color | str | 数字颜色 | 颜色码 |
| name | str | 装扮名称 | |
| num_desc | str | 粉丝专属编号 | 字串格式 |
`评论条目`中的`content`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------------------ | ------------------------------------------------------------ |
| message | str | 评论内容 | **重要** |
| plat | num | 评论发送端 | 1web端<br />2安卓客户端<br />3ios 客户端<br />4wp 客户端 |
| 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免费<br />2会员专属<br />3购买所得<br />4颜文字 |
| attr | num | (?) | |
| text | str | 表情转义符 | |
| url | str | 表情图片 url | |
| meta | obj | 属性信息 | |
| mtime | num | 表情创建时间 | 时间戳 |
| jump_title | str | 表情名称 | |
`{表情转义符}`中的`meta`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------ | ---------------- |
| size | num | 表情尺寸信息 | 1<br />2大 |
| alias | str | 简写名 | 无则无此项 |
`content`中的`jump_url`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------------- | -------- |
| {超链转义} | obj | 超链转义信息 1 | |
| …… | obj | 超链转义信息 n | 向下扩展 |
`jump_url`中的`{超链转义}`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | -------- | ---- |
| title | str | 标题 | |
| state | num | 图标 url | |
| prefixIcon | str | (?) | |
| appUrlSchema | str | (?) | |
| appName | str | (?) | |
| appPackageName | str | (?) | |
| clickReport | str | 上报 id | |
`评论条目`中的`replies`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ------------------------------------------------------------ |
| 0 | obj | 回复条目1 | **为本对象的递归嵌套**<br />**仅可嵌套一层**<br />按照热度顺序排列 |
| 1 | obj | 回复条目2 | |
| 2 | obj | 回复条目3 | 最后一项 |
`评论条目`中的`folder`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ---------------------- | ---- |
| has_folded | bool | 是否有被折叠的二级评论 | |
| is_folded | bool | 评论是否被折叠 | |
| rule | str | 相关规则页面 url | |
`评论条目`中的`up_action`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ---------------- | ----------------------- |
| like | bool | 是否UP主觉得很赞 | false<br />true是 |
| reply | bool | 是否被UP主回复 | false<br />true是 |
`评论条目`中的`card_label`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | ---- | ------------ | ----------------------------- |
| rpid | num | 评论 rpid | |
| text_content | str | 标签文本 | 已知有`妙评` |
| text_color_day | str | 日间文本颜色 | 十六进制颜色值,下同 |
| text_color_night | str | 夜间文本颜色 | |
| label_color_day | str | 日间标签颜色 | |
| label_color_night | str | 夜间标签颜色 | |
| image | str | | 作用不明 |
| type | str | 1 | 作用不明 |
| background | str | 背景图片 url | |
| background_width | num | 背景图片宽度 | |
| background_height | num | 背景图片高度 | |
| jump_url | str | 跳转链接 | |
| effect | num | 0 | 作用不明,可能用于控制动画,下同 |
| effect_start_time | num | 0 | |
`评论条目`中的`reply_control`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | ---- | -------- | -------------------- |
| sub_reply_entry_text | str | 回复提示 | `共 xx 条回复` |
| sub_reply_title_text | str | 回复提示 | `相关回复共有 xx 条` |
| time_desc | str | 时间提示 | `xx 天/小时 前发布` |

View File

@ -1,184 +0,0 @@
## 🍴目录
计划整理分类 & 目录:(文档已完结请选中 checkbox)
- [x] [API 签名](other/API_sign.md)
- [x] [公共错误码](other/errcode.md)
- [x] [图片格式化](other/picture.md)
- [x] [bvid 说明](other/bvid_desc.md)
- [ ] [gRPC API 接口定义](grpc_api)
- [ ] 登录
- [x] [登录操作 (人机认证)](login/login_action)
- [x] [短信登录](login/login_action/SMS.md)
- [x] [密码登录](login/login_action/password.md)
- [x] [二维码登录](login/login_action/QR.md)
- [ ] SNS 登录 (QQ & 微信 & 微博)
- [x] [登录基本信息](login/login_info.md)
- [ ] [个人中心](login/member_center.md)
- [ ] [注销登录](login/exit.md)
- [x] [登录记录](login/login_notice.md)
- [ ] 消息中心
- [ ] [通知类消息](message/msg.md)
- [ ] [私信](message/private_msg.md)
- [ ] [设置](message/config.md)
- [ ] 用户
- [x] [基本信息](user/info.md)
- [x] [状态数](user/status_number.md)
- [x] [关系](user/relation.md)
- [ ] [个人空间](user/space.md)
- [x] [检查昵称是否可注册](user/check_nickname.md)
- [x] [用户注册](user/register.md)
- [ ] 大会员
- [ ] [大会员基本信息](vip/info.md)
- [ ] [大会员中心](vip/center.md)
- [ ] [大会员签到](vip/clockin.md)
- [ ] [大会员操作](vip/action.md)
- [ ] 视频
- [x] [视频分区一览 (分区代码)](video/video_zone.md)
- [x] [基本信息](video/info.md)
- [x] [状态数](video/status_number.md)
- [x] [快照](video/snapshot.md)
- [x] [点赞 & 投币 & 收藏 & 分享](video/like_coin_fav.md)
- [ ] [TAG](video/tags.md)
- [x] [视频推荐](video/recommend.md)
- [x] [播放&下载地址 (视频流)](video/videostream_url.md)
- [ ] [互动视频](video/interact_video.md)
- [x] [高能进度条](video/pbp.md)
- [ ] [信息上报 (心跳及记录历史)](video/report.md)
- [x] [视频属性数据](video/attribute_data.md)
- [x] [视频在线人数](video/online.md)
- [ ] 剧集 (番剧、影视)
- [ ] [基本信息](bangumi/info.md)
- [ ] [播放&下载地址(视频流)](bangumi/videostream_url.md)
- [ ] [时间轴](bangumi/timeline.md)
- [ ] 状态数
- [ ] 操作
- [ ] 视频弹幕
- [x] [protobuf 实时弹幕](danmaku/danmaku_proto.md)
- [x] [protobuf 弹幕元数据BAS 弹幕 / 互动弹幕)](danmaku/danmaku_view_proto.md)
- [x] [xml 实时弹幕](danmaku/danmaku_xml.md)
- [x] [历史弹幕](danmaku/history.md)
- [x] [快照](danmaku/snapshot.md)
- [ ] [弹幕操作](danmaku/action.md)
- [ ] 高级弹幕
- [ ] 屏蔽管理
- [ ] 智能防挡弹幕
- [x] [弹幕个人配置修改](danmaku/config.md)
- [x] [名词解释](danmaku/buzzword.md)
- [x] 视频笔记
- [x] [笔记列表](note/list.md)
- [x] [笔记详细信息](note/info.md)
- [x] [笔记操作](note/action.md)
- [ ] 专栏
- [ ] 分区
- [X] [基本信息](article/info.md)
- [X] [点赞 & 投币 & 收藏 & 分享](article/like_coin_fav.md)
- [X] [文集基本信息](article/articles.md)
- [X] [获取用户专栏文章列表](article/list.md)
- [ ] 音频
- [x] [歌曲基本信息](audio/info.md)
- [ ] [歌单 & 音频收藏夹详细信息](audio/music_list.md)
- [ ] [状态数](audio/status_number.md)
- [ ] [投币 & 收藏](audio/coin&fav.md)
- [x] [播放 & 下载地址(音频流)](audio/musicstream_url.md)
- [ ] 音频榜单
- [ ] 排行榜 & 最新视频
- [ ] [排行榜](ranking&dynamic/ranking.md)
- [ ] [热门视频](ranking&dynamic/popular.md)
- [ ] [最新视频](ranking&dynamic/dynamic.md)
- [ ] 搜索
- [x] [搜索请求](search/search_request.md)
- [x] [搜索结果](search/search_response.md)
- [x] [默认搜索 & 热搜](search/hot.md)
- [x] [搜索建议](search/suggest.md)
- [ ] 小黑屋
- [ ] 基本信息
- [x] [封禁公示](blackroom/banlist.md)
- [x] [风纪委员及众裁案件相关](blackroom/jury)
- [x] [风纪委员基本信息](blackroom/jury/base_info.md)
- [x] [众裁案件基本信息](blackroom/jury/judgement_info.md)
- [x] [裁决操作](blackroom/jury/action.md)
- [x] 评论区
- [x] [评论区明细](comment/list.md)
- [x] [操作](comment/action.md)
- [ ] 表情
- [x] [表情及表情包信息](emoji/list.md)
- [x] [操作](emoji/action.md)
- [ ] 创作中心
- [ ] [统计与数据](creativecenter/statistics&data.md)
- [ ] 列表查询相关
- [x] [电磁力数据](creativecenter/railgun.md)
- [x] 实时广播(通讯协议)
- [x] [视频内广播](broadcast/video_room.md)
- [ ] 充电
- [x] [B币方式](electric/Bcoin.md)
- [x] [微信 & 支付宝方式](electric/WeChat&Alipay.md)
- [x] [充电留言](electric/charge_msg.md)
- [x] [充电列表](electric/charge_list.md)
- [ ] 动态
- [ ] [动态基本信息](dynamic/basicInfo.md)
- [ ] [发送 & 转载动态](dynamic/publish.md)
- [ ] [根据关键字搜索用户at 别人时的填充列表)](dynamic/atlist.md)
- [ ] [操作](dynamic/action.md)
- [ ] 动态列表
- [x] [特定话题动态列表](/dynamic/tag_dynamics.md)
- [ ] [动态内容](/dynamic/get_dynamic_detail.md)
- [ ] 相簿
- [x] [基本信息](album/info.md)
- [x] [相簿列表](album/list.md)
- [x] [推荐作者](album/recommend_author.md)
- [x] [活动列表](album/activity_list.md)
- [x] [操作](album/action.md)
- [ ] 投稿
- [ ] 历史记录 & 稍后再看
- [x] [历史记录](history&toview/history.md)
- [x] [稍后再看](history&toview/toview.md)
- [ ] 收藏夹
- [x] [基本信息](fav/info.md)
- [x] [收藏夹内容](fav/list.md)
- [ ] [收藏夹操作](fav/action.md)
- [ ] 课程
- [x] [课程基本信息](cheese/info.md)
- [ ] 已购课程
- [ ] 分区推荐列表
- [ ] 操作
- [x] [播放 & 下载地址(视频流)](cheese/videostream_url.md)
- [ ] 直播
- [ ] [直播间基本信息](live/info.md)
- [ ] [直播分区](live/live_area.md)
- [ ] [直播间管理](live/manage.md)
- [ ] 直播间操作
- [ ] [直播视频流](live/live_stream.md)
- [ ] [直播信息流](live/message_stream.md)
- [ ] [直播红包](live/redpocket.md)
- [ ] 转正答题
- [x] [查询信息](newbie_exam/info.md)
- [x] [拉取题目](newbie_exam/fetch.md)
- [x] [操作](newbie_exam/action.md)
- [ ] B币钱包
- [ ] 基本信息
- [ ] B币充值
- [ ] 贝壳相关
- [ ] 哔哩哔哩漫画
- [x] [签到](manga/ClockIn.md)
- [x] [积分商城](manga/point_shop.md)
- [x] [漫画操作](manga/Comic.md)
- [x] [漫画赛季](manga/Season.md)
- [x] [漫读券/已购相关](manga/User.md)
- [x] [下载](manga/Download.md)
- [x] [data.index解析](manga/index_file.md)
- [ ] 哔哩哔哩游戏
- [ ] 终端网络查询
- [x] [基于ip的地理位置查询](clientinfo/ip.md)
- [x] [终端信息查询](clientinfo/client_info.md)
- [ ] 其他
- [x] [获取当前时间戳](other/time_stamp.md)
- [ ] web端组件
- [x] [分区当日投稿数](web_widget/zone_upload.md)
- [x] [404 页漫画收集](web_widget/404_manga.md)
- [ ] APP端组件
- [x] [开屏图片 + 恰饭珍贵录像](APP_widget/splash.md)
- [ ] 个性装扮
- [x] [APP 主题](garb/skin.md)
- [x] [主题色](garb/color.md)

View File

@ -1,275 +0,0 @@
# 电磁力相关
- [获取电磁力等级web端](#获取电磁力等级web端)
- [获取电磁力详细数值(双端)](#获取电磁力详细数值双端)
- [获取电磁力数值历史变化(双端)](#获取电磁力数值历史变化双端)
---
电磁力每周日下午刷新
## 获取电磁力等级web端
> https://member.bilibili.com/x/web/elec/user
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------ | ---- | ----------- | ---------------- |
| mid | num | 当前用户mid | |
| state | num | 电磁力等级 | |
| reason | str | 空 | **作用尚不明确** |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/elec/user' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"mid": 293793435,
"state": 2,
"reason": ""
}
}
```
</details>
## 获取电磁力详细数值(双端)
> https://api.bilibili.com/studio/up-rating/rating/summary
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-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 'https://api.bilibili.com/studio/up-rating/rating/summary' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/studio/up-rating/rating/summary' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
}
```
</details>
## 获取电磁力数值历史变化(双端)
> https://api.bilibili.com/studio/up-rating/rating/history
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | -------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ------ |
| 1 | 创作力 |
| 2 | 影响力 |
| 3 | 信用分 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-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 'https://api.bilibili.com/studio/up-rating/rating/history' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/studio/up-rating/rating/history' \
--data-urlencode 'type=1' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
]
}
}
```
</details>

View File

@ -1,811 +0,0 @@
# 统计与数据
- [UP主视频状态数据](#UP主视频状态数据)
- [UP主专栏状态数据](#UP主专栏状态数据)
- [视频数据增量趋势](#视频数据增量趋势)
- [专栏数据增量趋势](#专栏数据增量趋势)
- [稿件操作来源占比情况](#稿件操作来源占比情况)
- [播放来源占比情况(平台及方式)](#播放来源占比情况平台及方式)
- [播放分布情况(粉丝与路人)](#播放分布情况粉丝与路人)
---
统计与数据次日中午12刷新
## UP主视频状态数据
> https://member.bilibili.com/x/web/index/stat
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ---- | -------------- | ---- |
| inc_coin | num | 新增投币数 | |
| inc_elec | num | 新增充电数 | |
| inc_fav | num | 新增收藏数 | |
| inc_like | num | 新增点赞数 | |
| inc_share | num | 新增分享数 | |
| incr_click | num | 新增播放数 | |
| incr_dm | num | 新增弹幕数 | |
| incr_fans | num | 新增粉丝数 | |
| incr_reply | num | 新增评论数 | |
| total_click | num | 总计播放数 | |
| total_coin | num | 总计投币数 | |
| total_dm | num | 总计弹幕数 | |
| total_elec | num | 总计充电数 | |
| total_fans | num | 总计粉丝数 | |
| total_fav | num | 总计收藏数 | |
| total_like | num | 总计点赞数 | |
| total_reply | num | 总计评论数 | |
| total_share | num | 总计分享数 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/index/stat' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"inc_coin": 0,
"inc_elec": 0,
"inc_fav": 0,
"inc_like": 0,
"inc_share": 0,
"incr_click": 0,
"incr_dm": 0,
"incr_fans": 1,
"incr_reply": 0,
"total_click": 9,
"total_coin": 1,
"total_dm": 0,
"total_elec": 0,
"total_fans": 29,
"total_fav": 1,
"total_like": 1,
"total_reply": 0,
"total_share": 0
}
}
```
</details>
## UP主专栏状态数据
> https://member.bilibili.com/x/web/data/article
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ---------- | ---- |
| view | num | 总计阅读数 | |
| reply | num | 总计评论数 | |
| like | num | 总计点赞数 | |
| coin | num | 总计投币数 | |
| fav | num | 总计收藏数 | |
| share | num | 总计分享数 | |
| incr_view | num | 新增阅读数 | |
| incr_reply | num | 新增评论数 | |
| incr_like | num | 新增点赞数 | |
| incr_coin | num | 新增投币数 | |
| incr_fav | num | 新增收藏数 | |
| incr_share | num | 新增分享数 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/data/article' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"view": 290,
"reply": 17,
"like": 34,
"coin": 9,
"fav": 15,
"share": 7,
"incr_view": 6,
"incr_reply": 0,
"incr_like": 0,
"incr_coin": 0,
"incr_fav": 0,
"incr_share": 0
}
}
```
</details>
## 视频数据增量趋势
> https://member.bilibili.com/x/web/data/article/thirty
*请求方式GET*
认证方式仅可CookieSESSDATA
数据为前30天
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | -------------- |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ---- |
| 1 | 播放 |
| 2 | 弹幕 |
| 3 | 评论 |
| 4 | 分享 |
| 5 | 投币 |
| 6 | 收藏 |
| 7 | 充电 |
| 8 | 点赞 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | array | 趋势列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | -------- |
| 0 | obj | 1天前的数据 | |
| n | obj | n+1天前的数据 | |
| …… | obj | …… | …… |
| 29 | obj | 30天前的数据 | 最后一条 |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------- | -------------------- |
| date_key | num | 对应时间 | 时间戳 前一天的8:00 |
| total_inc | num | 增加数量 | 意义为数据类型决定 |
**示例:**
查询30天前的视频播放增量趋势可知`2020-04-05`的播放增量为`46``2020-04-04`的播放增量为`58`
```shell
curl -G 'https://member.bilibili.com/x/web/data/pandect' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [{
"date_key": 1586044800,
"total_inc": 46
}, {
"date_key": 1585958400,
"total_inc": 58
}, {
"date_key": 1585872000,
"total_inc": 81
}, {
"date_key": 1585785600,
"total_inc": 90
}, {
"date_key": 1585699200,
"total_inc": 62
}, {
"date_key": 1585612800,
"total_inc": 70
},
…………
]
}
```
</details>
## 专栏数据增量趋势
> https://member.bilibili.com/x/web/data/article/thirty
*请求方式GET*
认证方式仅可CookieSESSDATA
数据为前30天
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | -------------- |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ---- |
| 1 | 阅读 |
| 2 | 评论 |
| 3 | 分享 |
| 4 | 投币 |
| 5 | 收藏 |
| 6 | 点赞 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | array | 趋势列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------ | -------- |
| 0 | obj | 30天前的数据 | |
| n | obj | 30-n天前的数据 | |
| …… | obj | …… | …… |
| 29 | obj | 1天前的数据 | 最后一条 |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------- | -------------------- |
| date_key | num | 对应时间 | 时间戳 前一天的8:00 |
| total_inc | num | 增加数量 | 意义为数据类型决定 |
**示例:**
查询30天前的文章阅读增量趋势可知`2020-04-05`的阅读增量为`6``2020-04-04`的阅读增量为`6`
```shell
curl -G 'https://member.bilibili.com/x/web/data/article/thirty' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
…………
{
"date_key": 1585699200,
"total_inc": 6
}, {
"date_key": 1585785600,
"total_inc": 6
}, {
"date_key": 1585872000,
"total_inc": 4
}, {
"date_key": 1585958400,
"total_inc": 6
}, {
"date_key": 1586044800,
"total_inc": 6
}]
}
```
</details>
## 稿件操作来源占比情况
> https://member.bilibili.com/x/web/data/survey
*请求方式GET*
认证方式仅可CookieSESSDATA
数据为上一天的
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | -------------- |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ---- |
| 1 | 播放 |
| 2 | 弹幕 |
| 3 | 评论 |
| 4 | 分享 |
| 5 | 投币 |
| 6 | 收藏 |
| 7 | 充电 |
| 8 | 点赞 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | ------------ |
| YYYYMMDD | obj | 上一天的情况 | 字段名为日期 |
`data`中的`YYYYMMDD`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------ | ---- |
| arc_inc | array | 稿件情况 | |
| total_inc | num | 总计增长情况 | |
| type_rank | obj | 分区排名情况 | |
`YYYYMMDD`中的`arc_inc`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| 0 | obj | 稿件1 | |
| n | obj | 稿件n+1 | |
| …… | obj | …… | …… |
`YYYYMMDD`中的`arc_inc`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------- | ------------ |
| aid | num | 稿件avid | |
| bvid | str | 稿件bvid | |
| daytime | num | 统计时间 | 时间戳 |
| incr | num | 稿件增长情况数 | |
| interactive | num | 0 | 作用尚不明确 |
| ptime | num | 稿件发布时间 | 时间戳 |
| title | str | 稿件标题 | |
`YYYYMMDD`中的`type_rank`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ---- |
| {分区名} | num | 该排名数 | |
| …… | num | …… | …… |
**示例:**
查询我的稿件来源占比情况
```shell
curl -G 'https://member.bilibili.com/x/web/data/survey' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"20200418": {
"arc_inc": [{
"aid": 94916552,
"bvid": "BV1ZE411K7ux",
"incr": 18,
"title": "【8-bit】影 流 之 主(爱河)",
"daytime": 1587155030,
"ptime": 1583760165,
"interactive": 0
}, {
"aid": 98948772,
"bvid": "BV1n741127LD",
"incr": 14,
"title": "【特斯拉线圈】组装迷你SSTC",
"daytime": 1587155030,
"ptime": 1585054436,
"interactive": 0
}, {
"aid": 37294890,
"bvid": "BV1kt411D7yW",
"incr": 9,
"title": "【病毒】彩虹猫可以调速还带有计时器 MEMZ重构升级版",
"daytime": 1587155030,
"ptime": 1543775696,
"interactive": 0
},
…………
],
"total_inc": 55,
"type_rank": {
"生活": 1392,
"科技": 1597,
"音乐": 1058
}
}
}
}
```
</details>
## 播放来源占比情况(平台及方式)
> https://member.bilibili.com/x/web/data/playsource
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | ------------ | ---- |
| page_source | obj | 播放方式情况 | |
| play_proportion | obj | 播放平台情况 | |
`data`中的`page_source`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------------------- | ---- |
| dynamic | num | 通过动态 | |
| other | num | 其他方式 | |
| related_video | num | 通过推荐列表 | |
| search | num | 通过搜索 | |
| space | num | 空间列表播放 | |
| tenma | num | 天马APP推荐信息流来源 | |
`data`中的`play_proportion`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------------ | ---- |
| android | num | 安卓端 | |
| h5 | num | 移动端h5页面 | |
| ios | num | ios端 | |
| out | num | 站外 | |
| pc | num | 电脑版网页 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/data/playsource' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"play_proportion": {
"android": 6060,
"h5": 410,
"ios": 1325,
"out": 0,
"pc": 2137
},
"page_source": {
"dynamic": 173,
"other": 1440,
"related_video": 1813,
"search": 1980,
"space": 501,
"tenma": 4087
}
}
}
```
</details>
## 播放分布情况(粉丝与路人)
> https://member.bilibili.com/x/web/data/base
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------------ | ---- |
| period | obj | 提示信息 | |
| viewer_area | obj | 播放地区情况 | |
| viewer_base | obj | 播放数据情况 | |
`data`中的`period`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ---- | ---- |
| module_one | str | ??? | |
| module_two | str | ??? | |
| module_three | str | ??? | |
| module_four | str | ??? | |
`data`中的`viewer_area`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ---- |
| fan | obj | 粉丝播放地区情况 | |
| not_fan | obj | 路人播放地区情况 | |
`viewer_area`中的`fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------------ | ---------------- |
| {行政区名} | num | 该地区的粉丝播放量 | 字段名为行政区名 |
| …… | num | …… | …… |
`viewer_area`中的`not_fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------------ | ---------------- |
| {行政区名} | num | 该地区的路人播放量 | 字段名为行政区名 |
| …… | num | …… | …… |
`data`中的`viewer_base`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ---- |
| fan | obj | 粉丝播放数据情况 | |
| not_fan | obj | 路人播放数据情况 | |
`viewer_base`中的`fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------------ | ---- |
| male | num | 男性粉丝播放数 | |
| female | num | 女性粉丝播放数 | |
| age_one | num | 0-16岁粉丝播放数 | |
| age_two | num | 16-25岁粉丝播放数 | |
| age_three | num | 25-40岁粉丝播放数 | |
| age_four | num | 40+岁粉丝播放数 | |
| plat_pc | num | pc网页端粉丝播放数 | |
| plat_h5 | num | 移动h5端粉丝播放数 | |
| plat_out | num | 站外端粉丝播放数 | |
| plat_ios | num | ios端粉丝播放数 | |
| plat_android | num | 安卓端粉丝播放数 | |
| plat_other_app | num | 其他粉丝播放数 | |
`viewer_base`中的`not_fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------------ | ---- |
| male | num | 男性路人播放数 | |
| female | num | 女性路人播放数 | |
| age_one | num | 0-16岁路人播放数 | |
| age_two | num | 16-25岁路人播放数 | |
| age_three | num | 25-40岁路人播放数 | |
| age_four | num | 40+岁路人播放数 | |
| plat_pc | num | pc网页端路人播放数 | |
| plat_h5 | num | 移动h5端路人播放数 | |
| plat_out | num | 站外端路人播放数 | |
| plat_ios | num | ios端路人播放数 | |
| plat_android | num | 安卓端路人播放数 | |
| plat_other_app | num | 其他路人播放数 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/data/base' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"period": {
"module_one": "各维度每日12:00 a.m. 更新前一日数据",
"module_two": "每日12:00 a.m. 更新前一日数据",
"module_three": "每周二12:00 a.m. 更新前一周数据",
"module_four": "各维度每日12:00 a.m. 更新前一日数据"
},
"viewer_area": {
"fan": {
"上海": 7,
"中国台湾": 2,
"云南": 6,
"内蒙古": 8,
"北京": 14,
"吉林": 4,
"四川": 4,
"天津": 11,
"宁夏": 1,
"安徽": 8,
"山东": 18,
"山西": 10,
"广东": 50,
"广西": 7,
"新疆": 2,
"江苏": 17,
"江西": 6,
"河北": 13,
"河南": 13,
"浙江": 20,
"海南": 1,
"湖北": 13,
"湖南": 13,
"甘肃": 4,
"福建": 10,
"贵州": 4,
"辽宁": 9,
"重庆": 5,
"陕西": 93,
"香港特别行政区": 1,
"黑龙江": 12
},
"not_fan": {
"上海": 28,
"中国台湾": 3,
"云南": 22,
"内蒙古": 15,
"北京": 53,
"吉林": 20,
"四川": 60,
"天津": 18,
"宁夏": 7,
"安徽": 43,
"山东": 81,
"山西": 31,
"广东": 176,
"广西": 81,
"新疆": 11,
"江苏": 93,
"江西": 26,
"河北": 50,
"河南": 84,
"浙江": 97,
"海南": 10,
"湖北": 43,
"湖南": 43,
"甘肃": 14,
"福建": 54,
"西藏": 1,
"贵州": 16,
"辽宁": 47,
"重庆": 31,
"陕西": 102,
"青海": 2,
"香港特别行政区": 4,
"黑龙江": 25
}
},
"viewer_base": {
"fan": {
"male": 153,
"female": 24,
"age_one": 91,
"age_two": 174,
"age_three": 77,
"age_four": 53,
"plat_pc": 12072,
"plat_h5": 186,
"plat_out": 0,
"plat_ios": 23453,
"plat_android": 87387,
"plat_other_app": 1631
},
"not_fan": {
"male": 462,
"female": 72,
"age_one": 425,
"age_two": 445,
"age_three": 360,
"age_four": 188,
"plat_pc": 64760,
"plat_h5": 660,
"plat_out": 1,
"plat_ios": 111259,
"plat_android": 467767,
"plat_other_app": 3408
}
}
}
}
```
</details>

View File

@ -1,822 +0,0 @@
# 弹幕操作
- [发送视频弹幕](#发送视频弹幕)
- [发送互动弹幕](#发送互动弹幕)
- [撤回弹幕](#撤回弹幕)
- [购买高级弹幕发送权限](#购买高级弹幕发送权限)
- [检测高级弹幕发送权限](#检测高级弹幕发送权限)
- [查询弹幕点赞数](#查询弹幕点赞数)
- [点赞弹幕](#点赞弹幕)
- [举报弹幕](#举报弹幕)
- [保护&删除弹幕](#保护&删除弹幕)
- [修改字幕池](#修改字幕池)
---
## 发送视频弹幕
> https://api.bilibili.com/x/v2/dm/post
*请求方式POST*
认证方式CookieSESSDATA或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 | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒<br />默认为0 |
| color | num | 弹幕颜色设置 | 非必要 | 十进制RGB888值<br />默认为16777215#FFFFFF白色 |
| fontsize | num | 弹幕字号设置 | 非必要 | 默认为25<br />极小12<br />超小16<br />18<br />标准25<br />36<br />超大45<br />极大64 |
| pool | num | 弹幕池选择 | 非必要 | 0普通池<br />1字幕池<br />2特殊池代码/BAS弹幕<br />默认为0 |
| mode | num | 弹幕类型选择 | 必要 | 1普通弹幕<br />4底部弹幕<br />5顶部弹幕<br />7高级弹幕<br />9BAS弹幕`pool`必须为2 |
| rnd | num | 当前时间戳*1000000 | 非必要 | **若无此项则发送弹幕冷却时间限制为90s**<br />若有此项则发送弹幕冷却时间限制为5s |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />36700系统升级中<br />36701弹幕包含被禁止的内容<br />36702弹幕长度大于100<br />36703发送频率过快<br />36704禁止向未审核的视频发送弹幕<br />36705您的等级不足不能发送弹幕<br />36706您的等级不足不能发送顶端弹幕<br />36707您的等级不足不能发送底端弹幕<br />36708您的等级不足不能发送彩色弹幕<br />36709您的等级不足不能发送高级弹幕<br />36710您的权限不足不能发送这种样式的弹幕<br />36711该视频禁止发送弹幕<br />36712level 1用户发送弹幕的最大长度为20<br />36713稿件未付费<br />36714弹幕发送时间不合法<br />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 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"action":"",
"dmid":32161968826613767,
"dmid_str":"32161968826613767",
"visible":true
}
}
```
</details>
## 发送互动弹幕
> https://api.bilibili.com/x/v2/dm/command/post
*请求方式POST*
认证方式CookieSESSDATA或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 | 互动弹幕类型 | 必要 | 1UP主头像弹幕<br />2关联视频弹幕<br />5视频内嵌引导关注按钮 |
| aid | num | 稿件avid | 必要 | |
| cid | num | 视频cid | 必要 | |
| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒<br />默认为0 |
| plat | num | 平台标识 | 必要 | 1web端<br />2安卓端<br />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成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-500服务器错误<br />36711该视频禁止发送弹幕<br />79026发送失败请勿填写当前稿件bvid<br />79024发送失败请输入正确的bvid<br />79036该指令弹幕超出限制<br />79037关注弹幕坐标溢出 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------------------- | ------------------------------------------------------------ |
| command | str | 指令? | UP主头像弹幕#UP#<br />关联视频弹幕:#LINK#<br />视频内嵌引导关注按钮:#ATTENTION# |
| content | str | 弹幕内容 | |
| extra | str | 弹幕数据 | json序列 |
| id | num | 弹幕dmid | |
| idStr | str | 弹幕dmid | 字串形式 |
| mid | num | 用户mid | |
| oid | num | 视频cid | |
| progress | num | 弹幕出现在视频内的时间 | |
| type | num | 互动弹幕类型 | 1UP主头像弹幕<br />2关联视频弹幕<br />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 | 不应该是关注按钮吗,但这个是圆形的 |
| type | num | 关注按钮类型 | 0仅关注<br />1仅三联<br />2关注+三联 |
**示例:**
为视频`av201947622`cid为`230709860`的5000ms位置发送一条UP主头像弹幕`test`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
}
```
</details>
为视频`av201947622`cid为`230709860`的5000ms位置发送一条发送关联视频弹幕`测试1234`关联视频为`BV1kz4y1X7XP`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
}
```
</details>
为视频`av201947622`cid为`230709860`的5000ms位置发送视频内嵌引导关注按钮X坐标为118Y坐标为82持续时间为5000ms
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
}
```
</details>
## 撤回弹幕
> https://api.bilibili.com/x/dm/recall
*请求方式POST*
认证方式CookieSESSDATA或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成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />36301撤回失败弹幕发送已过2分钟<br />36302撤回失败弹幕已经被删除或撤回<br />36303撤回失败今天撤回的机会已经用完<br />36304撤回失败服务器出错 |
| message | str | 错误信息 | 成功后显示剩余次数 |
| ttl | num | 1 | |
**示例:**
撤回`cid=168901231`下的弹幕`32310301474947077`的弹幕
```shell
curl 'https://api.bilibili.com/x/dm/recall' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'dmid=32310301474947077' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "撤回成功你还有3次撤回机会"
}
```
</details>
## 购买高级弹幕发送权限
> https://api.bilibili.com/x/dm/adv/buy
*请求方式POST*
认证方式CookieSESSDATA或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成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-107硬币不足<br />-400请求错误<br />36007不允许购买<br />36009正在确认中<br />36010已购买 |
| message | str | 返回信息 | |
| ttl | num | 1 | |
示例:
购买视频cid为`168901231`的高级弹幕发送权限
```shell
curl 'https://api.bilibili.com/x/dm/adv/buy' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"已成功购买"
}
```
</details>
## 检测高级弹幕发送权限
> https://api.bilibili.com/x/dm/adv/state
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| mode | str | sp | 必要 | |
| cid | num | 视频cid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | ---------------- | -------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />--400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有效时obj<br />无效时null | 有效时:信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ------------------------------------------ |
| coins | num | 需要支付的硬币数 | |
| confirm | num | 是否同意 | 1同意<br />2未同意<br />未购买时无此项 |
| accept | bool | 是否允许申请 | true允许<br />false不允许 |
| hasBuy | bool | 是否已购买 | true已购买<br />未购买时无此项 |
**示例:**
查询视频cid为`168901231`的视频高级弹幕权限购买状态
当前状态为已购买且同意
```shell
curl -G 'https://api.bilibili.com/x/dm/adv/state' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"coins": 2,
"confirm": 1,
"accept": true,
"hasBuy": true
}
}
```
</details>
## 查询弹幕点赞数
> https://api.bilibili.com/x/v2/dm/thumbup/stats
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| oid | num | 视频cid | 必要 | |
| ids | nums | 弹幕dmid列表 | 必要 | 多个id之间用`,`分隔 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------------- | --------------------------------- |
| {弹幕id} | obj | 弹幕id对应的信息 | id分别对应请求参数中的`ids`,下同 |
| …… | obj | 弹幕id对应的信息 | |
`{弹幕id}`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------- | ------------------------------------------------------------ |
| likes | num | 点赞数 | |
| user_like | num | 是否点赞 | 0未点赞<br />1已点赞<br />需要登录(Cookie或APP) <br />未登录恒为0 |
| id_str | str | 弹幕dmid | |
**示例**
查询`cid=236871317`下的弹幕`35600074482384899`、`38880975220375559`、`39052528418553863`点赞数
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
--data-urlencode 'oid=236871317' \
--data-urlencode 'ids=39019145405661191,38880975220375559,39052528418553863' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
}
}
```
</details>
## 点赞弹幕
> https://api.bilibili.com/x/v2/dm/thumbup/add
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| dmid | num | 弹幕dmid | 必要 | |
| oid | num | 视频cid | 必要 | |
| op | num | 操作 | 必要 | 1点赞<br />2取消点赞 |
| platform | str | 平台 | 非必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|------------------------------------------------------------------------------------------------------------------------------------|
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />36106该弹幕已被删除<br/>36805该视频禁止点赞弹幕<br/>65004取消赞失败 未点赞过<br />65006已赞过 |
| message | str | 错误信息 | 默认为0 |
| tll | num | 1 | |
**示例**
为`cid=145928946`下的弹幕`35600074482384899`点赞
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>
## 举报弹幕
> https://api.bilibili.com/x/dm/report/add
*请求方式POST*
认证方式CookieSESSDATA或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成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />36201举报弹幕不存在<br />36203举报原因类型错误<br />36204已举报 |
| message | str | 错误信息 | 默认为空 |
| tll | num | 1 | 举报失败时 |
**示例**
举报`cid=145928946`下的弹幕`35600074482384899`,理由是`引战`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":""
}
```
</details>
## 保护&删除弹幕
> https://api.bilibili.com/x/v2/dm/edit/state
*请求方式POST*
认证方式CookieSESSDATA 或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删除弹幕<br />2弹幕保护<br />3取消保护 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例**
删除`cid=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>
## 修改字幕池
> https://api.bilibili.com/x/v2/dm/edit/pool
*请求方式POST*
认证方式CookieSESSDATA 或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移出字幕池<br />1移入字幕池 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例**
将`cid=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531`移入字幕池
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>

View File

@ -1,513 +0,0 @@
# 名词解释
该功能用于解释和科普 B 站弹幕、评论等的专有名词及梗,展示其出处,并推荐相关站内内容
可使用页面 https://www.bilibili.com/blackboard/activity-joFQ0txEQd.html?type_id=4 查看名词列表
可使用页面 https://www.bilibili.com/blackboard/activity-WroMZNunfa.html?id=1 查看名词解释详情
- [拉取名词解释列表](#拉取名词解释列表)
- [查询名词解释详情](#查询名词解释详情)
---
## 拉取名词解释列表
> https://api.bilibili.com/x/v2/dm/buzzword/list
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------- | ---- | -------- | ------ | ---------------------------------------------- |
| type_id | num | 名词类型 | 必要 | 如4代表“哔哩哔哩热词图鉴”<br />5代表“语言类” |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页项数 | 非必要 | 默认为20 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------- | ---- |
| type | obj | 类型信息 | |
| buzzwords | array | 词语列表 | |
| page | obj | 页面信息 | |
`data`中的`type`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------- | ------ |
| id | num | 类型 id | |
| name | str | 类型名称 | |
| name_pinyin | obj | 拼音信息 | 见副表 |
`data`中的`buzzwords`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 名词条目 1 | |
| n | obj | 名词条目n+1 | |
| …… | obj | …… | …… |
`buzzwords`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------------ | ----------------------------------------- |
| id | num | 名词 id | 用于[查询名词解释详情](#查询名词解释详情) |
| name | str | 名词 | |
| name_pinyin | obj | 拼音信息 | 见副表 |
| picture | str | 名词图片 url | |
`data`中的`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------- | ---- |
| num | num | 当前页码 | |
| size | num | 每页项数 | |
| total | num | 总计项数 | |
| cnt | num | (?) | |
副表:拼音`name_pinyin`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | -------- | ---- |
| 对应单个汉字 1 | str | 拼音字串 | |
| 对应单个汉字 n | str | 拼音字串 | |
| …… | str | …… | …… |
**示例:**
拉取对应`哔哩哔哩热词图鉴`的名词列表以20项为一页拉取第1页
```bash
curl -G 'https://api.bilibili.com/x/v2/dm/buzzword/list' \
--data-urlencode 'type_id=4' \
--data-urlencode 'ps=10' \
--data-urlencode 'pn=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"type": {
"id": 4,
"name": "哔哩哔哩热词图鉴",
"name_pinyin": {
"哔": "bì",
"哩": "lī",
"图": "tú",
"热": "rè",
"词": "cí",
"鉴": "jiàn"
},
"level": 0
},
"buzzwords": [
{
"id": 145,
"name": "麦乐鸡侠",
"name_pinyin": {
"乐": "lè",
"侠": "xiá",
"鸡": "jī",
"麦": "mài"
},
"picture": "https://i0.hdslb.com/bfs/archive/1cdec1ff86733a38c1a9ff824dde6d4121955aee.png"
},
{
"id": 146,
"name": "金钱豹",
"name_pinyin": {
"豹": "bào",
"金": "jīn",
"钱": "qián"
},
"picture": "https://i0.hdslb.com/bfs/archive/3d492f4c01da7d15073d3175871e14ed56f0f78a.png"
},
{
"id": 11,
"name": "通辽可汗",
"name_pinyin": {
"可": "kě",
"汗": "hàn",
"辽": "liáo",
"通": "tōng"
},
"picture": "https://i0.hdslb.com/bfs/archive/ca332fb5f9da48497298cf26fe07b1f061e53a0b.jpg"
},
{
"id": 123,
"name": "资本马桶搋",
"name_pinyin": {
"搋": "chuāi",
"本": "běn",
"桶": "tǒng",
"资": "zī",
"马": "mǎ"
},
"picture": "https://i0.hdslb.com/bfs/archive/aaf33dced1941af0946f37c62f4b48fcaba9c9a2.jpg"
},
{
"id": 133,
"name": "马了顶大",
"name_pinyin": {
"了": "le",
"大": "dà",
"顶": "dǐng",
"马": "mǎ"
},
"picture": "https://i0.hdslb.com/bfs/archive/9653bd7f8d2c804aceb8043ebd5c8360a93e26c0.png"
},
{
"id": 9,
"name": "退钱",
"name_pinyin": {
"退": "tuì",
"钱": "qián"
},
"picture": "https://i0.hdslb.com/bfs/archive/2540db0bc94792b1f5be75e19aa05d33666e3036.jpg"
},
{
"id": 141,
"name": "森林冰火人",
"name_pinyin": {
"人": "rén",
"冰": "bīng",
"林": "lín",
"森": "sēn",
"火": "huǒ"
},
"picture": "https://i0.hdslb.com/bfs/archive/bc5ca101313d4db223c395d64779e76eb3482d60.jpg"
},
{
"id": 22,
"name": "学霸题",
"name_pinyin": {
"学": "xué",
"霸": "bà",
"题": "tí"
},
"picture": "https://i0.hdslb.com/bfs/archive/a67a0a57ec48beb8c8dcc9f26c7bb66cd0ed5da7.jpg"
},
{
"id": 10,
"name": "张三",
"name_pinyin": {
"三": "sān",
"张": "zhāng"
},
"picture": "https://i0.hdslb.com/bfs/archive/f4dac6fdc5c58639b79ae87385e9b9f7eae3b263.png"
},
{
"id": 5,
"name": "饮茶先啦",
"name_pinyin": {
"先": "xiān",
"啦": "la",
"茶": "chá",
"饮": "yǐn"
},
"picture": "https://i0.hdslb.com/bfs/archive/4c90ad207f0041e2dccd586827028aea50c2dc7d.jpg"
}
],
"page": {
"num": 1,
"size": 10,
"total": 143,
"cnt": 0
}
}
}
```
</details>
## 查询名词解释详情
> https://api.bilibili.com/x/v2/dm/buzzword/detail
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | -------------------------------- |
| id | num | 名词id | 必要 | 如1代表“kksk”<br />2代表“打脸” |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | --------------------------------- | -------- | --------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404不存在该名词 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有数据时obj<br />无数据时null | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ------------------------------- | -------------------- | ----------------------------- |
| id | num | 名词id | |
| name | str | 名词 | |
| description | str | 名词解释 | |
| picture | str | 名词图片 url | |
| types | array | 父分类列表 | 该名词可能隶属多个父分类 |
| related_words | array | 近义词/相关词 | |
| uppers | 有数据array<br />无数据null | 相关 UP 列表 | 该名词(梗)出处 |
| related_ugc | 有数据array<br />无数据null | 相关 ucg 视频列表 | 该名词(梗)出处 |
| related_ogv | 有数据array<br />无数据null | 相关 pgc 视频列表 | 该名词(梗)出处 |
| guides | obj | 推荐创作信息 | |
| related_buzzwords | array | 推荐名词列表 | |
| topic | obj | 关联话题信息 | |
| show_dynamic | bool | 是否展示话题动态聚合 | `true`展示<br />`false`不展示 |
`data`中的`types`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | obj | 父分类 1 | |
| n | obj | 父分类n+1 | |
| …… | obj | …… | …… |
`types`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------- | ---- |
| id | num | 类型 id | |
| name | str | 类型名称 | |
| name_pinyin | null | | |
| level | num | 权重? | |
`data`中的`related_words`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------------- | ---- |
| 0 | str | 近义词/相关词1 | |
| n | str | 近义词/相关词n+1 | |
| …… | str | …… | …… |
`data`中的`uppers`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------- | ---- |
| 0 | obj | 相关 UP 1 | |
| n | obj | 相关 UPn+1 | |
| …… | obj | …… | …… |
`uppers`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------- | ------------------------------------------------------------ |
| id | num | UP 主 mid | |
| recommend | str | | |
| name | str | UP 主昵称 | |
| face | str | UP 主头像 url | |
| official | obj | UP 主认证信息 | |
| followed | bool | 是否关注 | 需要登录(Cookie 或 APP)<br />`true`已关注<br />`false`未关注 |
| fans_count | num | 粉丝数 | |
`data`中的`related_ugc`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------------- | ---- |
| 0 | obj | 相关 ucg 视频 1 | |
| n | obj | 相关 ucg 视频n+1 | |
| …… | obj | …… | …… |
`related_ugc`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------ | -------- |
| aid | num | 稿件 avid | |
| cid | num | 视频 cid | |
| name | str | 视频标题 | |
| link | str | 空 | |
| play | num | 播放数 | |
| danmaku | num | 弹幕数 | |
| duration | num | 视频时长 | 单位为秒 |
| cover | str | 视频封面 url | |
`data`中的`related_ogv`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------------- | ---- |
| 0 | obj | 相关 pgc 视频 1 | |
| n | obj | 相关 pgc 视频n+1 | |
| …… | obj | …… | …… |
`related_ogv`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------------ | ------------------------------------- |
| season_id | num | 剧集 ssid | |
| name | str | 剧集标题 | |
| play | num | 播放数 | |
| followed | num | 追剧/番数 | |
| is_followed | bool | 是否追剧/番 | `true`已追剧/番<br />`false`未追剧/番 |
| new_ep | str | 最新一集信息 | |
| cover | str | 剧集封面 url | |
| episodes | null | | |
| follow_info | obj | | |
`data`中的`guides`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ----- | ---------------- | ---- |
| description | str | 创作推介文案 | |
| contribute_tags | array | 创作跳转按钮信息 | |
`guides`中的`contribute_tags`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---- |
| 0 | obj | 创作跳转按钮 1 | |
| n | obj | 创作跳转按钮n+1 | |
| …… | obj | …… | …… |
`contribute_tags`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------- | -------------------------- |
| title | str | 按钮文案 | |
| link | str | 跳转 uri | 跳转至必剪或客户端创作入口 |
`data`中的`related_buzzwords`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 推荐名词 1 | |
| n | obj | 推荐名词n+1 | |
| …… | obj | …… | …… |
`related_buzzwords`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------- | ----------------------------------------- |
| id | num | 名词 id | 用于[查询名词解释详情](#查询名词解释详情) |
| name | str | 名词 | |
| name_pinyin | null | | |
| picture | str | 空 | |
`data`中的`topic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------ | ---- |
| topic_id | num | 关联话题id | |
| topic_name | str | 关联话题名称 | |
**示例:**
查询名词`kksk`的详情
```bash
curl -G 'https://api.bilibili.com/x/v2/dm/buzzword/detail' \
--data-urlencode 'id=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1,
"name": "kksk",
"description": "该梗是日语“ここすき”罗马音的字母缩写翻译为喜欢这里。一般作为赞扬认可的弹幕出现在视频画面中。由于在2017年随着以《恶魔人》为BGM和语音剪辑素材的《美洲豹人》系列作品的传播让这个梗快速的通过弹幕流行开并频繁出现在各类稿件经典画面中。",
"picture": "https://i0.hdslb.com/bfs/archive/c269c9ca1b5eb730ee1d77aadd28e3165eaa4d6d.png",
"types": [
{
"id": 4,
"name": "哔哩哔哩热词图鉴",
"name_pinyin": null,
"level": 0
},
{
"id": 5,
"name": "语言类",
"name_pinyin": null,
"level": 0
},
{
"id": 9,
"name": "空耳",
"name_pinyin": null,
"level": 0
}
],
"related_words": [
"恶魔人",
"美洲豹人",
"喜欢这里"
],
"uppers": [
{
"id": 488450,
"recommend": "",
"name": "PXN1",
"face": "http://i2.hdslb.com/bfs/face/96dd8cc4f2922bd81e5a938f6ad02b3e3041debe.jpg",
"official": {
"role": 0,
"title": "",
"desc": "",
"type": -1
},
"followed": false,
"fans_count": 1416
}
],
"related_ugc": [
{
"aid": 30056798,
"cid": 52388183,
"name": "恶 魔 人",
"link": "",
"play": 3434500,
"danmaku": 8292,
"duration": 188,
"cover": "http://i0.hdslb.com/bfs/archive/f0433d2dacf4b3397a9390ab982cefd138dbf8c8.jpg"
}
],
"related_ogv": null,
"guides": {
"description": "使用同款热梗素材创作你的专属作品吧!添加热梗主题#kksk是什么梗#参与投稿,优质稿件会优先展示在哔哩哔哩热词图鉴相关推荐中哦!",
"contribute_tags": [
{
"title": "拍同款",
"link": "bilibili://uper/appTraffic?appScheme=bcut%3A%2F%2Fstudio%2Fmaterial_editor%2F%3Ftab_id%3D1%26sub_id%3D90160%26third_id%3D150281&appName=com.bilibili.studio&appID=1299589486"
}
]
},
"related_buzzwords": null,
"topic": {
"topic_id": 7642,
"topic_name": "kksk是什么梗"
},
"show_dynamic": false
}
}
```
</details>

View File

@ -1,75 +0,0 @@
# 弹幕个人配置修改
- [修改弹幕个人配置web端](#修改弹幕个人配置web端)
---
## 修改弹幕个人配置web端
> https://api.bilibili.com/x/v2/dm/web/config
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------ | ------ | ------------------------ | -------------- | ------------------------------------------------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| dm_switch | bool | 弹幕开关 | 非必要 | true开启<br />false关闭 |
| blockscroll | bool | 屏蔽类型-滚动 | 非必要 | true不屏蔽<br />false屏蔽 |
| blocktop | bool | 屏蔽类型-顶部 | 非必要 | 同上 |
| blockbottom | bool | 屏蔽类型-底部 | 非必要 | 同上 |
| blockcolor | bool | 屏蔽类型-彩色 | 非必要 | 同上 |
| blockspecial | bool | 屏蔽类型-特殊 | 非必要 | 同上 |
| ai_switch | bool | 是否打开智能云屏蔽 | 非必要 | true开启<br />false关闭 |
| ai_level | num | 智能云屏蔽等级 | 非必要 | 区间:[0-10]<br />0为默认等级3级 |
| preventshade | bool | 防挡弹幕底部15% | 非必要 | true开启<br />false关闭 |
| dmask | bool | 智能防挡弹幕(人像蒙版) | 非必要 | 同上 |
| opacity | num | 弹幕不透明度 | 非必要 | 区间:[0-1] |
| dmarea | num | 弹幕显示区域 | 非必要 | 100不重叠<br />753/4屏<br />50半瓶<br />251/4屏<br />0不限 |
| speedplus | num | 弹幕速度 | 非必要 | 区间:[0.4-1.6] |
| fontsize | num | 字体大小 | 非必要 | 区间:[0.4-1.6] |
| screensync | bool | 跟随屏幕缩放比例 | 非必要 | true开启<br />false关闭 |
| speedsync | bool | 根据播放倍速调整速度 | 非必要 | 同上 |
| fontfamily | str | 字体类型 | 非必要 | 未启用 |
| bold | bool | 粗体 | 非必要 | 未启用 |
| fontborder | num | 描边类型 | 非必要 | 0重墨<br />1描边<br />245°投影 |
| drawType | string | 渲染类型 | 非必要 | 未启用 |
| ts | num | 当前时间戳 | 非必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />23004数据没有修改 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
关闭弹幕
```shell
curl 'https://api.bilibili.com/x/v2/dm/web/config' \
--data-urlencode 'dm_switch=false' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>

View File

@ -1,111 +0,0 @@
# protobuf弹幕
2020年5月23日哔哩哔哩网页端及移动端启用了新的默认弹幕api网页端弹幕显示的上限变为原弹幕池上限的两倍。
新的api是以6分钟为一个单位加载即每次加载6分钟内的弹幕
- [获取实时弹幕](#获取实时弹幕)
---
## 获取实时弹幕
> https://api.bilibili.com/x/v2/dm/web/seg.so web端
>
> https://api.bilibili.com/x/v2/dm/list/seg.so APP端
>
> https://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回复**
proto定义见[bilibili.community.service.dm.v1.DmSegMobileReply](../grpc_api/bilibili/community/service/dm/v1/dm.proto)
- [protogen.marcgravell](https://protogen.marcgravell.com/): 在线编译protogen工具, 无需再安装本地编译器(生成文件需加后缀_pb2.py才可使用)
- [protobuf pip](https://pypi.org/project/protobuf/): 可一键安装的python的protogen解析库
消息`DmSegMobileReply`
| 名称 | 类型 | 含义 | 备注 |
| ----- | -------------------- | -------- | ---- |
| elems | repeated DanmakuElem | 弹幕条目 | |
消息`DanmakuElem`
| 名称 | 类型 | 含义 | 备注 |
| -------- | ------ | ------------------ | ------------------------------------------------------------ |
| id | int64 | 弹幕dmid | 唯一 可用于操作参数 |
| progress | int32 | 视频内弹幕出现时间 | 毫秒 |
| mode | int32 | 弹幕类型 | 1 2 3普通弹幕<br />4底部弹幕<br />5顶部弹幕<br />6逆向弹幕<br />7高级弹幕<br />8代码弹幕<br />9BAS弹幕仅限于特殊弹幕专包 |
| fontsize | int32 | 弹幕字号 | 18<br />25标准<br />36大 |
| color | uint32 | 弹幕颜色 | 十进制RGB888值 |
| midHash | string | 发送者mid的HASH | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id |
| content | string | 弹幕内容 | utf-8编码 |
| ctime | int64 | 弹幕发送时间 | 时间戳 |
| weight | int32 | 权重 | 用于智能屏蔽根据弹幕语义及长度通过AI识别得出<br />范围:[0-10]<br />值越大权重越高 |
| action | string | 动作? | 作用尚不明确 |
| pool | int32 | 弹幕池 | 0普通池<br />1字幕池<br />2特殊池代码/BAS弹幕 |
| idStr | string | 弹幕dmid | 字串形式<br />唯一 可用于操作参数 |
**示例:**
获取视频`av810872(cid=1176840)`炮姐的实时弹幕分包1
**注:[proto定义](../grpc_api/bilibili/community/service/dm/v1/dm.proto)需要编译,`bilibili.community.service.dm.v1.dm_pb2`并非通过pypi安装**
```python
import requests
import google.protobuf.text_format as text_format
import bilibili.community.service.dm.v1.dm_pb2 as Danmaku
url = 'https://api.bilibili.com/x/v2/dm/web/seg.so'
params = {
'type': 1, # 弹幕类型
'oid': 1176840, # cid
'pid': 810872, # avid
'segment_index': 1 # 弹幕分段
}
resp = requests.get(url, params)
data = resp.content
danmaku_seg = Danmaku.DmSegMobileReply()
danmaku_seg.ParseFromString(data)
print(text_format.MessageToString(danmaku_seg.elems[0], as_utf8=True))
```
输出:
```
id: 711923911
progress: 47880
mode: 1
fontsize: 18
color: 10092288
midHash: "59417e95"
content: "世界第一电击公主殿下,遇到你是我一生最美好的风景!吾炮赛高,永生不离!唯我超电磁炮永世长存! "
ctime: 1418799826
weight: 6
idStr: "711923911"
attr: 1
```

View File

@ -1,298 +0,0 @@
# 弹幕元数据
2020-09-25 B站更新了互动弹幕功能包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能
详情见:
[【客户端更新】6.10版本更新UP主支持发布关联视频弹幕]( https://www.bilibili.com/read/cv7728299 )
[引导关注卡片](https://www.bilibili.com/blackboard/activity-c8a0iDRQy.html )
---
- [获取弹幕个人配置与互动弹幕及BAS代码弹幕专包web端](#获取弹幕个人配置与互动弹幕及BAS代码弹幕专包web端)
- [实例](#实例)
- [获取互动弹幕](#获取互动弹幕)
- [获取BAS代码弹幕专包](#获取BAS代码弹幕专包)
---
## 获取弹幕个人配置与互动弹幕及BAS代码弹幕专包web端
> https://api.bilibili.com/x/v2/dm/web/view
*请求方式GET*
认证方式仅可CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ----------- |
| type | num | 弹幕类 | 必要 | 1视频弹幕 |
| oid | num | 视频cid | 必要 | |
| pid | num | 稿件avid | 非必要 | |
**proto回复**
消息`DmWebViewReply`
| 名称 | 类型 | 含义 | 备注 |
| ---------- | -------------------- | ---------------------- | ---------------------------- |
| state | int32 | 弹幕开放状态 | 0开放弹幕<br />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 | 发送者mid | |
| command | string | 弹幕指令 | `#UP#`UP主头像弹幕<br />`#LINK#`:关联视频弹幕<br />`#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 | 不应该是关注按钮吗,但这个是圆形的 |
| type | num | 关注按钮类型 | 0仅关注<br />1仅三联<br />2关注+三联 |
消息`dmSetting`
| 名称 | 类型 | 含义 | 备注 |
| ------------ | ------ | ------------------------ | ------------------------------------------------------------ |
| dmSwitch | bool | 弹幕开关 | true开启<br />false关闭 |
| aiSwitch | bool | 智能云屏蔽 | 同上 |
| aiLevel | int32 | 智能云屏蔽级别 | 区间:[1-10] |
| blocktop | bool | 屏蔽类型-顶部 | true不屏蔽<br />false屏蔽 |
| blockscroll | bool | 屏蔽类型-滚动 | 同上 |
| blockbottom | bool | 屏蔽类型-底部 | 同上 |
| blockcolor | bool | 屏蔽类型-彩色 | 同上 |
| blockspecial | bool | 屏蔽类型-特殊 | 同上 |
| preventshade | bool | 防挡弹幕底部15% | true开启<br />false关闭 |
| dmask | bool | 智能防挡弹幕(人像蒙版) | 同上 |
| opacity | float | 弹幕不透明度 | 区间:[0-1] |
| dmarea | int32 | 弹幕显示区域 | 100不重叠<br />753/4屏<br />50半瓶<br />251/4屏<br />0不限 |
| speedplus | float | 弹幕速度 | 区间:[0.4-1.6] |
| fontsize | float | 字体大小 | 区间:[0.4-1.6] |
| screensync | bool | 跟随屏幕缩放比例 | |
| speedsync | bool | 根据播放倍速调整速度 | |
| fontfamily | string | 字体类型? | 未启用 |
| bold | bool | 粗体? | 未启用 |
| fontborder | int32 | 描边类型 | 0重墨<br />1描边<br />245°投影 |
| 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; //发送者mid
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 'https://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 = f'https://api.bilibili.com/x/v2/dm/web/view?type=1&oid={CID}&pid={AVID}'
data = requests.get(url)
target = web_dmview_pb2.DmWebViewReply()
target.ParseFromString(data.content)
print(f'互动弹幕数={len(target.commandDms)}')
for i in target.commandDms:
print(f'''\
---弹幕ID={i.id}
---视频cid={i.oid}
---发送者mid={i.mid}
---弹幕指令={i.command}
---弹幕文字={i.content}
---弹幕出现时间={i.progress}
---弹幕负载数据={i.extra}
---弹幕ID字串={i.idStr}'''
)
```
输出为:
```
互动弹幕数=1
---弹幕ID=38469676112019463
---视频cid=236871317
---发送者mid=501183549
---弹幕指令=#UP#
---弹幕文字=这个视频没有恰饭!别紧张!
---弹幕出现时间=157818
---弹幕负载数据={"icon":"https://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 = f'https://api.bilibili.com/x/v2/dm/web/view?type=1&oid={CID}&pid={AVID}'
data = requests.get(url)
target = web_dmview_pb2.DmWebViewReply()
target.ParseFromString(data.content)
print(f'特殊弹幕包数={len(target.specialDms)}')
for i in target.specialDms:
print(f'特殊弹幕包url={i}')
```
输出为:
```
特殊弹幕包数=1
特殊弹幕包url=https://i0.hdslb.com/bfs/dm/b0d5f08c12be59292aa0d4e09b6dd8e54c2ba886.bin
```
使用[普通分段包弹幕](danmaku_proto.md#获取实时弹幕)的proto结构体反序列化此bin数据

View File

@ -1,153 +0,0 @@
# xml弹幕
实时弹幕池容量有限根据视频类型500-8000条不等占满后再发送会使实时弹幕池底部的弹幕压入历史弹幕池类似于堆栈
---
- [获取实时弹幕1](#获取实时弹幕1)
- [获取实时弹幕2](#获取实时弹幕2)
- [弹幕格式](#弹幕格式)
---
## 获取实时弹幕1
> https://api.bilibili.com/x/v1/dm/list.so
*请求方式GET*
**使用deflate压缩注意解码**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------- | ------ | ---- |
| oid | num | 视频cid | 必要 | |
**示例:**
```shell
curl -G 'https://api.bilibili.com/x/v1/dm/list.so' \
--data-urlencode 'oid=144541892' \
--compressed -o 'danmaku.xml'
```
## 获取实时弹幕2
> https://comment.bilibili.com/{cid}.xml
*请求方式GET*
效果与前者相同
**使用deflate压缩注意解码**
**url路径**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------- | ------ | ---- |
| cid | num | 视频cid | 必要 | |
**示例:**
```shell
curl 'https://comment.bilibili.com/144541892.xml'
--compressed -o 'danmaku.xml'
```
**xml回复**
<details>
<summary>查看响应示例:</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
<i>
<chatserver>chat.bilibili.com</chatserver>
<chatid>144541892</chatid>
<mission>0</mission>
<maxlimit>1500</maxlimit>
<state>0</state>
<real_name>0</real_name>
<source>e-r</source>
<d p="490.19100,1,25,16777215,1584268892,0,a16fe0dd,29950852386521095">从结尾回来看这里,更感动了!</d>
<d p="18.77300,1,25,16777215,1584268920,0,4fe08d3,29950867226492933">咦三体居然还有动画</d>
<d p="52.88400,1,25,16777215,1584268954,0,4fe08d3,29950885214289927">哈哈哈哈开心</d>
<d p="25.51600,1,25,16777215,1584268957,0,e4b18b37,29950886612566021">红岸么</d>
<d p="144.45200,1,25,16777215,1584269076,0,e4b18b37,29950948716576775">我就是想看我的世界里水滴长啥样</d>
<d p="112.64100,1,25,16777215,1584269109,0,96606007,29950966302244871">有手指?</d>
<d p="222.84000,1,25,16777215,1584269154,0,e4b18b37,29950989809745923">侦测到在途的聚变打击</d>
<d p="284.77800,1,25,16777215,1584269216,0,e4b18b37,29951022237483011">都是虫子</d>
<d p="398.00500,1,25,16777215,1584269329,0,e4b18b37,29951081615196163">ocean</d>
<d p="432.17900,1,25,16777215,1584269363,0,e4b18b37,29951099571535943">村民,哼~</d>
<d p="467.41900,1,25,16777215,1584269399,0,e4b18b37,29951118364639237">黄河之水天上来</d>
<d p="6.71900,1,25,16777215,1584269422,0,70ba16f4,29951130398621699">镇站之宝</d>
<d p="313.08600,1,25,16777215,1584269425,0,e531c9dc,29951131798994947">这水</d>
<d p="587.87900,1,25,16777215,1584269519,0,e4b18b37,29951181142360071">海的那边是什么</d>
<d p="618.05000,1,25,16777215,1584269549,0,e4b18b37,29951196901933061">折跃门准备完毕</d>
…………
<i>
```
</details>
## 弹幕格式
### xml格式结构
- 标签 i
- 标签 chatserverchat.bilibili.com
- 标签 chatid视频cid
- 标签 mission0
- 标签 maxlimit实时弹幕池最大容量
- 标签 state弹幕状态0正常 1弹幕已关闭
- 标签 real_name0
- 标签 sourcee-r
- 标签 d (带有属性 p弹幕内容
### 属性 p
字符串内每项用逗号`,`分隔
| 项 | 含义 | 类型 | 备注 |
| ---- | ------------------ | ------ | ------------------------------------------------------------ |
| 0 | 视频内弹幕出现时间 | float | 秒 |
| 1 | 弹幕类型 | int32 | 1 2 3普通弹幕<br />4底部弹幕<br />5顶部弹幕<br />6逆向弹幕<br />7高级弹幕<br />8代码弹幕<br />9BAS弹幕`pool`必须为2 |
| 2 | 弹幕字号 | int32 | 18<br />25标准<br />36大 |
| 3 | 弹幕颜色 | int32 | 十进制RGB888值 |
| 4 | 弹幕发送时间 | int32 | 时间戳 |
| 5 | 弹幕池类型 | int32 | 0普通池<br />1字幕池<br />2特殊池代码/BAS弹幕 |
| 6 | 发送者mid的HASH | string | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id |
| 7 | 弹幕dmid | int64 | 唯一 可用于操作参数 |
| 8 | 弹幕的屏蔽等级 | int32 | 0-10低于用户设定等级的弹幕将被屏蔽<br />(新增,下方样例未包含) |
```xml
<d p="490.19100,1,25,16777215,1584268892,0,a16fe0dd,29950852386521095">从结尾回来看这里,更感动了!</d>
```
弹幕内容为:“从结尾回来看这里,更感动了!”
参数为视频内出现的时间是490.19100秒,类型是普通弹幕,字号为标准,颜色为白色(#FFFFFF发送时间是2020/3/15 18:41:32.........
### web版标准颜色
弹幕的颜色属性使用**十进制RGB888**值
| 颜色 | HEXRGB888 | DECRGB888 |
| --------------------------------- | ----------------------------------- | ------------------------------------- |
| <font color="#FE0302">红色</font> | <font color="#FE0302">FE0302</font> | <font color="#FE0302">16646914</font> |
| <font color="#FF7204">橘红</font> | <font color="#FF7204">FF7204</font> | <font color="#FF7204">16740868</font> |
| <font color="#FFAA02">橘黄</font> | <font color="#FFAA02">FFAA02</font> | <font color="#FFAA02">16755202</font> |
| <font color="#FFD302">淡黄</font> | <font color="#FFD302">FFD302</font> | <font color="#FFD302">16765698</font> |
| <font color="#FFFF00">黄色</font> | <font color="#FFFF00">FFFF00</font> | <font color="#FFFF00">16776960</font> |
| <font color="#A0EE00">草绿</font> | <font color="#A0EE00">A0EE00</font> | <font color="#A0EE00">10546688</font> |
| <font color="#00CD00">绿色</font> | <font color="#00CD00">00CD00</font> | <font color="#00CD00">52480</font> |
| <font color="#019899">墨绿</font> | <font color="#019899">019899</font> | <font color="#019899">104601</font> |
| <font color="#4266BE">紫色</font> | <font color="#4266BE">4266BE</font> | <font color="#4266BE">4351678</font> |
| <font color="#89D5FF">青色</font> | <font color="#89D5FF">89D5FF</font> | <font color="#89D5FF">9022215</font> |
| <font color="#CC0273">品红</font> | <font color="#CC0273">CC0273</font> | <font color="#CC0273">13369971</font> |
| <font color="#222222">黑色</font> | <font color="#222222">222222</font> | <font color="#222222">2236962</font> |
| <font color="#9B9B9B">灰色</font> | <font color="#9B9B9B">9B9B9B</font> | <font color="#9B9B9B">10197915</font> |
| <font color="#FFFFFF">白色</font> | <font color="#FFFFFF">FFFFFF</font> | <font color="#FFFFFF">16777215</font> |

View File

@ -1,246 +0,0 @@
# 历史弹幕
**注历史弹幕的xml接口已经失效现已改为protobuf接口**
- [查询历史弹幕日期](#查询历史弹幕日期)
- [获取历史弹幕protobuf接口](#获取历史弹幕protobuf接口)
- [~~获取历史弹幕xml接口~~](#获取历史弹幕xml接口)
---
## 查询历史弹幕日期
> https://api.bilibili.com/x/v2/dm/history/index
*请求方式GET*
认证方式CookieSESSDATA
**注:查询历史弹幕需要登录**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | ------- |
| type | num | 1 | 必要 | |
| oid | num | 视频cid | 必要 | |
| month | str | 查询目标年月 | 必要 | YYYY-MM |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------------------------------- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有弹幕array<br />无弹幕null | 日期列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---------- |
| 0 | str | 存在弹幕的日期1 | YYYY-MM-DD |
| n | str | 存在弹幕的日期(n+1) | YYYY-MM-DD |
| …… | str | …… | …… |
**示例:**
查询了cid为144541892的视频位于2020年1月中有历史弹幕记录的日期
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/history/index' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=144541892' \
--data-urlencode 'month=2020-01' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
"2020-01-21",
"2020-01-22",
"2020-01-23",
"2020-01-24",
"2020-01-25",
"2020-01-26",
"2020-01-27",
"2020-01-28",
"2020-01-29",
"2020-01-30",
"2020-01-31"
]
}
```
</details>
返回结果的 `data` 项说明这些日期有弹幕发送。若查询的月份中视频无弹幕,则 `data` 项为 `null`
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/history/index' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=144541892' \
--data-urlencode 'month=2019-12' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": null
}
```
</details>
## 获取历史弹幕protobuf接口
> https://api.bilibili.com/x/v2/dm/web/history/seg.so
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ----------- |
| type | num | 弹幕类 | 必要 | 1视频弹幕 |
| oid | num | 视频cid | 必要 | |
| date | str | 弹幕日期 | 必要 | YYYY-MM-DD |
**proto回复**
porto定义见[bilibili.community.service.dm.v1.DmSegMobileReply](../grpc_api/bilibili/community/service/dm/v1.proto)
详细说明见[protobuf弹幕](danmaku_proto.md)
获取视频`av84271171(cid=144541892)`2020-01-21的历史弹幕
**注proto定义需要编译**
```python
import requests
import google.protobuf.text_format as text_format
import bilibili.community.service.dm.v1_pb2 as Danmaku
url = 'https://api.bilibili.com/x/v2/dm/web/history/seg.so'
params = {
'type':1, #弹幕类型
'oid':144541892, #cid
'date':'2020-01-21' #弹幕日期
}
cookies = {
'SESSDATA':'xxx'
}
resp = requests.get(url,params,cookies=cookies)
data = resp.content
danmaku_seg = Danmaku.DmSegMobileReply()
danmaku_seg.ParseFromString(data)
print(text_format.MessageToString(danmaku_seg.elems[0],as_utf8=True))
```
输出:
```
id: 27532611677585408
progress: 300507
mode: 1
fontsize: 25
color: 16777215
midHash: "2a28d4a6"
content: "章北海的老爹"
ctime: 1579621359
idStr: "27532611677585408"
```
## 获取历史弹幕xml接口
<details>
<summary>查看折叠内容:</summary>
> https://api.bilibili.com/x/v2/dm/history
*请求方式GET*
认证方式CookieSESSDATA
**注:查询历史弹幕需要登录**
结果为[标准xml格式弹幕](danmaku_xml.md#弹幕格式)
**使用deflate压缩注意解码**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---------- |
| type | num | 1 | 必要 | |
| oid | num | 视频cid | 必要 | |
| date | str | 弹幕日期 | 必要 | YYYY-MM-DD |
**示例:**
获取视频`av84271171(cid=144541892)`2020-01-21的历史弹幕
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/history' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=144541892' \
--data-urlencode 'date=2020-01-21' \
-b 'SESSDATA=xxx' \
--compressed -o 'danmaku.xml'
```
<details>
<summary>查看响应示例:</summary>
```xml
<?xml version="1.0" encoding="UTF-8"?>
<i>
<chatserver>chat.bilibili.com</chatserver>
<chatid>144541892</chatid>
<mission>0</mission>
<maxlimit>1500</maxlimit>
<state>0</state>
<real_name>0</real_name>
<d p="473.43400,1,25,15138834,1579622380,0,ec16f2d,27532609919123456">敬礼</d>
<d p="3.10200,1,25,16777215,1579622362,0,a2bd7474,27532609920696320">悄默声的更新啊怎么</d>
<d p="17.52300,1,25,16777215,1579622357,0,972c932b,27532609906016258">久等了</d>
<d p="40.81800,1,25,16777215,1579622343,0,bbca6701,27532609906540546">不都是乱纪元才浸泡</d>
<d p="243.39800,1,25,15138834,1579622336,0,77b00ed9,27532609924890624">已阅,狗屁不通。大字报在地上搞搞就行,别弄到天上去</d>
<d p="559.80000,1,25,16777215,1579622334,0,9affc7f5,27532609909686274">CSSC。。。</d>
<d p="398.29700,1,25,16777215,1579622331,0,18d4707,27532609926463488">看到了个寂寞</d>
<d p="34.81000,1,25,38979,1579622327,0,319d7700,27532609926987776">有耳朵了!</d>
<d p="18.65700,1,25,16777215,1579622321,0,bbca6701,27532609912307714">雪天不用浸泡吧</d>
<d p="305.99800,1,25,16777215,1579622316,0,878c315b,27532609928560640">未来史学派</d>
<d p="7.86200,1,25,16777215,1579622309,0,c5136613,27532609913880578">浸泡!!!!!!!</d>
<d p="368.95600,1,25,16777215,1579622302,0,18d4707,27532609914404866">章召忠</d>
<d p="25.19800,1,25,16777215,1579622286,0,4dab6898,27532609931706368">mi24av</d>
<d p="41.10100,1,25,16777215,1579622274,0,33d31036,27532609932230656">泪奔</d>
<d p="627.69800,1,25,16777215,1579622264,0,d79a826a,27532609933279232">组建太空军</d>
<d p="310.58900,1,25,16777215,1579622243,0,18d4707,27532609918074882">是未来史学派?</d>
<d p="723.34800,1,25,16777215,1579622239,0,844fa9e7,27532609919123458">刘培强还行</d>
…………
<i>
```
</details>
</details>

View File

@ -1,92 +0,0 @@
# 弹幕快照
- [获取弹幕快照](#获取弹幕快照)
---
## 获取弹幕快照
> https://api.bilibili.com/x/v2/dm/ajax
*请求方式:GET*
最近产生的几条弹幕内容,**最多20条**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | -------- | ------------------ | ------ | ---- |
| aid | num或str | 稿件avid或稿件bvid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | --------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无视频 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | array | 预览列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | -------- |
| 0 | str | 预览内容1 | |
| n | str | 预览内容n+1 | |
| …… | str | …… | …… |
| 19 | str | 预览内容20 | 最后一条 |
**示例:**
获取视频`av43337021`/`BV1rb411m7gE`的弹幕快照总计20条
avid方式
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/ajax' \
--data-urlencode 'aid=43337021'
```
bvid方式
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/ajax' \
--data-urlencode 'aid=BV1rb411m7gE'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
"漫画比动漫好看而且血腥",
"666",
"金木小天使",
"太喜欢了",
"每天一遍防止抑郁",
"我还记得土豆那时候还有的看",
"把在给我摸摸~",
"突然泪目",
"感谢野生字幕君",
"993-7",
"刚刚出的时候小学看,现在高二了",
"原版op有这么长吗搞笑肯定做了剪辑op会给你放全歌",
"让你看个op 3 : 5 4 秒?",
"说原版不原版的都是弱智",
"樱花",
"请打开洗脑循环食用,请打开洗脑循环食用,请打开洗脑循环食用,请打开洗脑循环食用,请打开洗脑循环食用,",
"再来亿遍",
"错的不是我,而是这个世界。",
"吃货的第一季的最后一季足以让他封神!",
"+"
]
}
```
</details>

View File

@ -1,109 +0,0 @@
# 动态操作
- [删除动态](#删除动态)
- [删除定时发送动态](#删除草稿)
## 删除动态
> https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic
*请求方式POST*
认证方式CookieSESSDATA
**正文参数multipart/form-data**
| 参数名 | 类型 | 内容 |
| ---------- | ---- | ------ |
| dynamic_id | num | 动态id |
| csrf_token | str | csrf |
**json回复**
根对象:
| 字段 | 类型 | 内容 |
| ------- | ---- | ----------------- |
| code | num | 0:成功 |
| | | 500404:已经删除过 |
| | | 500406:不是自己的 |
| msg | str | 错误信息 |
| message | str | 和msg一样 |
| data | obj | 未知 |
<details>
<summary>查看示例</summary>
```bash
curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic' \
-X POST \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0' \
-H 'Referer: https://t.bilibili.com/' \
-H 'Cookie: SESSDATA=********; bili_jct=de2731532b4ab96bc8536da948932668;' \
--data-raw 'dynamic_id=588320531406678918&csrf_token=de2731532b4ab96bc8536da948932668&csrf=de2731532b4ab96bc8536da948932668'
```
```json
{
"code":0,
"msg":"",
"message":"",
"data": {
"_gt_":0
}
}
```
</details>
## 删除草稿
> https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/rm_draft
*请求方式POST*
认证方式CookieSESSDATA
**正文参数application/x-www-form-urlencoded**
| 参数名 | 类型 | 内容 |
| ---------- | ---- | -------------- |
| draft_id | num | 定时发送草稿id |
| csrf_token | str | csrf |
**json回复**
根对象:
| 字段 | 类型 | 内容 |
| ------- | ---- | ---------------------------- |
| code | num | 0:成功<br/>4120015: 系统异常 |
| message | str | 错误信息 |
| ttl | num | 1 |
| data | obj | 空对象 |
<details>
<summary>查看示例</summary>
```bash
curl -X POST 'https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/rm_draft' \
--data-urlencode 'draft_id=755409289278914611' \
--data-urlencode 'csrf=xxxx'
-b 'SESSDATA=xxxx;' \
```
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {}
}
```
</details>

View File

@ -1,146 +0,0 @@
# 根据关键字搜索用户(at别人时的填充列表)
**注意关键字不一定顺序匹配,如最后示例**
> https://api.vc.bilibili.com/dynamic_mix/v1/dynamic_mix/at_search
*请求方式GET*
认证方式CookieSESSDATA
**正文参数multipart/form-data**
| 参数名 | 类型 | 内容 |
| --- | --- | --- |
| uid | num | 自己的uid |
| keyword | str | 搜索关键字 |
**json回复**
根对象:
| 字段 | 类型 | 内容 |
| --- | --- | --- |
| code | num | 0成功 |
| msg | str | 成功为空文本 |
| message | str | 同msg |
| data | obj | 数据本体 |
data对象:
| 字段 | 类型 | 内容 |
| --- | --- | --- |
| groups | obj[] | 内容分组(好像是根据关注列表分) |
| \_gt_ | num | 0 |
group对象:
| 字段 | 类型 | 内容 |
| --- | --- | --- |
| group_type | num | 2:我的关注<br>4:其他 |
| group_name | str | 分组名字 |
| items | obj[] | 用户信息 |
item对象:
| 字段 | 类型 | 内容 |
| --- | --- | --- |
| uid | num | 用户id |
| uname | str | 用户昵称 |
| face | str | 用户头像url |
| fans | num | 用户粉丝数 |
| official_verify_type | num | 认证信息? |
<details>
<summary>查看示例</summary>
```shell
# 搜索关键字:社会易
curl 'https://api.vc.bilibili.com/dynamic_mix/v1/dynamic_mix/at_search?uid=15858903&keyword=%e7%a4%be%e4%bc%9a%e6%98%93' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0' -H 'Accept: application/json, text/plain, */*' \
-H 'Referer: https://t.bilibili.com/' \
-H 'Cookie: SESSDATA=******'
```
```json
{
"code": 0,
"msg": "",
"message": "",
"data": {
"groups": [
{
"group_type": 2,
"group_name": "我的关注",
"items": [
{
"uid": 293793435,
"uname": "社会易姐QwQ",
"face": "https://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
"fans": 1179,
"official_verify_type": -1
}
]
},
{
"group_type": 4,
"group_name": "其他",
"items": [
{
"uid": 250129011,
"uname": "社会小伙肖子易",
"face": "https://i0.hdslb.com/bfs/face/2ae12d7f71173baa8e00c4cfe97acb5a3de31566.jpg",
"fans": 7,
"official_verify_type": -1
},
{
"uid": 394873001,
"uname": "社会你易叔",
"face": "https://i2.hdslb.com/bfs/face/bde2811aa895e349036aba9ece5630bcd1341ff0.jpg",
"fans": 5,
"official_verify_type": -1
},
{
"uid": 486568790,
"uname": "社会主义接班人小易",
"face": "https://i2.hdslb.com/bfs/face/1ebb0d4aa8e2c4b532f82983503ec38b62a1820f.jpg",
"fans": 3,
"official_verify_type": -1
},
{
"uid": 497214639,
"uname": "社会你易易",
"face": "https://i0.hdslb.com/bfs/face/dccb52f3c15ba1bb99aac3c86e9825842cc95295.jpg",
"fans": 2,
"official_verify_type": -1
},
{
"uid": 496622388,
"uname": "社会你易哥",
"face": "https://i0.hdslb.com/bfs/face/daac5514a7622741f767c68b1cbc6b91e60b4798.jpg",
"fans": 1,
"official_verify_type": -1
},
{
"uid": 457675287,
"uname": "易社会",
"face": "https://i0.hdslb.com/bfs/face/632bf9dd17f4e9f2f12be2c0ad00cdacd2d825fa.jpg",
"fans": 1,
"official_verify_type": -1
},
{
"uid": 123270058,
"uname": "周易社会",
"face": "https://i1.hdslb.com/bfs/face/c6100396729112230deb3b0972db1504e9ce21bf.jpg",
"fans": 1,
"official_verify_type": -1
}
]
}
],
"_gt_": 0
}
}
```
</details>

File diff suppressed because it is too large Load Diff

View File

@ -1,487 +0,0 @@
# 动态详细信息字段
不同动态内容卡片的具体信息。包含在***获取特定动态卡片信息,话题下特定动态信息***等API的Json回复中。
以card字段的形式出现内容为一个可被解析为Json对象的字符串。
不同类型的动态内容拥有不同的字段。
****
## 在转发类动态中type=1
需注意账号转发视频投稿其他用户的动态以及分享收藏夹等均为转发类内容并不属于type=4300的收藏类动态等。
在type=1的转发类动态中解析出的对象包含以下内容
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| user | obj | 转发者用户信息 | 包含用户名用户id和头像 |
| item | obj | 转发相关信息 | `content`字段为转发附言 | |
| origin | str | 被转发动态信息 | 即本文档所描述的动态详细信息字段。</br>动态类型为`item`对象的`orig_type`字段 |
| origin_extend_json | str | 被转发动态补充信息 | |
| origin_user | obj | 被转发用户信息 | |
| activity_infos | obj | 被转发动态参与的活动 | |
<details>
<summary>查看字段内容示例:</summary>
```json
{
"user": {
"uid": 1704629193,
"uname": "钢板狗的狐",
"face": "https://i0.hdslb.com/bfs/face/443bfd128429f84c0d81c20c4354ea5007f7480c.jpg"
},
"item": {
"rp_id": 587236631985408400,
"uid": 1704629193,
"content": "#阅机无数#这是什么本子",
"ctrl": "",
"orig_dy_id": 587058081595689300,
"pre_dy_id": 587058081595689300,
"timestamp": 1635565083,
"reply": 0,
"orig_type": 8
},
"origin": "{\"aid\":933765713,\"attribute\":0,\"cid\":433047365,\"copyright\":1,\"ctime\":1635523511,\"desc\":\"-\",\"dimension\":{\"height\":1920,\"rotate\":0,\"width\":1080},\"duration\":200,\"dynamic\":\"\",\"first_frame\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/storyff\\/n211029a2nf13h6fhybt231isumtaj9x_firsti.jpg\",\"jump_url\":\"bilibili:\\/\\/video\\/933765713\\/?page=1&player_preload=null&player_width=1080&player_height=1920&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/e4c06054bc9d6c564637f70a7565a6a2d24ee521.jpg\",\"mid\":492755628,\"name\":\"Leojdj\"},\"pic\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/archive\\/8b3bd4387d4041389ba7f02ce813b17f96a7f1e2.jpg\",\"player_info\":null,\"pubdate\":1635523511,\"rights\":{\"autoplay\":1,\"bp\":0,\"download\":0,\"elec\":0,\"hd5\":0,\"is_cooperation\":0,\"movie\":0,\"no_background\":0,\"no_reprint\":1,\"pay\":0,\"ugc_pay\":0,\"ugc_pay_preview\":0},\"short_link\":\"https:\\/\\/b23.tv\\/BV16T4y1R7H9\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV16T4y1R7H9\",\"stat\":{\"aid\":933765713,\"coin\":0,\"danmaku\":0,\"dislike\":0,\"favorite\":1,\"his_rank\":0,\"like\":2,\"now_rank\":0,\"reply\":2,\"share\":1,\"view\":70},\"state\":0,\"tid\":95,\"title\":\"试图安装Windows10\",\"tname\":\"数码\",\"up_from_v2\":9,\"videos\":1}",
"origin_extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\"},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}",
"origin_user": {
"info": {
"uid": 492755628,
"uname": "Leojdj",
"face": "https://i0.hdslb.com/bfs/face/e4c06054bc9d6c564637f70a7565a6a2d24ee521.jpg"
},
"card": {
"official_verify": {
"type": -1,
"desc": ""
}
},
"vip": {
"vipType": 0,
"vipDueDate": 0,
"vipStatus": 0,
"themeType": 0,
"label": {
"path": "",
"text": "",
"label_theme": "",
"text_color": "",
"bg_style": 0,
"bg_color": "",
"border_color": ""
},
"avatar_subscript": 0,
"nickname_color": "",
"role": 0,
"avatar_subscript_url": ""
},
"pendant": {
"pid": 0,
"name": "",
"image": "",
"expire": 0,
"image_enhance": "",
"image_enhance_frame": ""
},
"rank": "10000",
"sign": "",
"level_info": {
"current_level": 3
}
},
"activity_infos": {
"details": [
{
"type": 1,
"detail": "{\"is_show\":1,\"topic_id\":10511051,\"topic_link\":\"https:\\/\\/member.bilibili.com\\/york\\/punch-card?navhide=1\",\"topic_name\":\"打卡挑战\"}"
}
]
}
}
```
</details>
## 在图片动态中type=2
在type=2的图片动态中解析出的对象包含以下内容
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| item | obj | 图片动态内容 | `description`字段为文字内容</br>`pictures`字段图片 | |
| user | obj | 发布者用户信息 | 包含用户名用户id和头像 |
<details>
<summary>查看字段内容示例:</summary>
```json
{
"item": {
"at_control": "",
"category": "daily",
"description": "#阅机无数#已知这个笔记本的品牌为Dell隶属于灵越系列主打外观的设计目测应该是4代酷睿之前的型号CPU应该是低压i5/i3不知道能否找出具体型号",
"id": 172408258,
"is_fav": 0,
"pictures": [
{
"img_height": 2400,
"img_size": 1425.97998046875,
"img_src": "https://i0.hdslb.com/bfs/album/3716f26eeede4d77874f3eeacd49b0e2e597fcc3.jpg",
"img_tags": null,
"img_width": 1080
}
],
"pictures_count": 1,
"reply": 2,
"role": [],
"settings": {
"copy_forbidden": "0"
},
"source": [],
"title": "",
"upload_time": 1635433727
},
"user": {
"head_url": "https://i1.hdslb.com/bfs/face/98f88e00306ac92d30bae013f8295d26bd018093.jpg",
"name": "LostCity失落之城",
"uid": 169216498,
"vip": {
"avatar_subscript": 0,
"due_date": 0,
"label": {
"label_theme": "",
"path": "",
"text": ""
},
"nickname_color": "",
"status": 0,
"theme_type": 0,
"type": 0,
"vip_pay_type": 0
}
}
}
```
</details>
## 在文字动态中type=4
在type=4的文字动态中解析出的对象包含以下内容
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| item | obj | 文字动态内容 | `description`字段为文字内容 | |
| user | obj | 发布者用户信息 | 包含用户名用户id和头像 |
<details>
<summary>查看字段内容示例:</summary>
```json
{
"user": {
"uid": 403417570,
"uname": "杯子人一君羊",
"face": "https://i1.hdslb.com/bfs/face/cf0772f2e4d76f75ca4c230d9ab1b50012a8bbfa.jpg"
},
"item": {
"rp_id": 586612173803463700,
"uid": 403417570,
"content": "#阅机无数# 文字题\nthinkpad 09-15年\n触控笔\nenergy star\ncore i5\n[藏狐]",
"ctrl": "",
"orig_dy_id": 0,
"pre_dy_id": 0,
"timestamp": 1635419690,
"reply": 2
}
}
```
</details>
## 在视频投稿动态中type=8
在type=8的视频投稿动态中解析出的对象包含以下内容
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| aid | num | 视频avid | |
| attribute | num | `0` | [可能已弃用](https://shakaianee.top/archives/9/) |
| cid | num | 视频cid | |
| copyright | num | 原创信息 | 1为原创2为转载 |
| desc | str | 视频简介 | |
| dimension | obj |视频1p分辨率| |
| duration | num | 视频时长 | 单位秒 |
| dynamic | str | 动态文字内容 | |
| first_frame | str | 视频第一帧图片 | 图片链接 |
| jump_url | str | 视频跳转链接 | |
| mission_id | num | 稿件参与的活动id | |
| owner | obj | 动态作者信息 | 即up主 |
| pic | str | 视频封面 | |
| player_info | ? | 可能是播放器信息 | |
| pubdate | num | 发布时间 | 时间戳 |
| rights | obj | 联合投稿,是否付费等信息 | 可能用来代替原`attribute`字段 |
| stat | obj | 视频数据 | 点赞投币等 |
| state | num | 视频状态 | 详情见**属性数据文档** |
| tid | num | 视频分区编号 | |
| title | str | 视频标题 | |
| tname | str | 视频分区名称 | |
| video | num | 视频数| |
<details>
<summary>查看字段内容示例:</summary>
```json
{
"aid": 506318410,
"attribute": 0,
"cid": 432711595,
"copyright": 1,
"ctime": 1635403080,
"desc": "我看谁敢欺负天依依?都别动啊,放那儿让我来!\n好久不写萌歌歌了耐心心看到结尾有天依依激萌嚎叫不\n\n作曲曲/编曲曲/混音音iKz @Signal-E | 作词词:叫叫与壶壶\n唱歌歌洛天依 | 调校校Creuzer\n曲绘绘pelokio & 贝贝web & 壶芬奇\nPVVAYWC八毛 @Signal-E\n制作人iKz\n\n蛀牙牙版BV1FR4y1n7rt",
"dimension": {
"height": 1080,
"rotate": 0,
"width": 1920
},
"duration": 265,
"dynamic": "我看谁敢欺负天依依?都别动啊,放那儿让我来!\n好久不写萌歌歌了耐心心看到结尾有洛天依激萌嚎叫不",
"first_frame": "https://i1.hdslb.com/bfs/storyff/n211029a21oldgobzh2ob1uf3tqav4yy_firsti.jpg",
"jump_url": "bilibili://video/506318410/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0",
"mission_id": 122069,
"owner": {
"face": "https://i1.hdslb.com/bfs/face/4935c75aecf986c3c129400882ee9c5ceeeec4b5.jpg",
"mid": 25681,
"name": "iKz_茶壶"
},
"pic": "https://i0.hdslb.com/bfs/archive/06749bfe8b9505b00bd572950615912fecadb513.jpg",
"player_info": null,
"pubdate": 1635501604,
"rights": {
"autoplay": 1,
"bp": 0,
"download": 0,
"elec": 0,
"hd5": 1,
"is_cooperation": 1,
"movie": 0,
"no_background": 0,
"no_reprint": 1,
"pay": 0,
"ugc_pay": 0,
"ugc_pay_preview": 0
},
"short_link": "https://b23.tv/BV13u411o7Ht",
"short_link_v2": "https://b23.tv/BV13u411o7Ht",
"stat": {
"aid": 506318410,
"coin": 5490,
"danmaku": 486,
"dislike": 0,
"favorite": 6017,
"his_rank": 0,
"like": 8526,
"now_rank": 0,
"reply": 597,
"share": 568,
"view": 44737
},
"state": 0,
"tid": 30,
"title": "【超萌萌洛天依万圣节原创】嘤嘤大作战【iKz-茶壶壶】",
"tname": "VOCALOID·UTAU",
"videos": 1
}
```
</details>
## 在专栏投稿动态中type=64
在type=64的专栏投稿动态中解析出的对象包含以下内容
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| id | num | 专栏的id即cv号 | |
| category | obj | 分类号和分类名称 | |
| categories | obj | 分类信息 | |
| title | str | 专栏标题 | |
| summary | str | 专栏简介 | |
| banner_url | str | 头图链接 | |
| template_id | num | 模板信息 | |
| state | num | 专栏状态 | |
| author | obj | 作者信息 | 包含了头像挂件和勋章等 |
| reprint | num | 可能是转载 | |
| image_urls | obj | 图片链接 | |
| publish_time | num | 发布时间 | 时间戳,应该指专栏 |
| ctime | num | 发布时间 | 时间戳,应该指动态 |
| stats | obj | 专栏数据,点赞之类 | 有点踩字段,但并未实装此功能 |
| words | num | 字数 | |
| origin_image_urls | obj | 源图片地址 | |
| list | ? | 可能为文集 | |
| is_like | bool | 是否点赞 | |
| media | obj | 番剧电影相关内容 | 影评的分数,是否有剧透等 |
| apply_time | ? | ? | |
| check_time | ? | ? | |
| original | num | 是否原创 | |
| act_id | num | ? | |
| dispute | ? | 可能为是否争议内容 | |
| authenMark | ? | ? | |
| cover_avid | num | 相关视频id | 例如笔记专栏的原视频 |
| top_video_info | ? | ? | |
| type | num | 可能是专栏类别 | |
<details>
<summary>查看字段内容示例:</summary>
```json
{
"id": 12457797,
"category": {
"id": 42,
"parent_id": 41,
"name": "全部笔记"
},
"categories": [
{
"id": 41,
"parent_id": 0,
"name": "笔记"
},
{
"id": 42,
"parent_id": 41,
"name": "全部笔记"
}
],
"title": "【编曲教程】弦乐如何编写?二十分钟学会弦乐基础写法~",
"summary": "点击进入查看全文",
"banner_url": "https://i0.hdslb.com/bfs/archive/9c0f743f0d79bf3f73ea196eced55a9211ef363f.jpg",
"template_id": 4,
"state": 0,
"author": {
"mid": 310236726,
"name": "珞林ltyxh",
"face": "https://i0.hdslb.com/bfs/face/8c4aebb01b3cc34154168be51241b0345f110aeb.webp",
"pendant": {
"pid": 2155,
"name": "洛天依8th生日纪念",
"image": "https://i0.hdslb.com/bfs/garb/item/e98718ae0d09e48bc85df969820b88241bc06883.png",
"expire": 0
},
"official_verify": {
"type": -1,
"desc": ""
},
"nameplate": {
"nid": 4,
"name": "青铜殿堂",
"image": "https://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png",
"image_small": "https://i2.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": {
"path": "",
"text": "年度大会员",
"label_theme": "annual_vip"
},
"avatar_subscript": 1,
"nickname_color": "#FB7299"
}
},
"reprint": 0,
"image_urls": [
"https://i0.hdslb.com/bfs/article/banner/6daa4ac60ddec2456bb720dbb4979b07dd705e8a.png"
],
"publish_time": 1627921161,
"ctime": 1627921161,
"stats": {
"view": 107,
"favorite": 5,
"like": 11,
"dislike": 0,
"reply": 1,
"share": 0,
"coin": 1,
"dynamic": 0
},
"words": 225,
"origin_image_urls": [
"https://i0.hdslb.com/bfs/article/banner/6daa4ac60ddec2456bb720dbb4979b07dd705e8a.png"
],
"list": null,
"is_like": false,
"media": {
"score": 0,
"media_id": 0,
"title": "",
"cover": "",
"area": "",
"type_id": 0,
"type_name": "",
"spoiler": 0,
"season_id": 0
},
"apply_time": "",
"check_time": "",
"original": 1,
"act_id": 0,
"dispute": null,
"authenMark": null,
"cover_avid": 57337301,
"top_video_info": null,
"type": 2
}
```
</details>
## 在音频投稿动态中type=256
在type=256的音频投稿动态中解析出的对象包含以下内容
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| id | num | 投稿编号 | 即au号 |
| upId | num | 音乐人id | 与用户uid不同 |
| title | str | 音频标题 | |
| upper | str | 上传者名称 | |
| cover | str | 封面图链接 | |
| author | str | 作者名称 | |
| ctime | num | 上传时间 | 时间戳的后面加了三个0 |
| playCnt | num | 播放量 | |
| intro | str | 音频介绍 | |
| schema | str | 跳转链接 | 似乎并不只是url |
| typeInfo | str | 分区信息 | |
| upperAvatar | str | 上传者的头像链接 | |
<details>
<summary>查看字段内容示例:</summary>
```json
{
"id": 2562895,
"upId": 482834,
"title": "[蓝猫原创伴奏]无衣",
"upper": "NBluecat",
"cover": "https://i0.hdslb.com/bfs/music/1e7c4d04bd405159b66893d4cb68977ddf784b42.jpg",
"author": "NBluecat",
"ctime": 1632115270000,
"replyCnt": 1,
"playCnt": 252,
"intro": "_(:з」∠)_这是无衣的伴奏非常简单",
"schema": "bilibili://music/detail/2562895?name=%5B%E8%93%9D%E7%8C%AB%E5%8E%9F%E5%88%9B%E4%BC%B4%E5%A5%8F%5D%E6%97%A0%E8%A1%A3&uperName=&cover_url=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Fmusic%2F1e7c4d04bd405159b66893d4cb68977ddf784b42.jpg&upperId=&author=NBluecat",
"typeInfo": "音乐 · 纯音乐/演奏",
"upperAvatar": "https://i2.hdslb.com/bfs/face/d5bf3c9f179803134172ff1c6090ba6b999651c6.jpg"
}
```
</details>

File diff suppressed because it is too large Load Diff

View File

@ -1,601 +0,0 @@
# 获取特定动态卡片信息
> https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/get_dynamic_detail
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------ | ---- | ---------- | ------ | -------- |
| dynamic_id | id | 动态id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| data | obj | 信息本体 | |
| message | str | 错误信息 | 默认为空 |
| msg | num | 空 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ----- | ---------- | ------------ |
| card | obj | 动态卡片内容 | 当动态不存在/删除时不返回此项 |
| result | num | 0 | 作用尚不明确(当动态不存在/删除时不返回此项) |
| \_gt\_ | num | 0 | 作用尚不明确 |
`data`中的`card`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| activity_infos | obj | 该条动态参与的活动 |当此条动态没有参与任何活动时不显示此项 |
| card | str | 动态详细信息 | 会跟随此动态类型不同发生一定的变化,评论数、点赞数等相关信息参考`desc`字段 |
| desc | obj | 动态相关信息 | 会跟随此动态类型不同发生一定的变化,详细信息(例如动态描述等)参考`card`字段 |
| display | obj | 动态部分的可操作项 | 会随着动态类型发生变化,主要用于显示动态 |
| extend_json | str | 动态扩展项 | 会随着动态类型发生变化 |
**此处的大部分字段的内容都会根据`desc`中的`type`值发生一定变化具体的数值对照参考下表仅作参考部分内容的解释未知同时有些内容仅为在部分页面出现无法通过此API调出**
| 值 | 含义 |
| ---- | ---- |
| 268435455 | 具体定义未知 |
| 1 | 转发 |
| 2 | 图片动态 |
| 4 | 文字动态 |
| 8 | 视频动态 |
| 16 | 小视频 |
| 32 | 具体定义未知(可能为戏剧) |
| 64 | 专栏 |
| 256 | 音频 |
| 512 | 番剧 |
| 1024 | 具体定义未知 |
| 2048 | H5活动动态 |
| 2049 | 漫画分享 |
| 4097 | PGC番剧 |
| 4098 | 电影 |
| 4099 | 电视剧 |
| 4100 | 国创动漫 |
| 4101 | 纪录片 |
| 4200 | 直播 |
| 4201 | 直播 |
| 4300 | 收藏夹 |
| 4302 | 付费课程 |
| 4303 | 付费课程 |
| 4308 | 直播 |
| 4310 | 合集 |
| 4311 | 具体定义未知 |
| 1e3 | 具体定义未知 |
| 1001 | 具体定义未知 |
**示例:**
获取`哔哩哔哩弹幕网`的动态id为`507420325550127049`动态
```shell
curl -G 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/get_dynamic_detail' \
--data-urlencode 'dynamic_id=507420325550127049'
```
<details>
<summary>查看响应示例</summary>
```json
{
"code": 0,
"msg": "",
"message": "",
"data": {
"card": {
"desc": {
"uid": 8047632,
"type": 8,
"rid": 204774719,
"acl": 0,
"view": 1182282,
"repost": 405,
"like": 31940,
"is_liked": 0,
"dynamic_id": 507420325550127049,
"timestamp": 1616981401,
"pre_dy_id": 0,
"orig_dy_id": 0,
"orig_type": 0,
"user_profile": {
"info": {
"uid": 8047632,
"uname": "哔哩哔哩弹幕网",
"face": "https://i0.hdslb.com/bfs/face/f2cb8d9854156e3f26d4c6751d6eeb9c30e21847.jpg"
},
"card": {
"official_verify": {
"type": 1,
"desc": "哔哩哔哩弹幕网官方账号 "
}
},
"vip": {
"vipType": 2,
"vipDueDate": 1924531200000,
"vipStatus": 1,
"themeType": 0,
"label": {
"path": "",
"text": "十年大会员",
"label_theme": "ten_annual_vip",
"text_color": "#FFFFFF",
"bg_style": 1,
"bg_color": "#FB7299",
"border_color": ""
},
"avatar_subscript": 1,
"nickname_color": "#FB7299",
"role": 7,
"avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png"
},
"pendant": {
"pid": 3860,
"name": "2021拜年纪",
"image": "https://i0.hdslb.com/bfs/garb/item/7f8aa8ef1eed8c2dce0796801ddc82552a4164f9.png",
"expire": 0,
"image_enhance": "https://i0.hdslb.com/bfs/garb/item/7f8aa8ef1eed8c2dce0796801ddc82552a4164f9.png",
"image_enhance_frame": ""
},
"rank": "10000",
"sign": "哔哩哔哩 干杯 - ( ゜- ゜)つロ",
"level_info": {
"current_level": 6
}
},
"uid_type": 1,
"stype": 0,
"r_type": 1,
"inner_id": 0,
"status": 1,
"dynamic_id_str": "507420325550127049",
"pre_dy_id_str": "0",
"orig_dy_id_str": "0",
"rid_str": "204774719",
"bvid": "BV1Dh411S7sS"
},
"card": "{\"aid\":204774719,\"attribute\":0,\"cid\":316514988,\"copyright\":1,\"ctime\":1616939233,\"desc\":\"2021年3月29日9:30北京时间B站在中国香港港交所成功挂牌二次上市。欢迎来到bilibili这座乐园和超过2亿中国年轻人一起表达自我、拥抱世界。\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":290,\"dynamic\":\"\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/204774719\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/f2cb8d9854156e3f26d4c6751d6eeb9c30e21847.jpg\",\"mid\":8047632,\"name\":\"哔哩哔哩弹幕网\"},\"pic\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/archive\\/bcbcac6560268ef9cbe59fbf759ac28adf5e0432.jpg\",\"player_info\":null,\"pubdate\":1616981400,\"rights\":{\"autoplay\":1,\"bp\":0,\"download\":0,\"elec\":0,\"hd5\":1,\"is_cooperation\":0,\"movie\":0,\"no_background\":0,\"no_reprint\":1,\"pay\":0,\"ugc_pay\":0,\"ugc_pay_preview\":0},\"share_subtitle\":\"已观看24.0万次\",\"short_link\":\"https:\\/\\/b23.tv\\/BV1Dh411S7sS\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1Dh411S7sS\",\"stat\":{\"aid\":204774719,\"coin\":8661,\"danmaku\":744,\"dislike\":0,\"favorite\":6025,\"his_rank\":0,\"like\":31940,\"now_rank\":0,\"reply\":1619,\"share\":2134,\"view\":246956},\"state\":0,\"tid\":207,\"title\":\"欢迎来到2亿年轻人的乐园——bilibili 回香港上市啦!\",\"tname\":\"财经\",\"videos\":1}",
"extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\"},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}",
"display": {
"topic_info": {
"topic_details": [
{
"topic_id": 12895437,
"topic_name": "二次上市",
"is_activity": 0,
"topic_link": ""
},
{
"topic_id": 10967402,
"topic_name": "香港上市",
"is_activity": 1,
"topic_link": "https://www.bilibili.com/blackboard/dynamic/102930"
},
{
"topic_id": 114859,
"topic_name": "B站",
"is_activity": 0,
"topic_link": ""
},
{
"topic_id": 8312,
"topic_name": "宣传片",
"is_activity": 1,
"topic_link": "https://www.bilibili.com/blackboard/dynamic/8795"
},
{
"topic_id": 679,
"topic_name": "BILIBILI",
"is_activity": 0,
"topic_link": ""
}
]
},
"usr_action_txt": "投稿了视频",
"relation": {
"status": 1,
"is_follow": 0,
"is_followed": 0
},
"show_tip": {
"del_tip": "要删除动态吗?"
},
"cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png"
}
},
"result": 0,
"_gt_": 0
}
}
```
</details>
## 最近更新UP主列表
> https://api.bilibili.com/x/polymer/web-dynamic/v1/portal
*请求方式GET*
*认证方式Cookie(SESSDATA) 和 Access_Token*
**json回复**
*根对象*
| 字段 | 类型 | 内容 | 备注 |
| ------- | --- | ---- | ---- |
| code | num | 返回值 | 0成功 |
| data | obj | 信息本体 | |
| message | str | 错误信息 | 默认为0 |
| ttl | int | 1 | 默认为1 |
`data`对象
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ----- | ---------- | --- |
| live_users | null | 不明 | |
| my_info | obj | 个人关注的一些信息 | |
| up_list | array | 最近更新的up主列表 | |
`my_info`对象
| 字段 | 类型 | 内容 | 备注 |
| ---------- | --- | ----------- | ---- |
| dyns | int | 个人动态 | |
| face | str | 头像 | 图像地址 |
| face_nft | int | 不明 | |
| follower | int | 粉丝数量 | |
| following | int | 我的关注 | |
| level_info | obj | 本人等级内容 | |
| mid | int | 账户mid | |
| name | str | 账户名称 | |
| offcial | obj | 认证信息 | |
| space_bg | str | 账户个人中心的背景横幅 | 图像地址 |
| vip | obj | vip信息 | |
`my_info`中的`level_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | --- | ---- | ---------- |
| current_level | num | 当前等级 | 0-6级 |
| current_min | num | 0 | |
| current_exp | num | 0 | |
| next_exp | num | 0 | |
`my_info`中的`Official`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | --- | ---- | ------------------------------------- |
| role | num | 认证类型 | 0<br />1 2 7个人认证<br />3 4 5 6机构认证 |
| title | str | 认证信息 | 无为空 |
| desc | str | 认证备注 | 无为空 |
| type | num | 是否认证 | -1<br />0认证 |
`my_info`中的`vip`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | --- | --------- | -------------------------------------------- |
| type | num | 会员类型 | 0<br />1月大会员<br />2年度及以上大会员 |
| status | num | 会员状态 | 0<br />1有 |
| due_date | num | 会员过期时间 | Unix时间戳(毫秒) |
| vip_pay_type | num | 支付类型 | 0未支付常见于官方账号<br />1已支付以正常渠道获取的大会员均为此值 |
| theme_type | num | 0 | 作用尚不明确 |
| label | obj | 会员标签 | |
| avatar_subscript | num | 是否显示会员图标 | 0不显示<br />1显示 |
| nickname_color | str | 会员昵称颜色 | 颜色码,一般为`#FB7299`,曾用于愚人节改变大会员配色 |
| role | num | 大角色类型 | 1月度大会员<br/>3年度大会员<br/>7十年大会员<br/>15百年大会员 |
| avatar_subscript_url | str | 大会员角标地址 | |
| tv_vip_status | num | 电视大会员状态 | 0未开通 |
| tv_vip_pay_type | num | 电视大会员支付类型 | |
`vip`中的`label`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------------- | ---- | -------- | ---------------------------------------------------------------------------------------------------------------------------- |
| path | str | 空 | 作用尚不明确 |
| text | str | 会员类型文案 | `大会员` `年度大会员` `十年大会员` `百年大会员` `最强绿鲤鱼` |
| label_theme | str | 会员标签 | vip大会员<br />annual_vip年度大会员<br />ten_annual_vip十年大会员<br />hundred_annual_vip百年大会员<br/>fools_day_hundred_annual_vip最强绿鲤鱼 |
| text_color | str | 会员标签 | |
| bg_style | num | 1 | |
| bg_color | str | 会员标签背景颜色 | 颜色码,一般为`#FB7299`,曾用于愚人节改变大会员配色 |
| border_color | str | 会员标签边框颜色 | 未使用 |
| use_img_label | bool | `true` | |
| img_label_uri_hans | str | `空串` | |
| img_label_uri_hant | str | `空串` | |
| img_label_uri_hans_static | str | 大会员牌子图片 | 简体版 |
| img_label_uri_hant_static | str | 大会员牌子图片 | 繁体版 |
`data`中的`up_list`数组对象
| 字段 | 属性 | 内容 | 备注 |
| ----------------- | ---- | --------- | --- |
| face | str | UP主头像 | |
| has_update | bool | 最近更新是否更新? | |
| is_reserve_recall | bool | 不明 | |
| mid | int | UP主mid | |
| uname | str | up主昵称 | |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"live_users": null,
"my_info": {
"dyns": 67,
"face": "http://i0.hdslb.com/bfs/face/44253f4e588d72d4c10dde495752142b588455af.jpg",
"face_nft": 0,
"follower": 15,
"following": 77,
"level_info": {
"current_exp": 23846,
"current_level": 5,
"current_min": 10800,
"level_up": -62135596800,
"next_exp": 28800
},
"mid": 108534711,
"name": "CiaoMyTime",
"official": {
"desc": "",
"role": 0,
"title": "",
"type": -1
},
"space_bg": "http://i1.hdslb.com/bfs/space/aea2dd7b8894ce31d578d4fad6a7188c7b49cb2f.jpg",
"vip": {
"avatar_subscript": 1,
"avatar_subscript_url": "",
"due_date": 1670256000000,
"label": {
"bg_color": "#FB7299",
"bg_style": 1,
"border_color": "",
"img_label_uri_hans": "",
"img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/3788b674c69072f1ee252b79a31ecc8c43af3039.png",
"img_label_uri_hant": "",
"img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/jwXBWRVwa5.png",
"label_theme": "vip",
"path": "",
"text": "大会员",
"text_color": "#FFFFFF",
"use_img_label": true
},
"nickname_color": "",
"role": 1,
"status": 1,
"theme_type": 0,
"tv_vip_pay_type": 0,
"tv_vip_status": 0,
"type": 1,
"vip_pay_type": 0
}
},
"up_list": [
{
"face": "https://i2.hdslb.com/bfs/face/09a47992c9cb08f81effede594ddf014f83047fe.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 15135791,
"uname": "东北大学张引"
},
{
"face": "https://i1.hdslb.com/bfs/face/a83b296101bb36a6f1dacb8fdfa74a57a2c29445.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 1856528671,
"uname": "陆鳐LuLu"
},
{
"face": "https://i0.hdslb.com/bfs/face/60ec600cc9d84c74c8220ab41ce49bacfdc0895c.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 39180492,
"uname": "蒸気火鸡"
},
{
"face": "https://i0.hdslb.com/bfs/face/986a9f29848d17b39a99e41557d56dcd1091a3a9.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 2142762,
"uname": "老戴在此"
},
{
"face": "https://i1.hdslb.com/bfs/face/475f3c05ea494a26f5dd91b277f48b136ae63021.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 431313625,
"uname": "小蓝和他的朋友日常号"
},
{
"face": "https://i1.hdslb.com/bfs/face/bafb36d5726f8062e578474095abb0e906fec163.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 233114659,
"uname": "碧蓝航线"
},
{
"face": "https://i0.hdslb.com/bfs/face/39d23f3c5dd2c96fc35db5c2a98f4a8ff73a2d46.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 27534330,
"uname": "崩坏3第一偶像爱酱"
},
{
"face": "http://i2.hdslb.com/bfs/face/f119348814f30c6bbbcc60bd63c12b8215d19d2f.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 524704055,
"uname": "大庆赶海"
},
{
"face": "https://i0.hdslb.com/bfs/face/c4340d477356ba108098ba9a566e7ce4a54e0936.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 194326389,
"uname": "兮子cc"
},
{
"face": "https://i2.hdslb.com/bfs/face/0455b74f73d6a83eef2d6dfbdb4ae2beda42a3ce.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 476833439,
"uname": "盾之勇者成名录"
},
{
"face": "https://i0.hdslb.com/bfs/face/7c6cdd77937d4bbd2171241fe530e18c0c5bc58e.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 492840942,
"uname": "云视听小电视-TV"
},
{
"face": "https://i0.hdslb.com/bfs/face/b14881845b777d925876f24cb46b1dc1ad5a0e27.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 1636034895,
"uname": "绝区零"
},
{
"face": "http://i1.hdslb.com/bfs/face/3b933fe3c47976dd29f30e3a4f7f2bdfd99e8b08.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 603028270,
"uname": "乃木坂46官方"
},
{
"face": "https://i2.hdslb.com/bfs/face/76ec72b2a530f2f24209c98b5690ef7b536040cf.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 5992670,
"uname": "云之幻"
},
{
"face": "https://i1.hdslb.com/bfs/face/9ca9ea42fa75d9a651b354a95e8e39f48d8c30d2.jpg",
"has_update": true,
"is_reserve_recall": false,
"mid": 299359111,
"uname": "月圆之夜"
},
{
"face": "https://i1.hdslb.com/bfs/face/c8c0adce728125167fe44371d451b3dc19a84506.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 79983517,
"uname": "一唐老狮一"
},
{
"face": "https://i0.hdslb.com/bfs/face/68b4b212d9738c40d8a6a77beb65a6dd4415f81b.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 1861940979,
"uname": "保卫萝卜"
},
{
"face": "https://i2.hdslb.com/bfs/face/85bab2a17646ccf442d28549e7216fd65c6adeb7.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 2162,
"uname": "GPBeta"
},
{
"face": "https://i1.hdslb.com/bfs/face/7a41310afc08381ad0451bee8ea07f15fcc411bd.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 508963009,
"uname": "HiiroVTuber"
},
{
"face": "https://i1.hdslb.com/bfs/face/b085d34fd9d2cd44641ab648cc96e7a3068eb811.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 396848107,
"uname": "不愧是姐姐大人"
},
{
"face": "https://i0.hdslb.com/bfs/face/3f1496f48a5eb840a974fef0fd7db7a3f225fbe7.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 80304,
"uname": "亚食人"
},
{
"face": "https://i2.hdslb.com/bfs/face/a7716fec14658ef7365b538fdce0d86eb6123ed4.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 401742377,
"uname": "原神"
},
{
"face": "https://i0.hdslb.com/bfs/face/81d5201d6095e3802f14094a6906d1a114bc74c7.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 11131476,
"uname": "绫人太太啊"
},
{
"face": "https://i0.hdslb.com/bfs/face/7d72e58d0ad1b401e4c59960c4b1795efbc57c3a.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 409524162,
"uname": "一线码农聊技术"
},
{
"face": "https://i0.hdslb.com/bfs/face/5634900a3167310fcd0c6b1102ffc308c68aedd1.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 260054391,
"uname": "CHeems的日常"
},
{
"face": "https://i2.hdslb.com/bfs/face/81a4c852925b873f42c4971c836a67ea9dd2ef41.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 361469957,
"uname": "软件工艺师"
},
{
"face": "https://i2.hdslb.com/bfs/face/99e9eb37657f67f547b546b72592d70ab8ce1a4b.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 41059757,
"uname": "刻刻帝TokisakiKuru"
},
{
"face": "https://i1.hdslb.com/bfs/face/affbd5780e44ec1340f60c5283e81cbee2d9a21a.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 156785512,
"uname": "Swety_Core"
},
{
"face": "http://i0.hdslb.com/bfs/face/f576c8bd9eb4ec7f7776880581bea2d6c53d1b65.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 298683153,
"uname": "猫和老鼠官方手游"
},
{
"face": "https://i1.hdslb.com/bfs/face/5161d6bd003c24065c0d0ab2ae2ce7f37f0f607b.jpg",
"has_update": false,
"is_reserve_recall": false,
"mid": 159440647,
"uname": "Uki----"
}
]
}
}
```
</details>

View File

@ -1,881 +0,0 @@
# 发布动态
- [发布动态](#发布动态)
- [为图片动态上传图片](#为图片动态上传图片)
- [创建投票](#创建投票)
- [发表纯文本动态](#发表纯文本动态)
- [发表复杂动态](#发表复杂动态)
- [立即发布定时动态](#立即发布定时动态)
---
## 为图片动态上传图片
> https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs
*请求方式POST*
认证方式CookieSESSDATA
注意非日常类型像素宽高必须大于420
**正文参数 (multipart/form-data)**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ |
| file_up | file | 需要上传的图片文件 | 必要 | 格式仅支持jpg png gif |
| category | str | 图片类型 | 必要 | daily日常动态<br />draw绘画画友<br />cos摄影COSPLAY |
| biz | str | | | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功 <br />-1未添加图片<br />-2参数错误<br />-3图片尺寸过小<br />-4账号未登录<br />-7图片信息错误 |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | 仅在正确时既`code=0`时为有效信息 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | -------------- | ---- |
| image_url | str | 已上传图片url | |
| image_width | num | 已上传图片宽度 | 像素 |
| image_height | num | 已上传图片高度 | 像素 |
**示例:**
上传了一张图片`test.png`类型为`日常`
```shell
curl 'https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs' \
-F 'file_up=@test.png' \
-F 'category=daily'
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"success",
"data":{
"image_url":"http:\/\/i0.hdslb.com\/bfs\/album\/13f9523efe186a8066b2d72e80283cea2437eb62.png",
"image_width":1225,
"image_height":850
}
}
```
</details>
## 创建投票
> https://api.vc.bilibili.com/vote_svr/v1/vote_svr/create_vote
*请求方式POST*
认证方式CookieSESSDATA
注意: options最少两个,下标n从0开始
**正文参数 (multipart/form-data)**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------------------------- | ---- | ------------------------ | ------ | -------------------------------------------------------- |
| info[title] | str | 投票标题 | 必要 | |
| info[desc] | str | 投票描述 | 非必要 | 可为空 |
| info[type] | num | 投票类型 | 必要 | 0:文字投票 1:图片投票 |
| info[choice_cnt] | num | 最多选几项 | 必要 | |
| info[duration] | num | 投票持续秒数 | 必要 | 常用:<br/>三天:259200<br/>七天:604800<br/>三十天:2592000 |
| info[options]\[ n ][desc] | str | 第n项选项文字内容 | 必要 | |
| info[options]\[ n ][img_url] | str | 第n项选项投票图片 | 非必要 | |
| csrf | str | CSRF Token位于cookie | 非必要 | 头次见非必要的csrf |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | -------------------------------- |
| code | num | 返回值 | 0成功 <br />5100001: 参数错误 |
| msg | str | 错误信息 | 成功为空 |
| message | str | 错误信息 | 跟上面那个一模一样 |
| data | obj | 信息本体 | 仅在正确时既`code=0`时为有效信息 |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | -------------- | ---- |
| vote_id | num | 投票id | |
| \_gt\_ | num | 0 | |
**示例:**
创建一个标题为`是否自愿开学`持续七天的纯文本投票
```shell
curl -X POST 'https://api.vc.bilibili.com/vote_svr/v1/vote_svr/create_vote' \
--data-urlencode 'info[title]=是否自愿开学' \
--data-urlencode 'info[desc]=问卷调查:自愿开学' \
--data-urlencode 'info[type]=0' \
--data-urlencode 'info[choice_cnt]=1' \
--data-urlencode 'info[duration]=604800' \
--data-urlencode 'info[options][0][desc]=自愿' \
--data-urlencode 'info[options][1][desc]=不自愿' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "",
"message": "",
"data": {
"vote_id": 4947171,
"_gt_": 0
}
}
```
</details>
## 发表纯文本动态
> https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create
*请求方式POST*
认证方式Cookie (SESSDATA)
**正文参数multipart/form-data**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| dynamic_id | num | 0 | 必要 | |
| type | num | 4 | 必要 | |
| rid | num | 0 | 必要 | |
| content | str | 动态内容 | 必要 | |
| up_choose_comment | num | 0 | 非必要 | |
| up_close_comment | num | 0 | 非必要 | |
| extension | json | 位置信息 | 非必要 | |
| at_uids | str | 动态中 at 到的用户的 uid | 非必要 | 使用逗号`,`分隔 |
| ctrl | array | 特殊格式控制 (如 at 别人时的蓝字体和链接) | 非必要 | |
| csrf_token | str | CSRF Token (位于 cookie) | 非必要 | |
| csrf | str | CSRF Token (位于 cookie) | 非必要 | |
extension参数值:
```json
{
"emoji_type": 1,
"lbs_cfg": {
"title": "**市",
"poi": "156330200",
"show_title": "**市",
"type": 1,
"address": "**市",
"location": {
"lng":显示的经度数值,
"lat":显示的纬度数值
},
"distance": 0
},
"flag_cfg": {},
"from_cfg": {
"location": {
"lat":用户实际纬度数值,
"lng":用户实际经度数值
}
}
}
```
ctrl单个对象(注意用的时候是数组出现):
| 参数名 | 类型 | 内容 |
| --- | --- | --- |
| location | num | 从全文第几个字开始变蓝 |
| type | num | 1 (可能1代表链接到用户uid) |
| length | num | 这一段变蓝多少字 |
| data | str | 链接目标(被at人的uid) |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 成功为空 |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| result | num | 0 | |
| errmsg | str | 像是服务器日志一样的东西 | |
| dynamic_id | num | 动态 id | |
| create_result | num | 1 | |
| dynamic_id_str | str | 动态 id | 字符串格式 |
| \_gt_ | num | 0 | |
<details>
<summary>查看示例(纯文本)</summary>
```bash
curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \
--data-urlencode 'dynamic_id=0' \
--data-urlencode 'type=4' \
--data-urlencode 'rid=0' \
--data-urlencode 'content=Hello Bug~' \
--data-urlencode 'up_choose_comment=0' \
--data-urlencode 'up_close_comment=0' \
--data-urlencode 'extension={"emoji_type":1,"from":{"emoji_type":1},"flag_cfg":{}}' \
--data-urlencode 'at_uids=' \
--data-urlencode 'ctrl=[]' \
--data-urlencode 'csrf_token=de2731532b4ab96bc8536da948932668' \
--data-urlencode 'csrf=de2731532b4ab96bc8536da948932668' \
-b 'SESSDATA=******'
```
```json
{
"code": 0,
"msg": "",
"message": "",
"data": {
"result": 0,
"errmsg": "; Create dynamic:588320531406678918, res:0, result:1; Push create kafka:0; Push create databus:0; Register comment result:0; Add outbox result:1",
"dynamic_id": 588320531406678918,
"create_result": 1,
"dynamic_id_str": "588320531406678918",
"_gt_": 0
}
}
```
</details>
<details>
<summary>查看示例(at两个人)</summary>
动态正文
```
[热词系列_神仙UP]@暮光小猿wzt @社会易姐QwQ
```
at_uids
```
15858903,293793435
```
ctrl
```json
[
{ "location": 11, "type": 1, "length": 9, "data": "15858903" },
{ "location": 20, "type": 1, "length": 9, "data": "293793435" }
]
```
命令
```bash
curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \
--data-urlencode 'dynamic_id': '0' \
--data-urlencode 'type': '4' \
--data-urlencode 'rid': '0' \
--data-urlencode 'content': '[热词系列_神仙UP]@暮光小猿wzt @社会易姐QwQ ' \
--data-urlencode 'up_choose_comment': '0' \
--data-urlencode 'up_close_comment': '0' \
--data-urlencode 'extension': '{"emoji_type":1,"from":{"emoji_type":1},"flag_cfg":{}}' \
--data-urlencode 'at_uids': '15858903,293793435' \
--data-urlencode 'ctrl': '[{"location":11,"type":1,"length":9,"data":"15858903"},{"location":20,"type":1,"length":9,"data":"293793435"}]' \
--data-urlencode 'csrf_token': 'de2731532b4ab96bc8536da948932668' \
--data-urlencode 'csrf': 'de2731532b4ab96bc8536da948932668' \
-b 'SESSDATA=******'
```
</details>
## 发表复杂动态
> https://api.bilibili.com/x/dynamic/feed/create/dyn
*请求方式POST*
认证方式Cookie (SESSDATA)
**URL参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| csrf | str | CSRF Token位于cookie | 必要 | |
**正文参数application/json**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| dyn_req | obj | 请求本体 | 必要 | |
`dyn_req`对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | --- | --- | --- |
| attach_card | obj | 特殊卡片 | 非必要 | 如直播预约等 |
| content | obj | 动态内容 | 必要 | |
| meta | obj | 元信息 | 非必要 | 大概是来源信息 |
| scene | num | 动态类型? | 必要 | 纯文本: 1<br/>带图: 2 |
| pics | array | 携带图片 | 非必要 | 最多九个 |
| topic | obj | 话题 | 非必要 | |
| option | obj | 互动设置 | 非必要 | 没有此项时默认开启评论区 |
| upload_id | str | 客户端生成的 | 非必要 | 内容为`发送人mid`+`当前秒级时间戳`+`四位随机整数`,中间用`_`隔开 |
`dyn_req`对象的`meta`对象,大概是来源信息,很简单就不详细列表了:
```json
{
"app_meta": {
"from": "create.dynamic.web",
"mobi_app": "web"
}
}
```
`dyn_req`对象的`content`对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ----- | -------------------- | ------ | ---- |
| contents | array | 动态组件对象有序数组 | 必要 | |
`contents`数组内每一个动态组件对象:
```json
{
"raw_text": "ui上直接显示的字符串",
"type": 组件类型id,
"biz_id": "动态组件的内容id转字符串,比如投票id"
}
```
动态组件类型:
| 组件名 | type | `biz_id`含义 |
| ------ | ---- | ------------ |
| 纯文本 | 1 | 空 |
| AT人 | 2 | AT人的mid |
| 表情 | 9 | 空 |
| 投票 | 4 | 投票id |
`dyn_req`对象的`topic`对象
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------- | ---- | ------- | ------ | -------------------------- |
| from_source | str | 来源id? | 必要 | 网页版直接选为dyn.web.list |
| from_topic_id | num | 0 | 必要 | |
| id | num | 话题id | 必要 | |
| name | str | 话题名 | 必要 | |
`dyn_req`对象的`pics`数组的每一项对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ----- | ---------------- | ------ | ------------------------------------------------------------ |
| img_height | num | 图片高 | 非必要 | 这个东西会直接原封不动传到前端,比如你都写0在网页上就看不见了,但是还会加载 |
| img_width | num | 图片宽 | 非必要 | 同上 |
| img_size | float | 图片文件大小(KB) | 非必要 | |
| img_src | str | 图片bfs链接 | 必要 | |
`dyn_req`对象的`option`对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ----------------- | ---- | ------------ | ------ | --------------- |
| up_choose_comment | num | 精选评论flag | 非必要 | 1: 开启 |
| close_comment | num | 关闭评论flag | 非必要 | 同上,与上二选一 |
`dyn_req`对象的`topic`对象:
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------- | ---- | ------------ | ------ | -------- |
| from_source | str | dyn.web.list | 非必要 | 作用不明 |
| from_topic_id | num | 0 | 非必要 | 作用不明 |
| id | num | 话题id | 必要 | |
| name | str | 话题名 | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 成功为空 |
| data | obj | 数据本体 | |
`data`对象:
当Cookie中含有任意的`buvid3`时,比较干净简洁:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| result | num | 0 | |
| message | str | 错误信息 | |
| dyn_id | num | 动态 id | |
| dyn_id_str | str | 动态 id | 字符串格式 |
| dyn_type | num | 动态类型 | 不带图片: 4<br/>带图片: 2<br/>其他请参考 get_dynamic_detail.md |
| \_gt_ | num | 0 | |
**警告:下面的内容又乱又杂,而且绝大多数情况用不到,我建议大家用这个接口的时候随便带一个buvid3的cookie屏蔽掉它们算了.**
当Cookie中不含有`buvid3`时,较上述字段多出一个`fake_card`对象,大概是移动端用的卡片:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ---- | ------------ |
| fake_card | obj | 0 | 又多又乱又杂 |
`fake_card`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ------------ | ------------------------------------------------------------ |
| card_type | num | 卡片类型 | 不带图片: 4<br/>带图片: 2<br/>其他请参考 [获取特定动态卡片信息](get_dynamic_detail.md) |
| modules | array | 卡片组件列表 | |
| extend | obj | 其他杂项信息 | |
`fake_card`对象的`modules`数组中每一项对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------- | -------------------------------------------- |
| module_type | num | 组件类型 | 1: 作者信息<br/>3: 动态内容<br/>其他有待发现 |
| ModuleItem | obj | 卡片组件 | |
`ModuleItem`对象与`module_type`对应关系:
| module_type | `ModuleItem`含有的唯一一个key | 备注 |
| ----------- | ----------------------------- | ----------------------- |
| 1 | module_author | 作者信息 |
| 3 | module_desc | 动态内容 |
| 4 | module_dynamic | 携带图片等 |
| 9 | module_stat | 不明,貌似一直都是空对象 |
`ModuleItem`内`module_author`:
| 字段 | 类型 | 内容 | 备注 |
| ---------------- | ---- | -------------------------------- | ------------------------------------------------ |
| mid | num | 发送者mid | |
| ptime_label_text | str | 发送时间(人类可读形式)肯定是刚刚 | |
| author | obj | 作者详细信息 | 请参考[用户基本信息](../user/info.md),不再赘述.. |
`ModuleItem`内`module_desc`:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----- | -------------- | ---- |
| desc | array | 动态组件列表 | |
| text | str | 动态纯文本形式 | |
`module_desc`的`desc`数组:
| 项 | 类型 | 备注 |
| ---- | ---- | ------------------- |
| 0 | obj | 第0个动态组件 |
| n | obj | 第n+1个动态组件组件 |
| ... | obj | ... |
`desc`数组的每一项:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------------------------------------ | ----------------------------- |
| text | str | 该组件对外显示的纯文本 | 对应请求时该组件的`raw_text` |
| type | num | 组件类型 | 对应请求时该组件的`type` |
| rid | str | 组件内容的id,例如@人的mid | 根据需要出现,比如纯文本就没有 |
| uri | str | b站自定义`bilibili://`协议链接,用于@人点击跳转等 | 根据需要出现,比如纯文本就没有 |
`ModuleItem`内`module_dynamic`:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------------ | -------------------- |
| type | num | 不知道是什么的类型 | 5: 图片<br/>其他未知 |
| ModuleItem | obj | 组件? | 怎么还有套娃的? |
当`module_dynamic`的`type`字段为`5`时:
`module_dynamic`的`ModuleItem`有唯一key`dyn_draw`:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ----- | -------------------------------- | ------------------------------------------------ |
| items | array | 图片数组 | 与请求部分`dyn_req.pics`一致 |
| id | num | 这条图片动态所对应的相簿`doc_id` | 可以参考本文档的[相簿基本信息](../album/info.md) |
`fake_card`的`extend`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ----- | ---------------------------------------------- | ---------------------------------------- |
| dyn_id_str | str | 动态id字符串形式 | |
| business_id | str | 未知 | 根据情况出现 |
| orif_img_url | str | 封面图url(如果有) | |
| share_type | str | 一般为3 | 未知 |
| share_scene | str | 一般为dynamic | 未知 |
| is_fast_share | bool | 一般为true | 未知 |
| dyn_type | num | 动态类型 | 不带图片: 4<br/>带图片: 2<br/>其他待探索 |
| uid | num | 发送者mid | |
| card_url | str | b站自定义`bilibili://`协议链接,指向该条动态 | |
| desc | array | 动态组件列表,重复了一遍`module_desc`的desc数组 | |
| reply | obj | 评论区相关 | |
`extend`的`reply`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------ | ----- | ------------------------------------------------- | ---- |
| uri | str | b站自定义`bilibili://`协议链接,指向该条动态评论区 | |
| params | array | 未知 | |
<details>
<summary>查看示例(不带`buvid3`)</summary>
```bash
curl -X POST 'https://api.bilibili.com/x/dynamic/feed/create/dyn?csrf=xxxxx' \
-b 'buvid3=114514;SESSDATA=xxxxx;' \
--header 'Content-Type: application/json' \
--data-raw '{
"dyn_req": {
"content": {
"contents": [
{
"raw_text": "Test",
"type": 1,
"biz_id": ""
},
{
"raw_text": "礼堂丁真,鉴定为一眼丁真",
"type": 2,
"biz_id": "1463028352"
}
]
},
"pics": [
{
"img_src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"img_width": 1368,
"img_height": 1500,
"img_size": 662.6005859375
},
{
"img_src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"img_width": 1368,
"img_height": 1500,
"img_size": 662.6005859375
}
],
"option": {
"close_comment": 1
},
"scene": 2
}
}'
```
响应:
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"dyn_id": 755402937023332386,
"dyn_id_str": "755402937023332386",
"dyn_type": 2,
"dyn_rid": 221621929,
"fake_card": {
"card_type": 7,
"modules": [
{
"module_type": 1,
"ModuleItem": {
"module_author": {
"mid": 470310172,
"ptime_label_text": "刚刚",
"author": {
"mid": 470310172,
"name": "I_Min",
"face": "https://i1.hdslb.com/bfs/face/d36e9dc2d14b545a055980a2f3c1f2d5621646c6.png",
"official": {
"type": -1
},
"vip": {
"Type": 1,
"due_date": 1673366400000,
"label": {}
},
"uri": "bilibili://space/470310172?defaultTab=dynamic",
"pendant": {},
"nameplate": {
"nid": 3,
"name": "白银殿堂",
"image": "https://i1.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png",
"image_small": "https://i0.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png",
"level": "高级勋章",
"condition": "单个自制视频总播放数>=10万"
}
},
"decorate_card": {
"id": 984,
"card_url": "https://i0.hdslb.com/bfs/vip/e42569d2f91a17346cdb991c7c34d3bbc677d4ef.png",
"jump_url": "https://www.bilibili.com/h5/mall/equity-link/home?navhide=1&item_id=984&part=card&f_source=garb&from=post&isdiy=0",
"fan": {
"number_str": "000000"
}
},
"tp_list": [
{
"type": 3,
"Item": {
"share": {
"icon": "http://i0.hdslb.com/bfs/feed-admin/ee5902a63bbe4a0d78646d11036b062ea60573f6.png",
"title": "分享"
}
}
},
{
"type": 7,
"Item": {
"default": {
"icon": "http://i0.hdslb.com/bfs/feed-admin/9163a7b29964cb84cb5fc35e4f7b899151cf2afc.png",
"title": "删除"
}
}
}
]
}
}
},
{
"module_type": 3,
"ModuleItem": {
"module_desc": {
"desc": [
{
"text": "Test",
"type": 1
},
{
"text": "礼堂丁真,鉴定为一眼丁真",
"type": 2,
"uri": "bilibili://space/1463028352?defaultTab=dynamic",
"rid": "1463028352"
}
],
"text": "Test礼堂丁真,鉴定为一眼丁真"
}
}
},
{
"module_type": 4,
"ModuleItem": {
"module_dynamic": {
"type": 5,
"ModuleItem": {
"dyn_draw": {
"items": [
{
"src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"width": 1368,
"height": 1500,
"size": 662.6006
},
{
"src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"width": 1368,
"height": 1500,
"size": 662.6006
}
],
"id": 221621929
}
}
}
}
},
{
"module_type": 9,
"ModuleItem": {
"module_stat": {}
}
}
],
"extend": {
"dyn_id_str": "755402937023332386",
"business_id": "221621929",
"orig_img_url": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"desc": [
{
"text": "Test",
"type": 1
},
{
"text": "礼堂丁真,鉴定为一眼丁真",
"type": 2,
"uri": "bilibili://space/1463028352?defaultTab=dynamic",
"rid": "1463028352"
}
],
"share_type": "3",
"share_scene": "dynamic",
"is_fast_share": true,
"dyn_type": 2,
"uid": 470310172,
"card_url": "bilibili://following/detail/755402937023332386?cardType=2&rid=221621929",
"reply": {
"uri": "bilibili://following/detail/755402937023332386?cardType=2&rid=221621929",
"params": [
{
"key": "comment_on",
"value": "1"
}
]
}
}
}
}
}
```
</details>
<details>
<summary>查看示例(带`buvid3`)</summary>
动态正文
```
Test礼堂丁真,鉴定为一眼丁真
```
带两张一样的图:
http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png
然后关闭评论区
命令
```bash
curl -X POST 'https://api.bilibili.com/x/dynamic/feed/create/dyn?csrf=xxxxx' \
-b 'buvid3=114514;SESSDATA=xxxxx;' \
--header 'Content-Type: application/json' \
--data-raw '{
"dyn_req": {
"content": {
"contents": [
{
"raw_text": "Test",
"type": 1,
"biz_id": ""
},
{
"raw_text": "礼堂丁真,鉴定为一眼丁真",
"type": 2,
"biz_id": "1463028352"
}
]
},
"pics": [
{
"img_src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"img_width": 1368,
"img_height": 1500,
"img_size": 662.6005859375
},
{
"img_src": "http://i0.hdslb.com/bfs/new_dyn/322acd0fa92cfa59c0ad70e95ab95476470310172.png",
"img_width": 1368,
"img_height": 1500,
"img_size": 662.6005859375
}
],
"option": {
"close_comment": 1
},
"scene": 2
}
}'
```
响应:
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"dyn_id": 755402172521250838,
"dyn_id_str": "755402172521250838",
"dyn_type": 2,
"dyn_rid": 221621773
}
}
```
</details>
## 立即发布定时动态
> https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/publish_now
*请求方式POST*
认证方式CookieSESSDATA
**正文参数 (application/x-www-form-urlencoded)**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ---- |
| draft_id | file | 定时动态(草稿)id | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------ |
| code | num | 返回值 | 0成功 |
| data | obj | 信息本体 | 正常为空对象 |
| message | str | 错误消息 | 正常为"0" |
| ttl | num | 1 | 不明 |
<details>
<summary>查看示例</summary>
```bash
curl -X POST 'https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/publish_now' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'draft_id=755409289278914611' \
--data-urlencode 'csrf=xxx'
-b 'SESSDATA=xxxx;'
```
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{}
}
```
</details>

File diff suppressed because one or more lines are too long

View File

@ -1,331 +0,0 @@
# B币方式充电
<img src="/imgs/battery-100.png" width="100" height="100"/>
**注以前充电是电池的概念1B币折合10电池一般地充电10电池可获得1经验**
**目前2020/12/02后则是贝壳的概念1B币折合1贝壳、1经验如果存在小数点则经验值向下取整即2.5B币获得2经验**
---
- [B币方式充电](#b币方式充电)
- [新版本B币充电](#新版本b币充电)
- [老版本B币充电](#老版本b币充电)
---
## 新版本B币充电
> https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- |
| bp_num | num | 贝壳数量 | 必要 | 必须在2-9999之间 |
| is_bp_remains_prior | bool | 是否优先扣除B币余额 | 必要 | [true,false]B币充电请选择true |
| up_mid | num | 充电对象用户mid | 必要 | |
| otype | str | 充电来源 | 必要 | up空间充电<br />archive视频充电 |
| oid | num | 充电来源代码 | 必要 | 空间充电充电对象用户mid<br />视频充电稿件avid |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功并不代表充电成功 <br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ----------- | ------------------------------------------------ |
| mid | num | 本用户mid | |
| up_mid | num | 目标用户mid | |
| order_no | str | 留言token | 用于添加充电留言 |
| bp_num | str | 充电贝壳数 | |
| exp | num | 获得经验数 | |
| status | num | 返回结果 | 4成功<br />-2低于20电池下限<br />-4B币不足 |
| msg | str | 错误信息 | 默认为空 |
**示例:**
以空间的方式向用户`mid=293793435`充了2贝壳得到2经验留言token为`BPRG5CEC3VUPOOANA540`
此时`data`.`status`=`4`
~~自己给自己冲QAQ~~
```shell
curl 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick' \
--data-urlencode 'bp_num=2' \
--data-urlencode 'is_bp_remains_prior=true' \
--data-urlencode 'up_mid=293793435' \
--data-urlencode 'otype=up' \
--data-urlencode 'oid=293793435' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"mid":293793435,
"up_mid":293793435,
"order_no":"BPRG5CEC3VUPOOANA540",
"bp_num":2,
"exp":"2",
"status":4,
"msg":""
}
}
```
</details>
当所充电贝壳数小于2时充电不会成功
此时`data`.`status`=`-2`
```shell
curl 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick' \
--data-urlencode 'bp_num=1' \
--data-urlencode 'is_bp_remains_prior=true' \
--data-urlencode 'otype=up' \
--data-urlencode 'oid=293793435' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"mid":0,
"up_mid":0,
"order_no":"",
"bp_num":"0",
"exp":0,
"status":-2,
"msg":"elec raw order create failed: 88201"
}
}
```
</details>
当所充贝壳数折合的B币数不足时充电也不会成功
此时`data`.`status`=`-4`
```shell
curl 'https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/quick' \
--data-urlencode 'bp_num=99' \
--data-urlencode 'is_bp_remains_prior=true' \
--data-urlencode 'up_mid=293793435' \
--data-urlencode 'otype=up' \
--data-urlencode 'oid=293793435' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"mid":0,
"up_mid":0,
"order_no":"",
"bp_num":"0",
"exp":0,
"status":-4,
"msg":"bp.to.battery http failed, invalid args, errNo=800409904: B 币余额不足"
}
}
```
</details>
## 老版本B币充电
老版本目前已过期调用接口成功后code返回0data.status会返回0且B币不会消耗贝壳也不会增加。以下是历史信息
<details>
<summary>查看折叠内容</summary>
> https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- |
| elec_num | num | 充电电池数量 | 必要 | 必须在2-9999之间 |
| up_mid | num | 充电对象用户mid | 必要 | |
| otype | str | 充电来源 | 必要 | up空间充电<br />archive视频充电 |
| oid | num | 充电来源代码 | 必要 | 空间充电充电对象用户mid<br />视频充电稿件avid |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功并不代表充电成功 <br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ----------- | ------------------------------------------------ |
| mid | num | 本用户mid | |
| up_mid | num | 目标用户mid | |
| order_no | str | 留言token | 用于添加充电留言 |
| elec_num | num | 充电电池数 | |
| exp | num | 获得经验数 | |
| status | num | 返回结果 | 4成功<br />-2低于20电池下限<br />-4B币不足 |
| msg | str | 错误信息 | 默认为空 |
**示例:**
以空间的方式向用户`mid=293793435`充了20电池得到2经验留言token为`BPRG5CEC3VUPOOANA540`
此时`data`.`status`=`4`
~~再次自己冲自己QAQ~~
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"mid":293793435,
"up_mid":293793435,
"order_no":"BPRG5CEC3VUPOOANA540",
"elec_num":20,
"exp":2,
"status":4,
"msg":""
}
}
```
</details>
当所充电池数小于2时充电不会成功
此时`data`.`status`=`-2`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"mid":0,
"up_mid":0,
"order_no":"",
"elec_num":0,
"exp":0,
"status":-2,
"msg":"elec raw order create failed: 88201"
}
}
```
</details>
当所充电池数折合的B币数不足时充电也不会成功
此时`data`.`status`=`-4`
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"mid":0,
"up_mid":0,
"order_no":"",
"elec_num":0,
"exp":0,
"status":-4,
"msg":"bp.to.battery http failed, invalid args, errNo=800409904: B 币余额不足"
}
}
```
</details>
</details>

View File

@ -1,207 +0,0 @@
# 微信&支付宝方式充电
<img src="/imgs/battery-100.png" width="100" height="100"/>
- [申请充电二维码及扫码秘钥](#申请充电二维码及扫码秘钥)
- [检查扫码支付结果](#检查扫码支付结果)
---
操作流程:
1.申请充电二维码及扫码秘钥,秘钥临时保存备用
2.使用`qr_code_url`中的值生成二维码
3.用支付宝或微信扫描
4.以扫码秘钥作为参数轮询检查扫码支付结果
## 申请充电二维码及扫码秘钥
> https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/qr_code/create
*请求方式POST*
认证方式CookieSESSDATA
秘钥有效时间为10分钟
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ |
| bp_num | num | 充电B币数量 | 必要 | 必须在2-9999之间 |
| up_mid | num | 充电对象用户mid | 必要 | |
| is_bp_remains_prior | bool | 是否优先扣除B币 | 必要 | true<br />false<br />在B币不足时剩余的部分利用支付平台支付 |
| otype | str | 充电来源 | 必要 | up空间充电<br />archive视频充电 |
| oid | num | 充电来源代码 | 必要 | 空间充电充电对象用户mid<br />视频充电稿件avid |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-500服务器错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------------------ | -------- |
| qr_code_url | str | 支付二维码生成内容 | 存在转义 |
| qr_token | str | 扫码秘钥 | |
| exp | num | 获得经验数 | |
**示例:**
申请空间的方式向用户23215368充电10电池且不使用B币的支付二维码
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"qr_code_url": "http://api.bilibili.com/x/ugcpay/trade/elec/pay/qr_code/gateway?mid=293793435&token=c1cb1d95d2194ba58df6bb0f24ae1aaa",
"qr_token": "c1cb1d95d2194ba58df6bb0f24ae1aaa",
"exp": 1
}
}
```
</details>
## 检查扫码支付结果
> https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | ---- |
| qr_token | str | 扫码秘钥 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ----------- | ------------------------------------------------------------ |
| qr_token | str | 扫码秘钥 | |
| order_no | str | 留言token | 未成功则无此项<br />用于添加充电留言 |
| mid | num | 当前用户mid | |
| status | num | 状态值 | 若秘钥错误则无此项<br />1已支付<br />2未扫描<br />3未确认 |
**示例:**
当申请到的支付二维码未被扫描时,`data`.`ststus`的值为`2`
```shell
curl -G 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \
--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"qr_token":"c7cbdc47fc424cd18f2146db653597b8",
"mid":293793435,
"status":2
}
}
```
</details>
当申请到的支付二维码已扫描但未确认时,`data`.`ststus`的值为`3`
```shell
curl -G 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \
--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"qr_token":"c7cbdc47fc424cd18f2146db653597b8",
"mid":293793435,
"status":3
}
}
```
</details>
成功支付后,`data`.`ststus`的值为`1`,且`data`.`order_no`存在留言token
```shell
curl -G 'https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status' \
--data-urlencode 'qr_token=c7cbdc47fc424cd18f2146db653597b8' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"qr_token":"bd649c836c524550bfe22a369334fc05",
"order_no":"BPTD36U3KP82I31RSSLG",
"mid":293793435,
"status":1
}
}
```
</details>

View File

@ -1,530 +0,0 @@
# 充电列表
- [获取空间充电公示列表](#获取空间充电公示列表)
- [获取视频充电鸣谢名单](#获取视频充电鸣谢名单)
- [查询我收到的充电列表](#查询我收到的充电列表)
- [查询历史充电数据](#查询历史充电数据)
---
## 获取空间充电公示列表
> https://elec.bilibili.com/api/query.rank.do
*请求方式:GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ----------- | ------ | ---- |
| mid | num | 目标用户mid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功 <br />500011mid错误 |
| 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 | 充电对象mid | |
| pay_mid | num | 充电用户mid | |
| 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<br />1月会员<br />2年会员 |
| vipDueMsec | num | 0 | 作用尚不明确 |
| vipStatus | num | 大会员状态 | 0<br />1有 |
**示例:**
查询用户`mid=53456`的充电公示列表
```shell
curl -G 'https://elec.bilibili.com/api/query.rank.do' \
--data-urlencode 'mid=53456'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
```
</details>
## 获取视频充电鸣谢名单
> https://api.bilibili.com/x/web-interface/elec/show
*请求方式:GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------------ | ------------------ |
| mid | num | 目标用户mid | 必要 | |
| aid | num | 目标稿件avid | 必要(可选) | avid与bvid任选一个 |
| bvid | str | 目标稿件bvid | 必要(可选) | avid与bvid任选一个 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无视频<br />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 | 作用尚不明确 |
| list | array | 本月充电用户列表 | |
`data`中的`show_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------------------ | ----------------------------- |
| show | bool | 是否展示视频充电鸣谢名单 | false不展示<br />true展示 |
| state | num | 0 | |
`data`中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---------------- |
| 0 | obj | 充电用户1 | |
| n | obj | 充电用户(n+1) | 按照充电排名排列 |
| …… | obj | …… | …… |
| 29 | obj | 充电用户30 | 最后一项 |
`data`中的`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ---------------- | ---------------- |
| mid | num | 充电对象mid | |
| pay_mid | num | 充电用户mid | |
| 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<br />1月会员<br />2年会员 |
| vipDueMsec | num | 0 | 作用尚不明确 |
| vipStatus | num | 大会员状态 | 0<br />1有 |
**示例:**
获取视频`av967773538`/` BV1up4y1y77i `,用户`mid=53456`的视频充电鸣谢名单
avid方式
```shell
curl -G 'https://api.bilibili.com/x/web-interface/elec/show' \
--data-urlencode 'mid=53456' \
--data-urlencode 'aid=967773538'
```
bvid方式
```shell
curl -G 'https://api.bilibili.com/x/web-interface/elec/show' \
--data-urlencode 'mid=53456' \
--data-urlencode 'bvid=BV1up4y1y77i '
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"show_info": {
"show": true,
"state": 0
},
"av_count": 0,
"count": 0,
"total_count": 19422,
"special_day": 0,
"display_num": 0,
"list": [
{
"mid": 53456,
"pay_mid": 1216085164,
"rank": 1,
"uname": "JZ72",
"avatar": "http://i1.hdslb.com/bfs/face/3d741682fafc286999b5e8089a844ae4f46651fe.jpg",
"message": "Warma YYDS ",
"msg_deleted": 0,
"vip_info": {
"vipType": 2,
"vipDueMsec": 0,
"vipStatus": 1
},
"trend_type": 0
},
{
"mid": 53456,
"pay_mid": 305858373,
"rank": 2,
"uname": "适应性神经系统",
"avatar": "http://i0.hdslb.com/bfs/face/2ad38dec879f66c32b5e5cb1750cb3f3e446bf91.jpg",
"message": "",
"msg_deleted": 0,
"vip_info": {
"vipType": 1,
"vipDueMsec": 0,
"vipStatus": 0
},
"trend_type": 0
},
......
]
}
}
```
</details>
## 查询我收到的充电列表
> https://pay.bilibili.com/bk/brokerage/listForCustomerRechargeRecord
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | -------------------------------- |
| currentPage | num | 页数 | 必要 | |
| pageSize | num | 分页大小 | 必要 | 取值范围[1,50] |
| customerId | num | (?) | 必要 | 目前为固定值10026 |
| beginTime | str | 开始日期 | | yyyy-MM-dd |
| endTime | str | 结束日期 | | yyyy-MM-dd |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />800501007user not login<br />800501008内部错误<br /> 800501011请求参数有误|
| errno | num | | |
| msg | str | | |
| showMsg | str | | |
| success | bool | | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| page | obj | 分页信息 | |
| result | array | 充电信息本体 | |
| config | array | (?) | |
`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| currentPage | num | 当前页数 | |
| pageSize | num | 当前分页大小 | |
| totalCount | num | 记录总数 | |
| totalPage | num | 总页数 | |
`config`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| mid | num | | 总是为null |
| name | str | | 总是为null |
| avatar | str | | 总是为null |
| originalThirdCoin | num | | 总是为null |
| brokerage | num | | 总是为null |
| remark | str | | 总是为null |
| ctime | str | | 总是为null |
`result`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| mid | num | 充电人mid | |
| name | str | 充电人昵称 | |
| avatar | str | 充电人头像 | |
| originalThirdCoin | num | 原始B币数 | |
| brokerage | num | 实际收到的贝壳数 | |
| remark | str | 充电渠道 | Web/安卓/iOS |
| ctime | str | 充电时间 | yyyy-MM-dd HH:mm:ss |
**示例:**
```shell
curl -L -X GET 'https://pay.bilibili.com/bk/brokerage/listForCustomerRechargeRecord?currentPage=1&pageSize=2&customerId=10026' \
-H 'Cookie: SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"errno": 0,
"msg": "SUCCESS",
"showMsg": "交易成功",
"data": {
"page": {
"currentPage": 1,
"pageSize": 2,
"totalCount": 311,
"totalPage": 156
},
"result": [
{
"mid": 2233,
"name": "2233",
"avatar": "http://i2.hdslb.com/bfs/face/f42b7f47c80648d2ee1231f2435b527c60302289.jpg",
"originalThirdCoin": 2,
"brokerage": 1.34,
"remark": "Web",
"ctime": "2022-04-12 17:34:47"
},
{
"mid": 2233,
"name": "2233",
"avatar": "http://i0.hdslb.com/bfs/face/member/noface.jpg",
"originalThirdCoin": 2,
"brokerage": 0.68,
"remark": "iOS",
"ctime": "2022-04-10 03:41:10"
}
],
"config": [
{
"mid": null,
"name": null,
"avatar": null,
"originalThirdCoin": null,
"brokerage": null,
"remark": null,
"ctime": null
}
]
},
"success": true
}
```
</details>
## 查询历史充电数据
> https://member.bilibili.com/x/h5/elec/rank/recent
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | -------------------------------- |
| pn | num | 页数 | 必要 | |
| ps | num | 分页大小 | 必要 | 取值范围[1,20] |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ----- | ------------ | ---- |
| list | array | 充电信息本体 | |
| pager | obj | 分页信息 | |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ------------------- |
| aid | num | 0 | |
| bvid | str | 空 | |
| elec_num | num | 充电电池数 | |
| title | str | 空 | |
| uname | str | 空 | |
| avatar | str | 空 | |
| ctime | str | 充电时间 | yyyy-MM-dd HH:mm:ss |
`pager`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------------ | ---- |
| current | num | 当前页数 | |
| size | num | 当前分页大小 | |
| total | num | 记录总数 | |
**示例:**
```shell
curl -L -X GET 'https://member.bilibili.com/x/h5/elec/rank/recent' \
-H 'Cookie: SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"list": [
{
"aid": 0,
"bvid": "",
"elec_num": 50,
"title": "",
"uname": "",
"avatar": "",
"ctime": "2020-04-02 03:12:22"
},
{
"aid": 0,
"bvid": "",
"elec_num": 20,
"title": "",
"uname": "",
"avatar": "",
"ctime": "2020-04-02 03:12:00"
}
],
"pager": {
"current": 1,
"size": 20,
"total": 38
}
}
}
```
</details>

View File

@ -1,303 +0,0 @@
# 充电留言
- [发送充电留言](#发送充电留言)
- [查询我收到的充电留言](#查询我收到的充电留言)
- [查询充电留言详情](#查询充电留言详情)
- [回复充电留言](#回复充电留言)
---
## 发送充电留言
> https://api.bilibili.com/x/ugcpay/trade/elec/message
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ---- |
| order_id | str | 留言token | 必要 | |
| message | str | 留言内容 | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功 <br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />88203不能重复留言 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
为留言token为`BPRG5CEC3VUPOOANA540`的充电操作,添加了内容为`支持一下大佬`的留言
```shell
curl 'https://api.bilibili.com/x/ugcpay/trade/elec/message' \
--data-urlencode 'order_id=BPRG5CEC3VUPOOANA540' \
--data-urlencode 'message=支持一下大佬' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>
## 查询我收到的充电留言
> https://member.bilibili.com/x/web/elec/remark/list
*请求方式:GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------------ | ------------------ |
| begin | str | 起始日期 | | 默认2016-01-01 |
| end | str | 结束日期 | | 默认2050-01-01 |
| pn | str | 页数 | | |
| ps | str | 分页大小 | | 取值范围[1,12] |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录|
| msg | str | 0 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| page | obj | 分页信息 | |
| list | array | 信息本体 | |
`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| current | num | 当前页数 | |
| size | num | 当前分页大小 | |
| total | num | 记录总数 | |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| aid | num | | |
| bvid | str | | |
| id | num | 留言记录id | |
| mid | num | | |
| reply_mid | num | 0| |
| elec_num | num | 0 | |
| state | num | UP是否已经回复这条留言 | 0未回复<br />1已回复 |
| msg | str | 留言信息 | |
| aname | str | 空 | |
| uname | str |空 | |
| avator | str | 空 | |
| reply_name | str | 空 | |
| reply_avator | str | 空 | |
| reply_msg | str | 空 | |
| ctime | num | 留言时间 | 毫秒级时间戳 |
| reply_time | num | 0 | |
**示例:**
```shell
curl -L -X GET 'https://member.bilibili.com/x/web/elec/remark/list?begin=2016-01-01&end=2050-01-01&pn=1&ps=10' \
-H 'Cookie: SESSDATA=xxx;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"list": [
{
"aid": 0,
"bvid": "",
"id": 6715018,
"mid": 0,
"reply_mid": 0,
"elec_num": 0,
"state": 0,
"msg": "加油",
"aname": "",
"uname": "",
"avator": "",
"reply_name": "",
"reply_avator": "",
"reply_msg": "",
"ctime": 1650665119000,
"reply_time": 0
}
],
"pager": {
"current": 1,
"size": 10,
"total": 448
}
}
}
```
</details>
## 查询充电留言详情
> https://member.bilibili.com/x/web/elec/remark/detail?id=6662619
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | -------------------------------- |
| id | num | 留言id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误|
| message | str | 0 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| aid | num | | |
| bvid | str | | |
| id | num | 留言id | |
| mid | num | 留言者uid充电用户 | |
| reply_mid | num | UP主uid | |
| elec_num | num | 0 | |
| state | num | UP是否已经回复这条留言 | 0未回复<br />1已回复 |
| msg | str | 留言内容 | |
| aname | str | 空 | |
| uname | str | 留言者用户名 | |
| avator | str | 留言者头像 | |
| reply_name | str | UP主用户名 | |
| reply_avator | str | UP主头像 | |
| reply_msg | str | 回复内容 | |
| ctime | num | 留言时间 | 毫秒级时间戳 |
| reply_time | num | 回复时间 | 毫秒级时间戳 |
**示例:**
```shell
curl -L -X GET 'https://member.bilibili.com/x/web/elec/remark/detail?id=6507563' \
-H 'cookie: SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"aid": 0,
"bvid": "",
"id": 6507563,
"mid": 19978396,
"reply_mid": 2062760,
"elec_num": 0,
"state": 1,
"msg": "感谢搬运",
"aname": "",
"uname": "HANSOOOOOL",
"avator": "http://i1.hdslb.com/bfs/face/5c22af0261b8b3f9a54b6e0038e35430e9ed9cfd.jpg",
"reply_name": "一把近战都不给六花",
"reply_avator": "http://i2.hdslb.com/bfs/face/1804b716084908d4992bdd35827d0c2d7222fe97.jpg",
"reply_msg": "( ̄3 ̄)",
"ctime": 1646726966000,
"reply_time": 1646811946000
}
}
```
</details>
## 回复充电留言
> https://member.bilibili.com/x/web/elec/remark/reply
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------ | ------ | ------------------------ | -------------- | ------------------------------------------------------------ |
| csrf | str | csrf | 必要 | |
| id | num | 留言id | 必要 | |
| msg | str | 回复信息 | | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误20004充电服务异常<br /> |
| message | str | 错误信息 | |
| ttl | num | 1 | |
**示例:**
```shell
curl -L -X POST 'https://member.bilibili.com/x/web/elec/remark/reply' \
-H 'cookie: SESSDATA=xxx' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'csrf=xxx' \
--data-urlencode 'id=6258929' \
--data-urlencode 'msg=( ̄3 ̄)'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": 1
}
```
</details>

View File

@ -1,110 +0,0 @@
# 表情操作
- [添加表情包](#添加表情包)
- [移除表情包](#移除表情包)
---
## 添加表情包
> https://api.bilibili.com/x/emote/package/add
*请求方式POST*
认证方式CookieSESSDATA
只能添加有会员权限或已购买的表情包
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | -------------------------------- |
| package_id | num | 表情包id | 必要 | |
| business | str | 使用场景 | 必要 | reply评论区<br />dynamic动态 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
添加id为`25`的表情包,使用场景为评论区
```shell
curl 'https://api.bilibili.com/x/emote/package/add' \
--data-urlencode 'package_id=25' \
--data-urlencode 'business=reply' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 移除表情包
> https://api.bilibili.com/x/emote/package/remove
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | -------------------------------- |
| package_id | num | 表情包id | 必要 | |
| business | str | 使用场景 | 必要 | reply评论区<br />dynamic动态 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
移除id为`25`的表情包,使用场景为评论区
```shell
curl 'https://api.bilibili.com/x/emote/package/remove' \
--data-urlencode 'package_id=25' \
--data-urlencode 'business=reply' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

View File

@ -1,646 +0,0 @@
# 表情列表
- [获取我的表情列表](#获取我的表情列表)
- [取指定的表情包明细](#取指定的表情包明细)
- [获取所有表情包列表](#获取所有表情包列表)
- [附表-表情包对象](#附表-表情包对象)
---
## 获取我的表情列表
> https://api.bilibili.com/x/emote/user/panel/web
*请求方式GET*
认证方式CookieSESSDATA
使用登录Cookie进行会员专属及已购买表情包的分发否则全为免费表情包
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | -------------------------------- |
| business | str | 使用场景 | 必要 | reply评论区<br />dynamic动态 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-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 'https://api.bilibili.com/x/emote/user/panel/web' \
--data-urlencode 'business=reply' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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": {}
},
…………
},
…………
]
}
}
```
</details>
## 获取指定的表情包明细
> https://api.bilibili.com/x/emote/package
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | -------------------------------- |
| business | str | 使用场景 | 必要 | reply评论区<br />dynamic动态 |
| ids | nums | 表情包id | 必要 | id之间以`,`隔开 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有效时obj<br />无效时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------ | ---- |
| packages | array | 表情包 | |
`data`中的`packages`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | -------------- |
| 0 | obj | 表情包1 | **详情见附表** |
| n | obj | 表情包(n+1) | **详情见附表** |
| …… | obj | …… | …… |
**示例:**
获取表情包id为`93`的表情包明细
```shell
curl -G 'https://api.bilibili.com/x/emote/package' \
--data-urlencode 'ids=93' \
--data-urlencode 'business=reply'
```
<details>
<summary>查看响应示例:</summary>
```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
}
}
]
}
}
```
</details>
## 获取所有表情包列表
> https://api.bilibili.com/x/emote/setting/panel
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | -------------------------------- |
| business | str | 使用场景 | 必要 | reply评论区<br />dynamic动态 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-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 'https://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普通<br />2会员专属<br />3购买所得<br />4颜文字 |
| attr | num | | **作用尚不明确** |
| meta | obj | 属性信息 | |
| emote | array | 表情列表 | |
| flags | obj | 是否添加标志 | |
`表情包对象`中的`flags`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ---------- | ------------------------------------------------------------ |
| added | bool | 是否已添加 | true已添加<br />false未添加<br />需要登录SESSDATA<br />否则恒为false |
`表情包对象`中的`meta`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | --------------- | ---------------- |
| size | num | 表情尺寸信息 | 1<br />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普通<br />2会员专属<br />3购买所得<br />4颜文字 |
| attr | num | | **作用尚不明确** |
| meta | obj | 属性信息 | |
| flags | obj | 禁用标志 | 无则为空 |
`emote`数组中的对象中的`flags`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ---------- | ------------------------------------------------------ |
| no_access | bool | 是否为禁用 | true禁用<br />需要登录SESSDATA<br />否则恒为true |
`emote`数组中的对象中的`meta`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------ | ---------------- |
| size | num | 表情尺寸信息 | 1<br />2大 |
| alias | str | 简写名 | 无则无此项 |

View File

@ -1,482 +0,0 @@
# 收藏夹操作
- [管理收藏夹](#管理收藏夹)
- [新建收藏夹](#新建收藏夹)
- [修改收藏夹](#修改收藏夹)
- [删除收藏夹](#删除收藏夹)
- [管理收藏内容](#管理收藏内容)
- [批量复制内容](#批量复制内容)
- [清空所有失效内容](#清空所有失效内容)
---
## 管理收藏夹
### 新建收藏夹
> https://api.bilibili.com/x/v3/fav/folder/add
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------- | ---- | ------------------------ | -------------- | ------------------------------------ |
| title | str | 收藏夹标题 | 必要 | |
| intro | str | 收藏夹简介 | 非必要 | 默认为空 |
| privacy | num | 是否公开 | 非必要 | 默认为公开<br />0公开<br />1私密 |
| cover | str | 封面图url | 非必要 | 封面会被审核 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功<br />-102账号被封停 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
略....
详见[获取收藏夹元数据](info.md#获取收藏夹元数据)中的`data`对象
**示例:**
创建一个叫`test`,简介是`2333`,封面`https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png`,的公开收藏夹:
```shell
curl 'https://api.bilibili.com/x/v3/fav/folder/add' \
--data-urlencode 'title=test' \
--data-urlencode 'intro=2333' \
--data-urlencode 'privacy=0' \
--data-urlencode 'cover=https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png' \
--data-urlencode 'csrf=xxxx' \
-b 'SESSDATA=xxxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1182306172,
"fid": 11823061,
"mid": 470310172,
"attr": 6,
"title": "test",
"cover": "https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png",
"upper": {
"mid": 0,
"name": "",
"face": "",
"followed": false,
"vip_type": 0,
"vip_statue": 0
},
"cover_type": 0,
"cnt_info": {
"collect": 0,
"play": 0,
"thumb_up": 0,
"share": 0
},
"type": 0,
"intro": "2333",
"ctime": 0,
"mtime": 0,
"state": 0,
"fav_state": 0,
"like_state": 0,
"media_count": 0
}
}
```
</details>
### 修改收藏夹
> https://api.bilibili.com/x/v3/fav/folder/edit
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | -------------- | ------------------------------------------ |
| media_id | num | 目标收藏夹mdid | 必要 | |
| title | str | 修改收藏夹标题 | 必要 | |
| intro | str | 修改收藏夹简介 | 非必要 | |
| privacy | num | 是否公开 | 非必要 | 默认为公开<br /><br />0公开<br />1私密 |
| cover | str | 封面图url | 非必要 | 封面会被审核 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功<br />-102账号被封停 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
略....
详见[获取收藏夹元数据](info.md#获取收藏夹元数据)中的`data`对象
**示例:**
修改id为`1182306172`的名字为`test`,简介为`2333`,封面为`https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png`,公开收藏夹:
```shell
curl 'https://api.bilibili.com/x/v3/fav/folder/edit' \
--data-urlencode 'media_id=1182306172' \
--data-urlencode 'title=test' \
--data-urlencode 'intro=2333' \
--data-urlencode 'privacy=0' \
--data-urlencode 'cover=https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png' \
--data-urlencode 'csrf=xxxx' \
-b 'SESSDATA=xxxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1182306172,
"fid": 11823061,
"mid": 470310172,
"attr": 6,
"title": "test",
"cover": "https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png",
"upper": {
"mid": 0,
"name": "",
"face": "",
"followed": false,
"vip_type": 0,
"vip_statue": 0
},
"cover_type": 0,
"cnt_info": {
"collect": 0,
"play": 0,
"thumb_up": 0,
"share": 0
},
"type": 0,
"intro": "2333",
"ctime": 0,
"mtime": 0,
"state": 0,
"fav_state": 0,
"like_state": 0,
"media_count": 0
}
}
```
</details>
### 删除收藏夹
> https://api.bilibili.com/x/v3/fav/folder/del
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | ------------------------ | -------------- | ------------------- |
| media_ids | nums | 目标收藏夹mdid列表 | 必要 | 每个成员间用`,`分隔 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 成功为0 |
| ttl | num | 1 | |
| data | num | 信息本体 | 成功为0 |
**示例:**
删除id为`1182306172`的收藏夹:
```shell
curl 'https://api.bilibili.com/x/v3/fav/folder/del' \
--data-urlencode 'media_ids=1182306172' \
--data-urlencode 'csrf=xxxx' \
-b 'SESSDATA=xxxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":0
}
```
</details>
## 管理收藏内容
### 批量复制内容
> https://api.bilibili.com/x/v3/fav/resource/copy
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------ | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
| src_media_id | num | 源收藏夹id | 必要 | |
| tar_media_id | num | 目标收藏夹id | 必要 | |
| mid | num | 当前用户mid | 必要 | |
| resources | strs | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}<br />每个成员间用`,`分隔<br />类型:<br />2视频稿件<br />12音频<br />21视频合集<br />内容id<br />视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id |
| platform | str | 平台标识 | 非必要 | 可为web |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />11010您访问的内容不存在 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | 成功为0 |
**示例:**
将id为`1288061499`的收藏夹中视频稿件`av21822819` `av21918689` `av22288065`复制到id为`1178751999`的收藏夹中
```shell
curl 'https://api.bilibili.com/x/v3/fav/resource/copy' \
--data-urlencode 'src_media_id=1288061499' \
--data-urlencode 'tar_media_id=1178751999' \
--data-urlencode 'mid=233333' \
--data-urlencode 'resources=21822819:2,21918689:2,22288065:2' \
--data-urlencode 'platform=web' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":0
}
```
</details>
### 批量移动内容
> https://api.bilibili.com/x/v3/fav/resource/move
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------ | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
| src_media_id | num | 源收藏夹id | 必要 | |
| tar_media_id | num | 目标收藏夹id | 必要 | |
| mid | num | 当前用户mid | 必要 | |
| resources | strs | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}<br />每个成员间用`,`分隔<br />类型:<br />2视频稿件<br />12音频<br />21视频合集<br />内容id<br />视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id |
| platform | str | 平台标识 | 非必要 | 可为web |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />11010您访问的内容不存在 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | 成功为0 |
**示例:**
将id为`1288061499`的收藏夹中视频稿件`av21822819` `av21918689` `av22288065`移动到id为`1178751999`的收藏夹中
```shell
curl 'https://api.bilibili.com/x/v3/fav/resource/move' \
--data-urlencode 'src_media_id=1288061499' \
--data-urlencode 'tar_media_id=1178751999' \
--data-urlencode 'mid=233333' \
--data-urlencode 'resources=21822819:2,21918689:2,22288065:2' \
--data-urlencode 'platform=web' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":0
}
```
</details>
### 批量删除内容
> https://api.bilibili.com/x/v3/fav/resource/batch-del
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | -------------- | ------------------------ | ------------------------------------------------------------ | ------- |
| resources | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}<br />每个成员间用`,`分隔<br />类型:<br />2视频稿件<br />12音频<br />21视频合集<br />内容id<br />视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id | |
| media_id | num | 目标收藏夹id | 必要 | |
| platform | str | 平台标识 | 非必要 | 可为web |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />11010您访问的内容不存在 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | 成功为0 |
**示例:**
将id为`1178751999`的收藏夹中视频稿件`av21822819` `av21918689` `av22288065`取消收藏
```shell
curl 'https://api.bilibili.com/x/v3/fav/resource/batch-del' \
--data-urlencode 'resources=21822819:2,21918689:2,22288065:2' \
--data-urlencode 'media_id=1178751999' \
--data-urlencode 'platform=web' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":0
}
```
</details>
### 清空所有失效内容
> https://api.bilibili.com/x/v3/fav/resource/clean
*请求方式POST*
认证方式APP或CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | -------------- | ---- |
| media_id | num | 目标收藏夹id | 必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | 成功为0 |
**示例:**
清理id为`1161340172`的收藏夹
```shell
curl 'https://api.bilibili.com/x/v3/fav/resource/clean' \
--data-urlencode 'media_id=1161340172' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":0
}
```
</details>

View File

@ -1,415 +0,0 @@
# 收藏夹基本信息
- [获取收藏夹元数据](#获取收藏夹元数据)
- [获取指定用户创建的所有收藏夹信息](#获取指定用户创建的所有收藏夹信息)
- [批量获取指定收藏id的内容](#批量获取指定收藏id的内容)
---
## 获取收藏夹元数据
> https://api.bilibili.com/x/v3/fav/folder/info
*请求方式GET*
认证方式Cookie或APP
**注:查询权限收藏夹时需要相应用户登录**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ---------------------- | ------ | ---- |
| media_id | num | 目标收藏夹id完整id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | -------- | --------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| data | 有效时obj<br />无效或null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------------- | -------------------------------------------------- |
| id | num | 收藏夹mlid完整id | 收藏夹原始id+创建者mid尾号2位 |
| fid | num | 收藏夹原始id | |
| mid | num | 创建者mid | |
| attr | num | 属性位(?) | |
| title | str | 收藏夹标题 | |
| cover | str | 收藏夹封面图片url | |
| upper | obj | 创建者信息 | |
| cover_type | num | 封面图类别(?) | |
| cnt_info | obj | 收藏夹状态数 | |
| type | num | 类型(?) | 一般是11 |
| intro | str | 备注 | |
| ctime | num | 创建时间 | 时间戳 |
| mtime | num | 收藏时间 | 时间戳 |
| state | num | 状态(?) | 一般为0 |
| fav_state | num | 收藏夹收藏状态 | 已收藏收藏夹1<br />未收藏收藏夹0<br />需要登录 |
| like_state | num | 点赞状态 | 已点赞1<br />未点赞0<br />需要登录 |
| media_count | num | 收藏夹内容数量 | |
`info`中的`upper`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ---------------- | ----------------------------------------------- |
| mid | num | 创建者mid | |
| name | str | 创建者昵称 | |
| face | str | 创建者头像url | |
| followed | bool | 是否已关注创建者 | |
| vip_type | num | 会员类别 | 0<br />1月大会员<br />2年度及以上大会员 |
| vip_statue | num | 会员开通状态 | 0<br />1有 |
`info`中的`cnt_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------ | ---- |
| collect | num | 收藏数 | |
| play | num | 播放数 | |
| thumb_up | num | 点赞数 | |
| share | num | 分享数 | |
**示例:**
查询收藏夹`id=1052622027`的元数据
```shell
curl -G 'https://api.bilibili.com/x/v3/fav/folder/info' \
--data-urlencode 'media_id=1052622027' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1052622027,
"fid": 10526220,
"mid": 686127,
"attr": 54,
"title": "猛 男 生 存",
"cover": "http://i2.hdslb.com/bfs/archive/bb51ee8a5fc5e03996138155f0f682d30ee16484.jpg",
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp",
"followed": true,
"vip_type": 2,
"vip_statue": 1
},
"cover_type": 2,
"cnt_info": {
"collect": 3393,
"play": 184822,
"thumb_up": 3918,
"share": 44
},
"type": 11,
"intro": "猛 男 生 存",
"ctime": 1598884758,
"mtime": 1598884758,
"state": 0,
"fav_state": 0,
"like_state": 0,
"media_count": 28
}
}
```
</details>
## 获取指定用户创建的所有收藏夹信息
> https://api.bilibili.com/x/v3/fav/folder/created/list-all
*请求方式GET*
认证方式Cookie或APP
**注:查询权限收藏夹时需要相应用户登录**
该接口也能查询目标内容id存在于那些收藏夹中
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | ---------------------------------------- |
| up_mid | num | 目标用户mid | 必要 | |
| type | num | 目标内容属性 | 非必要 | 默认为全部<br />0全部<br />2视频稿件 |
| rid | num | 目标内容id | 非必要 | 视频稿件视频稿件avid |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| data | 有效时obj<br />无效或null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------ | ----- | ---------------- | ---- |
| count | num | 创建的收藏夹总数 | |
| list | array | 创建的收藏夹列表 | |
| season | null | | |
`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | obj | 收藏夹1 | |
| n | obj | 收藏夹n+1 | |
| ... | obj | ... | |
`medias`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------------------------ | ------------------------------------------ |
| id | num | 收藏夹mlid完整id | 收藏夹原始id+创建者mid尾号2位 |
| fid | num | 收藏夹原始id | |
| mid | num | 创建者mid | |
| attr | num | 属性位(?) | |
| title | str | 收藏夹标题 | |
| fav_state | num | 目标id是否存在于该收藏夹 | 存在于该收藏夹1<br />不存在于该收藏夹0 |
| media_count | num | 收藏夹内容数量 | |
**示例:**
查询用户`mid=509372`的所有创建收藏夹列表
```shell
curl -G 'https://api.bilibili.com/x/v3/fav/folder/created/list-all' \
--data-urlencode 'up_mid=509372' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"count": 2,
"list": [
{
"id": 939227072,
"fid": 9392270,
"mid": 509372,
"attr": 54,
"title": "学习",
"fav_state": 0,
"media_count": 22
},
{
"id": 75020272,
"fid": 750202,
"mid": 509372,
"attr": 22,
"title": "MAD/AMV",
"fav_state": 0,
"media_count": 16
}
],
"season": null
}
}
```
</details>
## 批量获取指定收藏id的内容
> https://api.bilibili.com/x/v3/fav/resource/infos
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------------- | ------ | ------------------------------------------------------------ |
| resources | strs | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}<br />每个成员间用`,`分隔<br />类型:<br />2视频稿件<br />12音频<br />21视频合集<br />内容id<br />视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id |
| platform | str | 平台标识 | 非必要 | 可为web影响内容列表类型 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------------------------------- | ------------ | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| data | 有效时array<br />无效或null | 内容信息列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 内容信息1 | |
| n | obj | 内容信息n+1 | |
| ... | obj | ... | |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------- | ------------------------------------------------------------ |
| id | num | 内容id | 视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id |
| type | num | 内容类型 | 2视频稿件<br />12音频<br />21视频合集 |
| title | str | 标题 | |
| cover | str | 封面url | |
| intro | str | 简介 | |
| page | num | 视频分P数 | |
| duration | num | 音频/视频时长 | |
| upper | obj | UP主信息 | |
| attr | num | 属性 | 0正常<br />1失效 |
| cnt_info | obj | 状态数 | |
| link | str | 跳转uri | |
| ctime | num | 投稿时间 | 时间戳 |
| pubtime | num | 发布时间 | 时间戳 |
| fav_time | num | 收藏时间 | 时间戳 |
| bv_id | str | 视频稿件bvid | |
| bvid | str | 视频稿件bvid | |
| season | null | | |
`data`数组中的对象中的`upper`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| mid | num | UP主mid | |
| name | str | UP主昵称 | |
| face | str | UP主头像url | |
`data`数组中的对象中的`cnt_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ---- |
| collect | num | 收藏数 | |
| play | num | 播放数 | |
| danmaku | num | 弹幕数 | |
**示例:**
批量查询内容
1-视频稿件-`av583785685`
2-视频合集-`523`
3-音频-`au15664`
```shell
curl -G 'https://api.bilibili.com/x/v3/fav/resource/infos' \
--data-urlencode 'resources=583785685:2,523:21,15664:12'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
{
"id": 583785685,
"type": 2,
"title": "已失效视频",
"cover": "http://i0.hdslb.com/bfs/archive/be27fd62c99036dce67efface486fb0a88ffed06.jpg",
"intro": "审核君辛苦了~\r\n使用curl命令访问B站api实现二维码登录 查询登录信息 视频投币 发送评论的操作\r\n本视频作为api收集项目的一个硬核DEMO\r\n由于当时录音的问题大部分是后期配的后面声音有点小\r\n想了解更多的去github页面也可以qq\r\n\r\nbgm\r\n雲流れ\r\nAutumn rain未修改版\r\n四月初雨微凉",
"page": 1,
"duration": 604,
"upper": {
"mid": 293793435,
"name": "社会易姐QwQ",
"face": "http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg"
},
"attr": 1,
"cnt_info": {
"collect": 1470,
"play": 28374,
"danmaku": 64
},
"link": "bilibili://video/583785685",
"ctime": 1594049831,
"pubtime": 1594049831,
"fav_time": 0,
"bv_id": "BV1kz4y1X7XP",
"bvid": "BV1kz4y1X7XP",
"season": null
},
{
"id": 523,
"type": 21,
"title": "2021哔哩哔哩拜年纪",
"cover": "https://i0.hdslb.com/bfs/archive/8ccc50f7cbc671762e0536491bd2b8aeebc0837d.jpg",
"intro": "感谢各位制作者们的辛勤付出!节目精彩,愿大家看的开心!",
"page": 0,
"duration": 0,
"upper": {
"mid": 1868902080,
"name": "哔哩哔哩拜年纪",
"face": "http://i0.hdslb.com/bfs/face/7f6cb94fc071aca9fbb4b1ca9cc6415e86847576.jpg"
},
"attr": 0,
"cnt_info": {
"collect": 0,
"play": 71527018,
"danmaku": 480547
},
"link": "bilibili://video/373561162",
"ctime": 0,
"pubtime": 0,
"fav_time": 0,
"bv_id": "",
"bvid": "",
"season": null
},
{
"id": 15664,
"type": 12,
"title": "威风堂堂",
"cover": "http://i0.hdslb.com/bfs/music/c417d30b394a8a5d4e8a150ad75837dbae3b79d4.jpg",
"intro": "翻唱。在电脑里放了半个月终于大家寒假快乐❁本家sm19233263❁压制: 寒雨❁mix: 三星堆❁vocal: 茶理理。超喜欢michan的那段英文念白所以加了进来w 谢谢三月月和嘟比比你们后期辛苦了!",
"page": 1,
"duration": 200,
"upper": {
"mid": 684169,
"name": "茶理理理子",
"face": ""
},
"attr": 0,
"cnt_info": {
"collect": 48872,
"play": 1508426,
"danmaku": 0
},
"link": "bilibili://music/detail/15664?name=%E5%A8%81%E9%A3%8E%E5%A0%82%E5%A0%82&uperName=%E8%8C%B6%E7%90%86%E7%90%86%E7%90%86%E5%AD%90&cover_url=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Fmusic%2Fc417d30b394a8a5d4e8a150ad75837dbae3b79d4.jpg&upperId=684169&author=%E8%8C%B6%E7%90%86%E7%90%86",
"ctime": 1502347604,
"pubtime": 1502347604,
"fav_time": 0,
"bv_id": "BV1bx411c7qt",
"bvid": "BV1bx411c7qt",
"season": null
}
]
}
```
</details>

View File

@ -1,570 +0,0 @@
# 收藏夹内容
- [获取收藏夹内容明细列表](#获取收藏夹内容明细列表)
- [获取收藏夹全部内容id](#获取收藏夹全部内容id)
---
## 获取收藏夹内容明细列表
> https://api.bilibili.com/x/v3/fav/resource/list
*请求方式GET*
认证方式Cookie或APP
**注:查询权限收藏夹时需要相应用户登录**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ |
| media_id | num | 目标收藏夹mlid完整id | 必要 | |
| tid | num | 分区tid | 非必要 | 默认为全部分区<br />0全部分区<br />[详见说明](../video/video_zone.md) |
| keyword | str | 搜索关键字 | 非必要 | |
| order | str | 排序方式 | 非必要 | 按收藏时间:mtime<br />按播放量: view<br />按投稿时间pubtime |
| type | num | 查询范围 | 非必要 | 0当前收藏夹对应media_id<br /> 1全部收藏夹 |
| ps | num | 每页数量 | 必要 | 定义域1-20 |
| pn | num | 页码 | 非必要 | 默认为1 |
| platform | str | 平台标识 | 非必要 | 可为web影响内容列表类型 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | -------- | --------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| data | 有效时obj<br />无效或null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------ | ----- | ------------ | ---- |
| info | obj | 收藏夹元数据 | |
| medias | array | 收藏夹内容 | |
`data`中的`info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------------- | -------------------------------------------------- |
| id | num | 收藏夹mlid完整id | 收藏夹原始id+创建者mid尾号2位 |
| fid | num | 收藏夹原始id | |
| mid | num | 创建者mid | |
| attr | num | 属性 | 0正常<br />1失效 |
| title | str | 收藏夹标题 | |
| cover | str | 收藏夹封面图片url | |
| upper | obj | 创建者信息 | |
| cover_type | num | 封面图类别(?) | |
| cnt_info | obj | 收藏夹状态数 | |
| type | num | 类型(?) | 一般是11 |
| intro | str | 备注 | |
| ctime | num | 创建时间 | 时间戳 |
| mtime | num | 收藏时间 | 时间戳 |
| state | num | 状态(?) | 一般为0 |
| fav_state | num | 收藏夹收藏状态 | 已收藏收藏夹1<br />未收藏收藏夹0<br />需要登录 |
| like_state | num | 点赞状态 | 已点赞1<br />未点赞0<br />需要登录 |
| media_count | num | 收藏夹内容数量 | |
`info`中的`upper`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ---------------- | ----------------------------------------------- |
| mid | num | 创建者mid | |
| name | str | 创建者昵称 | |
| face | str | 创建者头像url | |
| followed | bool | 是否已关注创建者 | |
| vip_type | num | 会员类别 | 0<br />1月大会员<br />2年度及以上大会员 |
| vip_statue | num | 会员开通状态 | 0<br />1有 |
`info`中的`cnt_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------ | ---- |
| collect | num | 收藏数 | |
| play | num | 播放数 | |
| thumb_up | num | 点赞数 | |
| share | num | 分享数 | |
`data`中的`medias`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | obj | 收藏内容1 | |
| n | obj | 收藏内容(n+1) | |
| ... | obj | ... | |
`medias`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------- | ------------------------------------------------------------ |
| id | num | 内容id | 视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id |
| type | num | 内容类型 | 2视频稿件<br />12音频<br />21视频合集 |
| title | str | 标题 | |
| cover | str | 封面url | |
| intro | str | 简介 | |
| page | num | 视频分P数 | |
| duration | num | 音频/视频时长 | |
| upper | obj | UP主信息 | |
| attr | num | 属性位(?) | |
| cnt_info | obj | 状态数 | |
| link | str | 跳转uri | |
| ctime | num | 投稿时间 | 时间戳 |
| pubtime | num | 发布时间 | 时间戳 |
| fav_time | num | 收藏时间 | 时间戳 |
| bv_id | str | 视频稿件bvid | |
| bvid | str | 视频稿件bvid | |
| season | null | | |
`medias`数组中的对象中的`upper`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| mid | num | UP主mid | |
| name | str | UP主昵称 | |
| face | str | UP主头像url | |
`medias`数组中的对象中的`cnt_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ---- |
| collect | num | 收藏数 | |
| play | num | 播放数 | |
| danmaku | num | 弹幕数 | |
**示例:**
查询收藏夹`id=1052622027`每页5个视频第`1`页的内容明细
```shell
curl -G 'https://api.bilibili.com/x/v3/fav/resource/list' \
--data-urlencode 'media_id=1052622027' \
--data-urlencode 'platform=web' \
--data-urlencode 'pn=1' \
--data-urlencode 'ps=5' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"info": {
"id": 1052622027,
"fid": 10526220,
"mid": 686127,
"attr": 54,
"title": "猛 男 生 存",
"cover": "http://i2.hdslb.com/bfs/archive/bb51ee8a5fc5e03996138155f0f682d30ee16484.jpg",
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp",
"followed": true,
"vip_type": 2,
"vip_statue": 1
},
"cover_type": 2,
"cnt_info": {
"collect": 3393,
"play": 184768,
"thumb_up": 3916,
"share": 44
},
"type": 11,
"intro": "猛 男 生 存",
"ctime": 1598884758,
"mtime": 1598884758,
"state": 0,
"fav_state": 0,
"like_state": 0,
"media_count": 28
},
"medias": [
{
"id": 371494037,
"type": 2,
"title": "猛 男 生 存",
"cover": "http://i2.hdslb.com/bfs/archive/bb51ee8a5fc5e03996138155f0f682d30ee16484.jpg",
"intro": "如果大家喜欢我的视频,别忘了点个赞,一键三连,或者关注我的频道哦~\n也可以把我的视频分享给你们的朋友们~\n\n第一集BV1CZ4y1T7gC\n第二集BV1oA411a72k\n第三集BV1fK4y1e7Yj\n第四集BV1Ya4y1E7Y6\n第五集BV17V411z75A\n第六集BV1oi4y137sw\n第七集BV1Wt4y1D7Uu\n第八集BV1Bp4y1q7y9\n第九集BV1Lv411v7G2\n第十集BV1Xi4y137ER\n第十一集BV1nC4y1879J\n第十二集BV1K54y1",
"page": 1,
"duration": 546,
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp"
},
"attr": 0,
"cnt_info": {
"collect": 11256,
"play": 1638040,
"danmaku": 7697
},
"link": "bilibili://video/371494037",
"ctime": 1595690513,
"pubtime": 1595690513,
"fav_time": 1598884777,
"bv_id": "BV1CZ4y1T7gC",
"bvid": "BV1CZ4y1T7gC",
"season": null
},
{
"id": 328991940,
"type": 2,
"title": "猛 男 生 存 2",
"cover": "http://i1.hdslb.com/bfs/archive/aa801612ea0229a08d000a525b715af24cba0964.jpg",
"intro": "如果大家喜欢我的视频,别忘了点个赞,一键三连,或者关注我的频道哦~\n也可以把我的视频分享给你们的朋友们~\n\n第一集BV1CZ4y1T7gC\n第二集BV1oA411a72k\n第三集BV1fK4y1e7Yj\n第四集BV1Ya4y1E7Y6\n第五集BV17V411z75A\n第六集BV1oi4y137sw\n第七集BV1Wt4y1D7Uu\n第八集BV1Bp4y1q7y9\n第九集BV1Lv411v7G2\n第十集BV1Xi4y137ER\n第十一集BV1nC4y1879J\n第十二集BV1K54y1",
"page": 1,
"duration": 644,
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp"
},
"attr": 0,
"cnt_info": {
"collect": 8695,
"play": 1334651,
"danmaku": 6064
},
"link": "bilibili://video/328991940",
"ctime": 1595770876,
"pubtime": 1595770876,
"fav_time": 1598884783,
"bv_id": "BV1oA411a72k",
"bvid": "BV1oA411a72k",
"season": null
},
{
"id": 884042215,
"type": 2,
"title": "猛 男 生 存 3",
"cover": "http://i1.hdslb.com/bfs/archive/f99059637c110dcd1cdae765a946801fbcefe4ab.jpg",
"intro": "如果大家喜欢我的视频,别忘了点个赞,一键三连,或者关注我的频道哦~\n也可以把我的视频分享给你们的朋友们~\n\n第一集BV1CZ4y1T7gC\n第二集BV1oA411a72k\n第三集BV1fK4y1e7Yj\n第四集BV1Ya4y1E7Y6\n第五集BV17V411z75A\n第六集BV1oi4y137sw\n第七集BV1Wt4y1D7Uu\n第八集BV1Bp4y1q7y9\n第九集BV1Lv411v7G2\n第十集BV1Xi4y137ER\n第十一集BV1nC4y1879J\n第十二集BV1K54y1",
"page": 1,
"duration": 703,
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp"
},
"attr": 0,
"cnt_info": {
"collect": 9449,
"play": 1429408,
"danmaku": 8243
},
"link": "bilibili://video/884042215",
"ctime": 1595847079,
"pubtime": 1595847079,
"fav_time": 1598884788,
"bv_id": "BV1fK4y1e7Yj",
"bvid": "BV1fK4y1e7Yj",
"season": null
},
{
"id": 669013980,
"type": 2,
"title": "猛 男 生 存 4",
"cover": "http://i1.hdslb.com/bfs/archive/def0f7009cb9a8b581ee03be9565918ff0c1913d.jpg",
"intro": "如果大家喜欢我的视频,别忘了点个赞,一键三连,或者关注我的频道哦~\n也可以把我的视频分享给你们的朋友们~\n\n第一集BV1CZ4y1T7gC\n第二集BV1oA411a72k\n第三集BV1fK4y1e7Yj\n第四集BV1Ya4y1E7Y6\n第五集BV17V411z75A\n第六集BV1oi4y137sw\n第七集BV1Wt4y1D7Uu\n第八集BV1Bp4y1q7y9\n第九集BV1Lv411v7G2\n第十集BV1Xi4y137ER\n第十一集BV1nC4y1879J\n第十二集BV1K54y1",
"page": 1,
"duration": 895,
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp"
},
"attr": 0,
"cnt_info": {
"collect": 9950,
"play": 1309544,
"danmaku": 13551
},
"link": "bilibili://video/669013980",
"ctime": 1595943988,
"pubtime": 1595943988,
"fav_time": 1598884792,
"bv_id": "BV1Ya4y1E7Y6",
"bvid": "BV1Ya4y1E7Y6",
"season": null
},
{
"id": 414034824,
"type": 2,
"title": "猛 男 生 存 5",
"cover": "http://i2.hdslb.com/bfs/archive/b4844ac89dde221d13bb8ddff80a8c4658bf7dc5.jpg",
"intro": "如果大家喜欢我的视频,别忘了点个赞,一键三连,或者关注我的频道哦~\n也可以把我的视频分享给你们的朋友们~\n\n第一集BV1CZ4y1T7gC\n第二集BV1oA411a72k\n第三集BV1fK4y1e7Yj\n第四集BV1Ya4y1E7Y6\n第五集BV17V411z75A\n第六集BV1oi4y137sw\n第七集BV1Wt4y1D7Uu\n第八集BV1Bp4y1q7y9\n第九集BV1Lv411v7G2\n第十集BV1Xi4y137ER\n第十一集BV1nC4y1879J\n第十二集BV1K54y1",
"page": 1,
"duration": 814,
"upper": {
"mid": 686127,
"name": "籽岷",
"face": "http://i0.hdslb.com/bfs/face/7efb679569b2faeff38fa08f6f992fa1ada5e948.webp"
},
"attr": 0,
"cnt_info": {
"collect": 9446,
"play": 1235998,
"danmaku": 9021
},
"link": "bilibili://video/414034824",
"ctime": 1596023668,
"pubtime": 1596023668,
"fav_time": 1598884798,
"bv_id": "BV17V411z75A",
"bvid": "BV17V411z75A",
"season": null
}
],
"has_more": true
}
}
```
</details>
## 获取收藏夹全部内容id
> https://api.bilibili.com/x/v3/fav/resource/ids
*请求方式GET*
认证方式Cookie或APP
**注:查询权限收藏夹时需要相应用户登录**
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | --------------------------- |
| media_id | num | 目标收藏夹mlid完整id | 必要 | |
| platform | str | 平台标识 | 非必要 | 可为web影响内容列表类型 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------------------------------- | ---------- | --------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| data | 有效时array<br />无效或null | 内容id列表 | |
`data`中的`medias`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 收藏内容id1 | |
| n | obj | 收藏内容id(n+1) | |
| ... | obj | ... | |
`medias`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------ | ------------------------------------------------------------ |
| id | num | 内容id | 视频稿件视频稿件avid<br />音频音频auid<br />视频合集视频合集id |
| type | num | 内容类型 | 2视频稿件<br />12音频<br />21视频合集 |
| bv_id | str | 视频稿件bvid | |
| bvid | str | 视频稿件bvid | |
**示例:**
查询收藏夹`id=1052622027`的全部内容id
```shell
curl -G 'https://api.bilibili.com/x/v3/fav/resource/ids' \
--data-urlencode 'media_id=1052622027' \
--data-urlencode 'platform=web' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
{
"id": 371494037,
"type": 2,
"bv_id": "BV1CZ4y1T7gC",
"bvid": "BV1CZ4y1T7gC"
},
{
"id": 328991940,
"type": 2,
"bv_id": "BV1oA411a72k",
"bvid": "BV1oA411a72k"
},
{
"id": 884042215,
"type": 2,
"bv_id": "BV1fK4y1e7Yj",
"bvid": "BV1fK4y1e7Yj"
},
{
"id": 669013980,
"type": 2,
"bv_id": "BV1Ya4y1E7Y6",
"bvid": "BV1Ya4y1E7Y6"
},
{
"id": 414034824,
"type": 2,
"bv_id": "BV17V411z75A",
"bvid": "BV17V411z75A"
},
{
"id": 541550765,
"type": 2,
"bv_id": "BV1oi4y137sw",
"bvid": "BV1oi4y137sw"
},
{
"id": 626619000,
"type": 2,
"bv_id": "BV1Wt4y1D7Uu",
"bvid": "BV1Wt4y1D7Uu"
},
{
"id": 969124957,
"type": 2,
"bv_id": "BV1Bp4y1q7y9",
"bvid": "BV1Bp4y1q7y9"
},
{
"id": 244079274,
"type": 2,
"bv_id": "BV1Lv411v7G2",
"bvid": "BV1Lv411v7G2"
},
{
"id": 541500006,
"type": 2,
"bv_id": "BV1Xi4y137ER",
"bvid": "BV1Xi4y137ER"
},
{
"id": 796655080,
"type": 2,
"bv_id": "BV1nC4y1879J",
"bvid": "BV1nC4y1879J"
},
{
"id": 839243447,
"type": 2,
"bv_id": "BV1K54y1U77v",
"bvid": "BV1K54y1U77v"
},
{
"id": 329235451,
"type": 2,
"bv_id": "BV13A411e7ad",
"bvid": "BV13A411e7ad"
},
{
"id": 884202228,
"type": 2,
"bv_id": "BV1UK4y1v7K6",
"bvid": "BV1UK4y1v7K6"
},
{
"id": 926710567,
"type": 2,
"bv_id": "BV1BT4y157HK",
"bvid": "BV1BT4y157HK"
},
{
"id": 754200948,
"type": 2,
"bv_id": "BV1qk4y117Uk",
"bvid": "BV1qk4y117Uk"
},
{
"id": 371795957,
"type": 2,
"bv_id": "BV1iZ4y1K7LG",
"bvid": "BV1iZ4y1K7LG"
},
{
"id": 969268280,
"type": 2,
"bv_id": "BV1hp4y1v7mU",
"bvid": "BV1hp4y1v7mU"
},
{
"id": 414281629,
"type": 2,
"bv_id": "BV1xV411U7mm",
"bvid": "BV1xV411U7mm"
},
{
"id": 839319009,
"type": 2,
"bv_id": "BV1t54y1U7hg",
"bvid": "BV1t54y1U7hg"
},
{
"id": 329271769,
"type": 2,
"bv_id": "BV12A411J7JZ",
"bvid": "BV12A411J7JZ"
},
{
"id": 969365400,
"type": 2,
"bv_id": "BV1wp4y1i7U8",
"bvid": "BV1wp4y1i7U8"
},
{
"id": 796831427,
"type": 2,
"bv_id": "BV1yC4y1t7Gb",
"bvid": "BV1yC4y1t7Gb"
},
{
"id": 711972863,
"type": 2,
"bv_id": "BV1YD4y1m7FP",
"bvid": "BV1YD4y1m7FP"
},
{
"id": 754414390,
"type": 2,
"bv_id": "BV1Yk4y127YR",
"bvid": "BV1Yk4y127YR"
},
{
"id": 839478683,
"type": 2,
"bv_id": "BV1i54y127uw",
"bvid": "BV1i54y127uw"
},
{
"id": 499448381,
"type": 2,
"bv_id": "BV19K411N7KE",
"bvid": "BV19K411N7KE"
},
{
"id": 926919797,
"type": 2,
"bv_id": "BV1QT4y1L7Bb",
"bvid": "BV1QT4y1L7Bb"
}
]
}
```
</details>

View File

@ -1,316 +0,0 @@
# 主题色
- [获取主题色基本信息1](#获取主题色基本信息1)
- [获取主题色基本信息2](#获取主题色基本信息2)
---
## 获取主题色基本信息1
> https://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成功<br />-3API校验密匙错误<br />-400请求错误 |
| data | array | 主题颜色列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | obj | 主题颜色1 | |
| n | obj | 主题颜色(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------ | ------------------------------- |
| id | num | 颜色id | |
| name | str | 颜色名称 | |
| is_free | bool | 是否免费 | false收费<br />true免费 |
| price | num | 价格 | 单位为硬币 |
| is_bought | bool | 是否已购买 | false未购买<br />true已购买 |
| status | num | 状态 | 1自动续费<br />4已退订 |
| buy_time | num | 购买时间 | 毫秒时间戳 |
| due_time | num | 到期时间 | 毫秒时间戳 |
| color_name | str | 颜色类型名称 | |
| is_overdue | bool | 是否已到期 | false未到期<br />true已到期 |
**示例:**
```shell
curl -G 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
```
</details>
## 获取主题色基本信息2
> https://api.bilibili.com/x/garb/skin/color/list
*请求方式GET*
认证方式仅可Cookie
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | ------------- |
| mobi_app | str | 平台标识 | 非必要 | 可为`android` |
| build | num | 版本 | 非必要 | 可为`6082000` |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | ------------ | ---------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-3API校验密匙错误<br />-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收费<br />true免费 |
| price | num | 价格 | 单位为硬币 |
| is_bought | bool | 是否已购买 | false未购买<br />true已购买 |
| status | num | 状态 | 1自动续费<br />4已退订 |
| buy_time | num | 购买时间 | 毫秒时间戳 |
| due_time | num | 到期时间 | 毫秒时间戳 |
| color_name | str | 颜色类型名称 | |
| is_overdue | bool | 是否已到期 | false未到期<br />true已到期 |
**示例:**
```shell
curl -G 'https://api.bilibili.com/x/garb/skin/color/list' \
--data-urlencode 'mobi_app=android' \
--data-urlencode 'build=6082000' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
```
</details>

View File

@ -1,272 +0,0 @@
# APP主题
- [获取主题及加载动画](#获取主题及加载动画)
- [主题包结构](#主题包结构)
---
## 获取主题及加载动画
> https://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成功<br />-3API校验密匙错误<br />-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亮色<br />dark暗色 |
| color | str | 前景色? | 必要 | 颜色<br />1. 使用十六进制颜色值<br />2. 颜色值的大小写不限,下同<br />3. 例:#ffffff |
| color_second_page | str | 背景色? | 必要 | 颜色 |
| tail_color | str | 底边栏颜色 | 必要 | 颜色 |
| tail_color_selected | str | 底边栏颜色(选择时) | 必要 | 颜色 |
| tail_icon_ani | bool | 有无底边栏动画 | 必要 | false<br />true有 |
| tail_icon_ani_mode | str | 底边栏动画循环播放 | 必要 | once播放一次 |
| head_myself_mp4_play| str | 我的页面头图(视频)循环 | 必要 | once播放一次<br />loop循环播放 |
| tail_icon_mode | str | 底栏改图标或改颜色 | 必要 | img图标<br />color颜色 |
| side_bg_color | str | 侧边栏颜色 | 非必要 | 颜色<br />5.x 版本客户端的侧边栏 |
| side_line_color | str | 侧边栏线条颜色? | 非必要 | 颜色<br />5.x 版本客户端的侧边栏 |
| tail_icon_color | str | 底栏图标颜色 | 可能必要 | 颜色<br />若 tail_icon_mode = "color",则必要 |
| tail_icon_color_dark| str | 底栏图标颜色(夜间模式) | 可能必要 | 颜色<br />若 tail_icon_mode = "color",则必要 |
| tail_icon_color_selected| str | 底栏图标颜色(选择时) | 可能必要 | 颜色<br />若 tail_icon_mode = "color",则必要 |
| tail_icon_color_selected_dark| str | 底栏图标颜色(选择时)(夜间模式) | 可能必要 | 颜色<br />若 tail_icon_mode = "color",则必要 |
`skin_colors`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | obj | 主题颜色1 | |
| n | obj | 主题颜色(n+1) | |
| …… | obj | …… | …… |
`skin_colors`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------ | ------------------------------- |
| id | num | 颜色id | |
| name | str | 颜色名称 | |
| is_free | bool | 是否免费 | false收费<br />true免费 |
| price | num | 价格 | 单位为硬币 |
| is_bought | bool | 是否已购买 | false未购买<br />true已购买 |
| status | num | 状态 | 1自动续费<br />4已退订 |
| buy_time | num | 购买时间 | 毫秒时间戳 |
| due_time | num | 到期时间 | 毫秒时间戳 |
| color_name | str | 颜色类型名称 | |
| is_overdue | bool | 是否已到期 | false未到期<br />true已到期 |
`data`中的`load_equip`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | --------------- | ------ |
| id | num | 装扮id | |
| name | str | 装扮名称 | |
| ver | num | 装扮版本 | 时间戳 |
| loading_url | str | 加载动画图标url | |
**示例:**
```shell
curl -G 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
}
}
```
</details>
## 主题包结构
主题包为app端付费主题套装的整合包以zip格式通过url分发
包内的图片文件为app对应的资源替换替换时可随意修改后缀 jpg 或 png
必要性head_bg 及 head_tab_bg 为必要,其他非必要
| 文件名 | 说明 |
| --------------------------------- | -------------------------- |
| head_bg.jpg | 首页顶部栏背景 |
| head_tab_bg.jpg | 顶部栏背景 |
| head_myself_bg.jpg | 【我的】页面头图(小) |
| head_myself_squared_bg.jpg | 【我的】页面头图(大) |
| head_myself_mp4_bg.mp4 | 【我的】页面头图(视频)<br />格式参考:后缀必须 mp4、分辨率 1242 x 1074、60 FPS、去掉音轨(音频) |
| side_bg.jpg | 侧边栏背景 |
| side_bg_bottom.jpg | 侧边栏底部背景 |
| tail_bg.png | 底部栏背景 |
| tail_icon_main.png | 【首页】按钮 |
| tail_icon_channel.png | 【频道】按钮 |
| tail_icon_dynamic.png | 【动态】按钮 |
| tail_icon_shop.png | 【会员购】按钮 |
| tail_icon_myself.png | 【我的】按钮 |
| tail_icon_pub_btn_bg.png | 【发布】按钮 |
| tail_icon_selected_main.png | 【首页】按钮(选中状态) |
| tail_icon_selected_channel.png | 【频道】按钮(选中状态) |
| tail_icon_selected_dynamic.png | 【动态】按钮(选中状态) |
| tail_icon_selected_shop.png | 【会员购】按钮(选中状态) |
| tail_icon_selected_myself.png | 【我的】按钮(选中状态) |
| tail_icon_selected_pub_btn_bg.png | 【发布】按钮(选中状态) |
以`id=2529初音未来-日版)`的资源为例
```shell
wget https://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
```

View File

@ -1,852 +0,0 @@
# 历史记录
<img src="/imgs/history.png" width="25" height="20"/>
- [获取历史记录列表_web端](#获取历史记录列表_web端)
- [获取视频观看历史记录_web端旧版](#获取视频观看历史记录_旧版)
- [删除历史记录](#删除历史记录)
- [清空历史记录](#清空历史记录)
- [停用历史记录](#停用历史记录)
- [查询历史记录停用状态](#查询历史记录停用状态)
---
## 获取历史记录列表_web端
>https://api.bilibili.com/x/web-interface/history/cursor
*请求方式GET*
认证方式Cookie (SESSDATA)
注:`max`、`business`、`view_at`参数用于历史记录列表的 IFS (无限滚动),其用法类似链表的 next 指针
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ |
| max | num | 历史记录截止目标 id | 非必要 | 默认为 0<br />稿件:稿件 avid<br />剧集(番剧 / 影视):剧集 ssid<br />直播:直播间 id<br />文集:文集 rlid<br />文章:文章 cvid |
| business | str | 历史记录截止目标业务类型 | 非必要 | 默认为空<br />archive稿件<br />pgc剧集番剧 / 影视)<br />live直播<br />article-list文集<br />article文章 |
| view_at | num | 历史记录截止时间 | 非必要 | 时间戳<br />默认为 0<br />0 为当前时间 |
| type | str | 历史记录分类筛选 | 非必要 | all全部类型默认<br />archive稿件<br />live直播<br />article文章 |
| ps | num | 每页项数 | 非必要 | 默认为 20最大 30 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | ------------ | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-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 | 最后一项业务类型 | **见请求参数** |
| ps | num | 每页项数 | |
`data`中的`tab`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------ | ---- |
| 0 | obj | 历史记录筛选类型 1 | |
| 1 | obj | 历史记录筛选类型 2 | |
| 2 | obj | 历史记录筛选类型 3 | |
`tab`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------ | ---- |
| type | str | 类型 | |
| name | str | 类型名 | |
`data`中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------- | ---------------- |
| 0 | obj | 历史记录 1 | |
| n | obj | 历史记录 (n+1) | 按照查看顺序排列 |
| …… | obj | | |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ------------------------------- | ------------------------ | ---------------------------------------- |
| title | str | 条目标题 | |
| long_title | str | 条目副标题 | |
| cover | str | 条目封面图 url | 用于专栏以外的条目 |
| covers | 有效时array<br />无效时null | 条目封面图组 | 仅用于专栏 |
| uri | str | 重定向 url | 仅用于剧集和直播 |
| history | obj | 条目详细信息 | |
| videos | num | 视频分 P 数目 | 仅用于稿件视频 |
| author_name | str | UP 主昵称 | |
| author_face | str | UP 主头像 url | |
| author_mid | num | UP 主 mid | |
| view_at | num | 查看时间 | 时间戳 |
| progress | num | 视频观看进度 | 单位为秒<br />用于稿件视频或剧集 |
| badge | str | 角标文案 | 稿件视频 / 剧集 / 笔记 |
| show_title | str | 分 P 标题 | 用于稿件视频或剧集 |
| duration | num | 视频总时长 | 用于稿件视频或剧集 |
| current | str | (?) | |
| total | num | 总计分集数 | 仅用于剧集 |
| new_desc | str | 最新一话 / 最新一 P 标识 | 用于稿件视频或剧集 |
| is_finish | num | 是否已完结 | 仅用于剧集<br />0未完结<br />1已完结 |
| is_fav | num | 是否收藏 | 0未收藏<br />1已收藏 |
| kid | num | 条目目标 id | **详细内容见参数** |
| tag_name | str | 子分区名 | 用于稿件视频和直播 |
| live_status | num | 直播状态 | 仅用于直播<br />0未开播<br />1已开播 |
`list`数组中的对象中的`covers`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------- | ---- |
| 0 | str | 封面图片 1 | |
| n | str | 封面图片 (n+1) | |
| …… | str | …… | |
`list`数组中的对象中的`history`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | --------------------- | ------------------------------------------------------------ |
| oid | num | 目标id | 稿件视频&剧集(当`business=archive`或`business=pgc`时稿件avid<br />直播(当`business=live`时直播间id<br />文章(当`business=article`时文章cvid<br />文集(当`business=article-list`时文集rlid |
| epid | num | 剧集epid | 仅用于剧集 |
| bvid | str | 稿件bvid | 仅用于稿件视频 |
| page | num | 观看到的视频分P数 | 仅用于稿件视频 |
| cid | num | 观看到的对象id | 稿件视频&剧集(当`business=archive`或`business=pgc`时视频cid<br />文集(当`business=article-list`时文章cvid |
| part | str | 观看到的视频分 P 标题 | 仅用于稿件视频 |
| business | str | 业务类型 | **见请求参数** |
| dt | num | 记录查看的平台代码 | 1 3 5 7手机端<br />2web端<br />4 6pad端<br />33TV端<br />0其他 |
**示例:**
获取当前时间截止的5条历史记录
```shell
curl -G 'https://api.bilibili.com/x/web-interface/history/cursor' \
--data-urlencode 'ps=5' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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
}
]
}
}
```
</details>
## 获取视频观看历史记录_web端旧版
> https://api.bilibili.com/x/v2/history
*请求方式GET*
认证方式Cookie (SESSDATA)
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------- |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页项数 | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | ------------ | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | array | 历史记录列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ------------------------------------------ |
| 0 | obj | 历史观看1 | |
| n | obj | 历史观看(n+1) | 按照观看顺序排列<br />项数为总计观看视频数 |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------------------- | ------- | ------------------------------ | ------------------------------------------------------------ |
| aid | num | 稿件avid | |
| videos | num | 视频分P总数 | 默认为1 |
| tid | num | 分区tid | |
| tname | str | 子分区名称 | |
| copyright | num | 是否转载 | 1原创<br />2转载 |
| pic | str | 视频封面图片url | |
| title | str | 稿件标题 | |
| pubdate | num | 稿件发布时间 | 时间戳 |
| ctime | num | 用户提交稿件的时间 | 时间戳 |
| desc | str | 视频简介 | |
| state | num | 视频状态 | 略,见[获取视频详细信息web端](/video/info.md#获取视频详细信息web端)中的`state`备注 |
| ~~attribute~~(仅做历史性保留) | ~~num~~ | ~~稿件属性位配置~~ | 本字段已被删除<br />~~略,见[获取视频详细信息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已收藏<br />false未收藏 |
| type | num | 视频属性 | 3普通视频<br />4剧集<br />10课程 |
| sub_type | num | 附视频属性 | 0普通视频<br />1番剧<br />2电影<br />3纪录片<br />4国创<br />5电视剧<br />7综艺 |
| device | num | 观看平台代码 | 1 3 5 7手机端<br />2web端<br />4 6pad端<br />33TV端<br />0其他 |
| page | obj | 最后观看的分P信息 | |
| count | num | 分P数 | 非投稿视频无此项 |
| progress | num | 观看进度 | 单位为秒 |
| view_at | num | 观看时间 | 时间戳 |
| kid | num | 稿件avid | |
| business | str | 视频类型标识 | archive用户投稿视频<br />pgc番剧/影视<br />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连载中<br />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 'https://api.bilibili.com/x/v2/history' \
--data-urlencode 'ps=5' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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"
}
]
}
```
</details>
## 删除历史记录
> https://api.bilibili.com/x/v2/history/delete
*请求方式POST*
认证方式Cookie (SESSDATA)
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | --------------------------------------------------- | ------ | ------------------------------------------------------------ |
| kid | str | 删除的目标记录,格式为`{业务类型}_{目标id}`详见备注 | 必要 | 视频archive\_{稿件avid}<br />直播live_{直播间id}<br />专栏article\_{专栏cvid}<br />剧集pgc\_{剧集ssid}<br />文集article-list\_{文集rlid} |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
删除视频`av540580868`的观看历史记录
```shell
curl 'https://api.bilibili.com/x/v2/history/delete' \
--data-urlencode 'kid=archive_540580868' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 清空历史记录
> https://api.bilibili.com/x/v2/history/clear
*请求方式POST*
认证方式Cookie (SESSDATA)
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
清空历史记录
```shell
curl 'https://api.bilibili.com/x/v2/history/clear' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 停用历史记录
> https://api.bilibili.com/x/v2/history/shadow/set
*请求方式POST*
认证方式Cookie (SESSDATA)
该操作不会影响原有历史记录
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | -------------------------------------------- |
| switch | bool | 停用开关 | 非必要 | true停用<br />false正常<br />默认为false |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
停用历史记录功能
```shell
curl 'https://api.bilibili.com/x/v2/history/shadow/set' \
--data-urlencode 'switch=true' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 查询历史记录停用状态
> https://api.bilibili.com/x/v2/history/shadow
*请求方式GET*
认证方式Cookie (SESSDATA)
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | bool | 停用状态 | true停用<br />false正常 |
**示例:**
当前状态为未停用视频历史记录
```shell
curl 'https://api.bilibili.com/x/v2/history/shadow' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": false
}
```
</details>

View File

@ -1,470 +0,0 @@
# 稍后再看
<img src="/imgs/toview.png" width="25" height="20"/>
- [视频添加稍后再看](#视频添加稍后再看)
- [添加频道中所有视频到稍后再看](#添加频道中所有视频到稍后再看)
- [获取稍后再看视频列表](#获取稍后再看视频列表)
- [删除稍后再看视频](#删除稍后再看视频)
- [清空稍后再看视频列表](#清空稍后再看视频列表)
---
## 视频添加稍后再看
>https://api.bilibili.com/x/v2/history/toview/add
*请求方式POST*
认证方式CookieSESSDATA
最多添加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成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />90001列表已满<br />90003稿件已经被删除 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
添加视频`av41687433`/`BV1ht41147kj`到稍后再看列表
avid方式
```shell
curl 'https://api.bilibili.com/x/v2/history/toview/add' \
--data-urlencode 'aid=41687433' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
bvid方式
```shell
curl 'https://api.bilibili.com/x/v2/history/toview/add' \
--data-urlencode 'bvid=BV1ht41147kj' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 添加频道中所有视频到稍后再看
> https://space.bilibili.com/ajax/channel/addAllToView
*请求方式POST*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0referer为 `.bilibili.com`域名下
带有转义
超过容量后会截取容量之内的添加
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| cid | num | 目标频道id | 必要 | |
| mid | num | 目标频道所属的用户mid | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------ | ---- | -------- | --------------------------- |
| status | bool | 是否成功 | false失败<br />true成功 |
| data | str | 错误信息 | |
**示例:**
添加用户`mid=282994`下的频道`4693`中所有视频到稍后再看
```shell
curl 'https://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'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"status": true,
"data": "操作成功"
}
```
</details>
## 获取稍后再看视频列表
> https://api.bilibili.com/x/v2/history/toview
*请求方式GET*
认证方式CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | data | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ------ | ---------------- | ---- |
| count | num | 稍后再看视频数 | |
| list | array | 稍后再看视频列表 | |
`data`中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---------------------------------------------- |
| 0 | obj | 稍后再看1 | |
| n | obj | 稍后再看(n+1) | 按照添加顺序排列<br />项数为总计稍后再看视频数 |
| …… | obj | …… | …… |
| 99 | obj | 最后一项 | |
`data`中的`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------------------- | ------- | ------------------------------ | ------------------------------------------------------------ |
| aid | num | 稿件avid | |
| videos | num | 稿件分P总数 | 默认为1 |
| tid | num | 分区tid | |
| tname | str | 子分区名称 | |
| copyright | num | 是否转载 | 1原创<br />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 | 视频同步发布的的动态的文字内容 | 无为空 |
| dimension | obj | 稿件1P分辨率 | 略,见[获取视频详细信息web端](/video/info.md#获取视频详细信息web端)中的`dimension`对象 |
| count | num | 稿件分P数 | 非投稿视频无此项 |
| cid | num | 视频cid | |
| progress | num | 观看进度时间 | 单位为秒 |
| add_at | num | 添加时间 | 时间戳 |
| bvid | str | 稿件bvid | |
**示例:**
获取稍后再看视频列表
```shell
curl 'https://api.bilibili.com/x/v2/history/toview' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```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"
},
…………
]
}
}
```
</details>
## 删除稍后再看视频
> https://api.bilibili.com/x/v2/history/toview/del
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ |
| viewed | bool | 是否删除所有已观看的视频 | 非必要 | true删除已观看视频<br />false不删除已观看视频<br />默认为false |
| aid | num | 删除的目标记录的avid | 非必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
删除视频`av540580868`的稍后再看记录
```shell
curl 'https://api.bilibili.com/x/v2/history/toview/del' \
--data-urlencode 'aid=540580868' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
删除所有已观看的视频
```shell
curl 'https://api.bilibili.com/x/v2/history/toview/del' \
--data-urlencode 'viewed=true' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 清空稍后再看视频列表
> https://api.bilibili.com/x/v2/history/toview/clear
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------------ | ------ | ---- |
| csrf | num | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
清空稍后再看视频列表
```shell
curl 'https://api.bilibili.com/x/v2/history/toview/clear' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

View File

@ -1,3 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path d="M518.656 475.904a223.488 223.488 0 0 1-23.296-75.52 366.08 366.08 0 0 1 81.408 14.592 623.104 623.104 0 0 1-58.112 60.928m-69.888-119.04c-11.52-58.112-8.704-55.296-25.6-156.928a265.984 265.984 0 0 0-78.336 46.592c51.2 104.448 60.928 165.376 92.928 290.304 51.2-5.632 211.968-40.704 226.56-130.56 8.704-64-142.336-64-215.04-49.408M486.4 624.128a263.424 263.424 0 0 0-107.52 69.632l43.52 153.6a47.872 47.872 0 0 1-92.928 23.296L216.576 473.088l-72.704-204.8c2.816-5.632 5.888-8.704 8.704-14.336l-14.592-51.2a46.08 46.08 0 0 1 32-57.856A47.616 47.616 0 0 1 228.096 179.2v2.816a334.848 334.848 0 0 1 98.816-43.52c177.152-46.592 203.264 55.04 429.824 23.296L890.368 588.8c-171.52 90.112-232.448-11.52-403.712 35.072" fill="#F39800">
</svg>

Before

Width:  |  Height:  |  Size: 835 B

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 838 838" enable-background="new 0 0 838 838" xml:space="preserve">
<path fill="#1497C7" d="M419,838c-118.67-3.33-217.33-44.33-296-123S3.33,537.67,0,419c3.33-118.67,44.33-217.33,123-296
S300.33,3.33,419,0c118.67,3.33,217.33,44.33,296,123s119.67,177.33,123,296c-3.33,118.67-44.33,217.33-123,296
S537.67,834.67,419,838z M372,372H233v94h139v139h94V466h139v-94H466V233h-94V372z"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,44 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2250 1024">
<path d="M2079.44,914.36c-10,0-19-0.33-27-1c-17.33-1.33-34.33-2-51-2c-10.67,0-10.67-0.33-12-11l-16-182l-16-151
l-11-93l-10-81l-18-126c-6-44.67-13.33-89.33-22-134c-1.33-6.67-1-7.67,7-9c31.33-6,63-9,95-9h11c5.33,0.67,8.33,4,9,10
c1.33,23.33,2.67,46.33,4,69l28,373l14,171l9,98L2079.44,914.36z M853.44,115.36c4.67,0,10.67,0,18,0c9.33,0,11,2.67,11,12l8,121
l18,251l11,131l8,101l16,174c0,8-1,9-9,9c-24-1.33-48-2.33-72-3c-5.33,0.67-8-1.67-8-7c-1.33-11.33-2.33-23-3-35
c-3.33-30-6-60.33-8-91l-16-158l-17-143l-12-101l-13-92c-6-41.33-12.67-82.67-20-124l-5-28c-1.33-4.67,0.33-7.33,5-8
C793.44,119.03,820.11,114.03,853.44,115.36z M1859.44,518.36c25.33,0,28,1,32,25c4.67,30,8.67,60,12,90l11,97l21,206
c1.33,4.67-0.33,7-5,7l-78,9c-8,1.33-9.67,0-11-8l-45-230l-28-153l-4-21c-0.67-4,1-6.67,5-8
C1800.11,525.03,1830.11,520.36,1859.44,518.36z M722.44,518.36c26.67-1.33,30.33,1.67,33,27c6.67,40.67,12,81.33,16,122l13,120
l8,81l7,65c0,9.33-1,10.67-9,12l-74,7c-8,1.33-9.67,0-11-8l-61-314l-16-89c-1.33-4.67,0.67-7.67,6-9
C665.11,525.03,694.44,520.36,722.44,518.36z M1104.44,828.36v124v4c0.67,6-2,8.67-8,8c-8,0-16,0-24,0c-17.33,0-34.33,0.67-51,2
c-9.33,1.33-9.67,0.67-11-10l-16-180l-8-89l-12-136c-1.33-10.67,0.67-12.67,10-14c28-2.67,56-3.33,84-2c6.67,0.67,13.67,1.67,21,3
c8,2.67,9,4,9,12c1.33,18,2.33,36,3,54l1,60C1103.78,719.03,1104.44,773.7,1104.44,828.36z M2239.44,834.36v117v6
c0,5.33-2.33,7.67-7,7h-36c-14,0-27.67,0.67-41,2c-8,1.33-8.67,0.33-10-9l-21-234l-11-116l-4-59c-1.33-8,1-10,9-10
c33.33-4,66.67-5,100-1c13.33,1.33,14.67,4.67,16,18c1.33,44.67,2.33,89,3,133C2238.78,735.03,2238.11,782.36,2239.44,834.36z
M1830.44,305.36c10,0,18.67,0.67,26,2c4.67,0.67,7.33,3.33,8,8l13,139c2.67,12,1,14-11,14l-34,2c-6.67,1.33-10,1.67-10-9
c-4.67-37.33-9.33-75-14-113l-4-32c-1.33-6,1-9.33,7-10L1830.44,305.36z M697.44,305.36c8,0,15.67,0.67,23,2c4,0.67,6.33,3.33,7,8
l4,35l10,109c1.33,8,1,9-7,9c-12.67,0.67-25.67,1.33-39,2c-8,1.33-8.67,0-10-8l-9-80c-2.67-22.67-5.33-45-8-67
c-1.33-5.33,0.67-8,6-8C681.78,306.03,689.44,305.36,697.44,305.36z M1096.44,405.36c0,23.33,0,46.33,0,69c1.33,10.67-0.67,11-10,11
c-12.67,0-25-0.67-37-2c-8-1.33-9.33-1-8-9l-3-85c0-18.67-0.33-37.67-1-57c-1.33-9.33-0.33-10,9-10c14,0,28,1,42,3c8,0,8,2,8,10
V405.36z M2232.44,406.36c0,22.67,0,45.67,0,69c0,9.33-0.67,10-10,10c-12.67-0.67-25.33-1.33-38-2c-6-0.67-8.67-3.67-8-9l-3-143
c0-8,1-9,9-9c12.67,0,25,0.67,37,2c14.67,1.33,13,4.33,13,15V406.36z M666.44,460.36c1.33,12,0,13.67-12,15l-24,6
c-8,2.67-8.67,0.67-10-6l-25-141c-2.67-9.33-1.33-10.67,8-12l35-6c8-1.33,10-1,10,7c3.33,17.33,6,34.33,8,51l10,80V460.36z
M1730.44,323.36c15.33-2.67,31-5,47-7c4.67-0.67,7.33,1.67,8,7c2.67,18.67,5.33,37,8,55c4,26.67,6.67,53.67,8,81v8
c0.67,4-1,6.67-5,8l-32,7c-4.67,0.67-7.33-1.33-8-6l-26-149V323.36z M1020.44,431.36c0,16-0.67,31-2,45c0,4.67-2.33,7.33-7,8l-31,3
c-4.67,0.67-7-1.67-7-7c-2-14.67-3.33-29.33-4-44c-2-27.33-3.67-55-5-83l-2-20c-0.67-4,1-6,5-6c13.33-1.33,27-2.33,41-3
c6.67,0,9,1,9,9L1020.44,431.36z M2154.44,415.36c0.67,19.33,0.67,38.67,0,58c1.33,9.33-0.67,11-10,11l-28,3c-5.33,0.67-8-1.67-8-7
c-1.33-25.33-3-50.67-5-76l-4-70c-0.67-4.67,1-7,5-7c13.33-1.33,26.67-2.33,40-3c6.67,0,8,1,8,9
C2154.44,360.7,2155.11,388.03,2154.44,415.36z M627.44,756.36c16,18.67,18.67,40.33,12,63c-6,22-17,41-33,57
c-26,27.33-55.67,49.33-89,66c-56.67,30-116.33,50.67-179,62c-44.67,9.33-89.67,15.33-135,18c-14,0.67-28,1-42,1h-30
c-8,0-9.67-2-11-10l-7-97l-19-191l-21-182l-12-97l-13-93c-7.33-51.33-15.67-102.33-25-153c-6.67-41.33-14.33-82.33-23-123
c-1.33-5.33,0.33-8.67,5-10l139-58c8.67-4,17.33-7,26-9c6-1.33,8.67,1,8,7c0,16-0.33,32.33-1,49l-1,13c-1.33,58-1.33,116.33,0,175
c1.33,51.33,3.67,102.67,7,154c5.33,80,13,160.33,21,239c0,8,0.67,8.33,10,7c16.67-2.67,33.33-4,50-4c53.33,0,105.67,6.33,157,19
c44.67,10.67,88.33,25.67,131,45c20.67,10,40,22,58,36C617.11,745.03,622.78,750.36,627.44,756.36z M1754.44,747.36
c20.67,17.33,28,39.67,22,67c-5.33,22-15.33,41.33-30,58c-24,26.67-51.67,48.33-83,65c-60,33.33-124,56-192,68
c-36.67,7.33-73.67,12.67-111,16c-21.33,2-43.67,2.67-67,2h-27c-6,0.67-9-2-9-8c-2-28-4.33-56-7-84l-16-171l-17-149l-21-168
c-3.33-29.33-7.33-58.67-12-88l-18-112c-8-53.33-17.67-106.33-29-159l-1-7c-2-5.33-0.33-8.67,5-10c49.33-20,96.67-42.33,146-61
c13.33-5.33,29.33-11,28,1c-4,37.33-2.67,74-4,110c-1.33,30-1,59.67,1,89c0,8,0,15.67,0,23c0,36,1.33,71.67,4,107
c2,47.33,5,94.67,9,142c2.67,34,5.67,67.67,9,101c1.33,18.67,3.33,37.33,6,56c0,10.67,1.67,10.33,11,9c18-2.67,36-4,54-4
c62.67,1.33,124,10.67,184,28c40.67,10.67,80,26,118,46C1724.11,723.7,1739.78,734.7,1754.44,747.36z M308.44,923.36
c15.33-8.67,41-27.17,77-55.5s58.33-47.5,67-57.5c-54-24-110-45.33-168-64L308.44,923.36z M1585.44,815.36c2.67-2.67,2.33-5-1-7
l-24-10c-42-18-84.33-34-127-48l-6-2c-2-0.67-4.33-0.33-7,1l24,173c2.67,0,4.67-0.67,6-2c39.33-28,78.33-57.33,117-88
C1573.44,827.03,1579.44,821.36,1585.44,815.36z" fill="#FB7299"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M139.264 529.152a27.136 27.136 0 0 1-14.592-2.816A32 32 0 0 1 113.152 486.4l130.816-236.032a28.416 28.416 0 1 1 49.152 28.928l-130.56 235.52a25.6 25.6 0 0 1-23.296 14.336" fill="#F99E4A"></path><path d="M380.416 529.152a34.56 34.56 0 0 1-25.6-14.592l-131.328-235.264a30.208 30.208 0 0 1 11.52-37.632 25.6 25.6 0 0 1 37.888 11.52l130.816 235.264a25.6 25.6 0 0 1-11.776 37.888c-2.816 0-8.704 2.816-11.52 2.816m261.376 0a25.6 25.6 0 0 1-14.336-2.816 29.44 29.44 0 0 1-11.776-37.888l130.816-235.264a28.928 28.928 0 0 1 37.632-11.52 29.44 29.44 0 0 1 11.776 37.632L665.6 514.56a25.6 25.6 0 0 1-23.296 14.592" fill="#F99E4A"></path><path d="M883.968 529.152a34.56 34.56 0 0 1-25.6-14.336l-130.56-235.52a27.392 27.392 0 0 1 11.52-37.632 25.6 25.6 0 0 1 37.888 11.52l130.56 235.52a25.6 25.6 0 0 1-11.776 37.632c-2.816 0-8.704 2.816-11.776 2.816" fill="#F99E4A"></path><path d="M801.536 241.664l-130.56-51.2A129.536 129.536 0 0 0 640 183.552H380.416a153.6 153.6 0 0 0-32 5.632L217.6 241.664A21.248 21.248 0 0 0 226.304 281.6h569.6a21.248 21.248 0 0 0 5.632-40.704M458.752 281.6v520.704a51.2 51.2 0 0 0 104.704 0V281.6z" fill="#FFD043"></path><path d="M561.152 183.296A51.2 51.2 0 0 0 512 139.776a52.992 52.992 0 0 0-51.2 46.336h102.4z" fill="#FFD043"></path><path d="M755.2 877.824H267.008A41.472 41.472 0 0 1 230.4 816.896l55.04-122.112a44.8 44.8 0 0 1 37.888-25.6h373.76a37.12 37.12 0 0 1 37.632 25.6L790.016 819.2a37.888 37.888 0 0 1-34.816 58.112" fill="#F99E4A"></path><path d="M900.352 494.336a9.216 9.216 0 0 1 8.704 8.704 148.48 148.48 0 0 1-296.192 0 7.68 7.68 0 0 1 8.704-8.704z m-502.528 0a9.216 9.216 0 0 1 8.704 8.704 151.808 151.808 0 0 1-148.224 142.336 150.016 150.016 0 0 1-148.224-142.336 7.68 7.68 0 0 1 8.704-8.704z" fill="#FFD043"></path></svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#23c9ed" d="M837,192c1.3-8,10-14,18-10c46.7,24,75,70.7,75,124v299c-1.3,78.7-60.3,137.7-139,139H352
c-53.3,0-100-28-124-76c-4-6.7,2-15.7,10-17h506c53.3-1.3,91.7-39.7,93-93V192z M93,0h605c50.7,0,91.7,41,93,93v419
c-1.3,50.7-42.3,91.7-93,93H93c-52-1.3-93-42.3-93-93V93C0,41,41,0,93,0z M508,321c12-9.3,12-28.7,0-38L339,165
c-16-10.7-35.7,0.3-37,19v236c1.3,18.7,21,29.7,37,19L508,321z"/>
</svg>

Before

Width:  |  Height:  |  Size: 470 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#0BA395" d="M107.7,3.2C45,16.5,1,68.8-0.3,134.2v582c1.3,65.3,45.3,117.7,108,131V3.2z M625.7,0.2h-452v850h452
c76-2.7,132.7-58,134-134v-582C758.4,58.2,701.7,2.8,625.7,0.2z M385.7,117.2c0-18.7,14.3-33,33-33h213c18.7,0,31.7,14.3,33,33v237
c-0.7,13.3-6.7,23.3-18,30c-10.7,4-23.3,4.7-34-2l-92-63l-82,62c-22.7,14.7-51.7-0.3-53-27V117.2z M670.7,704.2
c0,18.7-14.3,33-33,33h-354c-42.1,0-41.2-63.1,0-66h354C656.4,672.5,670.7,685.5,670.7,704.2z M670.7,555.2c0,18.7-14.3,33-33,33
h-354c-42.1,0-41.2-63.1,0-66h354C656.4,523.5,670.7,536.5,670.7,555.2z"/>
</svg>

Before

Width:  |  Height:  |  Size: 630 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M472,244h119c47.06,0,47.06-65,0-65H281c-45.49,0-45.49,65,0,65h125v60c-112,8-192,93-196,205v44
c3.12,40.52,62.97,42.37,66,0v-44c1.33-74.67,55.33-133.33,130-140v305c2.98,41.69,63.02,41.69,66,0V369
c74.67,6.67,128.67,65.33,130,140v44c0,41.73,65,41.73,65,0v-44c-2.67-112-82.67-197-196-205v-60H472z M439,878
c-124-3.33-227.33-46.33-310-129S3.33,563,0,439c3.33-124,46.33-227.33,129-310S315,3.33,439,0c124,3.33,227.33,46.33,310,129
s125.67,186,129,310c-3.33,124-46.33,227.33-129,310S563,874.67,439,878z" fill="#FB7299"/>
</svg>

Before

Width:  |  Height:  |  Size: 599 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#F3A034" d="M646.6,837.1c-50.8,0-119.6-23.4-204.4-69.5l-0.2-0.1l-0.2,0.1c-84.7,45.8-153.4,69.1-204.2,69.1
c-36,0-63.8-11.7-82.8-34.6c-17.8-21.5-28.2-53.6-31.1-95.4c-2.9-41.8,1.7-94.5,13.8-156.5l0.1-0.3l-0.2-0.2
c-53.4-49.2-91.6-94.1-113.6-133.2c-21.9-39.1-28.3-73.6-19-102.7c9.4-29.2,35-53.7,76.1-72.8c41.2-19.1,99.1-33.4,172.1-42.4
l0.3,0l0.1-0.2c31.3-65.6,63.1-115.6,94.4-148.4C379,17.1,410.7,0.5,441.9,0.5c31.2,0,62.9,16.6,94.1,49.3
c31.3,32.8,63.1,82.7,94.4,148.4l0.1,0.2l0.3,0c73.2,9,131.2,23.3,172.5,42.4c41.2,19.1,66.9,43.6,76.2,72.9
c9.3,29,2.9,63.6-19.1,102.6c-22.1,39.2-60.4,84-113.9,133.2l-0.2,0.2l0.1,0.3c12,62.2,16.7,115,13.8,156.9
c-2.9,41.8-13.4,74-31.2,95.5C710.1,825.4,682.4,837.1,646.6,837.1z"/>
</svg>

Before

Width:  |  Height:  |  Size: 810 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 823">
<path fill="#1497C7" d="M892,329c-2-74-28.8-135.8-80.5-185.5C759.8,93.8,695,68,617,66H343c-78,2-142.8,27.8-194.5,77.5
S70.3,255,69,329c1.3,74.7,27.8,136.8,79.5,186.5S265,591,343,593h79l32,107l117-107h46c78-2,142.8-27.8,194.5-77.5
C863.2,465.8,890,403.7,892,329z M343,0h274c96.7,2.7,177.3,35,242,97s98.3,139.3,101,232c-2.7,93.3-36.3,171-101,233
s-145.3,94.3-242,97h-19L419,823l-49-164h-27c-96.7-2.7-177.3-35-242-97S2.7,422.3,0,329c2.7-92.7,36.3-170,101-232S246.3,2.7,343,0
z"/>
</svg>

Before

Width:  |  Height:  |  Size: 550 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 844 844">
<path fill="#A0A0A0" d="M269,697V286c0-12,9.67-22,23-22c13.33,0,30,10,30,22v411c0,13.33-16.67,23-30,23
C278.67,720,269,710.33,269,697z M391,697V286c0-27.72,50.75-29.26,54,0v411c-1.33,13.33-16.67,23-30,23
C401.67,720,392.33,710.33,391,697z M522,697V286c0-12,9.67-22,23-22s30,10,30,22v411c0,13.33-16.67,23-30,23S522,710.33,522,697z
M644,759l40-565H164l36,549c0,20,7.33,44.33,46,47h375C634.33,790,641.33,781.67,644,759z M622,844H230
c-54.67-2.67-82.67-39.33-84-70l-36-580H23c-12,0-23-10.67-23-24c0-13.33,9.67-30,23-30h215V55c1.33-38.67,30.33-55,61-55h246
c13.33,0,27.33,1.33,46,24c14.67,17.33,15,27.33,15,38v78h215c13.33,0,23,16.67,23,30c0,13.33-11,24-23,24h-86l-39,597
C694.67,807,672.67,841.33,622,844z M530,55H318c-18.67,0-27.33,11.67-26,29v56h260V84C552,65.33,539.33,55,530,55z"/>
</svg>

Before

Width:  |  Height:  |  Size: 858 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#1497C7" d="M512,0C366.7,3.3,245.8,53.2,149.5,149.5S3.3,366.7,0,512c3.3,145.3,53.2,266.2,149.5,362.5
S366.7,1020.7,512,1024c145.3-3.3,266.2-53.2,362.5-149.5S1020.7,657.3,1024,512c-3.3-145.3-53.2-266.2-149.5-362.5S657.3,3.3,512,0
z M326,463c4-4,8.7-6,14-6h81V311c0-10.7,7.3-18,18-18h146c10.7,0,18,7.3,18,18v146h81c17.3,1.3,23.7,20,13,32L524,647
c-6.7,6.7-17.3,6.7-24,0L327,489C320.3,482.3,319.3,471,326,463z M713,731c0,10.7-8.7,19-18,19H329c-9.3,0-18-8.3-18-19v-36
c0-10.7,7.3-18,18-18h366c10.7,0,18,7.3,18,18V731z"/>
</svg>

Before

Width:  |  Height:  |  Size: 605 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M661.53,260c-42.67-6.67-77.67-33.33-95-72l-72-151c-25.33-49.33-86.67-49.33-116,0l-68,151
c-20,38.67-53.67,65.33-95,72l-162,25c-52,10.67-71,65.67-35,107l122,126c29.33,28,40.33,68.67,35,110l-28,175
c-6.67,56,43.33,90,94,66l137-75c38.67-22.67,84.33-22.67,123,0l138,75c49.33,24,96.67-10,94-66l-32-175c-5.33-41.33,5.67-82,35-110
l122-126c36-41.33,17-96.33-35-107L661.53,260z" fill="#FB7299"/>
</svg>

Before

Width:  |  Height:  |  Size: 472 B

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 244.04 55.01" enable-background="new 0 0 244.04 55.01" xml:space="preserve">
<path fill="#19AAD5" d="M5.39,55.01h233.26c2.98,0,5.39-2.41,5.39-5.39V5.39c0-2.98-2.41-5.39-5.39-5.39L5.39,0
C2.41,0,0,2.41,0,5.39l0,44.22C0,52.6,2.41,55.01,5.39,55.01z"/>
<path fill="#FFFFFF" d="M79.26,24.77V8.37c0.08-1.52,1.22-2.68,2.73-2.68s2.66,1.16,2.73,2.68v16.4h16.4
c1.52,0.08,2.68,1.22,2.68,2.73c0,1.52-1.16,2.66-2.68,2.73h-16.4v16.4c-0.08,1.52-1.22,2.68-2.73,2.68s-2.66-1.16-2.73-2.68v-16.4
h-16.4c-1.52-0.08-2.68-1.22-2.68-2.73c0-1.52,1.16-2.66,2.68-2.73H79.26z"/>
<g>
<path fill="#FFFFFF" d="M105.14,44.25c9.46-3.33,15.11-8.12,16.93-14.37h-16.13V26.9h16.71c0.05-0.56,0.08-3.05,0.08-7.48h-14.45
v-2.98h9.5c-2.27-2.47-4.21-4.45-5.82-5.95l2.3-2.04c2.27,2.01,4.34,3.93,6.22,5.76l-2.53,2.23h9.44c2.05-2.86,3.85-5.53,5.4-8.03
l3.29,1.8c-1.82,2.3-3.5,4.37-5.03,6.23h10.02v2.98h-14.97c0,3.84-0.02,6.33-0.06,7.48h17.36v2.98h-16.81
c3.1,6.57,8.94,11.07,17.52,13.51c-1.08,1.1-2.06,2.15-2.93,3.17c-8.13-3.13-13.65-7.84-16.57-14.13
c-2.15,6.11-7.87,10.99-17.16,14.64C106.75,46.18,105.99,45.24,105.14,44.25z"/>
<path fill="#FFFFFF" d="M147.35,19.11c1.9,1.31,4.24,3.08,7.01,5.33c-0.98,1.1-1.76,1.94-2.34,2.54c-2.77-2.51-4.99-4.39-6.65-5.64
L147.35,19.11z M150.92,30.39c1.08,0.47,2.13,0.9,3.13,1.29c-1.45,4.59-2.97,9.61-4.55,15.04l-3.41-1.17
C147.75,41.08,149.36,36.03,150.92,30.39z M148.86,8.97c2.56,1.91,4.84,3.81,6.85,5.72c-0.9,0.89-1.69,1.68-2.38,2.39
c-1.42-1.49-3.59-3.47-6.49-5.95L148.86,8.97z M155.15,41.67h13.3V30.55h-10.29v-2.98h10.29v-9.48h-11.4v-2.98h12.63
c-1.24-1.94-2.51-3.72-3.8-5.33l2.61-1.64c1.77,2.04,3.17,3.84,4.2,5.4l-2.47,1.57h13.29v2.98h-11.72v9.48h10.29v2.98h-10.29v11.12
h12.83v2.98h-29.46V41.67z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#29B28A" d="M632.4,855h35c60.4,0,112-51,112-112V518c1.3-32,24-54.7,56-56h4
c21.3,0,37.3-13,44-33c4-17.3-1-33.7-13-47l-349-349c-46.7-44-112.3-44-159,0l-349,349c-14.7,14.7-17.3,35.3-8,54
c9.3,14.7,23.7,23,41,23h3c32,1.3,54.7,25.3,56,56v225c1.3,64,48,110.3,112,113h35c12-1.3,21.7-9,23-21c12-86.7,79-147.7,167-149
c88,1.3,156,62.3,168,149C610.4,845.3,620.4,855,632.4,855z"/>
</svg>

Before

Width:  |  Height:  |  Size: 457 B

View File

@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M250,767.13v-551h4l154-189c33.33-33.33,86-36.67,122-6c18.67,18.67,30.67,43,28,71l-6,124h235
c29.33,0,56.33,13,75,37c16,22.67,19.67,52.67,13,78l-100,328c-17.33,62.67-68.33,104-135,108H250z M193,767.13h-80
c-61.82,4.12-110.87-48.32-113-108v-331c0-41.33,21-77.33,57-96c18.67-9.33,37.33-13.33,56-16h80V767.13z" fill="#FB7299"/>
</svg>

Before

Width:  |  Height:  |  Size: 407 B

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M392.448 275.911111a92.416 92.416 0 1 1-184.832 0 92.416 92.416 0 0 1 184.832 0" fill="#23ADE5"></path><path d="M826.624 464.583111l-63.744 36.864v-48.64a72.206222 72.206222 0 0 0-71.68-71.936H190.72a72.192 72.192 0 0 0-71.936 71.936V748.231111a71.936 71.936 0 0 0 71.936 71.936H691.2a71.936 71.936 0 0 0 71.936-71.936v-23.808l63.488 37.888a51.2 51.2 0 0 0 76.8-44.544V508.871111a51.2 51.2 0 0 0-76.8-44.288M572.928 369.351111c79.459556 0.142222 143.985778-64.156444 144.128-143.616 0.142222-79.459556-64.156444-143.985778-143.616-144.128-79.260444-0.142222-143.701333 63.857778-144.128 143.104-0.426667 79.459556 63.644444 144.213333 143.104 144.64h0.512" fill="#48CFE5"></path><path d="M425.216 512.967111l124.16 71.936a25.6 25.6 0 0 1 0 42.496l-124.16 71.68a25.6 25.6 0 0 1-37.12-21.248V534.471111a25.6 25.6 0 0 1 37.12-21.504" fill="#FDDE80"></path></svg>

Before

Width:  |  Height:  |  Size: 959 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M128 256m25.6 0l716.8 0q25.6 0 25.6 25.6l0 512q0 25.6-25.6 25.6l-716.8 0q-25.6 0-25.6-25.6l0-512q0-25.6 25.6-25.6Z" fill="#3DA9D3"></path><path d="M153.6 256h153.6v563.2H153.6a25.6 25.6 0 0 1-25.6-25.6V281.6a25.6 25.6 0 0 1 25.6-25.6zM870.4 256h-153.6v563.2h153.6a25.6 25.6 0 0 0 25.6-25.6V281.6a25.6 25.6 0 0 0-25.6-25.6z" fill="#7DD3E0"></path><path d="M768 320m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M768 448m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M768 576m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M768 704m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M576 180.736c8.7808-2.6112 15.8976-1.92 21.3504 2.0736 5.4784 3.9936 11.008 9.8304 16.64 17.4592 5.6064 7.6544 12.544 16.256 20.7616 25.856 8.2432 9.5744 19.456 18.5088 33.6896 26.7776 12.2368 7.68 22.9632 12.9536 32.2048 15.7696l25.9584 7.8592c8.2176 2.432 16.128 5.5296 23.6544 9.2672 0 0 17.7408 9.984 25.5232 20.48 8.1152 10.9056 14.8736 19.6608 16.6144 30.976 1.7152 11.3408 1.6128 21.9136-0.4608 31.6928a72.7296 72.7296 0 0 1-9.5744 24.576c-4.2752 6.5792-7.8592 9.9328-10.752 9.9328-2.8672 0.0256-5.4016-1.6128-7.6032-5.0432-2.2272-3.3792-3.84-9.984-4.864-19.7632-1.6896-15.872-6.656-27.0336-14.976-33.4592-8.32-6.4256-21.3504-9.984-39.1424-10.7264a96.0512 96.0512 0 0 1-48.9216-15.616c-12.3648-8.0384-24.064-16.9984-34.9696-26.8032-8.8832-7.3728-15.7952-9.5488-20.8896-6.2976-4.992 3.2256-7.5776 8.1152-7.7312 14.7456l-0.5632 26.752-6.7072 273.792-0.7936 35.4048c0.1536 9.856-1.664 21.1968-5.4272 33.9968-3.7888 12.8-10.6752 25.2928-20.6592 37.4528-9.9328 12.16-23.0912 23.2192-39.4752 33.2288s-36.5824 17.3568-60.5952 22.0672c-24.448 4.7616-46.4128 3.584-65.8944-3.5072-19.456-7.0912-34.3808-17.4336-44.7744-31.0272-10.24-12.928-15.4368-29.5936-14.7712-47.5136 0.6912-18.048 8.8576-36.0448 24.4736-53.9648 15.616-17.92 32.4352-31.2832 50.432-40.1152a198.8096 198.8096 0 0 1 51.8144-17.7152 178.8416 178.8416 0 0 1 44.3136-3.0208c13.0048 1.0496 22.5792 2.3808 28.7488 3.9424 0 0 6.4512-280.1664 8.2944-341.6064 0.2304-12.1088 3.584-22.3232 9.9328-30.976 6.4-8.5504 14.7712-14.208 25.1392-16.9472z m160.9216 288.1792a12.8 12.8 0 0 1 0.3584 2.9696v40.96l41.728-6.912a12.8 12.8 0 0 1 14.8992 12.5952v15.0016a12.8 12.8 0 0 1-10.7008 12.6464l-45.952 7.6288 0.0256 45.3632a12.8 12.8 0 0 1-9.8304 12.4416l-15.36 3.6608a12.8 12.8 0 0 1-15.7696-12.4416V560.64l-41.1136 6.8608a12.8 12.8 0 0 1-14.8992-12.6208v-15.0016a12.8 12.8 0 0 1 10.7008-12.6464l45.312-7.552v-44.1344a12.8 12.8 0 0 1 9.8304-12.4672l15.36-3.6352a12.8 12.8 0 0 1 15.4112 9.472z" fill="#FFD469"></path><path d="M179.2 320m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M179.2 448m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M179.2 576m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M179.2 704m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path></svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 770">
<path d="M352,0h192c36,1.33,62.67,28,64,64v704H288V64C289.33,28,316,1.33,352,0z M64,256h160v512H0V320
C1.33,284,28,257.33,64,256z M672,320h160c36,1.33,62.67,28,64,64v384H672V320z" fill="#00a1d6"/>
</svg>

Before

Width:  |  Height:  |  Size: 268 B

Some files were not shown because too many files have changed in this diff Show More