From b85e835ce76b60e83589099a76641c2ec4e5566b Mon Sep 17 00:00:00 2001 From: SocialSisterYi <1440239038@qq.com> Date: Wed, 22 Feb 2023 00:56:04 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=E8=B0=83=E6=95=B4=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/vuepress-deploy.yml | 2 +- .gitignore | 7 +- .vuepress/config.js | 27 +- .vuepress/public/logo.png | Bin 405671 -> 0 bytes APP_widget/splash.md | 572 -- README.md | 341 +- album/action.md | 176 - album/activity_list.md | 152 - album/info.md | 249 - album/list.md | 2442 -------- album/recommend_author.md | 171 - article/articles.md | 315 - article/category.md | 81 - article/info.md | 186 - article/like_coin_fav.md | 178 - article/list.md | 677 --- audio/coin&fav.md | 152 - audio/info.md | 432 -- audio/music_list.md | 790 --- audio/musicstream_url.md | 282 - audio/status_number.md | 67 - bangumi/follow.md | 129 - bangumi/info.md | 1029 ---- bangumi/timeline.md | 804 --- bangumi/videostream_url.md | 366 -- blackroom/banlist.md | 304 - blackroom/jury/action.md | 367 -- blackroom/jury/base_info.md | 338 -- blackroom/jury/judgement_info.md | 998 ---- broadcast/readme.md | 184 - broadcast/video_room.md | 152 - cheese/info.md | 645 -- cheese/videostream_url.md | 226 - clientinfo/client_info.md | 95 - clientinfo/ip.md | 66 - comment/action.md | 544 -- comment/list.md | 5853 ------------------ comment/readme.md | 336 -- contents.md | 184 - creativecenter/railgun.md | 275 - creativecenter/statistics&data.md | 811 --- danmaku/action.md | 822 --- danmaku/buzzword.md | 513 -- danmaku/config.md | 75 - danmaku/danmaku_proto.md | 111 - danmaku/danmaku_view_proto.md | 298 - danmaku/danmaku_xml.md | 153 - danmaku/history.md | 246 - danmaku/snapshot.md | 92 - dynamic/action.md | 109 - dynamic/atlist.md | 146 - dynamic/basicInfo.md | 1595 ----- dynamic/card_info.md | 487 -- dynamic/content.md | 1039 ---- dynamic/get_dynamic_detail.md | 601 -- dynamic/publish.md | 881 --- dynamic/tag_dynamics.md | 7934 ------------------------- electric/Bcoin.md | 331 -- electric/WeChat&Alipay.md | 207 - electric/charge_list.md | 530 -- electric/charge_msg.md | 303 - emoji/action.md | 110 - emoji/list.md | 646 -- fav/action.md | 482 -- fav/info.md | 415 -- fav/list.md | 570 -- garb/color.md | 316 - garb/skin.md | 272 - history&toview/history.md | 852 --- history&toview/toview.md | 470 -- imgs/2233login.png | Bin 45074 -> 0 bytes imgs/activit.svg | 3 - imgs/add.svg | 20 - imgs/akari.jpg | Bin 8992 -> 0 bytes imgs/ban.png | Bin 5472 -> 0 bytes imgs/battery-100.png | Bin 6261 -> 0 bytes imgs/bili_icon1.woff | Bin 9196 -> 0 bytes imgs/bili_icon2.woff2 | Bin 4740 -> 0 bytes imgs/bili_icon3.woff2 | Bin 15816 -> 0 bytes imgs/bilibili.svg | 44 - imgs/blackroom.svg | 1 - imgs/channel.svg | 6 - imgs/class.svg | 7 - imgs/coin.svg | 7 - imgs/collect.svg | 9 - imgs/comment.svg | 7 - imgs/delete.svg | 9 - imgs/download.svg | 7 - imgs/fav.svg | 6 - imgs/follow.svg | 23 - imgs/history.png | Bin 2400 -> 0 bytes imgs/home.svg | 6 - imgs/like.svg | 5 - imgs/live.svg | 1 - imgs/loadTV.gif | Bin 10013 -> 0 bytes imgs/logo.png | Bin 257403 -> 0 bytes imgs/logo2.jpg | Bin 17236 -> 0 bytes imgs/musicplus.svg | 1 - imgs/ploading.gif | Bin 4610 -> 0 bytes imgs/ranking.svg | 4 - imgs/read.svg | 1 - imgs/relation.svg | 10 - imgs/share.svg | 5 - imgs/sponsorQR.jpg | Bin 706776 -> 0 bytes imgs/sub.svg | 5 - imgs/tebietuijian.svg | 1 - imgs/topic.svg | 1 - imgs/toview.png | Bin 724 -> 0 bytes imgs/tuiguang.svg | 1 - imgs/up_face.jpg | Bin 51444 -> 0 bytes imgs/video_up.svg | 6 - imgs/zone/ad.svg | 14 - imgs/zone/animal.svg | 11 - imgs/zone/anime.svg | 16 - imgs/zone/car.svg | 20 - imgs/zone/cinephile.svg | 14 - imgs/zone/comic.svg | 20 - imgs/zone/dance.svg | 10 - imgs/zone/digital.svg | 13 - imgs/zone/documentary.svg | 31 - imgs/zone/douga.svg | 14 - imgs/zone/ent.svg | 17 - imgs/zone/fashion.svg | 11 - imgs/zone/food.svg | 32 - imgs/zone/game.svg | 9 - imgs/zone/guochuang.svg | 11 - imgs/zone/information.svg | 17 - imgs/zone/kichiku.svg | 16 - imgs/zone/knowledge.svg | 18 - imgs/zone/life.svg | 8 - imgs/zone/movie.svg | 11 - imgs/zone/music.svg | 11 - imgs/zone/sports.svg | 8 - imgs/zone/tech.svg | 12 - imgs/zone/teleplay.svg | 11 - live/info.md | 971 --- live/live_area.md | 214 - live/live_stream.md | 160 - live/manage.md | 266 - live/message_stream.md | 2336 -------- live/redpocket.md | 130 - live/user.md | 363 -- login/exit.md | 72 - login/login_action/QR.md | 636 -- login/login_action/SMS.md | 258 - login/login_action/password.md | 499 -- login/login_action/readme.md | 99 - login/login_info.md | 569 -- login/login_notice.md | 74 - login/member_center.md | 675 --- manga/Activity.md | 79 - manga/ClockIn.md | 217 - manga/Comic.md | 4223 ------------- manga/Download.md | 256 - manga/Season.md | 439 -- manga/User.md | 730 --- manga/index_file.md | 277 - manga/light_card.md | 204 - manga/point_shop.md | 451 -- message/msg.md | 65 - message/private_msg.md | 374 -- mkdocs/mkdocs.yml | 8 - newbie_exam/action.md | 456 -- newbie_exam/fetch.md | 263 - newbie_exam/info.md | 556 -- note/action.md | 135 - note/info.md | 315 - note/list.md | 660 -- note/readme.md | 159 - other/API_sign.md | 84 - other/bvid_desc.md | 390 -- other/errcode.md | 65 - other/picture.md | 44 - other/time_stamp.md | 79 - ranking&dynamic/85videos.md | 199 - ranking&dynamic/dynamic.md | 199 - ranking&dynamic/popular.md | 1298 ---- ranking&dynamic/ranking.md | 959 --- search/hot.md | 569 -- search/search_request.md | 1443 ----- search/search_response.md | 778 --- search/suggest.md | 185 - user/check_nickname.md | 137 - user/contract.md | 131 - user/info.md | 1229 ---- user/register.md | 102 - user/relation.md | 2450 -------- user/space.md | 4832 --------------- user/status_number.md | 311 - video/appeal.md | 306 - video/attribute_data.md | 71 - video/info.md | 3373 ----------- video/interact_video.md | 375 -- video/like_coin_fav.md | 830 --- video/online.md | 146 - video/pbp.md | 75 - video/recommend.md | 294 - video/report.md | 149 - video/snapshot.md | 329 - video/status_number.md | 202 - video/tags.md | 316 - video/video_zone.md | 318 - video/videostream_url.md | 1288 ---- vip/action.md | 52 - vip/center.md | 2079 ------- vip/clockin.md | 68 - vip/info.md | 120 - web_widget/404_manga.md | 189 - web_widget/zone_upload.md | 100 - 209 files changed, 193 insertions(+), 85322 deletions(-) delete mode 100644 .vuepress/public/logo.png delete mode 100644 APP_widget/splash.md delete mode 100644 album/action.md delete mode 100644 album/activity_list.md delete mode 100644 album/info.md delete mode 100644 album/list.md delete mode 100644 album/recommend_author.md delete mode 100644 article/articles.md delete mode 100644 article/category.md delete mode 100644 article/info.md delete mode 100644 article/like_coin_fav.md delete mode 100644 article/list.md delete mode 100644 audio/coin&fav.md delete mode 100644 audio/info.md delete mode 100644 audio/music_list.md delete mode 100644 audio/musicstream_url.md delete mode 100644 audio/status_number.md delete mode 100644 bangumi/follow.md delete mode 100644 bangumi/info.md delete mode 100644 bangumi/timeline.md delete mode 100644 bangumi/videostream_url.md delete mode 100644 blackroom/banlist.md delete mode 100644 blackroom/jury/action.md delete mode 100644 blackroom/jury/base_info.md delete mode 100644 blackroom/jury/judgement_info.md delete mode 100644 broadcast/readme.md delete mode 100644 broadcast/video_room.md delete mode 100644 cheese/info.md delete mode 100644 cheese/videostream_url.md delete mode 100644 clientinfo/client_info.md delete mode 100644 clientinfo/ip.md delete mode 100644 comment/action.md delete mode 100644 comment/list.md delete mode 100644 comment/readme.md delete mode 100644 contents.md delete mode 100644 creativecenter/railgun.md delete mode 100644 creativecenter/statistics&data.md delete mode 100644 danmaku/action.md delete mode 100644 danmaku/buzzword.md delete mode 100644 danmaku/config.md delete mode 100644 danmaku/danmaku_proto.md delete mode 100644 danmaku/danmaku_view_proto.md delete mode 100644 danmaku/danmaku_xml.md delete mode 100644 danmaku/history.md delete mode 100644 danmaku/snapshot.md delete mode 100644 dynamic/action.md delete mode 100644 dynamic/atlist.md delete mode 100644 dynamic/basicInfo.md delete mode 100644 dynamic/card_info.md delete mode 100644 dynamic/content.md delete mode 100644 dynamic/get_dynamic_detail.md delete mode 100644 dynamic/publish.md delete mode 100644 dynamic/tag_dynamics.md delete mode 100644 electric/Bcoin.md delete mode 100644 electric/WeChat&Alipay.md delete mode 100644 electric/charge_list.md delete mode 100644 electric/charge_msg.md delete mode 100644 emoji/action.md delete mode 100644 emoji/list.md delete mode 100644 fav/action.md delete mode 100644 fav/info.md delete mode 100644 fav/list.md delete mode 100644 garb/color.md delete mode 100644 garb/skin.md delete mode 100644 history&toview/history.md delete mode 100644 history&toview/toview.md delete mode 100644 imgs/2233login.png delete mode 100644 imgs/activit.svg delete mode 100644 imgs/add.svg delete mode 100644 imgs/akari.jpg delete mode 100644 imgs/ban.png delete mode 100644 imgs/battery-100.png delete mode 100644 imgs/bili_icon1.woff delete mode 100644 imgs/bili_icon2.woff2 delete mode 100644 imgs/bili_icon3.woff2 delete mode 100644 imgs/bilibili.svg delete mode 100644 imgs/blackroom.svg delete mode 100644 imgs/channel.svg delete mode 100644 imgs/class.svg delete mode 100644 imgs/coin.svg delete mode 100644 imgs/collect.svg delete mode 100644 imgs/comment.svg delete mode 100644 imgs/delete.svg delete mode 100644 imgs/download.svg delete mode 100644 imgs/fav.svg delete mode 100644 imgs/follow.svg delete mode 100644 imgs/history.png delete mode 100644 imgs/home.svg delete mode 100644 imgs/like.svg delete mode 100644 imgs/live.svg delete mode 100644 imgs/loadTV.gif delete mode 100644 imgs/logo.png delete mode 100644 imgs/logo2.jpg delete mode 100644 imgs/musicplus.svg delete mode 100644 imgs/ploading.gif delete mode 100644 imgs/ranking.svg delete mode 100644 imgs/read.svg delete mode 100644 imgs/relation.svg delete mode 100644 imgs/share.svg delete mode 100644 imgs/sponsorQR.jpg delete mode 100644 imgs/sub.svg delete mode 100644 imgs/tebietuijian.svg delete mode 100644 imgs/topic.svg delete mode 100644 imgs/toview.png delete mode 100644 imgs/tuiguang.svg delete mode 100644 imgs/up_face.jpg delete mode 100644 imgs/video_up.svg delete mode 100644 imgs/zone/ad.svg delete mode 100644 imgs/zone/animal.svg delete mode 100644 imgs/zone/anime.svg delete mode 100644 imgs/zone/car.svg delete mode 100644 imgs/zone/cinephile.svg delete mode 100644 imgs/zone/comic.svg delete mode 100644 imgs/zone/dance.svg delete mode 100644 imgs/zone/digital.svg delete mode 100644 imgs/zone/documentary.svg delete mode 100644 imgs/zone/douga.svg delete mode 100644 imgs/zone/ent.svg delete mode 100644 imgs/zone/fashion.svg delete mode 100644 imgs/zone/food.svg delete mode 100644 imgs/zone/game.svg delete mode 100644 imgs/zone/guochuang.svg delete mode 100644 imgs/zone/information.svg delete mode 100644 imgs/zone/kichiku.svg delete mode 100644 imgs/zone/knowledge.svg delete mode 100644 imgs/zone/life.svg delete mode 100644 imgs/zone/movie.svg delete mode 100644 imgs/zone/music.svg delete mode 100644 imgs/zone/sports.svg delete mode 100644 imgs/zone/tech.svg delete mode 100644 imgs/zone/teleplay.svg delete mode 100644 live/info.md delete mode 100644 live/live_area.md delete mode 100644 live/live_stream.md delete mode 100644 live/manage.md delete mode 100644 live/message_stream.md delete mode 100644 live/redpocket.md delete mode 100644 live/user.md delete mode 100644 login/exit.md delete mode 100644 login/login_action/QR.md delete mode 100644 login/login_action/SMS.md delete mode 100644 login/login_action/password.md delete mode 100644 login/login_action/readme.md delete mode 100644 login/login_info.md delete mode 100644 login/login_notice.md delete mode 100644 login/member_center.md delete mode 100644 manga/Activity.md delete mode 100644 manga/ClockIn.md delete mode 100644 manga/Comic.md delete mode 100644 manga/Download.md delete mode 100644 manga/Season.md delete mode 100644 manga/User.md delete mode 100644 manga/index_file.md delete mode 100644 manga/light_card.md delete mode 100644 manga/point_shop.md delete mode 100644 message/msg.md delete mode 100644 message/private_msg.md delete mode 100644 mkdocs/mkdocs.yml delete mode 100644 newbie_exam/action.md delete mode 100644 newbie_exam/fetch.md delete mode 100644 newbie_exam/info.md delete mode 100644 note/action.md delete mode 100644 note/info.md delete mode 100644 note/list.md delete mode 100644 note/readme.md delete mode 100644 other/API_sign.md delete mode 100644 other/bvid_desc.md delete mode 100644 other/errcode.md delete mode 100644 other/picture.md delete mode 100644 other/time_stamp.md delete mode 100644 ranking&dynamic/85videos.md delete mode 100644 ranking&dynamic/dynamic.md delete mode 100644 ranking&dynamic/popular.md delete mode 100644 ranking&dynamic/ranking.md delete mode 100644 search/hot.md delete mode 100644 search/search_request.md delete mode 100644 search/search_response.md delete mode 100644 search/suggest.md delete mode 100644 user/check_nickname.md delete mode 100644 user/contract.md delete mode 100644 user/info.md delete mode 100644 user/register.md delete mode 100644 user/relation.md delete mode 100644 user/space.md delete mode 100644 user/status_number.md delete mode 100644 video/appeal.md delete mode 100644 video/attribute_data.md delete mode 100644 video/info.md delete mode 100644 video/interact_video.md delete mode 100644 video/like_coin_fav.md delete mode 100644 video/online.md delete mode 100644 video/pbp.md delete mode 100644 video/recommend.md delete mode 100644 video/report.md delete mode 100644 video/snapshot.md delete mode 100644 video/status_number.md delete mode 100644 video/tags.md delete mode 100644 video/video_zone.md delete mode 100644 video/videostream_url.md delete mode 100644 vip/action.md delete mode 100644 vip/center.md delete mode 100644 vip/clockin.md delete mode 100644 vip/info.md delete mode 100644 web_widget/404_manga.md delete mode 100644 web_widget/zone_upload.md diff --git a/.github/workflows/vuepress-deploy.yml b/.github/workflows/vuepress-deploy.yml index a3eb65d..1320fc3 100644 --- a/.github/workflows/vuepress-deploy.yml +++ b/.github/workflows/vuepress-deploy.yml @@ -1,4 +1,4 @@ -name: Build and Deploy +name: deploy and pubish on: [push] jobs: build-and-deploy: diff --git a/.gitignore b/.gitignore index 75edecc..6e13680 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ -mkdocs/html/* -README.md -/.gitignore +mkdocs/html/ /.vuepress/.cache/ /.vuepress/.temp/ /.vuepress/dist/ -.idea /node_modules/ +.idea/ +.vscode/ \ No newline at end of file diff --git a/.vuepress/config.js b/.vuepress/config.js index 1e8c40e..ab7d048 100644 --- a/.vuepress/config.js +++ b/.vuepress/config.js @@ -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'], + } } diff --git a/.vuepress/public/logo.png b/.vuepress/public/logo.png deleted file mode 100644 index c0bf29580773052dc9940ac17b46c8952f1caa1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 405671 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

w`S9#W1c@Tc(+$Hi=K3l+IC@~q|Z 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¬nu`z9^!{N62h`L|GPOI>1v3H2Xw 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 z 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

^Q{6f{D;&-|KhP(gw|IBnZ*Q;VP=eA;QwsL8 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 UH}vQ~{f`~HU}OV diff --git a/APP_widget/splash.md b/APP_widget/splash.md deleted file mode 100644 index 93e62de..0000000 --- a/APP_widget/splash.md +++ /dev/null @@ -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:成功
-3:API校验密匙错误
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-------|--------|--------| -| pull_interval | num | 1800 | 作用尚不明确 | -| forcibly | bool | false | 作用尚不明确 | -| rule | str | order | 作用尚不明确 | -| list | array | 开屏图片列表 | | -| show | array | 默认显示项 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 开屏图片1 | | -| n | obj | 开屏图片(n+1) | | -| …… | obj | …… | …… | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-----|---------------------|-----| -| id | num | 开屏图片id | | -| thumb | str | 开屏图片url | | -| logo_url | str | “bilibili”logo图片url | | - -`data`中的`show`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-------|-----| -| 0 | obj | 套了个娃? | | - -`show`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|--------|--------| -| id | num | 开屏图片id | | -| begin_time | num | 起始时间? | 时间戳 | -| end_time | num | 结束时间? | 时间戳 | -| probability | num | 0 | 作用尚不明确 | -| duration | num | 显示时间? | 单位为毫秒 | - -**示例:** - -```shell -curl -G 'https://app.bilibili.com/x/v2/splash/brand/list' \ ---data-urlencode 'appkey=1d8b6e7d45233436' \ ---data-urlencode 'ts=0' \ ---data-urlencode 'sign=78a89e153cd6231a4a4d55013aa063ce' -``` - -

-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "pull_interval": 1800, - "forcibly": false, - "rule": "order", - "list": [ - { - "id": 10, - "thumb": "http://i0.hdslb.com/bfs/archive/e2d2f57e08b511d1a47203859f7bddb4ef9d4e16.png", - "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" - }, - { - "id": 11, - "thumb": "http://i0.hdslb.com/bfs/archive/fe737da5cdedf9dad038e5fd30e957be8a063bc2.png", - "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" - }, - { - "id": 12, - "thumb": "http://i0.hdslb.com/bfs/archive/574469a4a20f41ba4dc9ecd41d15f94eea875ed9.png", - "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" - }, - { - "id": 13, - "thumb": "http://i0.hdslb.com/bfs/archive/af0f4f611faa34340bd4f91def1973ccbfb8fbb3.png", - "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" - }, - { - "id": 14, - "thumb": "http://i0.hdslb.com/bfs/archive/1d40e975b09d5c87b11b3ae0c9ce6c6b82f63d9e.png", - "logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png" - } - ], - "show": [ - { - "id": 12, - "begin_time": 1597564800, - "end_time": 1630753108, - "probability": 0, - "duration": 700 - } - ] - } -} -``` - -
- -如id=11的图片为: - -![]( 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:成功
-3:API校验密匙错误
-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' -``` - -
-查看响应示例: - -```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" - } -} -``` -
\ No newline at end of file diff --git a/README.md b/README.md index a9a9468..dbd8183 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@

- +

哔哩哔哩-API收集整理

@@ -12,12 +12,15 @@ GitHub forks + + + GitHub license

-

野生API文档

-

不断更新中....

+

野生API文档

+

不断更新中....

本项目旨在对 B站 WEB、APP、TV 等客户端中,散落在世界各地的野生 API 进行收集整理,研究使用方法并对其进行说明,运用了黑箱法、控制变量法、代码逆向分析、拆包及反编译法、网络抓包法等研究办法 @@ -25,11 +28,11 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接口为 WebSocket;REST 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 ) ## 💦交流 - + ⚠注意:开源社群欢迎交流探讨,**拒绝**咨询、**不支持**合作,**黑产号**一经发现立即拉黑并举报相关 SRC @@ -266,7 +271,7 @@ protobuf 序列格式:[传送门](https://www.jianshu.com/p/a24c88c0526a ) WeChat & Alipay: - + OR Aifadian:[https://afdian.net/@ShakaiAneE](https://afdian.net/@ShakaiAneE) diff --git a/album/action.md b/album/action.md deleted file mode 100644 index 774a4ab..0000000 --- a/album/action.md +++ /dev/null @@ -1,176 +0,0 @@ -# 相簿操作 - -- [~~点赞相簿~~](#~~点赞相簿~~) -- [~~收藏相簿~~](#~~收藏相簿~~) -- [取消收藏相簿](#取消收藏相簿) - ---- - -## ~~点赞相簿~~ - -> https://api.vc.bilibili.com/link_draw/v2/Vote/operate - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | ------ | ---------------------- | -| doc_id | num | 相簿id | 必要 | | -| type | num | 操作方式 | 必要 | 1:点赞
2:取消赞 | -| csrf_token | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
1:参数错误
3:未登录
110022:已经操作过了 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---------------------- | -| type | num | 操作方式 | 1:点赞
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "type": 1 - } -} -``` - -
- -## ~~收藏相簿~~ - -> https://api.vc.bilibili.com/user_plus/v1/Fav/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | ------ | ------------ | -| fav_id | num | 相簿id | 必要 | | -| biz_type | num | 2 | 必要 | 作用尚不明确 | -| csrf_token | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:参数错误
-500:未登录
-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' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "OK", - "message": "OK", - "data": [] -} -``` - -
- -## 取消收藏相簿 - -> https://api.vc.bilibili.com/user_plus/v1/Fav/delete - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | ------ | ------------ | -| fav_id | num | 相簿id | 必要 | | -| biz_type | num | 2 | 必要 | 作用尚不明确 | -| csrf_token | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | --------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:参数错误
-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' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "OK", - "message": "OK", - "data": [] -} -``` - -
\ No newline at end of file diff --git a/album/activity_list.md b/album/activity_list.md deleted file mode 100644 index adcb2cc..0000000 --- a/album/activity_list.md +++ /dev/null @@ -1,152 +0,0 @@ -# 相簿活动列表 - -- [获取相簿热门活动列表](#获取相簿热门活动列表) - ---- - -## 获取相簿热门活动列表 - -> https://api.vc.bilibili.com/photo_activity/v2/Activity/list - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------ | --------------------------------------------- | -| type | num | 活动类型 | 非必要 | 0:全部
1:展示类
2:比赛类 | -| biz | num | 分区 | 非必要 | 0:全部
1:画友
2:摄影
默认为0 | -| page_num | num | 页码 | 非必要 | 默认为4 | -| page_size | num | 每页项数 | 非必要 | 默认为0 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------ | -| code | num | 返回值 | 0:成功
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:展示类
2:比赛类 | -| biz | num | 所属分区 | 1:画友
2:摄影 | -| tag | str | 活动关联的TAG | | -| start_time | num | 开始时间 | 时间戳 | -| end_time | num | 结束时间 | 时间戳 | -| desc | str | 备注 | | -| desc_type | num | 活动状态 | 1:已结束
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' -``` - -
-查看响应示例: - - -```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 - } - ] - } -} -``` - -
\ No newline at end of file diff --git a/album/info.md b/album/info.md deleted file mode 100644 index 8a1e46b..0000000 --- a/album/info.md +++ /dev/null @@ -1,249 +0,0 @@ -# 相簿基本信息 - -- [获取相簿详细信息](#获取相簿详细信息) - ---- - -## 获取相簿详细信息 - ->https://api.vc.bilibili.com/link_draw/v1/doc/detail - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ------ | ---- | -| doc_id | num | 目标相簿id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------- | -| code | num | 返回值 | 0:成功
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:无
1:月度大会员
2:年度及以上大会员 | -| vipDueDate | num | 会员到期时间 | 毫秒 时间戳 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 会员开通状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -`data`中的`item`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ----- | ------------------ | ------------------------------------------------------------ | -| biz | num | 相簿分区 | 1:画友
2:摄影
3:日常 | -| doc_id | num | 相簿id | | -| poster_uid | num | 作者mid | | -| category | str | 子分区标识 | cos:cosplay
daily:日常
illustration:插画
comic:漫画
draw:其他
sifu:私服 | -| type | num | 相簿类型 | 0:原创
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)
否则恒为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)
否则恒为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:不设置转载权限
1:开放授权-署名-非商用转载
2:作者授权-署名-非商用转载
3:禁止转载 | - -**示例:** - -查询相簿`id=99184721`的详细信息 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/detail' \ ---data-urlencode 'doc_id=99184721' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```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 - } - } -} -``` - -
\ No newline at end of file diff --git a/album/list.md b/album/list.md deleted file mode 100644 index 763e534..0000000 --- a/album/list.md +++ /dev/null @@ -1,2442 +0,0 @@ -# 相簿列表 - -- [获取画友首页列表](#获取画友首页列表) -- [获取摄影首页列表](#获取摄影首页列表) -- [获取画友列表](#获取画友列表) -- [获取摄影列表](#获取摄影列表) -- [获取指定用户的相簿列表](#获取指定用户的相簿列表) - ---- - -## 获取画友首页列表 - -> https://api.vc.bilibili.com/link_draw/v2/Doc/index - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------ | ------------------------------------------- | -| type | str | 排序方式 | 必要 | recommend:推荐
hot:最热
new:最新 | -| page_num | num | 页码 | 非必要 | 默认为1 | -| page_size | num | 每页项数 | 非必要 | 默认为45 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------ | -| code | num | 返回值 | 0:成功
1:参数错误 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ---------- | ---- | -| items | array | 相簿列表 | | -| total_count | num | 总计条目数 | | - -`data`中的`items`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------- | ---- | -| 0 | obj | 相簿 1 | | -| n | obj | 相簿 (n+1) | | -| …… | obj | …… | …… | - -`data`中的`items`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| user | obj | 作者信息 | | -| item | obj | 相簿信息 | | - -`data`中的`items`数组中的对象中的`user`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------- | ---- | -| uid | num | 作者mid | | -| head_url | str | 头像url | | -| name | str | 昵称 | | - -`data`中的`items`数组中的对象中的`item`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | ---------- | --------------------------------- | -| doc_id | num | 相簿id | | -| poster_uid | num | 作者mid | | -| pictures | array | 相簿图片 | | -| title | str | 标题 | | -| category | str | 子分区名 | | -| upload_time | num | 投稿时间 | 时间戳 | -| already_liked | num | 0 | 作用尚不明确 | -| already_voted | num | 是否已点赞 | 需要登录(Cookie)
否则恒为0 | - -`item`中的`pictures`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------- | ---- | -| 0 | obj | 图片 1 | | -| n | obj | 图片 (n+1) | | -| …… | obj | …… | …… | - -`item`中的`pictures`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ---- | -| img_src | str | 图片url | | -| img_width | num | 图片宽度 | | -| img_height | num | 图片高度 | | - -**示例:** - -用按热度排序方式获取画友首页列表 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v2/Doc/index' \ ---data-urlencode 'type=hot' \ ---data-urlencode 'page_num=1' \ ---data-urlencode 'page_size=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "items": [ - { - "user": { - "uid": 813818, - "head_url": "http://i2.hdslb.com/bfs/face/26b12390399f3e82fb913922938f8a6662d28665.jpg", - "name": "QYS3" - }, - "item": { - "doc_id": 99184721, - "poster_uid": 813818, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/d531e3dae34ef65b44ecdb2914d4cc4f5a4da998.jpg", - "img_width": 1236, - "img_height": 1600, - "img_size": 508 - } - ], - "title": "旅行", - "category": "illustration", - "upload_time": 1606143792, - "already_liked": 0, - "already_voted": 1 - } - }, - { - "user": { - "uid": 813818, - "head_url": "http://i2.hdslb.com/bfs/face/26b12390399f3e82fb913922938f8a6662d28665.jpg", - "name": "QYS3" - }, - "item": { - "doc_id": 99456663, - "poster_uid": 813818, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/cb202244684de733f026240b60ac28bb32ba39fd.jpg", - "img_width": 849, - "img_height": 1200, - "img_size": 513 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/30b8fb29d4ab3237018be7aeddc678fff9860885.jpg", - "img_width": 849, - "img_height": 1200, - "img_size": 513 - } - ], - "title": "大头", - "category": "illustration", - "upload_time": 1606405574, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 2244861, - "head_url": "http://i2.hdslb.com/bfs/face/7fd263548d587465b9f2ad5797e483b6c9182941.jpg", - "name": "Slancx" - }, - "item": { - "doc_id": 186801, - "poster_uid": 2244861, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/vc/cd9443a37ce08ec5b3df65166107f7cae23172e3.jpg", - "img_width": 1939, - "img_height": 2841, - "img_size": 1824 - }, - { - "img_src": "http://i0.hdslb.com/bfs/vc/8c282a9d76372c4ff3cc27b92fbeb2feb6b45767.jpg", - "img_width": 1954, - "img_height": 2902, - "img_size": 1996 - }, - { - "img_src": "http://i0.hdslb.com/bfs/vc/a9e0163001ce17f996b205f95627ea550b5793db.jpg", - "img_width": 3778, - "img_height": 5728, - "img_size": 6070 - } - ], - "title": "边边封面", - "category": "illustration", - "upload_time": 1504255746, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 751036, - "head_url": "http://i2.hdslb.com/bfs/face/be1cf20d37cd104b32e2e935fb2ef65bfe09e2bc.jpg", - "name": "洛书23333333" - }, - "item": { - "doc_id": 1091581, - "poster_uid": 751036, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/e78d3f6bbc487a003a3a72677c1975f781ac2090.jpg", - "img_width": 1289, - "img_height": 1108, - "img_size": 188 - } - ], - "title": "青鸟", - "category": "illustration", - "upload_time": 1512041349, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 21833522, - "head_url": "http://i2.hdslb.com/bfs/face/9037fc1027d780083ecc2e818b512b69b9267e7c.jpg", - "name": "欧阳鹏杰-OY" - }, - "item": { - "doc_id": 835730, - "poster_uid": 21833522, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/vc/acb88974c768aa24c092927ae59291023d55f175.jpg", - "img_width": 1200, - "img_height": 832, - "img_size": 914 - }, - { - "img_src": "http://i0.hdslb.com/bfs/vc/9dff2455d595835c8a214d73f3cf10633304acbe.jpg", - "img_width": 3000, - "img_height": 2000, - "img_size": 2305 - }, - { - "img_src": "http://i0.hdslb.com/bfs/vc/643f775358085c55b598b1d6f5941ea0114344ea.jpg", - "img_width": 1494, - "img_height": 1000, - "img_size": 475 - } - ], - "title": "OY超写实钢笔画:轨迹", - "category": "illustration", - "upload_time": 1509533004, - "already_liked": 0, - "already_voted": 0 - } - } - ] - } -} -``` - -
- -## 获取摄影首页列表 - -> https://api.vc.bilibili.com/link_draw/v2/Photo/index - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------ | --------------- | -| type | str | 排序方式 | 必要 | recommend:推荐 | -| page_num | num | 页码 | 非必要 | 默认为1 | -| page_size | num | 每页项数 | 非必要 | 默认为45 | - -**json回复:** - -见[获取画友首页列表](#获取画友首页列表)中的响应内容 - -**示例:** - -用推荐方式获取画友首页列表 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v2/Photo/index' \ ---data-urlencode 'type=recommend' \ ---data-urlencode 'page_num=1' \ ---data-urlencode 'page_size=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "items": [ - { - "user": { - "uid": 2487587, - "head_url": "https://i0.hdslb.com/bfs/face/4cd0d05708c4826737eef2cf3c5cb3c5361a2a2a.jpg", - "name": "是茶茶茶茶子呀" - }, - "item": { - "doc_id": 1164937, - "poster_uid": 2487587, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/07019ac09fa0bc63a6403eb28db1222792ab4768.jpg", - "img_width": 2048, - "img_height": 3623, - "img_size": 3501 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/469cdb91f88822cbaf9639b2fa12b0a481e3ac60.jpg", - "img_width": 2048, - "img_height": 3072, - "img_size": 3173 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/61d5a369f93debbc3187026fd35df8f994156f3b.jpg", - "img_width": 2048, - "img_height": 1365, - "img_size": 1788 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/39f4bf47a96842a5834e5a49420fbf960bc7f5b7.jpg", - "img_width": 2048, - "img_height": 1365, - "img_size": 2046 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/4f14ad7008f0b5ce3a99c4234543f8ee05ecbfd8.jpg", - "img_width": 2048, - "img_height": 1365, - "img_size": 2154 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/6aebb9afb4139b8a83da8f276a20ab9201b29bb9.jpg", - "img_width": 2048, - "img_height": 3072, - "img_size": 3109 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/1942e0ffd95283898b0ee0fa5e236cdf146cf492.jpg", - "img_width": 2048, - "img_height": 1365, - "img_size": 1342 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/02e83961560492ae947347b2c49ae0aad305790b.jpg", - "img_width": 2048, - "img_height": 1365, - "img_size": 1537 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/8cadaf8660136fae7f75cb35b56fd6b39fe4913c.jpg", - "img_width": 2048, - "img_height": 3072, - "img_size": 3430 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/1ac1fdbb883b68a65d5e575a43c68c56afa98b91.jpg", - "img_width": 2048, - "img_height": 3072, - "img_size": 4446 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/352242d86a6689fb9935a76360ddc010edc844ea.jpg", - "img_width": 2048, - "img_height": 1365, - "img_size": 1443 - } - ], - "title": "COS 明日香", - "category": "cos", - "upload_time": 1512184831, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 13104471, - "head_url": "https://i1.hdslb.com/bfs/face/af36442eafccc5b743cc1aff7922d84fd9279005.jpg", - "name": "Shika小鹿鹿鹿" - }, - "item": { - "doc_id": 1225984, - "poster_uid": 13104471, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/6ba1d9a136566c21a3950c8707a6c3b3121b81bb.jpg", - "img_width": 1728, - "img_height": 1080, - "img_size": 315 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/be5d659cde3b17c8ec60db503e33769a6a0183ae.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 348 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/14676962db356877a81b175024da24230305688e.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 256 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/ee3f7b04f17c2b612311b145a7dde5bf782e91ae.jpg", - "img_width": 1728, - "img_height": 1080, - "img_size": 242 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/88e88b000379d0e51346e74d84dfc3952f17d34b.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 312 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/16342927703a298024fce2e0a16018bdf9f3e634.jpg", - "img_width": 1728, - "img_height": 1080, - "img_size": 318 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/1098a86a0b186840b4eec74cae6a92b16dcfaf5c.jpg", - "img_width": 1728, - "img_height": 1080, - "img_size": 288 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/7bd01b575e391f218a4c86e04964fab514aed2b7.jpg", - "img_width": 1728, - "img_height": 1080, - "img_size": 336 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/2aca94992789eb6ea35a4a398f0f98c83ac48449.jpg", - "img_width": 1620, - "img_height": 1080, - "img_size": 302 - } - ], - "title": "清月之辉——阎魔", - "category": "cos", - "upload_time": 1512472775, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 2651372, - "head_url": "https://i1.hdslb.com/bfs/face/06285d510887ab8f08f3639de021273d31aa6e9f.jpg", - "name": "假酒澡堂" - }, - "item": { - "doc_id": 1161521, - "poster_uid": 2651372, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/41b7f22f31faedf0e6fb7ea694e5cd460ed01744.jpg", - "img_width": 2667, - "img_height": 4000, - "img_size": 7063 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/66af6e9685516820a92aa959caf47776afd95899.jpg", - "img_width": 4000, - "img_height": 2667, - "img_size": 5164 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/f69af7f3802aec88616e3d0567930eb74a0c0b49.jpg", - "img_width": 4000, - "img_height": 2667, - "img_size": 6863 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/cabd2bd20c2b47bcebb8a33c2f645ecbfe610aac.jpg", - "img_width": 6480, - "img_height": 4320, - "img_size": 13374 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/2780c80797cfb709d3d00b884f0c8c491c2fb33e.jpg", - "img_width": 2667, - "img_height": 4000, - "img_size": 5553 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c221300d9c9949eb2654dc65288437d2509716e9.jpg", - "img_width": 6480, - "img_height": 4320, - "img_size": 14213 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/be4710e76452d48aaae6a45e4ad813248a79efe2.jpg", - "img_width": 4000, - "img_height": 2667, - "img_size": 4733 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c87cabbfcdca90e9136d7c66e4b9b9ec586af957.jpg", - "img_width": 4000, - "img_height": 2667, - "img_size": 5654 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/65892d474ae09290f4e7f64461f0c21b4ee4664c.jpg", - "img_width": 4000, - "img_height": 2667, - "img_size": 4657 - } - ], - "title": "奥雅之光-异梦守护者", - "category": "cos", - "upload_time": 1512168749, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 7732095, - "head_url": "https://i0.hdslb.com/bfs/face/d0c465d55d457bd15760651e2eb7f9278055b40c.jpg", - "name": "超高校级的鲷鱼烧" - }, - "item": { - "doc_id": 1159580, - "poster_uid": 7732095, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/256ee4ccd4f3ed859fd71702513a345c2b4beeb4.jpg", - "img_width": 2159, - "img_height": 1569, - "img_size": 801 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c76707f83078c61d48a8ff1ee2888542bb64cef3.jpg", - "img_width": 1480, - "img_height": 1973, - "img_size": 617 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/a363e8ac04a90d4aecb567ff278a88b051886122.jpg", - "img_width": 1620, - "img_height": 2160, - "img_size": 876 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/06bc09d1927ba65e7210650e0cfe887d37b7871b.jpg", - "img_width": 1620, - "img_height": 2160, - "img_size": 885 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/ea5e47d7c99b1be8f799b1bf356ef81d58926a0c.jpg", - "img_width": 2160, - "img_height": 1620, - "img_size": 701 - } - ], - "title": "lolita私影", - "category": "sifu", - "upload_time": 1512148075, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 65579886, - "head_url": "https://i2.hdslb.com/bfs/face/b5f66542be47c508dd425d13fb7245655bc02413.jpg", - "name": "丹砂Scorpius" - }, - "item": { - "doc_id": 1177247, - "poster_uid": 65579886, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/53b14da232bb4aacc7bfeeba0caf8ebb1d9f0395.jpg", - "img_width": 3000, - "img_height": 2001, - "img_size": 3959 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/58f2fbc6c285571fa31cc032fb790fae5f8ffac0.jpg", - "img_width": 3000, - "img_height": 2001, - "img_size": 4106 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/018f4ddacf1ae792d2e6169ee394f336155d369e.jpg", - "img_width": 4000, - "img_height": 2668, - "img_size": 6534 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/874e31e7e3d6a3653c797583e6643d5d778d7a2c.jpg", - "img_width": 3000, - "img_height": 2001, - "img_size": 5484 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/7ff9b60bcecd80b5923194dee4de29251b37ce2c.jpg", - "img_width": 2000, - "img_height": 2998, - "img_size": 5969 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/0926b507b8e6ff11951b36732e9a089d49836e0e.jpg", - "img_width": 2000, - "img_height": 3000, - "img_size": 3671 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c55994fbf1e8a20425066bd6f4acc4347c197d11.jpg", - "img_width": 3000, - "img_height": 2001, - "img_size": 3069 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/03e621a23626d8d9f584a0d0663e1a77bd2832f1.jpg", - "img_width": 3000, - "img_height": 2001, - "img_size": 4339 - } - ], - "title": "天涯明月刀ol明月心", - "category": "cos", - "upload_time": 1512214505, - "already_liked": 0, - "already_voted": 0 - } - } - ], - "total_count": 200 - } -} -``` - -
- -## 获取画友列表 - -> https://api.vc.bilibili.com/link_draw/v2/Doc/list - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------ | ------------------------------------------------------------ | -| category | str | 类型 | 必要 | all:全部
illustration:插画
comic:漫画
draw:其他 | -| type | str | 排序方式 | 必要 | hot:最热
new:最新 | -| page_num | num | 页码 | 非必要 | 默认为1 | -| page_size | num | 每页项数 | 非必要 | 默认为45 | - -**json回复:** - -见[获取画友首页列表](#获取画友首页列表)中的响应内容 - -**示例:** - -用按热度排序方式获取`全部`类型的画友列表 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v2/Doc/list' \ ---data-urlencode 'category=all' \ ---data-urlencode 'type=hot' \ ---data-urlencode 'page_num=1' \ ---data-urlencode 'page_size=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "total_count": 500, - "items": [ - { - "user": { - "uid": 1403138, - "head_url": "https://i0.hdslb.com/bfs/face/member/noface.jpg", - "name": "莉莎娜" - }, - "item": { - "doc_id": 99421434, - "poster_uid": 1403138, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/5191163a4f1a2e567adda32f4dd6d4c024455d8d.png", - "img_width": 2286, - "img_height": 1760, - "img_size": 4147 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/74943ba725ee352d95e8356d9c7f823b329e51bf.png", - "img_width": 812, - "img_height": 1218, - "img_size": 885 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c0b17e496963203fb966ea046bddcc0d26dee066.png", - "img_width": 812, - "img_height": 1218, - "img_size": 892 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/099327c21f789294c6e8f2e9de9a280bed80eea5.png", - "img_width": 812, - "img_height": 1216, - "img_size": 895 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/4ae0365073300541ab34b214499a7e4e79d6d205.png", - "img_width": 812, - "img_height": 1216, - "img_size": 875 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/5912fd5dc436580f3d5d59e089c4119da532635a.png", - "img_width": 812, - "img_height": 1218, - "img_size": 921 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/6e0ac1a10d1e55439cb8347df8948d263321cc42.png", - "img_width": 812, - "img_height": 1218, - "img_size": 971 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/fa4738bfda93079e9db0df0bdd67ecf316eba099.png", - "img_width": 812, - "img_height": 1218, - "img_size": 860 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/d841f61d1ffdcdd8ae0831307c6479f3b8a2c803.png", - "img_width": 812, - "img_height": 1216, - "img_size": 839 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/685b75cff31f98af4881e3c1af5f58703ef8780e.png", - "img_width": 812, - "img_height": 1216, - "img_size": 928 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/2deb81f4813843c628a0cfbd3fe033e3f70ddd95.png", - "img_width": 812, - "img_height": 1218, - "img_size": 932 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/d93d03bc4f17ef4bf684f8eb8b0f48ef4c52f204.png", - "img_width": 812, - "img_height": 1218, - "img_size": 875 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/06e00c35e198de27a69a00284fb99b1ca6b77ca0.png", - "img_width": 812, - "img_height": 1216, - "img_size": 991 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/f1c18fd5cc062623d0b7789fc20ee5938aa83c37.png", - "img_width": 846, - "img_height": 725, - "img_size": 877 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/7f937d022f34f72fd9c7dcf25122671b9d6c87b4.png", - "img_width": 847, - "img_height": 733, - "img_size": 896 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/5e693c5d3b995d5553357b2b2e270ccc68562f91.png", - "img_width": 848, - "img_height": 740, - "img_size": 967 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/e8f1574af6244f8f4df5876f2bce4a9b03b02021.png", - "img_width": 848, - "img_height": 741, - "img_size": 1181 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/ceca23740750a545b26c2b35b12d357e24b887af.png", - "img_width": 856, - "img_height": 748, - "img_size": 1246 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/98439a15f2a8fdaa16c20b18d436894f2a667969.png", - "img_width": 837, - "img_height": 745, - "img_size": 1248 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/cda219582d4bc824a0f3b276944bb440f94c3365.jpg", - "img_width": 550, - "img_height": 441, - "img_size": 53 - } - ], - "title": "ufotable 剧场版", - "category": "draw", - "upload_time": 1606386642, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 5030761, - "head_url": "https://i0.hdslb.com/bfs/face/2feef28d962b0e5c8bbd573cffe84d5e13277747.jpg", - "name": "深井玑" - }, - "item": { - "doc_id": 3674543, - "poster_uid": 5030761, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/c52e9b3a1fa307095cac0e82f5932baba4f0a286.png", - "img_width": 6142, - "img_height": 4724, - "img_size": 5314 - } - ], - "title": "小02", - "category": "illustration", - "upload_time": 1524970836, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 401154, - "head_url": "https://i1.hdslb.com/bfs/face/4c57866c6c8f21ff2fc8577369a613ed8397fae8.jpg", - "name": "oO大黄Oo" - }, - "item": { - "doc_id": 979620, - "poster_uid": 401154, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/vc/8f5342382b5c92a14cd37f93e887124813ba2163.jpg", - "img_width": 1920, - "img_height": 1051, - "img_size": 549 - } - ], - "title": "八云家的早晨", - "category": "illustration", - "upload_time": 1510916676, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 21833522, - "head_url": "https://i2.hdslb.com/bfs/face/9037fc1027d780083ecc2e818b512b69b9267e7c.jpg", - "name": "欧阳鹏杰-OY" - }, - "item": { - "doc_id": 663050, - "poster_uid": 21833522, - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/vc/7b20f041ad7c04bbaf8c54ba520be6fd4953583e.jpg", - "img_width": 770, - "img_height": 999, - "img_size": 798 - }, - { - "img_src": "https://i0.hdslb.com/bfs/vc/0710b08b54013b06249170e8adf08b41a41030aa.jpg", - "img_width": 1024, - "img_height": 1024, - "img_size": 475 - }, - { - "img_src": "https://i0.hdslb.com/bfs/vc/09f168697210ce4ff62df3f0f1284574795ea96b.png", - "img_width": 863, - "img_height": 1283, - "img_size": 1257 - } - ], - "title": "OY手绘:白玫瑰", - "category": "illustration", - "upload_time": 1507952704, - "already_liked": 0, - "already_voted": 0 - } - } - ] - } -} -``` - -
- -## 获取摄影列表 - -> https://api.vc.bilibili.com/link_draw/v2/Photo/list - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------ | --------------------------- | -| category | str | 类型 | 必要 | cos:Cosplay
sifu:私服 | -| type | str | 排序方式 | 必要 | hot:最热
new:最新 | -| page_num | num | 页码 | 非必要 | 默认为1 | -| page_size | num | 每页项数 | 非必要 | 默认为45 | - -**json回复:** - -见[获取画友首页列表](#获取画友首页列表)中的响应内容 - -**示例:** - -用按热度排序方式获取`Cosplay`类型的摄影列表 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v2/Photo/list' \ ---data-urlencode 'category=cos' \ ---data-urlencode 'type=hot' \ ---data-urlencode 'page_num=1' \ ---data-urlencode 'page_size=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "total_count": 500, - "items": [ - { - "user": { - "uid": 639050, - "head_url": "http://i0.hdslb.com/bfs/face/cb5ea5f15e4503cc26598bd307faa2a5413f914f.jpg", - "name": "Mayuri阮陌" - }, - "item": { - "doc_id": 1207334, - "poster_uid": 639050, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/323049c9389d31525ab301e22915a3343172216e.jpg", - "img_width": 969, - "img_height": 599, - "img_size": 210 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/3e2fb000f8865092f378a480ab454fea3aa09380.jpg", - "img_width": 1920, - "img_height": 2880, - "img_size": 1369 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/b3aa55a8529935692be9a2d9e0ccf65e9bae6d87.jpg", - "img_width": 1920, - "img_height": 2880, - "img_size": 520 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/90a1b083e7d1c876aa6a82cf6440d11e84d8b4c3.jpg", - "img_width": 1920, - "img_height": 2880, - "img_size": 1442 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/eb1af3d84f2238ca63717a5c7e10a23d55d577c7.jpg", - "img_width": 1920, - "img_height": 2880, - "img_size": 1155 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/69bae275fce8d85cc1822cd520675281fa8f89a9.jpg", - "img_width": 1920, - "img_height": 2880, - "img_size": 1606 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/fbb77786fd531d081ea2867ae93cc1231326da58.jpg", - "img_width": 1920, - "img_height": 2880, - "img_size": 1329 - } - ], - "title": "式雪鸟", - "category": "cos", - "upload_time": 1512360622, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 55183010, - "head_url": "http://i0.hdslb.com/bfs/face/9484cb85e2f3acc4fcc953deab4090424b5a5aa3.jpg", - "name": "HaneAme雨波" - }, - "item": { - "doc_id": 99103637, - "poster_uid": 55183010, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/99cfb9601146d85622d0950b4689e2016e827ca6.jpg", - "img_width": 1366, - "img_height": 2048, - "img_size": 395 - } - ], - "title": "雨波 cos少女前线 OTS14 cos", - "category": "cos", - "upload_time": 1606070733, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 55183010, - "head_url": "http://i0.hdslb.com/bfs/face/9484cb85e2f3acc4fcc953deab4090424b5a5aa3.jpg", - "name": "HaneAme雨波" - }, - "item": { - "doc_id": 99103785, - "poster_uid": 55183010, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/bfb54c1ef7b9891ab458f2171fb1c115b8c94147.jpg", - "img_width": 1366, - "img_height": 2048, - "img_size": 601 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/2e8fd0d327cabc6ff9aa3fdc7f21d12949cd3774.jpg", - "img_width": 1366, - "img_height": 2048, - "img_size": 383 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/82050a1badfd2cce0e3888b0de501da8d0052285.jpg", - "img_width": 2048, - "img_height": 1366, - "img_size": 445 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/25223cd3d5bb7e4e96bdf5dded8538e9737762c4.jpg", - "img_width": 1366, - "img_height": 2048, - "img_size": 497 - } - ], - "title": "雨波 cos 英雄联盟阿狸KDA cos", - "category": "cos", - "upload_time": 1606071173, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 12429622, - "head_url": "http://i2.hdslb.com/bfs/face/af7fd8dfba51c0735303a381e1d7115c6dd13ad5.jpg", - "name": "ayaco_" - }, - "item": { - "doc_id": 6029076, - "poster_uid": 12429622, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/41bd20d921f8310243856665ee15c9f4a2dca89a.jpg", - "img_width": 1080, - "img_height": 720, - "img_size": 775 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/e6f7ea5b8f74d97239d307db43851341a802ee58.jpg", - "img_width": 591, - "img_height": 5672, - "img_size": 2714 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/af1795fb3873202f4668d0a598c36371f4b0addb.jpg", - "img_width": 591, - "img_height": 5641, - "img_size": 2305 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/15cf752ba3c3568828c5245cedd21d74b05b79cc.jpg", - "img_width": 591, - "img_height": 5602, - "img_size": 2158 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/6b19e916ad10e167503d1e002211cf84457f780b.jpg", - "img_width": 1080, - "img_height": 720, - "img_size": 571 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/a92b4286a1322c1315a18520af27759ee13bee69.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 580 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/104001f3ea13753f5a74ca40f302c8bf82fd75ee.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 479 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/6edb8fe0835c2ab284012889abe5306ed0122eb1.jpg", - "img_width": 1080, - "img_height": 720, - "img_size": 622 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/ef1be9ab93fae60f5425c2a5e6411bdb72a16bee.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 389 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/7250c928a6458cd30face9403889c8bb9eda19ef.jpg", - "img_width": 1080, - "img_height": 635, - "img_size": 550 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/34439287647262eb80d6d4f16f38b4801f32c193.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 472 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/253325d97fce756812a73eb609d8e082bf1eae12.jpg", - "img_width": 1080, - "img_height": 720, - "img_size": 576 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/00a05300453d0b14e44ba2051cc3714dabc46fd1.jpg", - "img_width": 1080, - "img_height": 720, - "img_size": 1047 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/1416e50ce1ab2e364212ebb2503cec247ca8642d.jpg", - "img_width": 1080, - "img_height": 720, - "img_size": 582 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/23661c4843e4c1d32aa7432683153be3813d771a.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 372 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/161753dced7278876055e38114e3773106dbedf5.jpg", - "img_width": 4743, - "img_height": 3162, - "img_size": 1395 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/224ff973a91566b3dc364fde122e71520b56fdc6.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 432 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/6495534c72147d512c79b4c2bbc06011635d4913.jpg", - "img_width": 591, - "img_height": 886, - "img_size": 453 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/0474e1479a0228cc6e97891f0f4d1cdbc1370222.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 370 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/5a19599960129f2060c125e3896d20dccf5a6f25.jpg", - "img_width": 591, - "img_height": 887, - "img_size": 367 - } - ], - "title": "剑网3cos明教成女", - "category": "cos", - "upload_time": 1532692182, - "already_liked": 0, - "already_voted": 0 - } - }, - { - "user": { - "uid": 25000899, - "head_url": "http://i2.hdslb.com/bfs/face/4017d03cfe42da7a0c93277cb46fb5a47a9b2415.jpg", - "name": "狩子和光哥" - }, - "item": { - "doc_id": 13690635, - "poster_uid": 25000899, - "pictures": [ - { - "img_src": "http://i0.hdslb.com/bfs/album/5f497ae7b064c5e323ad1e008b0068d3fb95b3f0.jpg", - "img_width": 1908, - "img_height": 3332, - "img_size": 3852 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/96e6743d04b0d31e9c17e171d767ceab75c9ac35.jpg", - "img_width": 1908, - "img_height": 3392, - "img_size": 3444 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/2116c3fe1bb5fbfd77a641fd0c29c6e6408b050e.jpg", - "img_width": 1908, - "img_height": 3328, - "img_size": 3793 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/6de08b62d633a84e5e50c8da0b42334f88ca50cb.jpg", - "img_width": 1812, - "img_height": 3176, - "img_size": 3513 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/02f1e419e79e45572c671a534f4271f411f2771f.jpg", - "img_width": 1908, - "img_height": 3392, - "img_size": 3660 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/348bf5b4f887f3ecd690cb1a1442bdda43898652.jpg", - "img_width": 3814, - "img_height": 3392, - "img_size": 7891 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/c50a2cc182c8ad07850e2f364b76d14cd6b1729c.jpg", - "img_width": 3839, - "img_height": 2160, - "img_size": 1630 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/b051883ca18556c78e72bf07d3981324394541c8.jpg", - "img_width": 2437, - "img_height": 2159, - "img_size": 1869 - }, - { - "img_src": "http://i0.hdslb.com/bfs/album/42e5f13601067a772d5ddc47a8756fecfec9f8cb.jpg", - "img_width": 2121, - "img_height": 3023, - "img_size": 2021 - } - ], - "title": "玉藻前", - "category": "cos", - "upload_time": 1548154774, - "already_liked": 0, - "already_voted": 0 - } - } - ] - } -} -``` - -
- -## 获取指定用户的相簿列表 - -> https://api.vc.bilibili.com/link_draw/v1/doc/others - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------- | ------ | --------------------------------------------- | -| biz | num | 分区 | 非必要 | 0:全部
1:画友
2:摄影
默认为0 | -| poster_uid | num | 作者mid | 必要 | 默认为20 | -| page_num | num | 页码 | 非必要 | 默认为1 | -| page_size | num | 每页项数 | 非必要 | 默认为45 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------ | -| code | num | 返回值 | 0:成功
1:参数错误 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ---------- | ---- | -| total_count | str | 总计相簿数 | | -| user | obj | 作者信息 | | -| items | array | 相簿列表 | | - -`data`中的`user`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------- | ---- | -| uid | str | 作者mid | | -| head_url | str | 头像url | | -| name | str | 昵称 | | - -`data`中的`item`对象: - -同[获取画友首页列表](#获取画友首页列表)中的`item`对象 - -**示例:** - -获取用户` 1360010 `的所有类型相簿 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/others' \ ---data-urlencode 'biz=0' \ ---data-urlencode 'poster_uid=1360010' \ ---data-urlencode 'page_num=1' \ ---data-urlencode 'page_size=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "total_count": "290", - "user": { - "uid": "1360010", - "head_url": "https://i2.hdslb.com/bfs/face/865c7b03575a69822e503ef291ac26199c6a540a.jpg", - "name": "楚楚子" - }, - "items": [ - { - "biz": 3, - "doc_id": 85097979, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/65604d9697a644686c6ad811f9663a9fe308b164.jpg", - "img_width": 1347, - "img_height": 1792, - "img_size": 363 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/3f4448059ddaa8cbcd9094851ecfb84b184b0dc9.jpg", - "img_width": 1347, - "img_height": 1792, - "img_size": 506 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/edd1b6b424c078ba6a5b267db355cf7e8522f27a.jpg", - "img_width": 1347, - "img_height": 1792, - "img_size": 424 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/a615ce43ce3412060e487c3fcbc73ed08da23c56.jpg", - "img_width": 2268, - "img_height": 4032, - "img_size": 2192 - } - ], - "source": null, - "upload_time": "2020-08-03 16:48:30", - "upload_timestamp": 1596444510, - "upload_time_text": "3月前", - "description": "“绝望吧~!”\n#江之岛盾子#弹丸论破# \n黑历史重刷,终于又出了盾子 ​​​", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 53822, - "like_count": 0, - "collect_count": 40, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 84200785, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/8aa4ad3fc7b9f01a21f4c398565788bbe92cff2d.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2059 - } - ], - "source": null, - "upload_time": "2020-07-29 18:06:52", - "upload_timestamp": 1596017212, - "upload_time_text": "4月前", - "description": "莫西莫西?", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 49659, - "like_count": 0, - "collect_count": 6, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 83943309, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/4f4321bec1ddc55a3ed98b63a40175ec90820b4a.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2432 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/e2ed6aecfa713e109867198a1b0292eb9180aec9.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 1949 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/92694ea7db527663a8c97a6747125e12c6300bc4.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 1978 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/1757e958088dc7477fae30f2bf0daba034dd5de2.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 1849 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/60d55f032f4332387a165d6aa4e7ab0d2f628b1d.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2032 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/12bdbda0c8ea40505449ef4f4ad764780ad991ec.jpg", - "img_width": 1623, - "img_height": 2160, - "img_size": 1068 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/4e51f06fb2c9aedfd077eb9341ada50aea5a2d50.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2106 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/5e8d27655c9741b0cb8c3e257677b9fc14b4cb5b.jpg", - "img_width": 2996, - "img_height": 3289, - "img_size": 3347 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/0018b04da7f9897b0a80dae64267fda16a7d3249.jpg", - "img_width": 700, - "img_height": 659, - "img_size": 122 - } - ], - "source": null, - "upload_time": "2020-07-28 02:18:39", - "upload_timestamp": 1595873919, - "upload_time_text": "4月前", - "description": "CP26第一天的集邮#CP26#\np1@流一_喵喵喵喵喵喵 流一爸爸太好看呜呜\np2@星之迟迟 我迟哥天仙下凡 新本太可了推荐\np3@紅吸式咖啡 师姐是俺永远的珍宝!\np4@伏笔小哥哥 我家儿子人间导弹杀伤力巨大[doge]\np5@鹤祈W 我家鹅鹅[喜极而泣]老色批又偷偷亲我\np6@拉花一哥虚年gg 虚虚今天也是又白又可口\np7@沐阳_阳阳阳阳羊哞 又御又有气场爱了\nP8战利品?", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "[{\"type\":1,\"location\":86,\"length\":7,\"data\":\"44500220\"}]", - "view_count": 67546, - "like_count": 0, - "collect_count": 18, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 83305352, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/9700a04ea0adc0fc4e0d0be54432210f7cb0ca08.jpg", - "img_width": 2996, - "img_height": 4096, - "img_size": 3687 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/bea5b177169027506afb7f11f91aecaf770f50a8.jpg", - "img_width": 2232, - "img_height": 4032, - "img_size": 2435 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/94c170c09acfc22bcdf541dc2a173cac0c3ca5eb.jpg", - "img_width": 1080, - "img_height": 1080, - "img_size": 349 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/53b082a3352a4cbf05dd796b60fe06ad5ba443f9.jpg", - "img_width": 2148, - "img_height": 2864, - "img_size": 1712 - } - ], - "source": null, - "upload_time": "2020-07-24 11:12:03", - "upload_timestamp": 1595560323, - "upload_time_text": "4月前", - "description": "cp26认衣服。?[笑哭]\nD1, 瑶-遇见神鹿(游场\nD2,嘉德罗斯-酒吞童子(凹凸世界展台8.1馆CPB25 ​​​", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 45415, - "like_count": 0, - "collect_count": 5, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 81307632, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/bf3e274cf5a013a9ae8ddfaa756ad4f22d643ff4.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2418 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/e8ad8f1297048e9adbcd70c8ca589dc306679c6e.jpg", - "img_width": 1656, - "img_height": 2205, - "img_size": 692 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/44e2d7d566833a67b151b5f0eba67bb70c34e6b7.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2430 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/0c11a891a71a567899b45801049cb44e8e09984b.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2513 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/92e0f0a0e6c38c693511b705acfd25caa9c14125.jpg", - "img_width": 1656, - "img_height": 2205, - "img_size": 664 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/235e63ecfa8db0bb21a4dbd4d82c7be321c96b73.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2149 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/98a3eb965f07a75b24d59cc6446a7752ad8211bd.jpg", - "img_width": 1656, - "img_height": 2205, - "img_size": 580 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/0dc3637addb53bf8ebea2a1896f41bcedafee42f.jpg", - "img_width": 1656, - "img_height": 2205, - "img_size": 669 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/f1ccbe4b61022cea2545eaa4cd26ac0617f9c12c.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 3329 - } - ], - "source": null, - "upload_time": "2020-07-12 01:03:34", - "upload_timestamp": 1594487014, - "upload_time_text": "4月前", - "description": "绿茶公主切?听说你想和我一起喝奶茶\n新风格自拍⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄希望喜欢\n\n裙子和领结是我家 海盐气泡", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 80832, - "like_count": 0, - "collect_count": 110, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 80611117, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/4cb935b7f542891c42e5b90a8cd6a9cc3817fdad.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1136 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/d99cd3d16fb1353a4dd42e72f4a1b4dce786bdf7.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1429 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/4a5b947929a8a748a1cd8a165e07e39cf9efbac1.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1052 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c9972c6681e22d50f03bc80337f09c5bca12ce83.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1324 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/57137ce057e0c8098b17ed7ef9dbd6230cc08f31.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1361 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/f6ef2ffe0de5e336e12be620a2460fb9226da2d7.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1261 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/75c9012a5447025f533539e7e0c91aa7d47436e1.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 986 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/07088481611b53a35bffc797e00ab39361cac764.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 1361 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/2126d4a1f5882d1bd37db64e5acb17b3ba70a454.jpg", - "img_width": 1728, - "img_height": 3072, - "img_size": 991 - } - ], - "source": null, - "upload_time": "2020-07-07 14:13:32", - "upload_timestamp": 1594102412, - "upload_time_text": "4月前", - "description": "出镜:楚楚子\n摄影@猫尾先生DK \n服装@诺琪旗舰店 \n后勤:鹤祈 伏笔\n#cosplay##cos##cos正片##初音未来##初音ミク##初音##Miku##初音miku# ​​​", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 72419, - "like_count": 0, - "collect_count": 93, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 80314152, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/8debaeafd8463f06132f46776d2e100d7fc7da62.jpg", - "img_width": 2160, - "img_height": 3840, - "img_size": 2793 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c930d2b3b8533b28c18ebd69d7bb62027a96dc64.jpg", - "img_width": 3072, - "img_height": 4096, - "img_size": 3688, - "img_tags": [ - { - "tid": 0, - "orientation": 2, - "type": 2, - "text": "鹤祈w", - "mid": 319699970, - "textString": "@鹤祈w", - "x": 69531, - "y": 74547, - "source_type": 0, - "item_id": 0 - }, - { - "tid": 0, - "orientation": 2, - "type": 2, - "text": "楚楚子", - "mid": 1360010, - "textString": "@楚楚子", - "x": 24845, - "y": 88315, - "source_type": 0, - "item_id": 0 - } - ] - } - ], - "source": null, - "upload_time": "2020-07-05 15:30:19", - "upload_timestamp": 1593934219, - "upload_time_text": "4月前", - "description": "又出了拉姆蕾姆双子快乐!#蕾姆##拉姆##从零开始的异世界生活#", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 53346, - "like_count": 0, - "collect_count": 27, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 78948058, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/63d3158d33e4e7e74b04ad522841b746795a2c58.jpg", - "img_width": 1080, - "img_height": 1080, - "img_size": 321 - } - ], - "source": null, - "upload_time": "2020-06-25 12:47:54", - "upload_timestamp": 1593060474, - "upload_time_text": "5月前", - "description": "端午节安康哦!大家", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 56377, - "like_count": 0, - "collect_count": 19, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 78732068, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/bce1fbe78f222b669cd2ecf154faee55fffa4c22.jpg", - "img_width": 828, - "img_height": 1295, - "img_size": 431 - } - ], - "source": null, - "upload_time": "2020-06-23 20:06:14", - "upload_timestamp": 1592913974, - "upload_time_text": "5月前", - "description": "阿荣正片发我微博了(楚楚子w)\n还有转发抽500软妹币哦~[tv_调侃]", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 49872, - "like_count": 0, - "collect_count": 2, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 78601963, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/952125a9d23e9845c359752919d7a4919c5146b2.jpg", - "img_width": 2160, - "img_height": 3840, - "img_size": 2219 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/206a554bf8ca9f8f5b20f819a3a3d4caaf8cc7c8.jpg", - "img_width": 2160, - "img_height": 3840, - "img_size": 2093 - } - ], - "source": null, - "upload_time": "2020-06-22 17:17:02", - "upload_timestamp": 1592817422, - "upload_time_text": "5月前", - "description": "“拉菲…喜欢指挥官”\n#碧蓝航线#", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 47885, - "like_count": 0, - "collect_count": 6, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 77719612, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/8c78cfc991f160e649530ef124958a40174d1edf.jpg", - "img_width": 2464, - "img_height": 3280, - "img_size": 2902 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/e7e5d9fd004461ccc06bd4a2070fe8984cc910ab.jpg", - "img_width": 1906, - "img_height": 1080, - "img_size": 182 - } - ], - "source": null, - "upload_time": "2020-06-15 11:59:27", - "upload_timestamp": 1592193567, - "upload_time_text": "5月前", - "description": "#转生成为了只有乙女游戏破灭FLAG的邪恶##转生恶役只好拔除破灭旗标##卡塔丽娜##COS#\n猴王来了(不是)", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 52101, - "like_count": 0, - "collect_count": 5, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 77344908, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/a7d74d4ee9fc7b000ce325f56d7f20c2f46097ce.jpg", - "img_width": 614, - "img_height": 584, - "img_size": 35 - } - ], - "source": null, - "upload_time": "2020-06-12 17:58:43", - "upload_timestamp": 1591955923, - "upload_time_text": "5月前", - "description": "都和你们说了多少次了我没有男朋友,我有女朋友!!!!别问了[笑哭]giao", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 48760, - "like_count": 0, - "collect_count": 0, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 77340591, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/d53eae5957290841e99182b57dec41b73536c31f.jpg", - "img_width": 1440, - "img_height": 1080, - "img_size": 247 - } - ], - "source": null, - "upload_time": "2020-06-12 17:20:47", - "upload_timestamp": 1591953647, - "upload_time_text": "5月前", - "description": "昨天的自拍[tv_斜眼笑][tv_doge]", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 43730, - "like_count": 0, - "collect_count": 1, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 77255303, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/0ec917d17f79e7dbd07e60c4eba78add95f8db1e.jpg", - "img_width": 1080, - "img_height": 1619, - "img_size": 292 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/d3509348d52329d415a0022a1d79651645201dfc.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 531 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/6e2b6f49b6c8650ade51e66c4dc6008a4fd10b9e.jpg", - "img_width": 1619, - "img_height": 1080, - "img_size": 235 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/c31455b0d11a982f09fdcd13ce24354743410a95.jpg", - "img_width": 1080, - "img_height": 1619, - "img_size": 353 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/d6bcaf3c8cdcd5d680e359f20b7514e39337ed0c.jpg", - "img_width": 1619, - "img_height": 1080, - "img_size": 253 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/4151fe1cf8f4a47c3843f12ae10eb8449660d80f.jpg", - "img_width": 1080, - "img_height": 1619, - "img_size": 413 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/29e2f6361e0773342b9f8adae7c44515231415da.jpg", - "img_width": 1619, - "img_height": 1080, - "img_size": 337 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/88b42ea572b95ba2d0bbdec0253f3cf5f87bf1e9.jpg", - "img_width": 1080, - "img_height": 1619, - "img_size": 459 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/4f96eea84478eaeccf80b5e34b263e6d7e04e382.jpg", - "img_width": 1619, - "img_height": 1080, - "img_size": 325 - } - ], - "source": null, - "upload_time": "2020-06-11 21:10:12", - "upload_timestamp": 1591881012, - "upload_time_text": "5月前", - "description": "#LOLITA##国牌LOLITA##LOLITA装扮#\n 🌹雾都小姐🍷酒红色🍷\n\n出镜:楚楚子\n裙子:@Neverland星芙颂 \n\n摄影感谢@夜_綰灵 ​​​", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 48652, - "like_count": 0, - "collect_count": 20, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 76904631, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/d89d1ae4dbb98c7b4ab40d3cb76543b4d5b9d471.jpg", - "img_width": 3987, - "img_height": 4032, - "img_size": 2898 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/8292a3ffe10baaf3b957605bc9fa450848746598.jpg", - "img_width": 3987, - "img_height": 4032, - "img_size": 3059 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/e6992efada737c6340b400ad8541ec8f550cd490.jpg", - "img_width": 4016, - "img_height": 4000, - "img_size": 2628 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/b4af594407dc4115779aa82d30000005f1940cee.jpg", - "img_width": 4000, - "img_height": 4012, - "img_size": 2602 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/6bc9ed0a4456806972793c8c9ff6b6dab7d82492.jpg", - "img_width": 828, - "img_height": 831, - "img_size": 156 - } - ], - "source": null, - "upload_time": "2020-06-08 17:19:55", - "upload_timestamp": 1591607995, - "upload_time_text": "5月前", - "description": "做了粉丝向小周边是蕾姆cos的扑克牌\n可以拿去打扑克[tv_点赞]搜店铺【楚王的宝库】就看到了,54张➕铁盒包装➕包邮 ​​​", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 40875, - "like_count": 0, - "collect_count": 1, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 76895569, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/0f35f75e31dd1298673207292f06ed73c44ab7d6.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 290 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/487f3ba4891b52825965337cc67b386cd61ef2ae.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 403 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/01e0a911f6efab97191def3d3fab36d656f395a4.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 306 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/62903ff9bad9d8f67fa44d0ec745f041f7c48e69.jpg", - "img_width": 1620, - "img_height": 1080, - "img_size": 230 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/f4ff78679627139c8f0bad222cd4a148cfc48212.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 277 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/8444278d213ee9a88ee4e0672999625b9fe08ac3.jpg", - "img_width": 1080, - "img_height": 1620, - "img_size": 244 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/b726178928cd90091dbb424a1d67e65509b27415.jpg", - "img_width": 1080, - "img_height": 1512, - "img_size": 322 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/736c90c02dafb3bf846936220084505a0da2ff55.jpg", - "img_width": 1620, - "img_height": 1080, - "img_size": 394 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/3fe89476c5f6572e7c42f10af219adf8cb80fa5b.jpg", - "img_width": 1620, - "img_height": 1080, - "img_size": 370 - } - ], - "source": null, - "upload_time": "2020-06-08 15:41:20", - "upload_timestamp": 1591602080, - "upload_time_text": "5月前", - "description": "死亡爱丽丝联动蕾姆\n\n蕾姆:楚楚子\n服装@悠悠cos微博 \n摄影@菜菜1911 \n\n#从零开始的异世界生活##蕾姆##COSPLAY#", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "[{\"type\":1,\"location\":32,\"length\":8,\"data\":\"92962087\"}]", - "view_count": 62523, - "like_count": 0, - "collect_count": 74, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 76277041, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/04b5e6ca741e16504e32a8afcaff02d26e3dbb02.jpg", - "img_width": 2105, - "img_height": 2105, - "img_size": 756 - } - ], - "source": null, - "upload_time": "2020-06-03 20:58:17", - "upload_timestamp": 1591189097, - "upload_time_text": "5月前", - "description": "听说最近虚拟女友很火?我也想应聘一下(๑¯ω¯๑)\n你们喜欢哪种声音的呢?\n定制虚拟恋人的方式在评论区\n顺便我在评论区抓一个粉丝做一期体验视频\n记得关注我和【甜味陪伴】哦[tv_害羞]", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 53645, - "like_count": 0, - "collect_count": 4, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 74762578, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/6d9c4a1c5a313880c9917b7a37810d37d06df056.png", - "img_width": 1792, - "img_height": 828, - "img_size": 4752 - }, - { - "img_src": "https://i0.hdslb.com/bfs/album/9a5e21c9e620fd58f4ffa0f23c6758c6be004c16.png", - "img_width": 1792, - "img_height": 828, - "img_size": 5322 - } - ], - "source": null, - "upload_time": "2020-05-23 10:33:32", - "upload_timestamp": 1590201212, - "upload_time_text": "6月前", - "description": "我冲了!#碧蓝航线#", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 71068, - "like_count": 0, - "collect_count": 1, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 74397184, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/de4711846523f58a1e17da281a3033b40296e5c6.jpg", - "img_width": 5304, - "img_height": 7952, - "img_size": 16275 - } - ], - "source": null, - "upload_time": "2020-05-20 13:34:51", - "upload_timestamp": 1589952891, - "upload_time_text": "6月前", - "description": "是金发辣妹风格的jk\n520表白大家\n裙子是我家的万佳灯火@风間original \n感谢摄影:远野咲夜", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 74593, - "like_count": 0, - "collect_count": 12, - "verify_status": 1 - }, - { - "biz": 3, - "doc_id": 74246310, - "poster_uid": 1360010, - "category": "daily", - "type": 0, - "title": "", - "tags": [], - "pictures": [ - { - "img_src": "https://i0.hdslb.com/bfs/album/e4541718610d4f19c9228bebf580db4f96e7a911.png", - "img_width": 1792, - "img_height": 828, - "img_size": 3884 - } - ], - "source": null, - "upload_time": "2020-05-19 10:06:53", - "upload_timestamp": 1589854013, - "upload_time_text": "6月前", - "description": "上古老婆队我也有了[tv_微笑]开心", - "role": null, - "settings": { - "copy_forbidden": 0 - }, - "already_collected": 0, - "already_liked": 0, - "user_status": 0, - "at_control": "", - "view_count": 48537, - "like_count": 0, - "collect_count": 0, - "verify_status": 1 - } - ] - } -} -``` - -
\ No newline at end of file diff --git a/album/recommend_author.md b/album/recommend_author.md deleted file mode 100644 index 6f05606..0000000 --- a/album/recommend_author.md +++ /dev/null @@ -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' -``` - -
-查看响应示例: - -```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 - } - ] -} -``` - -
- -## 获取画友推荐作者 - -> 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' -``` - -
-查看响应示例: - -```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 - } - ] -} -``` - -
- diff --git a/article/articles.md b/article/articles.md deleted file mode 100644 index 8cb4ef6..0000000 --- a/article/articles.md +++ /dev/null @@ -1,315 +0,0 @@ -# 文集基本信息 - -- [获取文集基本信息](#获取文集基本信息) - ---- - -## 获取文集基本信息 - -> https://api.bilibili.com/x/article/list/web/articles - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| id | num | 文集rlid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此信息 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ---------------- | ------------------------------------------------------------ | -| list | obj | 文集概览 | | -| articles | array | 文集内的文章列表 | | -| author | obj | 文集作者信息 | | -| last | obj | - | 作用尚不明确
结构与data.articles[]中相似 | -| attention | bool | 是否关注文集作者 | false:未关注
true:已关注
需要登录(Cookie)
未登录为false | - -`data`中的`list`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | --------------- | ------------ | -| id | num | 文集rlid | | -| mid | num | 文集作者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:未点赞
1:已点赞
需要登录(Cookie)
未登录为0 | - -`articles`数组中的对象中的`stats`: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------- | ---- | -| view | num | 阅读数 | | -| favorite | num | 收藏数 | | -| like | num | 点赞数 | | -| dislike | num | 点踩数 | | -| reply | num | 评论数 | | -| share | num | 分享数 | | -| coin | num | 投币数 | | -| dynamic | num | 动态转发数 | | - -`articles`数组中的对象中的`author`: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | -------------- | ---- | -| mid | num | 作者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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": { - "id": 207146, - "mid": 293793435, - "name": "B站api研究笔记", - "image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png", - "update_time": 1585036952, - "ctime": 1582718126, - "publish_time": 1585045493, - "summary": "", - "words": 8697, - "read": 1654, - "articles_count": 3, - "state": 1, - "reason": "", - "apply_time": "", - "check_time": "" - }, - "articles": [ - { - "id": 4815593, - "title": "【B站API】api研究笔记ep1-视频基本信息", - "state": 0, - "publish_time": 1582643908, - "words": 2906, - "image_urls": [ - "https://i0.hdslb.com/bfs/article/00497c8df7130f22e5b953694b8931a22d32f133.jpg" - ], - "category": { - "id": 26, - "parent_id": 17, - "name": "数码" - }, - "categories": [ - { - "id": 17, - "parent_id": 0, - "name": "科技" - }, - { - "id": 26, - "parent_id": 17, - "name": "数码" - } - ], - "summary": "各位小可爱们大家好啊,终于可以结束我长达一年的咕咕了.........在这蝠想联翩的日子里也闲的没事,除了上课就是睡觉,还不如搞点事情哪个猿不想拥有自己的B站爬虫呢(误),当然自制一个B站的综合信息台也是可以的,比如显示粉丝数 获赞数(掉粉警告)于是就萌生了这个研究B站api的想法,以后也会继续不定期分享我的主体思路是利用Chrome中的F12工具进行分析,再用curl进行验证先从视频下手吧qwq我们以av2075941为例network检测下,有各种图片、视频、网页、js。。。。。的传输记录", - "stats": { - "view": 578, - "favorite": 19, - "like": 26, - "dislike": 0, - "reply": 19, - "share": 6, - "coin": 10, - "dynamic": 0 - }, - "like_state": 0 - }, - { - "id": 4820548, - "title": "【B站API】api研究笔记ep2-视频其他信息", - "state": 0, - "publish_time": 1582688189, - "words": 4319, - "image_urls": [ - "https://i0.hdslb.com/bfs/article/2416ee72759a5c2c8bba0f10d42e789fc0c0ae2b.jpg" - ], - "category": { - "id": 26, - "parent_id": 17, - "name": "数码" - }, - "categories": [ - { - "id": 17, - "parent_id": 0, - "name": "科技" - }, - { - "id": 26, - "parent_id": 17, - "name": "数码" - } - ], - "summary": "大家中午好鸭昨天我们研究了B站api的获取方法和使用方法 这一期我们继续分享另一个从网页中寻找api的方法以及研究视频的其他api接口以av170001为例首先打开视频,在F12的network下的监控中加载页面筛选XHR对象用搜索法的效率较低,不如我们直接进行筛选&观察通过对资源路径的观察可以猜到某些有关的项比如playurl有可能是播放的地址,pagelist可能是分P列表,view不就是昨天研究的『视频基本信息』吗通过继续分析我总结出了以下api这个可以在只想获取简介时应用,而不用处理多余", - "stats": { - "view": 737, - "favorite": 14, - "like": 18, - "dislike": 0, - "reply": 14, - "share": 1, - "coin": 1, - "dynamic": 0 - }, - "like_state": 0 - }, - { - "id": 5263184, - "title": "【B站API】api研究笔记Special-AV与BV互转", - "state": 0, - "publish_time": 1585045493, - "words": 1472, - "image_urls": [ - "https://i0.hdslb.com/bfs/article/b520939046899303cfcac1511308eb87ede760d7.jpg" - ], - "category": { - "id": 26, - "parent_id": 17, - "name": "数码" - }, - "categories": [ - { - "id": 17, - "parent_id": 0, - "name": "科技" - }, - { - "id": 26, - "parent_id": 17, - "name": "数码" - } - ], - "summary": "昨天视频新编号BV上线了,所有视频的编号默认都变成了BVxxx,不再是avxxx,兼容在链接和搜索中输入av号,评论区和动态av和bv都可以一键传送显然日益增长的投稿量对于编号是个问题,int是有上限的,但一串“乱码”缺少了灵魂,还会让我们想到磁力链接或者熊掌盘的链接(手动狗头)看到av170001,我会想到“法克儿~~”,但看到BV17x411w7KC,我?????其实av号并没有消失,只不过它已经隐藏于大众的视野里了,av和bv本质上是可以双向转换的方法一(电脑版推荐):打开一个视频,会发现", - "stats": { - "view": 343, - "favorite": 9, - "like": 13, - "dislike": 0, - "reply": 9, - "share": 0, - "coin": 2, - "dynamic": 0 - }, - "like_state": 0 - } - ], - "author": { - "mid": 293793435, - "name": "社会易姐QwQ", - "face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0 - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "nameplate": { - "nid": 4, - "name": "青铜殿堂", - "image": "http://i1.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", - "image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", - "level": "普通勋章", - "condition": "单个自制视频总播放数>=1万" - }, - "vip": { - "type": 2, - "status": 1, - "due_date": 0, - "vip_pay_type": 0, - "theme_type": 0, - "label": null - } - }, - "last": { - "id": 0, - "title": "", - "state": 0, - "publish_time": 0, - "words": 0, - "image_urls": [ ], - "category": { - "id": 0, - "parent_id": 0, - "name": "" - }, - "categories": [ ], - "summary": "" - }, - "attention": true - } -} -``` - -
\ No newline at end of file diff --git a/article/category.md b/article/category.md deleted file mode 100644 index 833fa40..0000000 --- a/article/category.md +++ /dev/null @@ -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 | 全部笔记 | diff --git a/article/info.md b/article/info.md deleted file mode 100644 index fcf4b7e..0000000 --- a/article/info.md +++ /dev/null @@ -1,186 +0,0 @@ -# 专栏基本信息 - -- [获取专栏文章基本信息](#获取专栏文章基本信息) - ---- - -## 获取专栏文章基本信息 - -> https://api.bilibili.com/x/article/viewinfo - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| id | num | 专栏cvid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此信息 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ------ | ---------------- | ------------------------------------------------------------ | -| like | num | 是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie)
未登录为0 | -| attention | bool | 是否关注文章作者 | false:未关注
true:已关注
需要登录(Cookie)
未登录为false | -| favorite | bool | 是否收藏 | false:未收藏
true:已收藏
需要登录(Cookie)
未登录为false | -| coin | num | 为文章投币数 | | -| stats | obj | 状态数信息 | | -| title | str | 文章标题 | | -| banner_url | str | 文章头图url | | -| mid | num | 文章作者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:否
true:是 | -| pre | num | 上一篇文章cvid | 无为0 | -| next | num | 下一篇文章cvid | 无为0 | -| share_channels | array | 分享方式列表 | | -| type | num | 文章类别 | 0:文章
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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
diff --git a/article/like_coin_fav.md b/article/like_coin_fav.md deleted file mode 100644 index d9f20b2..0000000 --- a/article/like_coin_fav.md +++ /dev/null @@ -1,178 +0,0 @@ -# 专栏投币&点赞&收藏 - -- [点赞文章](#点赞文章) -- [投币文章](#投币文章) -- [收藏文章](#收藏文章) - ---- - -## 点赞文章 - - - -> https://api.bilibili.com/x/article/like - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---------------------- | -| id | num | 文章cvid | 必要 | | -| type | num | 操作方式 | 必要 | 1:点赞
2:取消赞 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
65006:已赞过
65004:取消点赞失败 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -为文章`cv5806746`点赞 - -```shell -curl 'https://api.bilibili.com/x/article/like' \ ---data-urlencode 'id=5806746' \ ---data-urlencode 'type=1' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 投币文章 - - - -> https://api.bilibili.com/x/web-interface/coin/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( 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:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34005:超过投币上限 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ----------------------------------------------------- | -| like | bool | 是否点赞成功 | true:成功
false:失败
已赞过则附加点赞失败 | - -**示例:** - -为文章`cv5806746`投币1枚 - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "like": false - } -} -``` - -
- -## 收藏文章 - - - ->https://api.bilibili.com/x/article/favorites/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ---- | -| id | num | 文章cvid | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项 | -| message | str | 错误信息 | 正确为success | -| data | obj | 信息本体 | | - -**示例:** - -收藏文章`cv5806746` - -```shell -curl 'https://api.bilibili.com/x/article/favorites/add' \ ---data-urlencode 'id=5806746' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
diff --git a/article/list.md b/article/list.md deleted file mode 100644 index 20ce019..0000000 --- a/article/list.md +++ /dev/null @@ -1,677 +0,0 @@ -# 获取用户专栏信息 - -- [获取用户专栏文章列表](#获取用户专栏文章列表) -- [获取用户专栏文集列表](#获取用户专栏文集列表) - ---- - -## 获取用户专栏文章列表 - -> https://api.bilibili.com/x/space/article - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|-------|--------------------------------------------------------------------------|-----| -| mid | num | 用户uid | | √ | -| pn | num | | 默认:1 | | -| ps | num | | 默认:30
范围:[1,30] | | -| sort | str | | `publish_time`:最新发布
`view`:最多阅读
`fav`:最多收藏
默认:`publish_time` | | - -**json回复:** - -### 根对象 - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|--------------------| -| code | num | 返回值 | 0:成功
-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:无
0:个人认证
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:无
1:月大会员
2:年度及以上大会员 | -| status | num | 大会员状态 | 0:无
1:有 | -| due_date | num | 大会员过期时间时间戳 | 单位:毫秒 | -| vip_pay_type | num | 支付类型 | | -| theme_type | num | `0` | | -| label | obj | 大会员标签 | | -| avatar_subscript | num | 是否显示大会员图标 | 0:不显示
1:显示 | -| nickname_color | str | 大会员昵称颜色 | | - -### `data`对象 -> `articles`数组中的对象 -> `author`对象 -> `vip`对象 -> `label`对象 - -| 字段名 | 类型 | 内容 | 备注 | -|-------------|-----|--------|------------------------------------------------------------------------------------------------------------------------------| -| path | str | `空串` | | -| text | str | 会员类型文案 | `大会员` `年度大会员` `十年大会员` `百年大会员` `最强绿鲤鱼` | -| label_theme | str | 会员标签 | vip:大会员
annual_vip:年度大会员
ten_annual_vip:十年大会员
hundred_annual_vip:百年大会员
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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 获取用户专栏文集列表 - -> https://api.bilibili.com/x/article/up/lists - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|----------|-----|-------|-----|-------------------| -| mid | num | 用户uid | √ | | -| sort | num | 排序方式 | | 0:最近更新
1:最多阅读 | -| jsonp | str | | | | -| callback | str | | | | - -**json回复:** - -### 根对象 - -| 字段名 | 类型 | 内容 | 备注 | -|---------|-----|------|--------------------| -| code | num | 响应码 | 0:成功
-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' -``` - -
-点击查看 - -```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 - } -} -``` - -
diff --git a/audio/coin&fav.md b/audio/coin&fav.md deleted file mode 100644 index 0106230..0000000 --- a/audio/coin&fav.md +++ /dev/null @@ -1,152 +0,0 @@ -# 音频投币&收藏 - -- [查询音频收藏状态](#查询音频收藏状态) -- [查询音频投币数](#查询音频投币数) -- [投币音频](#投币音频) - ---- - -## 查询音频收藏状态 - -> https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| sid | num | 音频auid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:账号未登陆
7201006:该音频不存在或已被下架 | -| msg | str | 错误信息 | 默认为success | -| data | bool | 是否收藏 | false:未收藏
true:已收藏 | - -**示例:** - -查询音频`au13598`的收藏状态 - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll' \ ---data-urlencode 'sid=13598' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": true -} -``` - -
- -## 查询音频投币数 - -> https://www.bilibili.com/audio/music-service-c/web/coin/audio - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| sid | num | 音频auid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:账号未登陆
7201006:该音频不存在或已被下架 | -| msg | str | 错误信息 | 默认为success | -| data | num | 投币数量 | 0为未投币,上限为2 | - -**示例:** - -查询音频`au13598`的投币数 - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/coin/audio' \ ---data-urlencode 'sid=15664' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": 1 -} -``` - -## 投币音频 - -> https://www.bilibili.com/audio/music-service-c/web/coin/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------- | ------ | ---- | -| sid | num | 音频 auid | 必要 | | -| multiply | num | 投币数量(最大为 2) | 必要 | | -| csrf | str | CSRF Token(位于 cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:账号未登陆
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;' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "0", - "data": "1" -} -``` - -
diff --git a/audio/info.md b/audio/info.md deleted file mode 100644 index 893cee8..0000000 --- a/audio/info.md +++ /dev/null @@ -1,432 +0,0 @@ -# 歌曲基本信息 - -- [查询歌曲基本信息](#查询歌曲基本信息) -- [查询歌曲TAG](#查询歌曲TAG) -- [查询歌曲创作成员列表](#查询歌曲创作成员列表) -- [获取歌曲歌词](#获取歌曲歌词) - ---- - -## 查询歌曲基本信息 - -> https://www.bilibili.com/audio/music-service-c/web/song/info - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| sid | num | 音频auid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
72000000:参数错误
7201006:该音频不存在或已被下架
72010027:版权音乐重定向 | -| msg | str | 错误信息 | 默认为success | -| data | 正确时:obj
错误时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------ | ------------------ | ------------------ | -| id | num | 音频auid | | -| uid | num | UP主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:无
1:月会员
2:年会员 | -| status | num | 会员状态 | 0:无
1:有 | -| due_date | num | 会员到期时间 | 时间戳 毫秒 | -| vip_pay_type | num | 会员开通状态 | 0:无
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": { - "id": 13598, - "uid": 486183, - "uname": "排骨教主", - "author": "排骨教主", - "title": "牵丝戏", - "cover": "http://i0.hdslb.com/bfs/music/cf50d93b4dc08bfc6d3112041d6de0e56045ac5b.jpg", - "intro": "自制 这次要特别感谢山东省京剧院的各位年轻的老师们对我戏腔发声的悉心指导\n关注排骨的微博@排骨节操收割机\n排骨QQ群456237456\n感谢@妄北没睡够(新浪微博) 画的视频图,太美了!!!!!\n", - "lyric": "http://i0.hdslb.com/bfs/music/150587810313598.lrc", - "crtype": 1, - "duration": 239, - "passtime": 1501640683, - "curtime": 1590154258, - "aid": 2554020, - "bvid": "BV1us411S7E6", - "cid": 3990196, - "msid": 0, - "attr": 0, - "limit": 0, - "activityId": 0, - "limitdesc": "", - "ctime": null, - "statistic": { - "sid": 13598, - "play": 1028516, - "collect": 30914, - "comment": 523, - "share": 384 - }, - "vipInfo": { - "type": 2, - "status": 1, - "due_date": 1620316800000, - "vip_pay_type": 0 - }, - "collectIds": [ - 15967839 - ], - "coin_num": 1777 - } -} -``` - -
- -## 查询歌曲TAG - -> 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' -``` - -
-查看响应示例: - -```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": "流行" - } - ] -} -``` - -
- -## 查询歌曲创作成员列表 - -> 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:歌手
2:作词
3:作曲
4:编曲
5:后期/混音
7:封面制作
8:音源
9:调音
10:演奏
11:乐器
127:UP主 | - -`data`数组中的对象中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| 0 | str | 成员1 | | -| n | str | 成员(n+1) | | -| …… | str | …… | …… | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---------- | ---------------- | -| mid | num | 0 | **作用尚不明确** | -| name | str | 成员名 | | -| member_id | num | 成员id?? | **作用尚不明确** | - -**示例:** - -查询音频`au815861`的创作成员信息 - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/member/song' \ ---data-urlencode 'sid=815861' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": [ - { - "list": [ - { - "mid": 0, - "name": "匀子Cyrena", - "member_id": 164341 - } - ], - "type": 1 - }, - { - "list": [ - { - "mid": 0, - "name": "圣月樱泪 ", - "member_id": 12349 - } - ], - "type": 2 - }, - { - "list": [ - { - "mid": 0, - "name": "Days的Wing翼", - "member_id": 13777 - } - ], - "type": 3 - }, - { - "list": [ - { - "mid": 0, - "name": "Days的Wing翼", - "member_id": 13777 - } - ], - "type": 4 - }, - { - "list": [ - { - "mid": 0, - "name": "嘟比Dubi", - "member_id": 40902 - } - ], - "type": 5 - }, - { - "list": [ - { - "mid": 0, - "name": "匀子Cyrena", - "member_id": 164222 - } - ], - "type": 127 - } - ] -} -``` - -
- -## 获取歌曲歌词 - -> 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
错误时:null | lrc格式歌词信息 | 无为空 | - -**示例:** - -获取音频`au15664`的歌词信息 - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/song/lyric' \ ---data-urlencode 'sid=15664' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": "[ar:萧忆情]\n\n[ti:威风堂堂]\n\n[00:26.64]引诱谁去摘下禁果\n\n[00:28.11]甜美滋味偷咬一口\n\n[00:30.03]触及到了最深处果核\n\n[00:31.82]身体开始颤抖\n\n[00:33.85]舌尖已濡湿双腿内侧\n\n[00:35.55]神经末梢警报响彻\n\n[00:37.39]自内而外逐渐变得火热\n\n[00:39.14]现在无须再遵守规则\n\n[00:42.14]还故作矜持说违心的话\n\n[00:45.84]为何动作不停下\n\n[00:47.85]停下来\n\n[00:48.39]已经快停不下来\n\n[00:49.42]还想索取更多\n\n[00:50.46]踩碎那PRIDE\n\n[00:51.41]忘记毫无意义的理智存在\n\n[00:53.27]让暧昧因子在四处的徘徊\n\n[00:55.19]给我收起你那\n\n[00:56.21]太虚伪的STYLE\n\n[00:57.01]直白赤裸的爱\n\n[00:58.00]最原始的DIVE\n\n[00:58.86]喘息中断续的声音叫期待\n\n[01:00.65]别掩饰此刻\n\n[01:01.50]那让人意乱情迷的SMILE\n\n[01:10.90]缓慢吐息迷惑双眼的雾\n\n[01:12.49]强制禁锢身下轻舔锁骨\n\n[01:14.23]就让封锁的心渐渐领悟\n\n[01:15.97]别继续装无辜\n\n[01:17.54]开始脱下的衬衫\n\n[01:19.08]最后的纽扣解开它\n\n[01:20.98]快感get\n\n[01:21.85]从此不顾一切\n\n[01:23.32]还在犹豫什么\n\n[01:24.78]Darling\n\n[01:26.54]站在自由世界的正中央\n\n[01:30.09]窥探你幻想的是否太过浪荡\n\n[01:33.99]太难耐\n\n[01:34.41]分分秒秒太难耐\n\n[01:35.61]床笫间的狩猎\n\n[01:36.63]充满野心的TRY\n\n[01:37.66]不承认口头上无理的摊牌\n\n[01:39.58]只想要在身体里深埋\n\n[01:41.34]现在由我掌控\n\n[01:42.36]随心所欲的LIFE\n\n[01:43.40]给你要的未来\n\n[01:44.41]永远不腐坏\n\n[01:45.32]所有的阴暗面统统藏起来\n\n[01:46.70]仅为你一人展现那能骄傲夸耀的MIND\n\n[01:49.90]将不安的情绪碾至粉末\n\n[01:53.14]抹在你胸口印上最鲜艳的红\n\n[02:21.06]别打算缩起来置身之外\n\n[02:22.64]无论何时\n\n[02:23.27]NO TIME\n\n[02:23.58]ALL RIGHT\n\n[02:24.21]打破一切的羞耻值\n\n[02:25.43]哪里奇怪\n\n[02:26.06]哪里奇怪\n\n[02:26.68]哪里奇怪\n\n[02:27.30]BURN BURN BURN\n\n[02:28.22]想要的就是那\n\n[02:29.17]啊 没错\n\n[02:29.87]再给我更多的触摸\n\n[02:31.62]顺位交换贴近肌肤的DANCE\n\n[02:33.34]好吧 肆无忌惮\n\n[02:34.98]停下来\n\n[02:35.35]已经快停不下来\n\n[02:36.50]还想索取更多\n\n[02:37.68]踩碎那PRIDE\n\n[02:38.38]忘记毫无意义的理智存在\n\n[02:40.27]让暧昧因子在四处的徘徊\n\n[02:42.11]给我收起你那\n\n[02:43.16]太虚伪的STYLE\n\n[02:44.00]直白赤裸的爱\n\n[02:45.06]最原始的DIVE\n\n[02:45.90]喘息中断续的声音叫期待\n\n[02:47.76]别掩饰此刻那让人意乱情迷的SMILE\n\n[02:50.64]将不安的情绪碾至粉末\n\n[02:54.09]抹在你胸口印上最鲜艳的红\n\n[02:58.35]抛弃所有只想拥有此刻\n\n" -} -``` - -
diff --git a/audio/music_list.md b/audio/music_list.md deleted file mode 100644 index 258beb5..0000000 --- a/audio/music_list.md +++ /dev/null @@ -1,790 +0,0 @@ -# 歌单&音频收藏夹详细信息 - -- [歌单&音频收藏夹详细信息](#歌单音频收藏夹详细信息) - - [查询自己创建的歌单](#查询自己创建的歌单) - - [查询音频收藏夹(默认歌单)信息](#查询音频收藏夹默认歌单信息) - - [查询热门歌单](#查询热门歌单) - - [查询热门榜单](#查询热门榜单) - ---- - -## 查询自己创建的歌单 - -> https://www.bilibili.com/audio/music-service-c/web/collections/list - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| pn | num | 页码 | 必要 | | -| ps | num | 每页项数 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----------------------------- | -------- | ----------------------------------------------------- | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:未登录 | -| msg | str | 错误信息 | 默认为success | -| data | 正确时:obj
错误时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ------ | ------------ | ---- | -| curPage | num | 当前页码 | | -| pageCount | num | 总计页数 | | -| totalSize | num | 总计收藏夹数 | | -| pageSize | num | 当前页面项数 | | -| data | array | 歌单列表 | | - -`data`中的`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ---- | -| 0 | obj | 音频收藏夹mlid1 | | -| n | obj | 音频收藏夹mlid(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ------ | ------------------------ | -------------------------------- | -| id | num | 音频收藏夹mlid | | -| uid | num | 创建用户mid | | -| uname | str | 创建用户昵称 | | -| title | str | 歌单标题 | | -| type | num | 收藏夹属性 | 0:普通收藏夹
1:默认收藏夹 | -| published | num | 是否公开 | 0:不公开
1:公开 | -| cover | str | 歌单封面图片url | | -| ctime | num | 歌单创建时间 | 时间戳 | -| song | num | 歌单中的音乐数量 | | -| desc | str | 歌单备注信息 | | -| sids | array | 歌单中的音乐 | | -| menuId | num | 音频收藏夹对应的歌单amid | | -| statistic | obj | 歌单状态数信息 | | - -`data`中的`sids`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ---------------- | -| 0 | num | 收藏的音频auid1 | | -| n | num | 收藏的音频auid(n+1) | 按照歌单顺序排列 | -| …… | num | …… | …… | - -`data`中的`statistic`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------------------------ | ---- | -| sid | num | 音频收藏夹对应的歌单amid | | -| play | num | 播放数 | | -| collect | num | 收藏数 | | -| comment | null | 评论数 | | -| share | num | 分享数 | | - -**示例:** - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/list' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -共计创建了两个歌单,如下 - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": { - "curPage": 1, - "pageCount": 1, - "totalSize": 2, - "pageSize": 2, - "data": [ - { - "id": 15967839, - "uid": 293793435, - "uname": "社会易姐QwQ", - "title": "默认歌单", - "type": 1, - "published": 1, - "cover": "http://i0.hdslb.com/bfs/music/1e079693701d2f525850c288fcc48fa4259a73f6.jpg", - "ctime": 1519295502, - "song": 13, - "desc": "", - "sids": [ - 11673, - 276404, - 15664, - 737904, - 108588, - 1286999, - 658085, - 682118, - 736952, - 48716, - 15711, - 13598, - 57744 - ], - "menuId": 15958713, - "statistic": { - "sid": 15958713, - "play": 0, - "collect": 0, - "comment": null, - "share": 0 - } - }, - { - "id": 30894022, - "uid": 293793435, - "uname": "社会易姐QwQ", - "title": "test", - "type": 0, - "published": 1, - "cover": "", - "ctime": 1590154346, - "song": 0, - "desc": "test1", - "sids": [], - "menuId": 30866686, - "statistic": { - "sid": 30866686, - "play": 0, - "collect": 0, - "comment": 0, - "share": 0 - } - } - ] - } -} -``` - -
- -## 查询音频收藏夹(默认歌单)信息 - -> https://www.bilibili.com/audio/music-service-c/web/collections/info - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | ------------------ | -| sid | num | 音频收藏夹mlid | 必要 | 必须为默认收藏夹mlid | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----------------------------- | -------- | ----------------------------------------------------- | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:未登录 | -| msg | str | 错误信息 | 默认为success | -| data | 正确时:obj
错误时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ------ | ------------------------ | ---------------------- | -| id | num | 音频收藏夹mlid | | -| uid | num | 创建用户mid | | -| uname | str | 创建用户昵称 | | -| title | str | 默认歌单 | 恒为`默认歌单` | -| type | num | 1 | 恒为`1` | -| published | num | 是否公开 | 0:不公开
1:公开 | -| cover | str | 歌单封面图片url | | -| ctime | num | 歌单创建时间 | 时间戳 | -| song | num | 歌单中的音乐数量 | | -| desc | str | 空 | 恒为空 | -| sids | array | 歌单中的音乐 | | -| menuId | num | 音频收藏夹对应的歌单amid | 与普通歌单不同通用 | -| statistic | obj | 歌单状态数信息 | | - -`data`中的`sids`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ---------------- | -| 0 | num | 收藏的音频auid1 | | -| n | num | 收藏的音频auid(n+1) | 按照歌单顺序排列 | -| …… | num | …… | …… | - -`data`中的`statistic`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------------------------ | ---- | -| sid | num | 音频收藏夹对应的歌单amid | | -| play | num | 0 | | -| collect | num | 0 | | -| comment | null | - | | -| share | num | 0 | | - -**示例:** - -查询我的默认歌单,id为` 15967839 ` - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/info' \ ---data-urlencode 'sid=15967839 ' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": { - "id": 15967839, - "uid": 293793435, - "uname": "社会易姐QwQ", - "title": "默认歌单", - "type": 1, - "published": 1, - "cover": "http://i0.hdslb.com/bfs/music/1e079693701d2f525850c288fcc48fa4259a73f6.jpg", - "ctime": 1519295502, - "song": 13, - "desc": "", - "sids": [ - 11673, - 276404, - 15664, - 737904, - 108588, - 1286999, - 658085, - 682118, - 736952, - 48716, - 15711, - 13598, - 57744 - ], - "menuId": 15958713, - "statistic": { - "sid": 15958713, - "play": 0, - "collect": 0, - "comment": null, - "share": 0 - } - } -} -``` - -
- - -## 查询热门歌单 - -> https://www.bilibili.com/audio/music-service-c/web/menu/hit - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --- | --- | ---- | --- | --- | -| pn | num | 页码 | 必要 | | -| ps | num | 每页项数 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | --------------------- | ---- | ----------------------------------------- | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:未登录 | -| msg | str | 错误信息 | 默认为success | -| data | 正确时:obj
错误时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------ | --- | -| curPage | num | 当前页码 | | -| pageCount | num | 总计页数 | | -| totalSize | num | 总计收藏夹数 | | -| pageSize | num | 当前页面项数 | | -| data | array | 歌单列表 | | - -`data`中的`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| --- | --- | -------------- | --- | -| 0 | obj | 音频收藏夹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:普通歌单
2:置顶歌单
5:PGC歌单 | -| off | num | 歌单是否公开 | 0:公开
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` - -
-查看响应示例: - -```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 - }] - } -} -``` - -
- -## 查询热门榜单 - -> https://www.bilibili.com/audio/music-service-c/web/menu/rank - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --- | --- | ---- | --- | --- | -| pn | num | 页码 | 必要 | | -| ps | num | 每页项数 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | --------------------- | ---- | ----------------------------------------- | -| code | num | 返回值 | 0:成功
72000000:参数错误
72010002:未登录 | -| msg | str | 错误信息 | 默认为success | -| data | 正确时:obj
错误时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------ | --- | -| curPage | num | 当前页码 | | -| pageCount | num | 总计页数 | | -| totalSize | num | 总计收藏夹数 | | -| pageSize | num | 当前页面项数 | | -| data | array | 歌单列表 | | - -`data`中的`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| --- | --- | -------------- | --- | -| 0 | obj | 音频收藏夹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:普通歌单
2:置顶歌单
5:PGC歌单 | -| off | num | 歌单是否公开 | 0:公开
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` - -
-查看响应示例: - -```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 - }] - }] - } -} -``` - -
diff --git a/audio/musicstream_url.md b/audio/musicstream_url.md deleted file mode 100644 index dc89e2d..0000000 --- a/audio/musicstream_url.md +++ /dev/null @@ -1,282 +0,0 @@ -# 音频流URL - - - -- [获取音频流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:成功
7201006:未找到或已下架
72000000:请求错误 | -| msg | str | 错误信息 | 默认为success | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | --------- | --------------------------------------- | -| sid | num | 音频auid | | -| type | num | 音质标识 | -1:试听片段(192K)
1:192K | -| info | str | 空 | **作用尚不明确** | -| timeout | num | 有效时长 | 单位为秒
一般为3h | -| size | num | 文件大小 | 单位为字节
当`type`为-1时`size`为0 | -| cdns | array | 音频流url | | -| qualities | null | - | | -| title | null | - | | -| cover | null | - | | - -`data`对象的`cdns`数组: - - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | str | 音频流url | | -| 1 | str | 备用音频流url | | - -**示例:** - -```shell -curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \ ---data-urlencode 'sid=sid=15664' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": { - "sid": 15664, - "type": 1, - "info": "", - "timeout": 10800, - "size": 4853263, - "cdns": [ - "https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=0ecd3c7a8d9539f260239d8fa4c093db", - "https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=f3fe53aff56655b1b7264ae4ab65872e" - ], - "qualities": null, - "title": null, - "cover": null - } -} -``` - -
- -## 获取音频流URL(可获取付费音频)(双端) - -> https://api.bilibili.com/audio/music-service-c/url - -*请求方式:GET* - -认证方式:APP或Cookie(SESSDATA) - -**注:付费音乐需要有带大会员或音乐包的账号登录(Cookie或APP),否则为试听片段** - -无损音质需要登录的用户为会员 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| songid | num | 音频auid | 必要 | | -| quality | num | 音质代码 | 必要 | **详情见上表** | -| privilege | num | 必须为`2` | 必要 | | -| mid | num | 当前用户mid | 必要 | 可为任意值 | -| platform | str | 平台标识 | 必要 | 可为任意值 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ----------------------------------------------------------- | -| code | num | 返回值 | 0:成功
7201006:未找到或已下架
72000000:请求错误 | -| msg | str | 错误信息 | 默认为success | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ----------- | ------------------------------------------------------------ | -| sid | num | 音频auid | | -| type | num | 音质标识 | -1:试听片段(192K)
0:128K
1:192K
2:320K
3:FLAC | -| info | str | 空 | **作用尚不明确** | -| timeout | num | 有效时长 | 单位为秒
一般为3h | -| size | num | 文件大小 | 单位为字节
当`type`为-1时`size`为0 | -| cdns | array | 音频流url | | -| qualities | array | 音质列表 | | -| title | str | 音频标题 | | -| cover | str | 音频封面url | | - -`data`对象的`cdns`数组: - - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | str | 音频流url | | -| 1 | str | 备用音频流url | | - -`data`对象的`qualities`数组: - - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---------------- | -| 0 | obj | 音质1 | 音质由高向低顺序 | -| n | obj | 音质(n+1) | | - -`qualities`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------- | ---------------------- | -| type | num | 音质代码 | **详情见上表** | -| desc | str | 音质名称 | | -| size | num | 该音质的文件大小 | 单位为字节 | -| bps | str | 比特率标签 | | -| tag | str | 音质标签 | | -| require | num | 是否需要会员权限 | 0:不需要
1:需要 | -| requiredesc | str | 会员权限标签 | | - -**示例:** - -获取音频`au682118`的音频流url,音质为`3(无损)` - -Cookie方式: - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": { - "sid": 682118, - "type": 3, - "info": "", - "timeout": 10800, - "size": 34456494, - "cdns": [ - "https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d", - "https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=3ac7d94dda5664f6f95dbfffeb289744" - ], - "qualities": [ - { - "type": 3, - "desc": "无损音质", - "size": 34456494, - "bps": "", - "tag": "SQ", - "require": 1, - "requiredesc": "付费享受" - }, - { - "type": 2, - "desc": "高品质", - "size": 10788682, - "bps": "320kbit/s", - "tag": "HQ", - "require": 0, - "requiredesc": "" - }, - { - "type": 1, - "desc": "标准", - "size": 6491973, - "bps": "192kbit/s", - "tag": "", - "require": 0, - "requiredesc": "" - }, - { - "type": 0, - "desc": "流畅", - "size": 4343667, - "bps": "128kbit/s", - "tag": "", - "require": 0, - "requiredesc": "" - } - ], - "title": "aLIEz", - "cover": "http://i0.hdslb.com/bfs/music/61d3f8cfdce14d2d1b006af59559c9bd22a2d21b.jpg" - } -} -``` - -
- -## 音频流的获取 - -将`data`.`cdns`.`[0]`或`data`.`cdns`.`[1]`中的内容作为url进行GET操作 - -需要验证请求`user-agent` 不为空 - -**user-agent错误并且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文件 diff --git a/audio/status_number.md b/audio/status_number.md deleted file mode 100644 index fa5b66c..0000000 --- a/audio/status_number.md +++ /dev/null @@ -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:成功
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "data": { - "sid": 15664, - "play": 1377390, - "collect": 44340, - "comment": 2756, - "share": 4114 - } -} -``` - -
diff --git a/bangumi/follow.md b/bangumi/follow.md deleted file mode 100644 index e46beea..0000000 --- a/bangumi/follow.md +++ /dev/null @@ -1,129 +0,0 @@ -# 追番相关 - -- [追番](#追番) -- [取消追番](#取消追番) - ---- - -## 追番 -> https://api.bilibili.com/pgc/web/follow/add - -*请求方式:POST* - -鉴权方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|----------|-----|--------|-----|-----| -| season_id | str | 剧集ssid | 必要 | | -| csrf | str | csrf token(位于cookies中的bili_jct) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------ | ------------------------------- | -| code | num | 返回值 | 0:成功
-111:csrf校验失败 | -| 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' \ -``` - -
- -查看响应示例: - -```json -{ - "code": 0, - "message": "success", - "result": { - "fmid": 0, - "relation": false, - "status": 2, - "toast": "自己追的番就要好好看完哟^o^" - } -} -``` -
- -## 取消追番 - -> https://api.bilibili.com/pgc/web/follow/del - -*请求方式:POST* - -鉴权方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ----------------------------------- | ------ | ---- | -| season_id | str | 剧集ssid | 必要 | | -| csrf | str | csrf token(位于cookies中的bili_jct) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------ | ------------------------------- | -| code | num | 返回值 | 0:成功
-111:csrf校验失败 | -| 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' \ -``` - -
- -查看响应示例: - -```json -{ - "code": 0, - "message": "success", - "result": { - "fmid": 0, - "relation": false, - "status": 0, - "toast": "已取消追番" - } -} -``` -
diff --git a/bangumi/info.md b/bangumi/info.md deleted file mode 100644 index 857257c..0000000 --- a/bangumi/info.md +++ /dev/null @@ -1,1029 +0,0 @@ -# 剧集基本信息 - -- [剧集基本信息(mdid方式)](#剧集基本信息mdid方式) -- [获取剧集明细(web端)(ssid/epid方式)](#获取剧集明细web端ssidepid方式) -- [获取剧集分集信息](#获取剧集分集信息) - ---- - -## 剧集基本信息(mdid方式) - - -> https://api.bilibili.com/pgc/review/user - -*请求方式:GET* - -鉴权方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|----------|-----|--------|-----|-----| -| media_id | str | 剧集mdid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|----------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-404:错误 | -| message | str | 错误信息 | 默认为success | -| result | obj | 信息本体 | | - -`result`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|-----|--------|----------| -| media | obj | 剧集信息 | | -| review | obj | 用户操作信息 | 仅登录时存在此项 | - -`result`中的`media`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------------|-------|-----------|--------------------------------------------------------------| -| areas | array | 地区 | | -| cover | str | 封面图片url | | -| horizontal_picture | str | 横板封面图片url | | -| media_id | num | 剧集mdid | | -| new_ep | obj | 最新一话信息 | | -| rating | obj | 评分信息 | | -| season_id | num | 剧集ssid | | -| share_url | url | 剧集详情页连接 | | -| title | str | 标题 | | -| type | num | 剧集类型id | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
6:漫画
7:综艺 | -| type_name | str | 剧集类型 | | - -`media`中的`areas`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 地区信息1 | | -| n | obj | 地区信息(n+1) | | -| …… | obj | …… | | - -`areas`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| id | num | 所属地区编号 | 1:中国大陆
2:日本
3:美国
4:英国
5:加拿大
6:中国香港
7:中国台湾
8:韩国
9:法国
10:泰国
12:新加坡
13:西班牙
14:俄罗斯
15:德国
16:其他
17:丹麦
18:乌克兰
19:以色列
20:伊朗
24:匈牙利
22:克罗地亚
23:冰岛
24:匈牙利
25:南非
26:印尼
27:印度
30:土耳其
31:墨西哥
32:委内瑞拉
33:巴西
34:希腊
35:意大利
36:挪威
37:捷克
39:新西兰
40:智利
41:比利时
42:波兰
43:澳大利亚
44:爱尔兰
45:瑞典
46:瑞士
47:芬兰
48:苏联
49:荷兰
51:阿根廷
53:古巴
54:菲律宾
55:哈萨克斯坦 | -| name | str | 所属地区名称 | | - -`media`中的`new_ep`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|-----------|--------------------| -| id | num | 最新一话的epid | | -| index | str | 最新一话名称 | | -| index_show | str | 最新一话显示名称 | eg. `第1话`、`更新至第4话` | - -`media`中的`rating`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|--------|-----| -| count | num | 总计评分人数 | | -| score | num | 评分 | | - -`result`中的`review`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|-----|--------| -| is_coin | num | 0 | 作用尚不明确 | -| is_open | num | 1 | 作用尚不明确 | - -**示例:** - -查询剧集`md28220978`的基本信息 - -```shell -curl -G 'https://api.bilibili.com/pgc/review/user' \ ---data-urlencode 'media_id=28220978' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "success", - "result": { - "media": { - "areas": [ - { - "id": 2, - "name": "日本" - } - ], - "cover": "http://i0.hdslb.com/bfs/bangumi/8aa0bfce050c72c6626b63d3093a88527c251026.jpg", - "horizontal_picture": "http://i0.hdslb.com/bfs/bangumi/8aa0bfce050c72c6626b63d3093a88527c251026.jpg", - "media_id": 28220978, - "new_ep": { - "id": 21278, - "index": "14", - "index_show": "全14话" - }, - "rating": { - "count": 80693, - "score": 9.9 - }, - "season_id": 1172, - "share_url": "https://www.bilibili.com/bangumi/media/md28220978", - "title": "轻音少女 第一季", - "type": 1, - "type_name": "番剧" - } - } -} -``` - -
- -## 获取剧集明细(web端)(ssid/epid方式) - -> https://api.bilibili.com/pgc/view/web/season - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------------ | ------------------------ | -| season_id | num | 番剧ssid | 必要(可选) | season_id与ep_id任选其一 | -| ep_id | num | 剧集epid | 必要(可选) | season_id与ep_id任选其一 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------- | -| code | num | 返回值 | 0:成功
-404:错误 | -| message | str | 错误信息 | 默认为success | -| ttl | num | 1 | 作用尚不明确 | -| result | obj | 信息本体 | | - -`result`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ------ | -------------------------- | ------------------------------------------ | -| activity | obj | 参与的活动 | | -| alias | str | 空 | 作用尚不明确 | -| bkg_cover | str | 网页背景图片url | 无则为空 | -| cover | str | 剧集封面图片url | | -| episodes | array | 正片剧集列表 | | -| evaluate | str | 简介 | | -| jp_title | str | 空 | 作用尚不明确 | -| link | str | 简介页面url | | -| media_id | num | 剧集mdid | | -| mode | num | 2 | 作用尚不明确 | -| new_ep | obj | 更新信息 | | -| payment | obj | 会员&付费信息 | 若无相关内容则无此项 | -| positive | obj | | | -| publish | obj | 发布信息 | | -| rating | obj | 评分信息 | 若无相关内容则无此项 | -| record | str | 备案号 | 无则为空 | -| rights | obj | 属性标志信息 | | -| season_id | num | 番剧ssid | | -| season_title | str | 剧集标题 | | -| seasons | array | 同系列所有季信息 | | -| section | array | 花絮、PV、番外等非正片内容 | 若无相关内容则无此项 | -| series | obj | 系列信息 | | -| share_copy | str | 《{标题}》+{备注} | | -| share_sub_title | str | 备注 | | -| share_url | str | 番剧播放页面url | | -| show | obj | 网页全屏标志 | | -| square_cover | str | 方形封面图片url | | -| stat | obj | 状态数 | | -| status | num | | | -| subtitle | str | 剧集副标题 | | -| title | str | 剧集标题 | | -| total | num | 总计正片集数 | 未完结:大多为-1
已完结:正整数 | -| type | num | 剧集类型 | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | -| up_info | obj | UP主信息 | 若无相关内容则无此项 | - -`result`中的`activity`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | ------------ | -| head_bg_url | str | 空 | 作用尚不明确 | -| id | num | 活动id | | -| title | str | 活动标题 | | - -`result`中的`episodes`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------ | -| 0 | obj | 正片第1集 | | -| n | obj | 正片第(n+1)集 | 按照顺序排列 | -| …… | obj | | | - -`episodes`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | --------------------------------- | -------------------- | -| aid | num | 单集稿件avid | | -| badge | str | 标签文字 | 例如`会员`、`限免`等 | -| badge_info | obj | | | -| badge_type | num | | | -| bvid | str | 单集稿件bvid | | -| cid | num | 视频cid | | -| cover | str | 单集封面url | | -| dimension | obj | 分辨率信息 | | -| from | str | | | -| id | num | 单集epid | | -| link | str | 单集网页url | | -| long_title | str | 单集完整标题 | | -| pub_time | num | 发布时间 | 时间戳 | -| pv | num | 0 | 作用尚不明确 | -| release_date | str | 空 | 作用尚不明确 | -| rights | obj | | | -| share_copy | str | 《{标题}》+第n话+{单集完整标题} | | -| share_url | str | 单集网页url | | -| short_link | str | 单集网页url短链接 | | -| status | num | | | -| subtitle | str | 单集副标题 | 观看次数文字 | -| title | str | 单集标题 | | -| vid | str | 单集vid | vupload_+{cid} | - -`result`中的`new_ep`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ---------------- | -| desc | str | 更新备注 | | -| id | num | 最新一话epid | | -| is_new | num | 是否最新发布 | 0:否
1:是 | -| title | str | 最新一话标题 | | - -`result`中的`payment`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ---- | ---- | ---- | -| discount | num | | | -| pay_type | obj | | | -| price | str | | | -| promotion | str | | | -| tip | str | | | -| vip_discount | num | | | -| vip_first_promotion | str | | | -| vip_promotion | str | | | - -`result`中的`positive`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---- | ---- | -| id | num | | | -| title | str | | | - -`result`中的`publish`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ---------------- | ------------------------ | -| is_finish | num | 完结状态 | 0:未完结
1:已完结 | -| is_started | num | 是否发布 | 0:未发布
1:已发布 | -| pub_time | str | 发布时间 | YYYY-MM-DDD hh:mm:ss | -| pub_time_show | str | 发布时间文字介绍 | | -| unknow_pub_date | num | 0 | 作用尚不明确 | -| weekday | num | 0 | 作用尚不明确 | - -`result`中的`rating`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------ | ---- | -| count | num | 总计评分人数 | | -| score | num | 评分 | | - -`result`中的`rights`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ---- | -------- | ------------------------------- | -| allow_bp | num | | | -| allow_bp_rank | num | | | -| allow_download | num | | | -| allow_review | num | | | -| area_limit | num | | | -| ban_area_show | num | | | -| can_watch | num | | | -| copyright | str | 版权标志 | bilibili:授权
dujia:独家 | -| forbid_pre | num | | | -| is_cover_show | num | | | -| is_preview | num | | | -| only_vip_download | num | | | -| resource | str | | | -| watch_platform | num | | | - -`result`中的`seasons`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ------------ | -| 0 | obj | 同系列剧集1 | | -| n | obj | 同系列剧集(n+1) | 按照顺序排列 | -| …… | obj | | | - -`seasons`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---- | ---- | -| badge | str | | | -| badge_info | obj | | | -| badge_type | num | | | -| cover | str | | | -| media_id | str | | | -| new_ep | num | | | -| season_id | obj | | | -| season_title | num | | | -| season_type | str | | | -| stat | obj | | | - -`result`中的`section`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ------------ | -| 0 | obj | 其他内容块1 | | -| n | obj | 其他内容块(n+1) | 按照顺序排列 | -| …… | obj | | | - -`section`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ---- | -| episode_id | num | 0 | | -| episodes | array | 板块内容 | | -| id | num | 板块id? | | -| title | str | 板块标题 | | -| type | num | ? | | - -`result`中的`series`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------ | ---- | -| series_id | num | 系列id | | -| series_title | str | 系列名 | | - -`result`中的`show`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | -------------------- | -| wide_screen | num | 是否全屏 | 0:正常
1:全屏 | - -`result`中的`stat`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ------ | ---- | -| coins | num | 投币数 | | -| danmakus | num | 弹幕数 | | -| favorites | num | 收藏数 | | -| likes | num | 点赞数 | | -| reply | num | 评论数 | | -| share | num | 分享数 | | -| views | num | 播放数 | | - -`result`中的`up_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ----------- | ---- | -| avatar | str | 头像图片url | | -| follower | num | 粉丝数 | | -| is_follow | num | 0 | | -| mid | num | UP主mid | | -| pendant | obj | | | -| theme_type | num | 0 | | -| uname | str | UP主昵称 | | -| verify_type | num | | | -| vip_status | num | | | -| vip_type | num | | | - -# 获取剧集分集信息 - -> https://api.bilibili.com/pgc/web/season/section - -*请求方式:GET* - -鉴权方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----------|-----|--------|-----|-----| -| season_id | str | 剧集ssid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|-------------------| -| code | num | 返回值 | 0:成功
-404:错误 | -| message | str | 错误信息 | 默认为success | -| result | obj | 信息本体 | | - -`result`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|-------|--------|-----| -| main_section | obj | 正片信息 | | -| section | array | 花絮、PV等 | | - -`result`中的`main_section`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-------|------------------------------|-----| -| episodes | array | 分集信息 | | -| id | num | 分组id | | -| type | num | 0:正片
1:PV&其他
2:OP&ED | | -| title | str | | | - -`episodes`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|----------|-----| -| aid | num | 视频av号 | | -| badge | str | | | -| badge_info | obj | | | -| badge_type | num | 0 | | -| cid | num | 分集cid | | -| cover | str | 分集封面 | | -| from | str | bangumi | | -| id | num | 分集epId | | -| is_premiere | num | 0 | | -| long_title | str | 长标题 | | -| share_url | str | 分集播放页url | | -| status | num | 2 | | -| title | str | 短标题 | | -| vid | str | | | - -`badge_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------|-----|-----|-----| -| bg_color | str | | | -| bg_color_night | str | | | -| text | str | | | - -`section`数组中的对象: - -**同`main_section`对象** - -**示例:** - -```shell -curl -L -X GET 'https://api.bilibili.com/pgc/web/season/section?season_id=42290' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "success", - "result": { - "main_section": { - "episodes": [ - { - "aid": 300876247, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 772096113, - "cover": "http://i0.hdslb.com/bfs/archive/c09aec64c1787e287b0187498a4443177cc2112c.jpg", - "from": "bangumi", - "id": 606591, - "is_premiere": 0, - "long_title": "瞒天过海!罪犯新选组", - "share_url": "https://www.bilibili.com/bangumi/play/ep606591", - "status": 2, - "title": "1", - "vid": "" - }, - { - "aid": 555940678, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 779868818, - "cover": "http://i0.hdslb.com/bfs/archive/52ccef75fc179c7f8a4f2ff989a1249c78f564e0.jpg", - "from": "bangumi", - "id": 606592, - "is_premiere": 0, - "long_title": "光芒四射!遗物日本刀", - "share_url": "https://www.bilibili.com/bangumi/play/ep606592", - "status": 2, - "title": "2", - "vid": "" - }, - { - "aid": 216208730, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 779450100, - "cover": "http://i0.hdslb.com/bfs/archive/7eee64ff758fb426b6cd16bc7d525f4de98fd4dc.jpg", - "from": "bangumi", - "id": 606596, - "is_premiere": 0, - "long_title": "乔装打扮!潜入花街", - "share_url": "https://www.bilibili.com/bangumi/play/ep606596", - "status": 2, - "title": "3", - "vid": "" - }, - { - "aid": 386385026, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 786667756, - "cover": "http://i0.hdslb.com/bfs/archive/6851be597e1fa496a8b1486000e83654c2fac45c.jpg", - "from": "bangumi", - "id": 606597, - "is_premiere": 0, - "long_title": "一探究竟!神秘妖刀", - "share_url": "https://www.bilibili.com/bangumi/play/ep606597", - "status": 2, - "title": "4", - "vid": "" - }, - { - "aid": 729094525, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 793386614, - "cover": "http://i0.hdslb.com/bfs/archive/5dfa30d48188b26c616a05745132a59f6823dade.jpg", - "from": "bangumi", - "id": 606598, - "is_premiere": 0, - "long_title": "展现无遗!和尚与医生的决心", - "share_url": "https://www.bilibili.com/bangumi/play/ep606598", - "status": 2, - "title": "5", - "vid": "" - }, - { - "aid": 599314561, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 798315932, - "cover": "http://i0.hdslb.com/bfs/archive/3daae9ee434d335ff9e5a9d8244bc1e6b7ffa8d0.jpg", - "from": "bangumi", - "id": 606599, - "is_premiere": 0, - "long_title": "直捣敌巢!败德白川屋", - "share_url": "https://www.bilibili.com/bangumi/play/ep606599", - "status": 2, - "title": "6", - "vid": "" - }, - { - "aid": 259686552, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 807199844, - "cover": "http://i0.hdslb.com/bfs/archive/9ff73932c210abe64373be6f3959c2eee6c7470b.jpg", - "from": "bangumi", - "id": 606600, - "is_premiere": 0, - "long_title": "全力阻止!新选组解散", - "share_url": "https://www.bilibili.com/bangumi/play/ep606600", - "status": 2, - "title": "7", - "vid": "" - }, - { - "aid": 514942530, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 814175863, - "cover": "http://i0.hdslb.com/bfs/archive/31a19bf3af61e58f1e8c4a387779fc3272cb47a7.jpg", - "from": "bangumi", - "id": 606601, - "is_premiere": 0, - "long_title": "激烈战斗!池田屋事件", - "share_url": "https://www.bilibili.com/bangumi/play/ep606601", - "status": 2, - "title": "8", - "vid": "" - }, - { - "aid": 515024193, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 819960797, - "cover": "http://i0.hdslb.com/bfs/archive/68a0a12a74e99b6cd85cfa0fb7be70d82d8b6558.jpg", - "from": "bangumi", - "id": 606602, - "is_premiere": 0, - "long_title": "真心炸裂!人之思绪 鬼之念想", - "share_url": "https://www.bilibili.com/bangumi/play/ep606602", - "status": 2, - "title": "9", - "vid": "" - }, - { - "aid": 430293537, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 827739564, - "cover": "http://i0.hdslb.com/bfs/archive/6411f71c947ba9b011ca0fe2891334147ef1e14d.jpg", - "from": "bangumi", - "id": 606603, - "is_premiere": 0, - "long_title": "全力守护!美利坚黑船", - "share_url": "https://www.bilibili.com/bangumi/play/ep606603", - "status": 2, - "title": "10", - "vid": "" - }, - { - "aid": 858116183, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 833436271, - "cover": "http://i0.hdslb.com/bfs/archive/48736284b5cf0f3515cddb95f1c1b8658ec6c5ff.jpg", - "from": "bangumi", - "id": 606604, - "is_premiere": 0, - "long_title": "勇往直前!京都大决战", - "share_url": "https://www.bilibili.com/bangumi/play/ep606604", - "status": 2, - "title": "11", - "vid": "" - }, - { - "aid": 773279679, - "badge": "会员", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "会员" - }, - "badge_type": 0, - "cid": 840839493, - "cover": "http://i0.hdslb.com/bfs/archive/316f7c8a750699bf53ee44d43669fabb0271be86.jpg", - "from": "bangumi", - "id": 606605, - "is_premiere": 0, - "long_title": "替身传说!罪犯新选组", - "share_url": "https://www.bilibili.com/bangumi/play/ep606605", - "status": 13, - "title": "12", - "vid": "" - } - ], - "id": 81861, - "title": "正片", - "type": 0 - }, - "section": [ - { - "episodes": [ - { - "aid": 898153042, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 766274696, - "cover": "http://i0.hdslb.com/bfs/archive/ac27ed20081e99fc36720ef0714f81d8df2c279a.png", - "from": "bangumi", - "id": 576387, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep576387", - "status": 2, - "title": "PV", - "vid": "" - }, - { - "aid": 215937670, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 773008915, - "cover": "http://i0.hdslb.com/bfs/archive/0a6b589e9175dfee1d9699fb55c5c0677941994a.png", - "from": "bangumi", - "id": 606995, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep606995", - "status": 2, - "title": "西川贵教", - "vid": "" - }, - { - "aid": 813460609, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 773007362, - "cover": "http://i0.hdslb.com/bfs/archive/6c8f4136731c1c2f8171f5c006f79f0603d11bdf.png", - "from": "bangumi", - "id": 606998, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep606998", - "status": 2, - "title": "幕末替身声优采访", - "vid": "" - }, - { - "aid": 556287340, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 785468206, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 660464, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep660464", - "status": 2, - "title": "声优对谈 01", - "vid": "" - }, - { - "aid": 984099086, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 792637456, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 669591, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep669591", - "status": 2, - "title": "声优对谈 02", - "vid": "" - }, - { - "aid": 259364452, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 798995285, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 670446, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep670446", - "status": 2, - "title": "声优对谈 03", - "vid": "" - }, - { - "aid": 772146427, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 808201440, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 672539, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep672539", - "status": 2, - "title": "声优对谈 04", - "vid": "" - }, - { - "aid": 687381109, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 814826609, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 676133, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep676133", - "status": 2, - "title": "声优对谈 05", - "vid": "" - }, - { - "aid": 730289528, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 826951152, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 676134, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep676134", - "status": 2, - "title": "声优对谈 07", - "vid": "" - }, - { - "aid": 602813211, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 826951370, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 676135, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep676135", - "status": 2, - "title": "声优对谈 08", - "vid": "" - }, - { - "aid": 515295782, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 826951255, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 676137, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep676137", - "status": 2, - "title": "声优对谈 09", - "vid": "" - }, - { - "aid": 815269384, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 826951558, - "cover": "http://i0.hdslb.com/bfs/archive/77564ca30f1a4d3a64cfc292a7fd989c09a30027.png", - "from": "bangumi", - "id": 676138, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep676138", - "status": 2, - "title": "声优对谈 10", - "vid": "" - } - ], - "id": 82126, - "title": "PV&其他", - "type": 1 - }, - { - "episodes": [ - { - "aid": 556712105, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 794382832, - "cover": "http://i0.hdslb.com/bfs/archive/1f4ab8b9af0689900e7c486c4e676e27988091be.png", - "from": "bangumi", - "id": 670062, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep670062", - "status": 2, - "title": "NCOP", - "vid": "" - }, - { - "aid": 259129266, - "badge": "", - "badge_info": { - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "text": "" - }, - "badge_type": 0, - "cid": 794382772, - "cover": "http://i0.hdslb.com/bfs/archive/d08738a452187a0229c3b99beaf1cb4ff868a030.png", - "from": "bangumi", - "id": 670063, - "is_premiere": 0, - "long_title": "", - "share_url": "https://www.bilibili.com/bangumi/play/ep670063", - "status": 2, - "title": "NCED", - "vid": "" - } - ], - "id": 85065, - "title": "OP&ED", - "type": 2 - } - ] - } -} -``` - -
\ No newline at end of file diff --git a/bangumi/timeline.md b/bangumi/timeline.md deleted file mode 100644 index cfbe41c..0000000 --- a/bangumi/timeline.md +++ /dev/null @@ -1,804 +0,0 @@ -# 番剧或影视时间线 - -- [获取番剧或影视时间线](#获取番剧或影视时间线) - ---- - -## 获取番剧或影视时间线 - - -> https://api.bilibili.com/pgc/web/timeline -*请求方式:GET* - -鉴权方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------ | ------ | ----------------------------- | -| types | str | 类别 | 必要 | 1:`番剧`
3:`电影`
4:`国创` | -| before | num | 开始于前几日 | 必要 | ∈N∩[0,7] | -| after | num | 结束于后几日 | 必要 | ∈N∩[0,7] | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-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' -``` - -
-查看响应示例: - -```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 - } - ] -} -``` - -
\ No newline at end of file diff --git a/bangumi/videostream_url.md b/bangumi/videostream_url.md deleted file mode 100644 index 93b8e81..0000000 --- a/bangumi/videostream_url.md +++ /dev/null @@ -1,366 +0,0 @@ -# 视频流URL - - - -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端默认值
B站前端需要登录才能选择,但是直接发送请求可以不登录就拿到720P的取流地址
**无720P时则为720P60** | -| 74 | 720P60 高帧率 | 需要认证登录账号 | -| 80 | 1080P 高清 | TV端与APP端默认值
需要认证登录账号 | -| 112 | 1080P+ 高码率 | 大多情况需求认证大会员账号 | -| 116 | 1080P60 高帧率 | 大多情况需求认证大会员账号 | -| 120 | 4K 超清 | 需要`fnval&128=128`且`fourk=1`
大多情况需求认证大会员账号 | -| 125 | HDR 真彩色 | 仅支持dash方式
需要`fnval&64=64`
大多情况需求认证大会员账号 | -| 126 | 杜比视界 | 仅支持dash方式
需要`fnval&512=512`
大多情况需求认证大会员账号 | -| 127 | 8K 超高清 | 仅支持dash方式
需要`fnval&1024=1024`
大多情况需求认证大会员账号 | - -例如:请求1080P+的视频,则`qn=112` - -## fnver视频流版本标识 - -目前该值恒为0,即`fnver=0` - -## fnval视频流格式标识 - -该代码为二进制属性位,如需组合功能需要使用`OR`运算结合一下数值 - -| 值 | 含义 | 备注 | -|------|-------------|-------------------------------------------------------------| -| 0 | flv格式 | 仅H.264编码
部分老视频存在分段现象
与mp4格式及dash格式互斥 | -| 1 | mp4格式 | 仅H.264编码
不存在视频分段
与flv格式及dash格式互斥 | -| 16 | dash格式 | H.264编码或H.265编码
部分老视频的清晰度上限低于flv格式
与mp4格式及flv格式互斥 | -| 64 | 是否需求 HDR 视频 | 必须为dash格式
需要`qn=125`
大多情况需求认证大会员账号 | -| 128 | 是否需求 4K 分辨率 | 该值与`fourk`字段协同作用
需要`qn=120`
大多情况需求认证大会员账号 | -| 256 | 是否需求杜比音频 | 必须为dash格式
大多情况需求认证大会员账号 | -| 512 | 是否需求杜比视界 | 必须为dash格式
大多情况需求认证大会员账号 | -| 1024 | 是否需求 8K 分辨率 | 必须为dash格式
需要`qn=127`
大多情况需求认证大会员账号 | -| 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* - -认证方式:Cookie(SESSDATA) - ---- - -关于视频流会员鉴权: - -- 获取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 | 视频清晰度选择 | 非必要 | 未登录默认32(480P)
登录默认64(720P)
**值含义见上表**
注:dash方式无效 | -| fnval | num | 视频获取方式选择 | 非必要 | 默认为0
0 2:flv方式(可能会有分段)
1:低清mp4方式(仅240P与360P,且限速65K/s)
16 80:dash方式(音视频分流,支持H.265) | -| fnver | num | 0 | 非必要 | 固定为0 | -| fourk | num | 是否允许4K视频 | 非必要 | 默认为0
画质最高1080P:0
画质最高4K:1 | -| session | str | | 非必要 | 从视频播放页的网页源码中获取 | -| from_client | str | BROWSER | 非必要 | | -| drm_tech_type | num | 2 | 非必要 | | - - - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----------------------|------|------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | -| message | str | 错误信息 | 成功为success | -| result | 有效时:obj
无效时: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 | 视频长度 | 单位为毫秒
不同分辨率/格式可能有略微差异 | -| accept_format | str | 视频支持的全部格式 | 每项用`,`分隔 | -| accept_description | array | 视频支持的分辨率列表 | | -| accept_quality | array | 视频支持的分辨率代码列表 | **值含义见上表** | -| video_codecid | num | 默认选择视频流的编码id | 见**视频编码代码** | -| seek_param | str | 固定值:start | 作用尚不明确 | -| seek_type | str | offset(dash、flv)
second(mp4) | 作用尚不明确 | -| 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内容存在转义符**
有效时间为120min | -| backup_url | array | 备用视频流 | | - -`durl`数组中的对象中的`backup_url`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|----------------|-----------------------------------| -| 0 | str | 备用视频流url 1 | **注:url内容存在转义符**
有效时间为120min | -| n | str | 备用视频流url (n+1) | | -| …… | str | …… | | - -**示例:** - -**视频无分段时:** - -获取视频`ep85046`/`av2325306`中的1P(cid=`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 - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 视频的取流(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文件 diff --git a/blackroom/banlist.md b/blackroom/banlist.md deleted file mode 100644 index ea54f6f..0000000 --- a/blackroom/banlist.md +++ /dev/null @@ -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 | 来源筛选 | 非必要 | 空:全部类型
`0`:系统封禁
`1`:风纪仲裁(仲裁系统升级后此类型已不再更新) | -| otype | num | 类型筛选 | 非必要 | **见[表2](#表2已知的违规类型代码)**
默认为`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`:封禁
`3`:永久封禁 | -| punishTypeName | str | 处理手段名 | | -| moralNum | num | `0`节操值 | 被封禁用户节操值均为`0` | -| blockedDays | num | 封禁天数 | 永封为`0` | -| publishStatus | num | `1` | 作用尚不明确 | -| blockedType | num | 处理来源 | `0`:系统封禁
1:风纪仲裁 | -| blockedForever | num | 是否永封 | `0`:非永封
`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' -``` - -
-查看响应示例: - -```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": "

案情:

1、大量刷屏/引战

我看新闻了,竹鼠全部被ZF无害化处理了,看的爽死我了,亏死你们,啊哈哈哈(x10)

【BV16g4y187he,2020-4-21 10:46:23~10:46:47】

2、大量人身攻击

N * * L

Deine Mu**er ist tot. (x10)

【BV1rk4y1R7id,2020-4-21 20:31:08~20:32:23】

3、引战

每次看他厨房乱七八糟的,可能有数不清的小强,你们还看美食看的有味也是奇PA

【BV1Kg4y1z7mA,2020-4-22  00:52:37】

批注:

满地狼藉招摇过,人皆愤懑怒拳握。

余恶不堪漏夜扫,正气于心涤龌龊。


(发现违规引战、人身攻击、刷屏评论,请按照相应分类进行举报。若发现反复进行上述行为,可联系工作人员反馈相关违规账号信息,我们会予以排查。)

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

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


", - "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": "

具体违规情况说明:

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

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

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

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

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

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

批注:

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

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

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

", - "originType": 1, - "originTypeName": "评论", - "punishTitle": "在评论中发布传播不实信息", - "punishTime": 1585560309, - "punishType": 2, - "punishTypeName": "封禁", - "moralNum": 0, - "blockedDays": 15, - "publishStatus": 1, - "blockedType": 0, - "blockedForever": 0, - "reasonType": 18, - "reasonTypeName": "发布传播不实信息", - "operatorName": "", - "caseId": 0, - "ctime": 1585560309, - "commentSum": 2379 - }, - ………… - ] -} -``` - -
- -## 封禁处理公示详情 - -> https://api.bilibili.com/x/credit/blocked/info - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ------ | ---- | -| id | num | 封禁公示id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-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`:封禁
`3`:永久封禁 | -| punishTypeName | str | 处理手段名 | | -| moralNum | num | `0`节操值 | 被封禁用户节操值均为`0` | -| blockedDays | num | 封禁天数 | 永封为`0` | -| publishStatus | num | `1` | 作用尚不明确 | -| blockedType | num | 处理来源 | `0`:系统封禁
`1`:风纪仲裁 | -| blockedForever | num | 是否永封 | `0`:非永封
`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' -``` - -
-查看响应示例: - -```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": "

具体违规情况说明:

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

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

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

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

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

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

批注:

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

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

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

", - "originType": 1, - "originTypeName": "评论", - "punishTitle": "在评论中发布传播不实信息", - "punishTime": 1585560309, - "punishType": 2, - "punishTypeName": "封禁", - "moralNum": 0, - "blockedDays": 15, - "publishStatus": 1, - "blockedType": 0, - "blockedForever": 0, - "reasonType": 18, - "reasonTypeName": "发布传播不实信息", - "operatorName": "", - "caseId": 0, - "ctime": 1585560309, - "commentSum": 2379 - } -} -``` - -
diff --git a/blackroom/jury/action.md b/blackroom/jury/action.md deleted file mode 100644 index 2ebcf56..0000000 --- a/blackroom/jury/action.md +++ /dev/null @@ -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:成功
-101:账号未登录
-111:csrf 校验失败
25001:申请等级限制(会员等级<3)
25002:没有实名认证
25003:90天内有封禁记录
25013:不能重复申请风纪委资格
25016:当日风纪委员名额已发完 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | - - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -#### 旧API -
-查看旧版API: - -> https://api.bilibili.com/x/credit/jury/apply - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -只有用户会员等级≥Lv4、90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会 - -每日10:00开放新名额 - -申请成功后可获得30天资格 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------ | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
25001:申请等级限制(会员等级<3)
25002:没有实名认证
25003:90天内有封禁记录
25013:不能重复申请风纪委资格
25016:当日风纪委员名额已发完 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -Cookie方式: - -```shell -curl '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' -``` -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
-
- -## 拉取新案件 - -> https://api.bilibili.com/x/credit/v2/jury/case/next - -*请求方式:GET* - -认证方式:Cookie - -**标头参数(Headers):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------ | ------ | ---- | -| Cookie | str | Cookie | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
25006:风纪委员资格已过期
25008:没有案件
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' -``` - - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "case_id": "AC2m4HlrIrHv" - } -} -``` - -
- -#### 旧API -
-查看旧版API: - -> https://api.bilibili.com/x/credit/jury/caseObtain - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
25005:不是风纪委员
25008:没有案件
25014:已审满 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | -| data | object | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------- | ---- | -| id | num | 仲裁案件id | | - -**示例:** - -Cookie方式: - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "id": 1239790 - } -} -``` - -
-
- - -## 进行仲裁投票 - -> 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
见「[众裁信息](judgement_info.md)」中表 | -| content | str | 理由 | 非必要 | | -| anonymous | num | 是否匿名 | 非必要 | 默认值为0
0:不匿名
1:匿名 | -| csrf | str | cookie中`bili_jct`的值 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------ | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:未登录
-111:csrf 错误
-400:请求错误(投票类型错误)
25005:不是风纪委员
25011:投票类型错误
25018:不能进行此操作

*注:新版本对于一个不存在的`case_id`,不会报错。* | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -#### 旧API -
-查看旧版API: -> https://api.bilibili.com/x/credit/jury/vote - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------- | ---- | ------------------------ | -------------- | --------------------------------------- | -| cid | num | 案件id | 必要 | | -| vote | num | 投票类型 | 必要 | 见「[众裁信息](judgement_info.md)」中表 | -| content | str | 理由 | 非必要 | 见「[众裁信息](judgement_info.md)」中表 | -| likes | nums | 支持的观点 | 非必要 | | -| hates | nums | 反对的观点 | 非必要 | | -| attr | num | 是否匿名 | 非必要 | 0:匿名
1:不匿名 | -| apply_type | num | 是否更改原因 | 非必要 | 0:保持原来原因
1:投票给新原因 | -| origin_reason | num | 原始原因 | 非必要 | 见「封禁公示」中表 | -| apply_reason | num | 新原因 | 非必要 | 见「封禁公示」中表 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------ | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:未登录
-111:csrf 错误
-400:请求错误(投票类型错误)
25005:不是风纪委员
25009: 案件不存在
25011:投票类型错误
25012:重复投票 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -为案件`2333`投票,建议封禁,无理由,不匿名,无支持/反对观点,不修改投票原因 - -Cookie方式: - -```shell -curl '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=' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
-
\ No newline at end of file diff --git a/blackroom/jury/base_info.md b/blackroom/jury/base_info.md deleted file mode 100644 index abf9a8b..0000000 --- a/blackroom/jury/base_info.md +++ /dev/null @@ -1,338 +0,0 @@ -# 风纪委员会用户基本信息 - -- [基本数据](#基本数据) -- [统计信息](#统计信息) - - [新API(2021年10月任期之后)](#新api2021年10月任期之后) - - [旧API](#旧api) -- [检查申请风纪委员会资格](#检查申请风纪委员会资格) - ---- - -## 基本数据 - -> https://api.bilibili.com/x/credit/v2/jury/jury - -_请求方式:GET_ - -认证方式:Cookie(SESSDATA)或 APP - -**url 参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------------- | ------------ | ---- | -| access_key | str | APP 登录 Token | APP 方式必要 | | - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 信息 | 默认为 0 | -| ttl | num | 1 | | -| data | object | 数据本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------ | -------------------------------------------------------------------------------------------------- | -| allow_apply | bool | true | 尚不明确(用户从未担任风纪委员时也为 true) | -| apply_status | num | 任期审核状态 | -1 资格失效,且未申请
0 刚申请连任时
5 申请后,等待审核
3 申请连任成功,status 为 1 | -| case_total | num | 总众裁数 | | -| err_msg | str | 空 | 尚不明确 | -| face | str | 用户头像 url | | -| status | num | 当前资格状态 | 0 未曾拥有资格
1 任期内
2 资格失效 | -| term_end | num | 任期结束时间 | 时间戳(秒级),无任期时为 0 | -| uname | str | 用户昵称 | | - -**旧API** - -部分字段信息停留在 2021 年 10 月。 - -
-查看旧 api: - -> 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:具有资格
2:资格失效 | -| uname | str | 用户昵称 | | - -
- -## 统计信息 - -#### 新API(2021年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:成功
-101:账号未登录
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 不合格
1 合格 | -| status | num | 当前资格状态 | 0 未曾拥有资格
1 任期内
2 资格失效 | -| apply_status | num | 当前资格申请状态 | -1 资格失效,且未申请
0 刚申请连任时
5 申请后,等待审核
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 | - -
-查看响应示例: - -注:本示例未传入`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 - } - } -} -``` -
- -#### 旧API -
-查看旧 api: - -> https://api.bilibili.com/x/credit/jury/kpi (旧) - -*方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -***备注**:该api只统计到2021年9月任期,风纪委员改版之前。风纪委员改版之后的数据未收录* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 数据本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ---- | -| 0 | obj | 第1个月统计 | | -| n | obj | 第(n+1)个月统计 | | -| …… | obj | …… | …… | - -`data` 数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | -------------------------------- | --------------------- | -| id | num | 0 | | -| mid | num | 用户id | | -| number | num | 风纪委员编号 | | -| day | num | 数据生成时间(也是任期结束时间) | 时间戳,精确到秒 | -| rate | num | 任期完成度 | 1=A;2=S;3=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' -``` - -
-查看响应示例: - -```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 - } - ] -} -``` - -
-
- -## 检查申请风纪委员会资格 - -> ~~https://api.bilibili.com/x/credit/jury/requirement~~ (旧版) - -> https://api.bilibili.com/x/credit/v2/jury/requirement (新版) - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -新版 api 与旧版的区别仅在新版没有 `level` 字段(新版风纪委员没有等级限制)。 - -只有用户~~会员等级≥Lv4、~~ 90 天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会。 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | object | 数据本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------------- | ------------------------------------- | -| blocked | bool | 是否被封禁 | true:是
false:否
**下同** | -| cert | bool | 是否实名认证 | | -| level | bool | 等级是否>=4 | 新版无该字段 | -| rule | bool | 是否90天内无违规 | | - -**示例:** - -Cookie方式: - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "blocked": false, - "cert": true, - "rule": true - } -} -``` - -
diff --git a/blackroom/jury/judgement_info.md b/blackroom/jury/judgement_info.md deleted file mode 100644 index 2182dc5..0000000 --- a/blackroom/jury/judgement_info.md +++ /dev/null @@ -1,998 +0,0 @@ -# 众裁信息 - -- [查询投票过的单个案件](#查询投票过的单个案件) -- [查询案件众裁信息](#查询案件众裁信息) -- [查询我的众裁记录](#查询我的众裁记录) -- [获取众议观点](#获取众议观点) - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
投票类型码总览
代码含义
0未投票
1封禁
2
3弃权
4删除
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
投票选项码总览
任务类型代码含义
单条评论(弹幕)1合适
2一般
3不合适
4无法判断
评论(弹幕)氛围11
12一般
13
14无法判断
- - - -## 查询投票过的单个案件 - -> https://api.bilibili.com/x/credit/v2/jury/case/info - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -可查询任意案件,无论自己是否参与投票。 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ------------ | ------ | ------------- | ------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| case_id | str | 案件id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | object | 数据本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ------ | -------- | ------------ | -| case_id | str | 案件id | | -| case_type | num | 任务类型 | 1:单条评论
2:评论氛围
3:单条弹幕
4:弹幕氛围 | -| jury_state | num | `1` | 改版后未见过其它值 | -| participate | num | 是否投票 | 0:未投票
1:已投票 | -| vote_items | object | 投票选项 | 见开头「投票选项码总览」 | -| default_vote | num | 默认投票选项 | `4`或`14`即`无法判断` | -| status | num | 裁决状态(新版) | 0:进行中
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`,
对应:“合适”、“一般”、“不合适”、“无法判断”

“氛围题”分别为 `11` 或者 `12` 或者 `13` 或者 `14`,
对应:“好”、“一般”、“差”、“无法判断”

注释
合适题:“单条弹幕(评论)是否合适?”
氛围题:“弹幕(评论区)氛围如何” | -| vote_text | | 内容为空 | *现在系统已不再展示其他风纪委所投的票* | -| content | str | 观点内容 | 该风纪委员所发表的观点内容 | -| anonymous | num | 0 | 尚不明确 | -| like | num | 被点赞数量 | | -| hate | num | 被点踩数量 | | -| like_status | num | 点赞(踩)状态 | 本账号是否给该条评论点赞:
0:没做操作;1:给评论点赞;2:给评论点踩 | -| vote_time | num | 投票时间 | 时间戳,精确到秒 | -| insiders | num | 是否观看此类视频 | 1:平时观看此类视频;0:平时不观看此类视频 | - -###### 附表5:`data` 对象下的`vote_info`对象 - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ----- | -------- | -------------------------------------------- | -| all_count | num | 总投票数 | | -| counts | array | 观点分布 | 格式:`[合适, 一般, 不合适, 无法判断]` | -| insiders_counts | array | 行为分布 | 格式:`[平时会看此类视频, 平时不看此类视频]` | - -**示例:** - -
-查看响应示例: - -```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] - } - } -} -``` -
- -#### 旧 api - -
-查看旧 api: - -> https://api.bilibili.com/x/credit/jury/juryCase - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -只能查询自己参与众裁的 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ------------ | ------ | ------------- | ------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| cid | num | 案件id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
25010:没有权限查看案件 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | object | 数据本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ------ | -------- | ------------ | -| id | num | 案件id | | -| mid | num | 被举报用户mid | | -| status | num | 裁决状态 | 1:投票中
2:停止发放
3:复核中(结案中)
4:已裁决
5:待重启
6:未裁决
7:冻结中
8:队列中 | -| statusTitle | str | 封禁时间文字 | `judgeType`=1时有效 | -| originType | num | 来源类型 | 见「封禁公示」中表 | -| reasonType | num | 原因类型 | 见「封禁公示」中表 | -| originContent | str | 被举报的原文 | | -| punishResult | num | 处理结果 | 0:无
1:封禁3天
2:封禁7天
3:永封
4:其他封禁天数
5:封禁15天
6:仅删除不封禁 | -| punishTitle | str | 处罚原因 | | -| judgeType | num | 裁决类型 | `status`=4时有效
0:未裁决
1:违规
2:不违规 | -| originUrl | str | 来源url | | -| blockedDays | num | 封禁时间 | `judgeType`=1时有效 | -| putTotal | num | ??? | 作用尚不明确 | -| voteRule | num | 投票不违规人数 | | -| voteBreak | num | 投票建议封禁人数 | | -| voteDelete | num | 投票建议删除人数 | | -| startTime | num | 裁决起始时间 | 时间戳 | -| endTime | num | 裁决截止时间 | 时间戳
未结案固定为24小时 | -| ctime | num | 举报创建时间 | 时间戳 | -| mtime | num | 开始拉取时间 | 时间戳 | -| originTitle | str | 来源标题 | | -| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} | -| face | str | 被举报用户头像url | | -| uname | str | 被举报用户昵称 | | -| vote | num | 我的投票 | **见上表** | -| case_type | num | 众裁类型 | 0:小众众裁
1:大众众裁 | - -**示例:** - -查询案件`1239790`的信息 - -Cookie方式: - -```shell -curl -G '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' \ -``` - -
-查看响应示例: - -```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 - } -} -``` - -
-
- -## 查询案件众裁信息 - -注:这是一个旧版的API,暂未找到对应的新版API。 -
-展开: -> https://api.bilibili.com/x/credit/jury/caseInfo - -*请求方式:GET* - -注:该接口无需登录 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------ | ------ | ---- | -| cid | num | 案件id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | -------------------------------- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有效时:object
无效时:null | 数据本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ----------------- | ------------------------------------------------------------ | -| id | num | 案件id | | -| mid | num | 被举报用户mid | | -| status | num | 裁决状态 | 1:投票中
2:停止发放
3:复核中(结案中)
4:已裁决
5:待重启
6:未裁决
7:冻结中
8:队列中 | -| originType | num | 来源类型 | 见「封禁公示」中表 | -| reasonType | num | 原因类型 | 见「封禁公示」中表 | -| originContent | str | 被举报的原文 | | -| punishResult | num | 处理结果 | 0:无
1:封禁3天
2:封禁7天
3:永封
4:其他封禁天数
5:封禁15天
6:仅删除不封禁 | -| judgeType | num | 裁决类型 | `status`=4时有效
0:未裁决
1:违规
2:不违规 | -| originUrl | str | 来源url | | -| blockedDays | num | 封禁时间 | `judgeType`=1时有效 | -| putTotal | num | ??? | 作用尚不明确 | -| voteRule | num | 投票不违规人数 | | -| voteBreak | num | 投票建议封禁人数 | | -| voteDelete | num | 投票建议删除人数 | | -| startTime | num | 裁决起始时间 | 时间戳 | -| endTime | num | 裁决截止时间 | 时间戳
未结案固定为24小时 | -| ctime | num | 举报创建时间 | 时间戳 | -| mtime | num | 开始拉取时间 | 时间戳 | -| originTitle | str | 来源标题 | | -| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} | -| face | str | 被举报用户头像url | | -| uname | str | 被举报用户昵称 | | -| vote | num | 0 | 固定为0 | -| case_type | num | 众裁类型 | 0:小众众裁
1:大众众裁 | - -**示例:** - -查询案件`1239790`的信息 - -```shell -curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \ ---data-urlencode 'cid=1239790' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "id": 1239790, - "mid": 351783425, - "status": 4, - "originType": 1, - "reasonType": 9, - "originContent": "up主,在和平精英里的喷子是霰(xian)弹枪,不是散(san)弹枪。", - "punishResult": 0, - "judgeType": 2, - "originUrl": "https://www.bilibili.com/video/BV15x411X7eV/#reply1728344012", - "blockedDays": 7, - "putTotal": 272, - "voteRule": 409, - "voteBreak": 17, - "voteDelete": 89, - "startTime": 1594467941, - "endTime": 1594471525, - "ctime": 1594464499, - "mtime": 1594471678, - "originTitle": "和平精英揭秘真相68:氪金试水最新抽奖活动,到底是亏了还是赚了?", - "relationId": "1728344012-1-57465308", - "face": "http://i2.hdslb.com/bfs/face/e1018566c615059b664dc6eae3a5235c31cd92fe.jpg", - "uname": "零酱a", - "vote": 0, - "case_type": 0 - } -} -``` -
-
- -## 查询我的众裁记录 - -> https://api.bilibili.com/x/credit/v2/jury/case/list - -*请求方式:GET* - -认证方式:Cookie - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------------------- | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页显示数量 | 非必要 | 默认为30
最大30 | - -**Headers参数** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---- | ------ | ---- | -| cookie | str | | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------ | ------------ | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-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:单条评论
2:评论氛围
3:单条弹幕
4:弹幕氛围 | -| status | num | 裁决状态 | 0:投票中
1:已结束 | -| vote | num | 投票选项 | “单条评论(弹幕)”分别为 `1` 或者 `2` 或者 `3` 或者 `4`,
对应:“合适”、“一般”、“不合适”、“无法判断”

“评论(弹幕)氛围”分别为 `11` 或者 `12` 或者 `13` 或者 `14`,
对应:“好”、“一般”、“差”、“无法判断” | -| vote_text | str | 投票选项文本 | *参考上条* | -| vote_time | num | 投票时间 | 时间戳,精确到秒 | - -
-查看响应示例: - -```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 - } - ] - } -} -``` - -
- -#### 旧 api - -
-查看旧版API: - -> https://api.bilibili.com/x/credit/jury/caseList - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ------------ | ------ | ------------- | ------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页显示数量 | 非必要 | 默认为30
最大30 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 仲裁记录列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ------ | --------------- | ------------ | -| 0 | object | 仲裁记录1 | | -| n | object | 仲裁记录(n+1) | 按照时间顺序 | -| …… | object | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ----------------- | ------------------------------------------------------------ | -| id | num | 案件id | | -| mid | num | 被举报用户mid | | -| status | num | 裁决状态 | 1:投票中
2:停止发放
3:复核中(结案中)
4:已裁决
5:待重启
6:未裁决
7:冻结中
8:队列中 | -| originType | num | 来源类型 | 见「封禁公示」中表 | -| reasonType | num | 原因类型 | 见「封禁公示」中表 | -| originContent | str | 被举报的原文 | | -| punishResult | num | 处理结果 | 0:无
1:封禁3天
2:封禁7天
3:永封
4:其他封禁天数
5:封禁15天
6:仅删除不封禁 | -| punishTitle | str | 处罚原因 | | -| judgeType | num | 裁决类型 | `status`=4时有效
0:未裁决
1:违规
2:不违规 | -| originUrl | str | 来源url | | -| blockedDays | num | 封禁时间 | `judgeType`=1时有效 | -| putTotal | num | ??? | 作用尚不明确 | -| voteRule | num | 投票不违规人数 | | -| voteBreak | num | 投票建议封禁人数 | | -| voteDelete | num | 投票建议删除人数 | | -| startTime | num | 裁决起始时间 | 时间戳 | -| endTime | num | 裁决截止时间 | 时间戳
未结案固定为24小时 | -| ctime | num | 举报创建时间 | 时间戳 | -| mtime | num | 开始拉取时间 | 时间戳 | -| originTitle | str | 来源标题 | | -| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} | -| face | str | 被举报用户头像url | | -| uname | str | 被举报用户昵称 | | -| vote | num | 我的投票 | **见上表** | -| voteTime | num | 我的裁决时间 | 毫秒 时间戳 | -| case_type | num | 众裁类型 | 0:小众众裁
1:大众众裁 | - -**示例:** - -查询我的历史众裁,第1页,每页显示1个案件 - -Cookie方式: - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```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 - } - ] -} -``` - -
-
- -## 获取众议观点 - -> 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 = 20)(default = 10) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功;
-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' -``` - -
-查看响应示例: - -```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 - } - ] - } -} -``` - -
- -#### 旧 api - -
-查看旧版API: - -> https://api.bilibili.com/x/credit/jury/case/opinion - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ------------ | ------ | ------------- | ------------- | -| cid | num | 案件id | 必要 | | -| ps | num | 每页项数 | 非必要 | 默认为10 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------ | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 信息 | 默认为0 | -| ttl | num | 1 | | -| data | object | 数据本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ------ | -------- | ------------ | -| count | num | 观点总数 | | -| opinion | 有效时:array
无效时: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:匿名
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' \ -``` - -
-查看响应示例: - -```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 - } - ] - } -} -``` - -
-
diff --git a/broadcast/readme.md b/broadcast/readme.md deleted file mode 100644 index 3e59ef7..0000000 --- a/broadcast/readme.md +++ /dev/null @@ -1,184 +0,0 @@ -# 全站广播 - -可用的广播服务: - -- [视频实时信息](video_room.md)√ - -## 获取广播服务器地址 - -> https://api.bilibili.com/x/web-interface/broadcast/servers - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | --------------------------------- | -| platform | str | 平台选择 | 必要 | 为web时输出域名
其他时输出ip | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ------ | ------------------ | ---- | -| domain | str | 广播服务器url | | -| tcp_port | num | tcp端口 | | -| ws_port | num | websocket端口 | | -| wss_port | num | websocket ssl端口 | | -| heartbeat | num | 最大心跳包间隔时间 | | -| nodes | array | 服务节点地址列表 | | -| backoff | obj | ??? | | -| heartbeat_max | num | ??? | | - -`data`中的`nodes`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | str | 服务节点1 | | -| n | str | 服务节点(n+1) | | -| …… | str | …… | | - -`data`中的`backoff`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------ | ---- | -| max_delay | num | ??? | | -| base_delay | num | ??? | | -| factor | num | ??? | | -| jitter | num | ??? | | - -示例: - -当`platform`=`web`时,不显示节点ip - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/broadcast/servers' \ ---data-urlencode 'platform=web' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "domain": "broadcast.chat.bilibili.com", - "tcp_port": 7821, - "ws_port": 7822, - "wss_port": 7823, - "heartbeat": 30, - "nodes": ["broadcast.chat.bilibili.com"], - "backoff": { - "max_delay": 300, - "base_delay": 3, - "factor": 1.8, - "jitter": 0.3 - }, - "heartbeat_max": 3 - } -} -``` - -
- -当`platform`=其他时,显示节点ip - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/broadcast/servers' \ ---data-urlencode 'platform=1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "domain": "broadcast.chat.bilibili.com", - "tcp_port": 7821, - "ws_port": 7822, - "wss_port": 7823, - "heartbeat": 30, - "nodes": ["134.175.207.130", "120.92.150.90", "120.92.150.212", "192.144.173.136", "154.8.217.108"], - "backoff": { - "max_delay": 300, - "base_delay": 3, - "factor": 1.8, - "jitter": 0.3 - }, - "heartbeat_max": 3 - } -} -``` - -
- -## 服务器数据包 - -连接服务器分为三种方式,分别是ws wss tcp,数据包分为上行和下行 - -单个数据包分为头部和正文 - -其中上行的有认证包 心跳包,下行的有认证包回复 心跳包回复 普通包 - -建立连接后超过30s内未发送认证包,或握手后30s内未发送心跳包,或发送了错误的认证包,都会被强制断开连接 - -操作流程: - -1.发送认证包,等待接收认证回复 - -2.确认握手成功后,每30s内发送心跳包,并立即接收心跳包回复 - -3.空闲时间接收普通包 - -### 数据包结构 - -头部通用于上行和下行数据包 - -头部格式: - -| 偏移量 | 长度(字节) | 类型 | 含义 | -| ------ | ------------ | ------ | ---------------------------------------------------- | -| 0x00 | 4 | uint32 | 封包总大小(头部大小+正文大小) | -| 0x04 | 2 | uint16 | 头部大小(一般为0x0012,18字节) | -| 0x06 | 2 | uint16 | 协议版本,可取常数1 | -| 0x08 | 4 | uint32 | 操作码(包类型)
**见下表** | -| 0x0C | 4 | uint32 | sequence(请求次数),可取常数1
对于普通包恒为0 | -| 0x10 | 2 | uint16 | 保留,一般为0 | - -操作码: - -| 代码 | 含义 | -| ---- | -------- | -| 2 | 心跳 | -| 3 | 心跳回复 | -| 7 | 认证 | -| 8 | 认证回复 | -| 1000 | 实时弹幕 | - -**示例:** - -以下为一个认证包示例,正文为文本`test` - -``` -00000000 00 00 00 16 00 12 00 01 00 00 00 07 00 00 00 01 |................| -00000010 00 00 74 65 73 74 |..test| -``` - - diff --git a/broadcast/video_room.md b/broadcast/video_room.md deleted file mode 100644 index b49d79d..0000000 --- a/broadcast/video_room.md +++ /dev/null @@ -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 |]| -``` diff --git a/cheese/info.md b/cheese/info.md deleted file mode 100644 index 5bf90a5..0000000 --- a/cheese/info.md +++ /dev/null @@ -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* - -认证方式:Cookie(SESSDATA) - -鉴权方式:referer为 `.bilibili.com`域名下 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------------ | -------------------------------------------------- | -| season_id | num | 课程ssid | 必要(可选) | season_id与ep_id任选其一
**与番剧ssid不互通** | -| ep_id | num | 课程epid | 必要(可选) | season_id与ep_id任选其一
**与番剧epid不互通** | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------- | -| code | num | 返回值 | 0:成功
-404:错误 | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ------ | ----------------------------- | ------------------------------------------------------------ | -| brief | obj | 课程概述信息 | | -| coupon | obj | 优惠信息 | 若无优惠则无此项 | -| cover | str | 课程封面url | | -| episode_page | obj | 课程分集信息 | | -| episode_sort | num | 1 | **作用尚不明确** | -| episodes | array | 课程分集列表 | | -| faq | obj | 常见问题信息1 | 合并格式 | -| faq1 | obj | 常见问题信息2 | 分离格式 | -| payment | obj | 付费信息 | | -| purchase_note | obj | 购买须知信息 | | -| purchase_protocol | obj | 付费内容协议信息 | | -| release_bottom_info | str | 底部更新状态文字 | | -| release_info | str | 更新状态文字+更新连载状态文字 | | -| release_info2 | str | 更新连载状态文字 | | -| release_status | str | 更新状态文字 | | -| season_id | num | 课程ssid | **与番剧ssid不互通** | -| share_url | str | 页面url | | -| short_link | str | bilibili uri链接 | | -| stat | obj | 播放数信息 | | -| status | num | 10 | **作用尚不明确** | -| subtitle | str | 课程简介信息 | | -| title | str | 课程标题 | | -| up_info | obj | UP主信息 | | -| user_status | obj | 用户状态信息 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** | - -`data`中的`brief`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ---- | -| content | str | 空 | | -| img | array | 简介图片 | | -| title | str | 课程概述 | | -| type | num | 2 | | - -`brief`中的`img`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 简介图片1 | | -| n | obj | 简介图片(n+1) | | -| …… | obj | …… | …… | - -`img`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ----------- | ---------------- | -| aspect_ratio | num | ??? | **作用尚不明确** | -| url | str | 简介图片url | | - -`data`中的`coupon`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | --------- | ------------------- | -| amount | num | 折扣乘数 | | -| expire_time | str | 结束时间 | YYYY-MM-DD HH:MM:SS | -| start_time | str | 起始时间 | YYYY-MM-DD HH:MM:SS | -| status | num | ??? | **作用尚不明确** | -| title | str | 优惠标题 | | -| token | str | 领取token | | - -`data`中的`episode_page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ---- | -| next | bool | false | | -| num | num | 1 | | -| size | num | 总计集数 | | -| total | num | 总计集数 | | - -`data`中的`episodes`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 课程分集1 | | -| n | obj | 课程分集(n+1) | | -| …… | obj | …… | …… | - -`episodes`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ---------------- | ------------------------------------------------------------ | -| aid | num | 课程分集avid | **与普通稿件avid部分不互通** | -| cid | num | 课程分集cid | **与普通视频cid部分不互通** | -| duration | num | 课程分集时间长度 | 单位为秒 | -| from | str | pugv | | -| id | num | 课程分集epid | **与番剧epid不互通** | -| index | num | 课程分集数 | | -| page | num | 1 | | -| play | num | 课程分集播放量 | | -| release_date | num | 课程分集发布时间 | 时间戳 | -| status | num | 分集权限属性 | 1:可观看
2:不可观看 | -| title | str | 课程分集标题 | | -| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
false:未观看
true:已观看 | -| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** | - -`data`中的`faq`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | --------------- | ---- | -| content | str | 常见问题信息 | | -| link | str | 常见问题页面url | | -| title | str | 常见问题 | | - -`data`中的`faq1`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ------------ | ---- | -| items | array | 常见问题列表 | | -| title | str | 常见问题 | | - -`faq1`中的`items`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 常见问题1 | | -| n | obj | 常见问题(n+1) | | -| …… | obj | …… | …… | - -`items`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ---- | -| answer | str | 回答信息 | | -| question | str | 问题信息 | | - -`data`中的`payment`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | -------------------- | ----------------------- | -| desc | str | 付费价格说明 | | -| discount_desc | str | 折扣说明信息 | 若无优惠则无此项 | -| discount_prefix | str | 折扣类型前缀 | 若无优惠则无此项 | -| pay_shade | str | 观看所有视频付费说明 | | -| price | num | 课程价格 | 单位为B币(折扣后价格) | -| price_format | str | 课程价格 | 单位为B币折扣后价格) | - -`data`中的`purchase_note`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------------------- | ---- | -| content | str | 购买须知信息文字内容 | | -| link | str | 购买须知页面url | | -| title | str | 购买须知 | | - -`data`中的`purchase_protocol`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------------- | ---- | -| link | str | 付费内容协议页面url | | -| title | str | 付费内容协议 | | - -`data`中的`stat`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | -------------- | ---- | -| play | num | 播放量 | | -| play_desc | str | 播放量文字信息 | | - -`data`中的`up_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ------------ | ------------------------------------------------------------ | -| avatar | str | UP主头像url | | -| brief | str | UP主备注 | 非个人签名 | -| follower | num | UP主粉丝数 | | -| is_follow | num | 是否关注UP主 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
0:未关注
1:已关注 | -| link | str | UP主空间url | | -| mid | num | UP主uid | | -| pendant | obj | ??? | **作用尚不明确** | -| uname | str | UP主昵称 | | - -`up_info`中的`pendant`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---- | ---------------- | -| image | str | 空 | **作用尚不明确** | -| name | str | 空 | **作用尚不明确** | -| follower | num | 0 | **作用尚不明确** | - -`data`中的`user_status`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | -------- | ------------------------ | -| favored | num | 是否收藏 | 0:未收藏
1:已收藏 | -| favored_count | num | 1 | **作用尚不明确** | -| payed | num | 是否购买 | 0:未购买
1:已购买 | -| progress | obj | 课程进度 | 未登录无此项 | - -`user_status`中的`progress`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------------ | -------- | -| last_ep_id | num | 最后观看的epid | | -| last_ep_index | str | 最后观看的标题 | | -| last_time | num | 最后观看的时间进度 | 单位为秒 | - -**示例:** - -查询课程`ss61`或分集`ep790`的信息 - -ssid方式: - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "brief": { - "content": "", - "img": [ - { - "aspect_ratio": 0.9375, - "url": "http://i0.hdslb.com/bfs/archive/29942f338ee570632838403a09871bad130cfe9a.jpg" - }, - { - "aspect_ratio": 0.9375, - "url": "http://i0.hdslb.com/bfs/archive/913e5c37d836d7954ae9ca19da62a43ba5b34219.jpg" - }, - { - "aspect_ratio": 1.3359375, - "url": "http://i0.hdslb.com/bfs/archive/a974555bd4a52f0aa865bd192c1e3401ed4cb0ad.jpg" - }, - { - "aspect_ratio": 1.3359375, - "url": "http://i0.hdslb.com/bfs/archive/73cd7669b251db9d2b62b921bee49a137c3d65dc.jpg" - }, - { - "aspect_ratio": 1.0625, - "url": "http://i0.hdslb.com/bfs/archive/b084ac8f6710c8eddbc58770a4254508de75eb02.jpg" - }, - { - "aspect_ratio": 1.2890625, - "url": "http://i0.hdslb.com/bfs/archive/44e32c2cf64b894563829ce65bbef199220f4121.jpg" - }, - { - "aspect_ratio": 1.3203125, - "url": "http://i0.hdslb.com/bfs/archive/90764fd095810565713b92606dc9cd0cfb25adae.jpg" - }, - { - "aspect_ratio": 1.15234375, - "url": "http://i0.hdslb.com/bfs/archive/c35ca0ced0ad075a2c13b8fdc1e47b88573bce45.jpg" - } - ], - "title": "课程概述", - "type": 2 - }, - "coupon": { - "amount": 0.66, - "expire_time": "2020-06-30 00:00:00", - "start_time": "2020-05-21 00:00:00", - "status": 1, - "title": "【上新限时6.6折】《唐盾:0-N4日语精讲》", - "token": "B20200521135929161905873" - }, - "cover": "http://i0.hdslb.com/bfs/archive/95d4de9e6691ccc2b18f087f5f654652dee3c01b.jpg", - "episode_page": { - "next": false, - "num": 1, - "size": 66, - "total": 66 - }, - "episode_sort": 1, - "episodes": [ - { - "aid": 76973173, - "cid": 132105993, - "duration": 2223, - "from": "pugv", - "id": 790, - "index": 1, - "page": 1, - "play": 2406406, - "release_date": 1574762407, - "status": 1, - "title": "唐盾:一起从0基础学日语吧(含50音 词汇试听)", - "watched": false, - "watchedHistory": 0 - }, - { - "aid": 77114885, - "cid": 132110244, - "duration": 3003, - "from": "pugv", - "id": 795, - "index": 2, - "page": 1, - "play": 49100, - "release_date": 1574766759, - "status": 2, - "title": "50音あ行假名/音调/送气与不送气音", - "watched": false, - "watchedHistory": 0 - }, - { - "aid": 77120689, - "cid": 131913553, - "duration": 3253, - "from": "pugv", - "id": 797, - "index": 3, - "page": 1, - "play": 49518, - "release_date": 1574770029, - "status": 2, - "title": "50音图的か行、さ行、た行假名", - "watched": false, - "watchedHistory": 0 - }, - ………… - ], - "faq": { - "content": "Q:课程在什么时间更新?\nA:课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。\n\nQ:课程购买后有收看时间限制吗?\nA:购买后除不可抗力因素外,课程均可永久收看,请您放心购买。\n\nQ:原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?\nA:虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。\n\nQ:购买课程后是否可以加入老师的粉丝群或者用户群?\nA:如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。", - "link": "http://m.bilibili.com", - "title": "常见问题" - }, - "faq1": { - "items": [ - { - "answer": "课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。", - "question": "课程在什么时间更新?" - }, - { - "answer": "购买后除不可抗力因素外,课程均可永久收看,请您放心购买。", - "question": "课程购买后有收看时间限制吗?" - }, - { - "answer": "虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。", - "question": "原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?" - }, - { - "answer": "如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。", - "question": "购买课程后是否可以加入老师的粉丝群或者用户群?" - } - ], - "title": "常见问题" - }, - "payment": { - "desc": "券后 262.68 B币起/53期", - "discount_desc": "262.68 B币", - "discount_prefix": "券后", - "pay_shade": "券后支付 262.68 B币即可观看所有视频", - "price": 398.0, - "price_format": "398" - }, - "purchase_note": { - "content": "1. 本内容为付费内容,购买成功后方可观看。
2. 本内容为虚拟服务,已购买内容不支持退款,敬请谅解。
3. 实际购买价格以页面展示的价格及订单结算页显示价格为准。
4. 如您在购买付费内容时有任何疑问,可随时咨询在线客服。
完整的购买协议,请点击阅读《bilibili付费内容购买协议》", - "link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html", - "title": "购买须知" - }, - "purchase_protocol": { - "link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html", - "title": "bilibili付费内容购买协议" - }, - "release_bottom_info": "没有更多啦~", - "release_info": "已完结,共53期", - "release_info2": "共53期", - "release_status": "已完结", - "season_id": 61, - "share_url": "https://m.bilibili.com/cheese/play/ss61", - "short_link": "bilibili://cheese/season/61", - "stat": { - "play": 2878146, - "play_desc": "287.8万播放" - }, - "status": 10, - "subtitle": "新东方名师唐盾的精品日语课,包含50音/N5/N4的词汇/语法/课文/练习精讲,让我们一起轻松学日语~", - "title": "唐盾:0-N4日语精讲", - "up_info": { - "avatar": "http://i1.hdslb.com/bfs/face/564421428d1f74314ed50e16a8f570ad968828b0.jpg", - "brief": "唐盾:前新东方日语名师,倾注日语教学、翻译14年。曾任新东方欧亚教育长沙中心总监。", - "follower": 21333, - "is_follow": 0, - "link": "https://space.bilibili.com/19452605", - "mid": 19452605, - "pendant": { - "image": "", - "name": "", - "pid": 0 - }, - "uname": "盾盾桑教你学日语" - }, - "user_status": { - "favored": 1, - "favored_count": 1, - "payed": 0, - "progress": { - "last_ep_id": 790, - "last_ep_index": "唐盾:一起从0基础学日语吧(含50音 词汇试听)", - "last_time": 1 - } - } - }, - "message": "success" -} -``` - -
- -## 获取课程分集列表 - -> https://api.bilibili.com/pugv/view/web/ep/list - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -鉴权方式:referer为 `.bilibili.com`域名下 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------- | ------ | -------------------- | -| season_id | num | 课程ssid | 必要 | **与番剧ssid不互通** | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------- | -| code | num | 返回值 | 0:成功
-404:错误 | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ------------ | ---- | -| items | array | 课程分集列表 | | -| page | obj | 列表分页信息 | | - -`data`中的`items`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 课程分集1 | | -| n | obj | 课程分集(n+1) | | -| …… | obj | …… | …… | - -`items`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ---------------- | ------------------------------------------------------------ | -| aid | num | 课程分集avid | **与普通稿件avid部分不互通** | -| cid | num | 课程分集cid | **与普通视频cid部分不互通** | -| duration | num | 课程分集时间长度 | 单位为秒 | -| from | str | pugv | | -| id | num | 课程分集epid | **与番剧epid不互通** | -| index | num | 课程分集数 | | -| page | num | 1 | | -| play | num | 课程分集播放量 | | -| release_date | num | 课程分集发布时间 | 时间戳 | -| status | num | 分集权限属性 | 1:可观看
2:不可观看 | -| title | str | 课程分集标题 | | -| watched | bool | 是否观看该集 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`**
false:未观看
true:已观看 | -| watchedHistory | num | 该集观看历史 | **需要登录(SESSDATA)且referer为`https://www.bilibili.com`** | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------------- | ----------------------------------------- | -| next | bool | 是否存在下一页 | false:不存在下一页
true:存在下一页 | -| num | num | 当前页码 | | -| size | num | 每页项数 | | -| total | num | 总价项数 | | - -**示例:** - -按照每页5项查询课程`ss61`的分集列表第1页 - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "items": [ - { - "aid": 76973173, - "cid": 132105993, - "duration": 2223, - "from": "pugv", - "id": 790, - "index": 1, - "page": 1, - "play": 2406951, - "release_date": 1574762407, - "status": 1, - "title": "唐盾:一起从0基础学日语吧(含50音 词汇试听)", - "watched": false, - "watchedHistory": 0 - }, - { - "aid": 77114885, - "cid": 132110244, - "duration": 3003, - "from": "pugv", - "id": 795, - "index": 2, - "page": 1, - "play": 49106, - "release_date": 1574766759, - "status": 2, - "title": "50音あ行假名/音调/送气与不送气音", - "watched": false, - "watchedHistory": 0 - }, - { - "aid": 77120689, - "cid": 131913553, - "duration": 3253, - "from": "pugv", - "id": 797, - "index": 3, - "page": 1, - "play": 49522, - "release_date": 1574770029, - "status": 2, - "title": "50音图的か行、さ行、た行假名", - "watched": false, - "watchedHistory": 0 - }, - { - "aid": 77606110, - "cid": 132897199, - "duration": 2823, - "from": "pugv", - "id": 806, - "index": 4, - "page": 1, - "play": 35800, - "release_date": 1575128696, - "status": 2, - "title": "50音图的な行、は行、ま行假名", - "watched": false, - "watchedHistory": 0 - }, - { - "aid": 78015255, - "cid": 133651764, - "duration": 2165, - "from": "pugv", - "id": 812, - "index": 5, - "page": 1, - "play": 25842, - "release_date": 1575446218, - "status": 2, - "title": "や行、ら行、わ行假名、拨音", - "watched": false, - "watchedHistory": 0 - } - ], - "page": { - "next": true, - "num": 1, - "size": 5, - "total": 66 - } - }, - "message": "success" -} -``` - -
diff --git a/cheese/videostream_url.md b/cheese/videostream_url.md deleted file mode 100644 index 8f4ae11..0000000 --- a/cheese/videostream_url.md +++ /dev/null @@ -1,226 +0,0 @@ -# 课程视频流URL - -- [获取课程视频流URL(web端)](#获取课程视频流URLweb端) - ---- - - - -## 获取课程视频流URL(web端) - -> https://api.bilibili.com/pugv/player/web/playurl - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**注:** - -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
画质最高1080P:0
画质最高4K:1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频
-403:权限不足(未购买) | -| message | str | 错误信息 | 默认为success | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ------ | ---------------------- | ---------------------------------------- | -| accept_format | str | 视频支持的分辨率的格式 | | -| code | num | 0 | | -| durl | array | 视频分段 | | -| seek_param | str | start | | -| no_rexcode | num | 0 | | -| format | str | 视频格式 | | -| fnval | num | 0 | | -| video_project | bool | true | | -| fnver | num | 0 | | -| message | str | 空 | | -| type | str | 视频格式 | | -| accept_quality | array | 视频支持的分辨率列表 | | -| quality | num | 视频分辨率代码 | **值含义见上表** | -| timelength | num | 视频长度 | 单位为毫秒
不同分辨率可能有略微差异 | -| result | str | suee | **作用尚不明确** | -| seek_type | str | offset | **作用尚不明确** | -| has_paid | bool | false | **作用尚不明确** | -| supportFormats | array | 视频分辨率详细列表 | | -| from | str | local | **作用尚不明确** | -| video_codecid | num | ??? | **作用尚不明确** | -| accept_description | array | 视频支持的分辨率列表 | | -| status | num | 0 | **作用尚不明确** | - -`data`中的`durl`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ---- | -| 0 | obj | 视频分段1信息 | | -| n | obj | 视频分段(n+1)信息 | | -| …… | obj | …… | | - -`durl`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------ | ------------ | ---------------------------------- | -| size | num | 视频大小 | 单位为Byte | -| ahead | str | 空 | 作用尚不明确 | -| length | num | 视频长度 | 单位为毫秒 | -| vhead | str | 空 | 作用尚不明确 | -| backup_url | array | 备用视频流 | | -| url | str | 视频流url | 链接有效时间为120min | -| order | num | 视频分段序号 | 某些视频会分为多个片段 | - -`durl`数组中的对象中的`backup_url`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---------------- | -| 0 | str | 备用视频流url | 有效时间为120min | - -`data`中的`supportFormats`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ---- | -| 0 | obj | 分辨率详细信息1 | | -| n | obj | 分辨率详细信息(n+1) | | -| …… | obj | …… | …… | - -`supportFormats`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------- | ---- | -| format | str | 分辨率名称 | | -| description | atr | 分辨率备注 | | -| quality | num | 分辨率代码 | | - -`data`中的`accept_description`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | str | 分辨率名称1 | | -| n | str | 分辨率名称(n+1) | | -| …… | str | …… | …… | - -**示例:** - -获取课程`ep790`(cid=`132105993`,avid=`76973173`)的视频流url,清晰度为1080P60 - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```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" -} -``` - -
\ No newline at end of file diff --git a/clientinfo/client_info.md b/clientinfo/client_info.md deleted file mode 100644 index 525b60f..0000000 --- a/clientinfo/client_info.md +++ /dev/null @@ -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' -``` - -
-查看响应示例: - - -```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" - } - } -} -``` - -
- diff --git a/clientinfo/ip.md b/clientinfo/ip.md deleted file mode 100644 index e24b20c..0000000 --- a/clientinfo/ip.md +++ /dev/null @@ -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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
diff --git a/comment/action.md b/comment/action.md deleted file mode 100644 index f1e3794..0000000 --- a/comment/action.md +++ /dev/null @@ -1,544 +0,0 @@ -# 评论区操作 - -- [发表评论](#发表评论) -- [点赞评论](#点赞评论) -- [点踩评论](#点踩评论) -- [删除评论](#删除评论) -- [置顶评论](#置顶评论) -- [举报评论](#举报评论) - ---- - -## 发表评论 - -> https://api.bilibili.com/x/v2/reply/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区id | 必要 | | -| root | num | 根评论rpid | 非必要 | 二级评论以上使用 | -| parent | num | 父评论rpid | 非必要 | 二级评论同根评论id
大于二级评论为要回复的评论id | -| message | str | 发送评论内容 | 必要 | 最大1000字符
表情使用表情转义符 | -| plat | num | 发送平台标识 | 非必要 | 1:web端
2:安卓客户端
3:ios客户端
4:wp客户端
默认为1 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-509:请求过于频繁
12001:已经存在评论主题
12002:评论区已关闭
12003:禁止回复
12006:没有该评论
12009:评论主体的type不合法
12015:需要评论验证码
12016:评论内容包含敏感信息
12025:评论字数过多
12035:该账号被UP主列入评论黑名单
12051:重复评论,请勿刷屏
12052:评论区已关闭
**(其他错误码有待补充)** | -| message | str | 错误信息 |
| -| ttl | num | 1 | | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ----------------------------- | -------------- | ------------------------------------------------------------ | -| success_action | num | 0 | **作用尚不明确** | -| success_toast | str | 状态文字 | | -| need_captcha | bool | false | 评论需要验证码(未证实) | -| url | str | 空 | **作用尚不明确** | -| rpid | num | 评论rpid | | -| rpid_str | str | 评论rpid | 字串格式 | -| dialog | num | 回复对方rpid | 若为一级评论则为0
若为二级评论则为该评论id
大于二级评论为上一级评论id | -| dialog_str | str | 回复对方rpid | 字串格式 | -| root | num | 根评论rpid | 若为一级评论则为0
大于一级评论则为根评论id | -| root_str | str | 根评论rpid | 字串格式 | -| parent | num | 回复父评论rpid | 若为一级评论则为0
若为二级评论则为根评论id
大于二级评论为上一级评论id | -| parent_str | str | 回复父评论rpid | 字串格式 | -| emote | obj | 表情转义符信息 | [对象定义见表](readme.md#评论条目对象) | -| reply | 有效时:obj
无效时:null | | [对象定义见表](readme.md#评论条目对象) | - -**示例:** - -给视频`av243322853`发送内容为`测试test[泠鸢yousa_awsl]`的评论(带有表情转义符),平台标识为1(web端) - -```shell -curl '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' -``` - -
-查看响应示例: - -```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 - } - } -} -``` - -
- -## 点赞评论 - -> https://api.bilibili.com/x/v2/reply/action - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -点赞成功后会同时消去该评论的点踩 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区id | 必要 | | -| rpid | num | 目标评论rpid | 必要 | | -| action | num | 操作代码 | 非必要 | 默认为0
0:取消赞
1:点赞 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12004:禁止操作 赞或踩
12006:没有该评论
12009:评论主体的type不合法
12011:不合法的赞或踩
**(其他错误码有待补充)** | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -点赞视频`av243322853`下评论`rpid=3039053308` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 点踩评论 - -> https://api.bilibili.com/x/v2/reply/hate - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -点踩成功后会同时消去该评论的点赞 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区id | 必要 | | -| rpid | num | 目标评论rpid | 必要 | | -| action | num | 操作代码 | 非必要 | 默认为0
0:取消踩
1:点踩 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12004:禁止操作 赞或踩
12006:没有该评论
12009:评论主体的type不合法
12011:不合法的赞或踩
**(其他错误码有待补充)** | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -点踩视频`av243322853`下评论`rpid=3039053308` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 删除评论 - -> https://api.bilibili.com/x/v2/reply/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -只能删除自己的评论,或自己管理的评论区下的评论 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区id | 必要 | | -| rpid | num | 目标评论rpid | 必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-403:权限不足
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12009:评论主体的type不合法
12022:已经被删除了
**(其他错误码有待补充)** | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | **作用尚不明确** | - -**示例:** - -删除`av243322853`下评论`rpid=3039053308` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 置顶评论 - -> https://api.bilibili.com/x/v2/reply/top - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -只能置顶自己管理的评论区中的一级评论 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区id | 必要 | | -| rpid | num | 目标评论rpid | 必要 | | -| action | num | 操作代码 | 非必要 | 默认为0
0:取消置顶
1:设为置顶 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-403:权限不足
-404:无此项
-509:请求过于频繁
12002:评论区已关闭
12006:没有该评论
12009:评论主体的type不合法
12029:已经有置顶评论
12030:不能置顶非一级评论
**(其他错误码有待补充)** | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -置顶视频`av243322853`下评论`rpid=2940645593` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 举报评论 - -> https://api.bilibili.com/x/v2/reply/report - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区id | 必要 | | -| rpid | num | 目标评论rpid | 必要 | | -| reason | num | 举报类型 | 必要 | **类型代码见下表** | -| content | str | 其他举报备注 | 非必要 | `reason=0`时有效 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -举报类型`reason`: - -| 代码 | 含义 | -| ---- | -------------- | -| 0 | 其他 | -| 1 | 垃圾广告 | -| 2 | 色情 | -| 3 | 刷屏 | -| 4 | 引战 | -| 5 | 剧透 | -| 6 | 政治 | -| 7 | 人身攻击 | -| 8 | 内容不相关 | -| 9 | 违法违规 | -| 10 | 低俗 | -| 11 | 非法网站 | -| 12 | 赌博诈骗 | -| 13 | 传播不实信息 | -| 14 | 怂恿教唆信息 | -| 15 | 侵犯隐私 | -| 16 | 抢楼 | -| 17 | 青少年不良信息 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-403:权限不足
-404:无此项
-500:服务器错误
-509:请求过于频繁
12002:评论区已关闭
12006:没有该评论
12008:已经举报过了
12009:评论主体的type不合法
12019:举报过于频繁
**(其他错误码有待补充)** | -| 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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
diff --git a/comment/list.md b/comment/list.md deleted file mode 100644 index 7bf73cf..0000000 --- a/comment/list.md +++ /dev/null @@ -1,5853 +0,0 @@ -# 评论区明细 - -- [获取评论区明细_翻页加载](#获取评论区明细_翻页加载) -- [获取评论区明细_懒加载](#获取评论区明细_懒加载) -- [获取指定评论的回复](#获取指定评论的回复) -- [获取指定评论对话树](#获取指定评论对话树) -- [获取评论区热评](#获取评论区热评) -- [~~获取指定评论信息~~](#~~获取指定评论信息~~) -- [获取评论区评论总数](#获取评论区评论总数) - ---- - -## 获取评论区明细_翻页加载 - -> https://api.bilibili.com/x/v2/reply - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------------- | ------------ | -------------------------------------------------------- | -| access_key | str | APP 登录 Token | APP 方式必要 | | -| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | -| oid | num | 目标评论区 id | 必要 | | -| sort | num | 排序方式 | 非必要 | 默认为0
0:按时间
1:按点赞数
2:按回复数 | -| nohot | num | 是否不显示热评 | 非必要 | 默认为0
1:不显示
0:显示 | -| ps | num | 每页项数 | 非必要 | 默认为20
定义域:1-49 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | -------------------------------- | -------- | ---------------- | -| page | obj | 页信息 | | -| config | obj | 评论区显示控制 | | -| replies | 禁用时:null
正常时:array | 评论列表 | | -| hots | 禁用时:null
正常时:array | 热评列表 | | -| upper | obj | 置顶评论 | | -| top | null | (?) | | -| notice | 无效时:null
有效时:obj | 评论区公告信息 | | -| vote | num | 投票评论? | | -| blacklist | num | (?) | | -| assist | num | (?) | | -| mode | num | 评论区类型id | | -| support_mode | array | 评论区支持的类型id | | -| folder | obj | 折叠相关信息 | | -| lottery_card | null | (?) | | -| show_bvid | bool | 显示bvid? | | -| control | obj | 评论区输入属性 | | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ---- | -| num | num | 当前页码 | | -| size | num | 每页项数 | | -| count | num | 根评论条数 | | -| acount | num | 总计评论条数 | | - -`data`中的`config`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------------------- | ---- | -| showadmin | num | 是否显示管理置顶 | | -| showentry | num | (?) | | -| showfloor | num | 是否显示楼层号 | | -| showtopic | num | 是否显示话题 | | -| show_up_flag | bool | 是否显示“UP 觉得很赞”标志 | | -| read_only | bool | 是否只读评论区 | | -| show_del_log | bool | 是否显示删除记录 | | - -`data`中的`replies`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | -------------------------------------- | -| 0 | obj | 评论条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 评论条目 (n+1) | 按照指定的顺序排列 | -| …… | obj | …… | …… | - -`data`中的`hots`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | -------------------------------------- | -| 0 | obj | 热评条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 热评条目 (n+1) | 按照热评热度排列 | -| …… | obj | …… | …… | - -`data`中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----------------------------- | ---------- | -------------------------------------- | -| mid | num | UP 主 mid | | -| top | 有效时:obj
无效时:null | 置顶条目 | [对象定义见表](readme.md#评论条目对象) | -| vote | 有效时:obj
无效时:null | 投票评论? | | - -`data`中的`notice`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------------- | ---- | -| content | str | 公告正文 | | -| id | num | 公告 id | | -| link | str | 公告页面链接 url | | -| title | str | 公告标题 | | - -`data`中的`folder`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------------------- | ---- | -| has_folded | bool | 评论区是否存在折叠评论 | | -| is_folded | bool | 是否折叠? | | -| rule | str | 相关规则页面 url | | - -`data`中的`control`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------ | ---- | ------------------ | ----------------------------------- | -| input_disable | bool | 是否禁止新增评论 | 用户涉及合约争议,锁定该用户所有稿件、动态的评论区,不允许新增评论,`root_input_text`和`child_input_text`值为“当前评论区不可新增评论” | -| root_input_text | str | 评论框文字 | | -| child_input_text | str | 评论框文字 | | -| bg_text | str | 空评论区文字 | | -| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | -| answer_guide_text | str | 答题页面链接文字 | | -| answer_guide_icon_url | str | 答题页面图标 url | | -| answer_guide_ios_url | str | 答题页面 ios url | | -| answer_guide_android_url | str | 答题页面安卓 url | | - -**示例:** - -获取视频`av2`的评论区明细,不显示热评,按照热度排序,每页5项,查看第1页 - -```shell -curl -G 'https://api.bilibili.com/x/v2/reply' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=2' \ ---data-urlencode 'sort=1' \ ---data-urlencode 'ps=5' \ ---data-urlencode 'pn=1' \ ---data-urlencode 'nohot=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "page": { - "num": 1, - "size": 5, - "count": 60971, - "acount": 76792 - }, - "config": { - "showadmin": 1, - "showentry": 1, - "showfloor": 0, - "showtopic": 1, - "show_up_flag": true, - "read_only": false, - "show_del_log": false - }, - "replies": [ - { - "rpid": 104192624480, - "oid": 2, - "type": 1, - "mid": 621197713, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1646205507, - "rpid_str": "104192624480", - "root_str": "0", - "parent_str": "0", - "like": 1, - "action": 0, - "member": { - "mid": "621197713", - "uname": "小鹿不跑路", - "sex": "保密", - "sign": "", - "avatar": "http://i1.hdslb.com/bfs/face/3e220c95ead8f2bc72bd2dcee72d195b723192fa.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 4, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1648051200000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "大会员", - "label_theme": "vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "我赶上了我们这个年龄段二次元的末班车,这一年,巨人出了最终季,诚哥的新作玲芽户缔(好像是叫这个)也要在今年秋上映,后悔没有早进入这个圈子,现在只好紧追慢赶,慢慢的补番,我小时候都在干什么啊[大哭]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[大哭]": { - "id": 5, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[大哭]", - "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918, - "jump_title": "大哭" - } - }, - "jump_url": {}, - "max_line": 6 - }, - "replies": [], - "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, - "invisible": false, - "reply_control": { - "time_desc": "6小时前发布" - } - }, - { - "rpid": 104184937184, - "oid": 2, - "type": 1, - "mid": 560450695, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1646199089, - "rpid_str": "104184937184", - "root_str": "0", - "parent_str": "0", - "like": 0, - "action": 0, - "member": { - "mid": "560450695", - "uname": "還講幾韆", - "sex": "保密", - "sign": "", - "avatar": "http://i1.hdslb.com/bfs/face/e8bcd1f3fed1a8b266e83f7e5952db525b692227.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 3, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "电视宇宙第二个视频[滑稽][滑稽][滑稽]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[滑稽]": { - "id": 27, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[滑稽]", - "url": "http://i0.hdslb.com/bfs/emote/d15121545a99ac46774f1f4465b895fe2d1411c3.png", - "meta": { - "size": 1 - }, - "mtime": 1645206695, - "jump_title": "滑稽" - } - }, - "jump_url": {}, - "max_line": 6 - }, - "replies": [], - "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, - "invisible": false, - "reply_control": { - "time_desc": "7小时前发布" - } - }, - { - "rpid": 104179775904, - "oid": 2, - "type": 1, - "mid": 1616523766, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1646195814, - "rpid_str": "104179775904", - "root_str": "0", - "parent_str": "0", - "like": 1, - "action": 0, - "member": { - "mid": "1616523766", - "uname": "关查者网", - "sex": "保密", - "sign": "", - "avatar": "http://i1.hdslb.com/bfs/face/8bb6aab1f6bcc960f4482aa97b8ca4e61cf81d0d.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 3, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626451200000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "考古队已到达[doge]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[doge]": { - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "http://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1645206695, - "jump_title": "doge" - } - }, - "jump_url": {}, - "max_line": 6 - }, - "replies": [], - "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, - "invisible": false, - "reply_control": { - "time_desc": "8小时前发布" - } - }, - { - "rpid": 104163851152, - "oid": 2, - "type": 1, - "mid": 27553613, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1646183484, - "rpid_str": "104163851152", - "root_str": "0", - "parent_str": "0", - "like": 1, - "action": 0, - "member": { - "mid": "27553613", - "uname": "念晚心", - "sex": "男", - "sign": "", - "avatar": "http://i2.hdslb.com/bfs/face/8b8f32c22651904a23eeb83b048041b7c1c8ffd6.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 74, - "name": "大会员2018年度勋章", - "image": "http://i2.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", - "image_small": "http://i0.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", - "level": "稀有勋章", - "condition": "2018.6.26-7.8某一天是年度大会员" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1650470400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": { - "id": 5476, - "name": "嘉然今天吃什么", - "image": "http://i0.hdslb.com/bfs/garb/item/4442641bd4001214518a81fa8f790ae7469d3cf7.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/5461?navhide=1&mid=27553613&from=reply", - "fan": { - "is_fan": 1, - "number": 14705, - "color": "#f76a6b", - "name": "嘉然今天吃什么", - "num_desc": "014705" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "当时只看优酷和土豆", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 6 - }, - "replies": [], - "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, - "invisible": false, - "reply_control": { - "time_desc": "12小时前发布" - } - }, - { - "rpid": 104163545120, - "oid": 2, - "type": 1, - "mid": 31937033, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1646183209, - "rpid_str": "104163545120", - "root_str": "0", - "parent_str": "0", - "like": 1, - "action": 0, - "member": { - "mid": "31937033", - "uname": "夜声已尽", - "sex": "男", - "sign": "六八四十二", - "avatar": "http://i2.hdslb.com/bfs/face/e35e81a00596883532ba47c58ca0434618fab3d0.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 33465, - "name": "乃琳Queen", - "image": "http://i2.hdslb.com/bfs/garb/item/4ad130e4068f88c54728ac510a172b97e187826f.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/garb/item/4ad130e4068f88c54728ac510a172b97e187826f.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 62, - "name": "有爱大佬", - "image": "http://i0.hdslb.com/bfs/face/a10ee6b613e0d68d2dfdac8bbf71b94824e10408.png", - "image_small": "http://i2.hdslb.com/bfs/face/54f4c31ab9b1f1fa2c29dbbc967f66535699337e.png", - "level": "普通勋章", - "condition": "当前持有粉丝勋章最高等级>=15级" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1671465600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 33465, - "name": "乃琳Queen", - "image": "http://i0.hdslb.com/bfs/garb/item/4ad130e4068f88c54728ac510a172b97e187826f.png", - "jump_url": "", - "type": "suit", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/4ad130e4068f88c54728ac510a172b97e187826f.png", - "image_enhance_frame": "" - }, - "cardbg": { - "id": 33494, - "name": "乃琳Queen", - "image": "http://i0.hdslb.com/bfs/garb/item/34f8c1ef43332883f62e17fed44c1a70930e4811.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/33498?navhide=1&mid=31937033&from=reply", - "fan": { - "is_fan": 1, - "number": 50766, - "color": "#576690", - "name": "乃琳Queen", - "num_desc": "050766" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "考古", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 6 - }, - "replies": [], - "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, - "invisible": false, - "reply_control": { - "time_desc": "12小时前发布" - } - } - ], - "hots": [], - "upper": { - "mid": 2, - "top": null, - "vote": null - }, - "top": null, - "notice": null, - "vote": 0, - "blacklist": 0, - "assist": 0, - "mode": 3, - "support_mode": [ - 1, - 2, - 3 - ], - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "https://www.bilibili.com/blackboard/foldingreply.html" - }, - "lottery_card": null, - "show_bvid": false, - "control": { - "input_disable": false, - "root_input_text": "发一条友善的评论", - "child_input_text": "", - "giveup_input_text": "不发没关系,请继续友善哦~", - "bg_text": "看看下面~来发评论吧", - "web_selection": false, - "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", - "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", - "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", - "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6", - "show_type": 1, - "show_text": "", - "disable_jump_emote": false - } - } -} -``` - -
- -## 获取评论区明细_懒加载 - -> https://api.bilibili.com/x/v2/reply/main - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------------- | ------------ | ------------------------------------------------------------ | -| access_key | str | APP 登录 Token | APP 方式必要 | | -| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | -| oid | num | 目标评论区 id | 必要 | | -| mode | num | 排序方式 | 非必要 | 默认为 3
0 3:仅按热度
1:按热度+按时间
2:仅按时间 | -| next | num | 评论页选择 | 非必要 | 按热度时:热度顺序页码(0 为第一页)
按时间时:时间倒序楼层号
默认为 0 | -| ps | num | 每页项数 | 非必要 | 默认为 20
定义域:1-30 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | -------------------------------- | -------- | ---------------- | -| cursor | obj | 游标信息 | | -| hots | 禁用时:null
正常时:array | 热评列表 | | -| notice | 无效时:null
有效时:obj | 评论区公告信息 | | -| replies | 禁用时:null
正常时:array | 评论列表 | | -| top | obj | 置顶信息 | | -| top_replies | obj | 置顶评论 | [对象定义见表](readme.md#评论条目对象) | -| lottery_card | null | 抽奖评论 | | -| folder | obj | 评论折叠信息 | | -| up_selection | obj | (?) | | -| cm | obj | 广告 | | -| cm_info | obj | 广告控制 | | -| effects | obj | (?) | | -| assist | num | (?) | | -| blacklist | num | (?) | | -| vote | num | (?) | | -| lottery | num | (?) | | -| config | obj | 评论区显示控制 | | -| upper | obj | UP主信息 | | -| show_bvid | bool | 显示 bvid? | | -| control | obj | 评论区输入属性 | | - -`data`中的`cursor`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ----- | -------------- | ----------------------- | -| all_count | num | 全部评论条数 | | -| is_begin | bool | 是否为第一页 | false:否
true:是 | -| prev | num | 上页页码 | | -| next | num | 下页页码 | | -| is_end | bool | 是否为最后页 | false:否
true:是 | -| mode | num | 排序方式 | | -| show_type | num | (?) | | -| support_mode | array | 支持的排序方式 | | -| name | str | 评论区类型名 | | - -`data`中的`config`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------------------- | ---- | -| showadmin | num | 是否显示管理置顶 | | -| showentry | num | ? | | -| showfloor | num | 是否显示楼层号 | | -| showtopic | num | 是否显示话题 | | -| show_up_flag | bool | 是否显示“UP 觉得很赞”标志 | | -| read_only | bool | 是否只读评论区 | | -| show_del_log | bool | 是否显示删除记录 | | - -`data`中的`hots`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | -------------------------------------- | -| 0 | obj | 热评条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 热评条目 (n+1) | 按照热评热度排列 | -| …… | obj | …… | …… | - -`data`中的`replies`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | -------------------------------------- | -| 0 | obj | 评论条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 评论条目 (n+1) | 按照指定的顺序排列 | -| …… | obj | …… | …… | - -`data`中的`top`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ----------------------------- | -------------- | -------------------------------------- | -| admin | 有效时:obj
无效时:null | 管理员置顶条目 | [对象定义见表](readme.md#评论条目对象) | -| upper | 有效时:obj
无效时:null | UP 主置顶条目 | [对象定义见表](readme.md#评论条目对象) | -| vote | 有效时:obj
无效时:null | 投票置顶条目 | [对象定义见表](readme.md#评论条目对象) | - -`data`中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| mid | num | UP 主 mid | | - -`data`中的`notice`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------------- | ---- | -| content | str | 公告正文 | | -| id | num | 公告 id | | -| link | str | 公告页面链接 url | | -| title | str | 公告标题 | | - -`data`中的`folder`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------------------- | ---- | -| has_folded | bool | 评论区是否存在折叠评论 | | -| is_folded | bool | 是否折叠? | | -| rule | str | 相关规则页面 url | | - -`data`中的`control`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------ | ---- | ------------------ | ----------------------------------- | -| input_disable | bool | (?) | | -| root_input_text | str | 评论框文字 | | -| child_input_text | str | 评论框文字 | | -| bg_text | str | 空评论区文字 | | -| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | -| answer_guide_text | str | 答题页面链接文字 | | -| answer_guide_icon_url | str | 答题页面图标 url | | -| answer_guide_ios_url | str | 答题页面 ios url | | -| answer_guide_android_url | str | 答题页面安卓 url | | - -**示例:** - -获取视频`av2`的评论区明细,按照热度排序,每页5项,查看第1页 - -```shell -curl -G 'https://api.bilibili.com/x/v2/reply/main' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=2' \ ---data-urlencode 'mode=3' \ ---data-urlencode 'next=0' \ ---data-urlencode 'ps=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "cursor": { - "all_count": 76793, - "is_begin": true, - "prev": 1, - "next": 2, - "is_end": false, - "mode": 3, - "show_type": 1, - "support_mode": [ - 1, - 2, - 3 - ], - "name": "热门评论" - }, - "hots": null, - "notice": null, - "replies": [ - { - "rpid": 476670, - "oid": 2, - "type": 1, - "mid": 58426, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 2733, - "rcount": 2608, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1291350931, - "rpid_str": "476670", - "root_str": "0", - "parent_str": "0", - "like": 90419, - "action": 0, - "member": { - "mid": "58426", - "uname": "残星什么的就是残星", - "sex": "男", - "sign": "少说话多做事 _微博@残星", - "avatar": "http://i1.hdslb.com/bfs/face/56ac36b37662e3746228f30eb4acf2cd332b66a5.jpg", - "rank": "20000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 30, - "name": "字幕君", - "image": "http://i1.hdslb.com/bfs/face/383c3fed3dc162c93a8d616a272693f6650e98f1.png", - "image_small": "http://i2.hdslb.com/bfs/face/7ad18084e40b725210e22696e0efdae408cd378c.png", - "level": "稀有勋章", - "condition": "弹幕大赛获得" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1710777600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "貌似没人来", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 6 - }, - "replies": [ - { - "rpid": 214198733, - "oid": 2, - "type": 1, - "mid": 18370638, - "root": 476670, - "parent": 476670, - "dialog": 214198733, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1488888369, - "rpid_str": "214198733", - "root_str": "476670", - "parent_str": "476670", - "like": 1958, - "action": 0, - "member": { - "mid": "18370638", - "uname": "初音ハク", - "sex": "保密", - "sign": "我是艾尔的利刃", - "avatar": "http://i0.hdslb.com/bfs/face/71b838cc7c69dc16e0ad49fa4e6f84a2fe2eaadb.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 74, - "name": "大会员2018年度勋章", - "image": "http://i0.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", - "image_small": "http://i2.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", - "level": "稀有勋章", - "condition": "2018.6.26-7.8某一天是年度大会员" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1654790400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "划了4千多条评论找到的啊ε=ε=(ノ≧∇≦)ノ", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1821天前发布" - } - }, - { - "rpid": 568785293, - "oid": 2, - "type": 1, - "mid": 52987877, - "root": 476670, - "parent": 476670, - "dialog": 568785293, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1514903586, - "rpid_str": "568785293", - "root_str": "476670", - "parent_str": "476670", - "like": 6534, - "action": 0, - "member": { - "mid": "52987877", - "uname": "Mr-Shadow", - "sex": "男", - "sign": "重灾区话题回避", - "avatar": "http://i2.hdslb.com/bfs/face/dc679f8221b27e2056c1ad018d168402d80d98d5.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 2511, - "name": "初音未来13周年", - "image": "http://i2.hdslb.com/bfs/garb/item/4f8f3f1f2d47f0dad84f66aa57acd4409ea46361.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/garb/item/fe0b83b53e2342b16646f6e7a9370d8a867decdb.webp", - "image_enhance_frame": "http://i2.hdslb.com/bfs/garb/item/127c507ec8448be30cf5f79500ecc6ef2fd32f2c.png" - }, - "nameplate": { - "nid": 61, - "name": "有爱楷模", - "image": "http://i2.hdslb.com/bfs/face/5a90f715451325c642a6ac39e01195cb6d075734.png", - "image_small": "http://i0.hdslb.com/bfs/face/5bfc1b4fb3f4b411495dddb0b2127ad80f6fbcac.png", - "level": "普通勋章", - "condition": "当前持有粉丝勋章最高等级>=10级" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1666281600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 2511, - "name": "初音未来13周年", - "image": "http://i0.hdslb.com/bfs/garb/item/4f8f3f1f2d47f0dad84f66aa57acd4409ea46361.png", - "jump_url": "", - "type": "suit", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/fe0b83b53e2342b16646f6e7a9370d8a867decdb.webp", - "image_enhance_frame": "http://i0.hdslb.com/bfs/garb/item/127c507ec8448be30cf5f79500ecc6ef2fd32f2c.png" - }, - "cardbg": { - "id": 2528, - "name": "初音未来13周年", - "image": "http://i0.hdslb.com/bfs/garb/item/7dbd22f700e0a7fe0c0d0da7b1a54241626bf1cd.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/2554?navhide=1&mid=52987877&from=reply", - "fan": { - "is_fan": 1, - "number": 94388, - "color": "#07b6d5", - "name": "初音未来周年纪念", - "num_desc": "094388" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "你可能抢到了整个b站最难抢到的沙发(`・ω・´)", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1520天前发布" - } - }, - { - "rpid": 2237449754, - "oid": 2, - "type": 1, - "mid": 400121455, - "root": 476670, - "parent": 568785293, - "dialog": 568785293, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1578311878, - "rpid_str": "2237449754", - "root_str": "476670", - "parent_str": "568785293", - "like": 194, - "action": 0, - "member": { - "mid": "400121455", - "uname": "TxAY丶", - "sex": "保密", - "sign": "6月后有空做视频 | 星火工作室后期、CM拜年祭制作成员", - "avatar": "http://i1.hdslb.com/bfs/face/ce011d50196afd8fedc45240f6aebab061aee524.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 4, - "name": "青铜殿堂", - "image": "http://i2.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", - "image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", - "level": "普通勋章", - "condition": "单个自制视频总播放数>=1万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626364800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @Mr-Shadow :你可能抢到了整个b站最难抢到的热评的热评", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "786天前发布" - } - } - ], - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "https://www.bilibili.com/blackboard/foldingreply.html" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": true, - "invisible": false, - "reply_control": { - "sub_reply_entry_text": "共2608条回复", - "sub_reply_title_text": "相关回复共2608条", - "time_desc": "4107天前发布" - } - }, - { - "rpid": 917945205, - "oid": 2, - "type": 1, - "mid": 34762090, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 461, - "rcount": 365, - "state": 0, - "fansgrade": 1, - "attr": 0, - "ctime": 1532071373, - "rpid_str": "917945205", - "root_str": "0", - "parent_str": "0", - "like": 29793, - "action": 0, - "member": { - "mid": "34762090", - "uname": "某不科学的瓜皮", - "sex": "男", - "sign": "持杯拱天,谓无言,静沉眠", - "avatar": "http://i1.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 4, - "name": "青铜殿堂", - "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", - "image_small": "http://i2.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", - "level": "普通勋章", - "condition": "单个自制视频总播放数>=1万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1631980800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": { - "uid": 34762090, - "medal_id": 29058, - "medal_name": "逸国", - "score": 0, - "level": 1, - "intimacy": 0, - "master_status": 1, - "is_receive": 1, - "medal_color": 643602062, - "medal_color_end": 643602062, - "medal_color_border": 4284257934, - "medal_color_name": 4284257934, - "medal_color_level": 4284257934, - "guard_level": 0 - }, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "7.20日,站长被封7天\n\n历史性留名[2233娘_卖萌]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[2233娘_卖萌]": { - "id": 140, - "package_id": 6, - "state": 0, - "type": 2, - "attr": 0, - "text": "[2233娘_卖萌]", - "url": "http://i0.hdslb.com/bfs/emote/ea893aa25355de95ab4f03c2dad3f0c58d0c159e.png", - "meta": { - "size": 2 - }, - "mtime": 1626664892, - "jump_title": "卖萌" - } - }, - "jump_url": {}, - "max_line": 6 - }, - "replies": [ - { - "rpid": 1781253749, - "oid": 2, - "type": 1, - "mid": 34762090, - "root": 917945205, - "parent": 917945205, - "dialog": 1781253749, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 1, - "attr": 0, - "ctime": 1563598609, - "rpid_str": "1781253749", - "root_str": "917945205", - "parent_str": "917945205", - "like": 1224, - "action": 0, - "member": { - "mid": "34762090", - "uname": "某不科学的瓜皮", - "sex": "男", - "sign": "持杯拱天,谓无言,静沉眠", - "avatar": "http://i1.hdslb.com/bfs/face/cc61140c64409a3f5793207f3c866555e8638ab5.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 4, - "name": "青铜殿堂", - "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", - "image_small": "http://i2.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", - "level": "普通勋章", - "condition": "单个自制视频总播放数>=1万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1631980800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": { - "uid": 34762090, - "medal_id": 29058, - "medal_name": "逸国", - "score": 0, - "level": 1, - "intimacy": 0, - "master_status": 1, - "is_receive": 1, - "medal_color": 643602062, - "medal_color_end": 643602062, - "medal_color_border": 4284257934, - "medal_color_name": 4284257934, - "medal_color_level": 4284257934, - "guard_level": 0 - }, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "站长被封一周年 [小电视_笑]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[小电视_笑]": { - "id": 121, - "package_id": 5, - "state": 0, - "type": 2, - "attr": 0, - "text": "[小电视_笑]", - "url": "http://i0.hdslb.com/bfs/emote/f80d384875183dfe2e24be13011c595c0210d273.png", - "meta": { - "size": 2 - }, - "mtime": 1628587688, - "jump_title": "笑" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "956天前发布" - } - }, - { - "rpid": 1781556726, - "oid": 2, - "type": 1, - "mid": 417437969, - "root": 917945205, - "parent": 1781253749, - "dialog": 1781253749, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1563605321, - "rpid_str": "1781556726", - "root_str": "917945205", - "parent_str": "1781253749", - "like": 372, - "action": 0, - "member": { - "mid": "417437969", - "uname": "理查奈德", - "sex": "男", - "sign": "欲雷普琪露诺的各种小圈子小鬼", - "avatar": "http://i2.hdslb.com/bfs/face/6923f6414503413f292a1cfad13ac483683a77d6.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @某不科学的瓜皮 :这是件值得庆祝的日子啊(滑稽保命)[滑稽]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[滑稽]": { - "id": 27, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[滑稽]", - "url": "http://i0.hdslb.com/bfs/emote/d15121545a99ac46774f1f4465b895fe2d1411c3.png", - "meta": { - "size": 1 - }, - "mtime": 1645206695, - "jump_title": "滑稽" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "956天前发布" - } - }, - { - "rpid": 2254034005, - "oid": 2, - "type": 1, - "mid": 435781129, - "root": 917945205, - "parent": 917945205, - "dialog": 2254034005, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1578829367, - "rpid_str": "2254034005", - "root_str": "917945205", - "parent_str": "917945205", - "like": 137, - "action": 0, - "member": { - "mid": "435781129", - "uname": "yourmumdie", - "sex": "保密", - "sign": "签名不能留八个字", - "avatar": "http://i1.hdslb.com/bfs/face/77489a807c616304cef9ac446b8bed2528de4e25.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1644249600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "av7", - "plat": 0, - "device": "", - "members": [], - "jump_url": { - "av7": { - "title": "2012地球便当之日宣传片", - "state": 0, - "prefix_icon": "https://i0.hdslb.com/bfs/activity-plat/static/20201110/4c8b2dbaded282e67c9a31daa4297c3c/AeQJlYP7e.png", - "app_url_schema": "", - "app_name": "", - "app_package_name": "", - "click_report": "7", - "is_half_screen": false, - "exposure_report": "" - } - }, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "780天前发布" - } - } - ], - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "https://www.bilibili.com/blackboard/foldingreply.html" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": true, - "invisible": false, - "reply_control": { - "sub_reply_entry_text": "共365条回复", - "sub_reply_title_text": "相关回复共365条", - "time_desc": "1321天前发布" - } - }, - { - "rpid": 2576184175, - "oid": 2, - "type": 1, - "mid": 24512285, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 1066, - "rcount": 1000, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1584945297, - "rpid_str": "2576184175", - "root_str": "0", - "parent_str": "0", - "like": 44307, - "action": 0, - "member": { - "mid": "24512285", - "uname": "艾斯黛斯T", - "sex": "男", - "sign": "飞飞飞", - "avatar": "http://i2.hdslb.com/bfs/face/e2176a16d749fdb720d4181309d4075c91db7952.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 4104, - "name": "良辰美景·不问天", - "image": "http://i2.hdslb.com/bfs/garb/item/4dbf08aae75f9479a21db2bb289229b8d71631e1.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/garb/item/253bf41272ddef301c1f6a0361abd49d772bfafc.webp", - "image_enhance_frame": "http://i2.hdslb.com/bfs/garb/item/c4934a1ffdb3865fe79b319de439af3973b53ec9.png" - }, - "nameplate": { - "nid": 58, - "name": "收集达人", - "image": "http://i0.hdslb.com/bfs/face/3f5539e1486303422ffc8595862ccb6606e0b745.png", - "image_small": "http://i0.hdslb.com/bfs/face/cf85e7908095d256e595ec9759f4e7795f23bc22.png", - "level": "普通勋章", - "condition": "同时拥有粉丝勋章>=15个" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1646236800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 4104, - "name": "良辰美景·不问天", - "image": "http://i0.hdslb.com/bfs/garb/item/4dbf08aae75f9479a21db2bb289229b8d71631e1.png", - "jump_url": "", - "type": "suit", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/253bf41272ddef301c1f6a0361abd49d772bfafc.webp", - "image_enhance_frame": "http://i0.hdslb.com/bfs/garb/item/c4934a1ffdb3865fe79b319de439af3973b53ec9.png" - }, - "cardbg": { - "id": 4123, - "name": "良辰美景·不问天", - "image": "http://i0.hdslb.com/bfs/garb/item/f251c507a2b09605d414c9107ffe2073bbf65735.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/4019?navhide=1&mid=24512285&from=reply", - "fan": { - "is_fan": 1, - "number": 70746, - "color": "#fe7491", - "name": "良辰美景·不问天", - "num_desc": "070746" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "人类最古のav号(挂了的不算)也变成bv了[大哭][大哭][大哭]青春结束了", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[大哭]": { - "id": 5, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[大哭]", - "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918, - "jump_title": "大哭" - } - }, - "jump_url": {}, - "max_line": 6 - }, - "replies": [ - { - "rpid": 2578082161, - "oid": 2, - "type": 1, - "mid": 407225717, - "root": 2576184175, - "parent": 2576184175, - "dialog": 2578082161, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1584964926, - "rpid_str": "2578082161", - "root_str": "2576184175", - "parent_str": "2576184175", - "like": 2030, - "action": 0, - "member": { - "mid": "407225717", - "uname": "白月魁单推人", - "sex": "保密", - "sign": "", - "avatar": "http://i2.hdslb.com/bfs/face/57899fca9856acfb2f92fdabf00e655a74aeae67.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626364800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "先留个名,估计以后av会被当成冷知识放出来[大哭]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[大哭]": { - "id": 5, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[大哭]", - "url": "http://i0.hdslb.com/bfs/emote/2caafee2e5db4db72104650d87810cc2c123fc86.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918, - "jump_title": "大哭" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "709天前发布" - } - }, - { - "rpid": 2579961512, - "oid": 2, - "type": 1, - "mid": 329965337, - "root": 2576184175, - "parent": 2576184175, - "dialog": 2579961512, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1584982846, - "rpid_str": "2579961512", - "root_str": "2576184175", - "parent_str": "2576184175", - "like": 248, - "action": 0, - "member": { - "mid": "329965337", - "uname": "积极发言的刘同学", - "sex": "男", - "sign": "Hi这里是刘同学,一个业余的校园摄影及公路自行车骑手,同时也是在校高中生(有时穿穿dk)", - "avatar": "http://i2.hdslb.com/bfs/face/3b586d7dbe8c2dba32b213e0a474fe6d86921b85.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1585324800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "10个小时就有6500多赞?你是魔鬼?", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "708天前发布" - } - }, - { - "rpid": 2596150498, - "oid": 2, - "type": 1, - "mid": 426825448, - "root": 2576184175, - "parent": 2578082161, - "dialog": 2578082161, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1585211858, - "rpid_str": "2596150498", - "root_str": "2576184175", - "parent_str": "2578082161", - "like": 605, - "action": 0, - "member": { - "mid": "426825448", - "uname": "TrueBinger", - "sex": "男", - "sign": "这个人不懒,但是什么都没有留下。", - "avatar": "http://i1.hdslb.com/bfs/face/4bcc2120e3cb0ce855de6500a9bc422e981ced32.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 62, - "name": "有爱大佬", - "image": "http://i0.hdslb.com/bfs/face/a10ee6b613e0d68d2dfdac8bbf71b94824e10408.png", - "image_small": "http://i2.hdslb.com/bfs/face/54f4c31ab9b1f1fa2c29dbbc967f66535699337e.png", - "level": "普通勋章", - "condition": "当前持有粉丝勋章最高等级>=15级" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1592668800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @渣男5107号 :哈喽各位小伙伴们大家好,众所周知,世界第一大视频网站bilibili的视频采用bv号来标记视频,可小伙伴们知道吗,其实在2020.3之前,bv一直都是av哦!这已经是100000年前的事了,小伙伴们知道了吗[滑稽]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[滑稽]": { - "id": 27, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[滑稽]", - "url": "http://i0.hdslb.com/bfs/emote/d15121545a99ac46774f1f4465b895fe2d1411c3.png", - "meta": { - "size": 1 - }, - "mtime": 1645206695, - "jump_title": "滑稽" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "706天前发布" - } - } - ], - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "https://www.bilibili.com/blackboard/foldingreply.html" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": true, - "invisible": false, - "reply_control": { - "sub_reply_entry_text": "共1000条回复", - "sub_reply_title_text": "相关回复共1000条", - "time_desc": "709天前发布" - } - }, - { - "rpid": 495059, - "oid": 2, - "type": 1, - "mid": 2, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 898, - "rcount": 838, - "state": 2, - "fansgrade": 0, - "attr": 0, - "ctime": 1291918239, - "rpid_str": "495059", - "root_str": "0", - "parent_str": "0", - "like": 34223, - "action": 0, - "member": { - "mid": "2", - "uname": "碧诗", - "sex": "男", - "sign": "kami.im 直男过气网红 # av362830 “We Are Star Dust”", - "avatar": "http://i2.hdslb.com/bfs/face/ef0457addb24141e15dfac6fbf45293ccf1e32ab.jpg", - "rank": "20000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 10, - "name": "见习偶像", - "image": "http://i2.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png", - "image_small": "http://i1.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png", - "level": "普通勋章", - "condition": "所有自制视频总播放数>=10万" - }, - "official_verify": { - "type": 0, - "desc": "bilibili创始人(站长)" - }, - "vip": { - "vipType": 2, - "vipDueDate": 3901881600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "十年大会员", - "label_theme": "ten_annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": { - "id": 3865, - "name": "2021拜年纪", - "image": "http://i0.hdslb.com/bfs/garb/item/e2c4d4ba094ddb98c1f72114a12081b4eca7ed88.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/3898?navhide=1&mid=2&from=reply", - "fan": { - "is_fan": 1, - "number": 21206, - "color": "#ec3d39", - "name": "2021拜年纪", - "num_desc": "021206" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "wwwww", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 6 - }, - "replies": [ - { - "rpid": 164517433, - "oid": 2, - "type": 1, - "mid": 3476504, - "root": 495059, - "parent": 495059, - "dialog": 164517433, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1479570959, - "rpid_str": "164517433", - "root_str": "495059", - "parent_str": "495059", - "like": 478, - "action": 0, - "member": { - "mid": "3476504", - "uname": "MaskQwQ麦斯科", - "sex": "保密", - "sign": "重拾过去。。", - "avatar": "http://i2.hdslb.com/bfs/face/7bf954d807cbda4de4221d78f3b425534042ac02.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 194, - "name": "黑白无双", - "image": "http://i2.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 74, - "name": "大会员2018年度勋章", - "image": "http://i0.hdslb.com/bfs/face/421179426c929dfeaed4117461c83f5d07ffb148.png", - "image_small": "http://i1.hdslb.com/bfs/face/682001c2e1c2ae887bdf2a0e18eef61180c48f84.png", - "level": "稀有勋章", - "condition": "2018.6.26-7.8某一天是年度大会员" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1771344000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 194, - "name": "黑白无双", - "image": "http://i0.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", - "jump_url": "", - "type": "vip", - "image_enhance": "http://i0.hdslb.com/bfs/face/89b25cad74abd9e42a94b11e456bc21fe36b8763.png", - "image_enhance_frame": "" - }, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "拉了半天总算是见了底", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1928天前发布" - } - }, - { - "rpid": 464424502, - "oid": 2, - "type": 1, - "mid": 37145412, - "root": 495059, - "parent": 495059, - "dialog": 464424502, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 1, - "attr": 0, - "ctime": 1509257961, - "rpid_str": "464424502", - "root_str": "495059", - "parent_str": "495059", - "like": 298, - "action": 0, - "member": { - "mid": "37145412", - "uname": "边走边发呆", - "sex": "男", - "sign": "这个人懒死了,什么都不发=_= 头像是素晴日", - "avatar": "http://i0.hdslb.com/bfs/face/4dfe0f1b0bfc9b1afea9e3bacbc5a92221fe9b09.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 60, - "name": "有爱萌新", - "image": "http://i1.hdslb.com/bfs/face/51ca16136e570938450bca360f28761ceb609f33.png", - "image_small": "http://i2.hdslb.com/bfs/face/9abfa4769357f85937782c2dbc40fafda4f57217.png", - "level": "普通勋章", - "condition": "当前持有粉丝勋章最高等级>=5级" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1559836800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": { - "uid": 37145412, - "medal_id": 29058, - "medal_name": "逸国", - "score": 0, - "level": 7, - "intimacy": 0, - "master_status": 1, - "is_receive": 1, - "medal_color": 643660702, - "medal_color_end": 643660702, - "medal_color_border": 6126494, - "medal_color_name": 6126494, - "medal_color_level": 6126494, - "guard_level": 0 - }, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "5000多楼6225评论(;¬_¬)手有点酸,如果不是特殊方法进来的话是要大会员吧(● ̄(エ) ̄●)", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1585天前发布" - } - }, - { - "rpid": 4002945120, - "oid": 2, - "type": 1, - "mid": 282146749, - "root": 495059, - "parent": 464424502, - "dialog": 464424502, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1611588059, - "rpid_str": "4002945120", - "root_str": "495059", - "parent_str": "464424502", - "like": 107, - "action": 0, - "member": { - "mid": "282146749", - "uname": "能天使exia", - "sex": "女", - "sign": "电子学会评测师,脑机非技术研究学者,黑客网络贴吧二周目群管,明日方舟三服,三崩子团长,公主焊接会长,红三圈模组收集者,游戏尝鲜人,随心情更新", - "avatar": "http://i1.hdslb.com/bfs/face/f6ec44a9d2785783fa6b1b2dd4b7ad7b17e7cbb9.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 3508, - "name": "总之就是非常可爱", - "image": "http://i1.hdslb.com/bfs/garb/item/2c63178e3fcce804a851ef510e03c2b0e91a61e0.png", - "expire": 0, - "image_enhance": "http://i1.hdslb.com/bfs/garb/item/2c63178e3fcce804a851ef510e03c2b0e91a61e0.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 72, - "name": "风纪元老", - "image": "http://i0.hdslb.com/bfs/face/032bce9fd6dcb562d83b60f8a8719362b18a0afb.png", - "image_small": "http://i2.hdslb.com/bfs/face/2930b8bf5d7c68e1961d81ed3a59783af9d639a2.png", - "level": "稀有勋章", - "condition": "风纪委员连任期数 >= 12" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1727280000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 3508, - "name": "总之就是非常可爱", - "image": "http://i0.hdslb.com/bfs/garb/item/2c63178e3fcce804a851ef510e03c2b0e91a61e0.png", - "jump_url": "", - "type": "suit", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/2c63178e3fcce804a851ef510e03c2b0e91a61e0.png", - "image_enhance_frame": "" - }, - "cardbg": { - "id": 5323, - "name": "明日方舟音律系列", - "image": "http://i0.hdslb.com/bfs/garb/item/e62b17700b3c1bc981606905f85615363c183105.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/5359?navhide=1&mid=282146749&from=reply", - "fan": { - "is_fan": 1, - "number": 11418, - "color": "#ffb628", - "name": "明日方舟音律联觉", - "num_desc": "011418" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @边走边发呆 :拜登时代洛阳铲,带人,食大便了,现在的b站没有楼层了[牛年]", - "plat": 0, - "device": "", - "members": [ - { - "mid": "37145412", - "uname": "边走边发呆", - "sex": "男", - "sign": "这个人懒死了,什么都不发=_= 头像是素晴日", - "avatar": "http://i0.hdslb.com/bfs/face/4dfe0f1b0bfc9b1afea9e3bacbc5a92221fe9b09.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 60, - "name": "有爱萌新", - "image": "http://i1.hdslb.com/bfs/face/51ca16136e570938450bca360f28761ceb609f33.png", - "image_small": "http://i2.hdslb.com/bfs/face/9abfa4769357f85937782c2dbc40fafda4f57217.png", - "level": "普通勋章", - "condition": "当前持有粉丝勋章最高等级>=5级" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1559836800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - } - } - ], - "emote": { - "[牛年]": { - "id": 3146, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[牛年]", - "url": "http://i0.hdslb.com/bfs/emote/9275275ff1f2659310648221107d20bc4970f106.png", - "meta": { - "size": 1 - }, - "mtime": 1611200715, - "jump_title": "牛年" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "400天前发布" - } - } - ], - "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, - "invisible": false, - "reply_control": { - "sub_reply_entry_text": "共838条回复", - "sub_reply_title_text": "相关回复共838条", - "time_desc": "4100天前发布" - } - }, - { - "rpid": 646408628, - "oid": 2, - "type": 1, - "mid": 33066927, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 173, - "rcount": 160, - "state": 0, - "fansgrade": 1, - "attr": 0, - "ctime": 1519135750, - "rpid_str": "646408628", - "root_str": "0", - "parent_str": "0", - "like": 7197, - "action": 0, - "member": { - "mid": "33066927", - "uname": "冰魂喵丶", - "sex": "男", - "sign": "反正不要钱,多少关注下?\n等我有时间,就把你们全吃了", - "avatar": "http://i0.hdslb.com/bfs/face/f60445649445f69db7293f1cb611f6c0dcdd9a21.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 71, - "name": "资深委员", - "image": "http://i1.hdslb.com/bfs/face/5beecb936bd7422a5ac11c9c5c8df56f334b2a65.png", - "image_small": "http://i0.hdslb.com/bfs/face/9f8e0d5cd0201cf7177199d9365be562be1deb05.png", - "level": "高级勋章", - "condition": "风纪委员连任期数 >= 6" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1620748800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": { - "uid": 33066927, - "medal_id": 29058, - "medal_name": "逸国", - "score": 0, - "level": 1, - "intimacy": 0, - "master_status": 1, - "is_receive": 1, - "medal_color": 643602062, - "medal_color_end": 643602062, - "medal_color_border": 4284257934, - "medal_color_name": 4284257934, - "medal_color_level": 4284257934, - "guard_level": 0 - }, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": { - "id": 32680, - "name": "坎公骑冠剑", - "image": "http://i0.hdslb.com/bfs/garb/item/e861ec7f80f9725fbed51bbfc51ade4c083ddedc.png", - "jump_url": "https://www.bilibili.com/h5/mall/fans/recommend/32658?navhide=1&mid=33066927&from=reply", - "fan": { - "is_fan": 1, - "number": 16578, - "color": "#f7b130", - "name": "坎公骑冠剑", - "num_desc": "016578" - }, - "type": "suit" - }, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "第一首:来夢緑 - kagome-kagome ~ 月の眷属達カラオケ\n第二首:dBu music - 千年幻想郷 -Aurora sky edition-\n第三首:Sensitive Heart - 千年幻想郷 ~ History of the Moon\n第四首:Yellow-Zebra - 月の律动~Rhythm of the moon~(东方永夜抄 “千年幻想郷 ~ History of the Moon”)\n第五首:工藤舞 - D.S.F.S(ヴォヤージュ1969)\n第六首:Angelic Quasar - かの郷は永き幻の\n第七首:東方永夜抄 - 黒髪のアマンダ\n第八首:君の美術館 - 千年幻想郷 ~ History of the Moon\n\n------------------------\n这些是av:2出现的音乐,应该不会缺少的喵~。(笑) 如果有需要有兴趣的话欢迎复制喵~~(`・ω・´)\n复制的9818楼的\n前排提示:本视频只有大会员能看", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 6 - }, - "replies": [ - { - "rpid": 646507261, - "oid": 2, - "type": 1, - "mid": 11531860, - "root": 646408628, - "parent": 646408628, - "dialog": 646507261, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1519138195, - "rpid_str": "646507261", - "root_str": "646408628", - "parent_str": "646408628", - "like": 140, - "action": 0, - "member": { - "mid": "11531860", - "uname": "方圆十里有名的俊后生", - "sex": "男", - "sign": "", - "avatar": "http://i0.hdslb.com/bfs/baselabs/fab0bf0029e891eed162175c73473003528a5f22.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 1, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1647619200000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "大会员", - "label_theme": "vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "车万大法好", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1471天前发布" - } - }, - { - "rpid": 1601887431, - "oid": 2, - "type": 1, - "mid": 341470991, - "root": 646408628, - "parent": 646408628, - "dialog": 1601887431, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1557745446, - "rpid_str": "1601887431", - "root_str": "646408628", - "parent_str": "646408628", - "like": 94, - "action": 0, - "member": { - "mid": "341470991", - "uname": "飞行科", - "sex": "保密", - "sign": "", - "avatar": "http://i2.hdslb.com/bfs/face/327188d3f35510699e54a65a65b2fba95dd6ded2.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626364800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "东方不能沉", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1024天前发布" - } - }, - { - "rpid": 1627517285, - "oid": 2, - "type": 1, - "mid": 244446278, - "root": 646408628, - "parent": 646408628, - "dialog": 1627517285, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1558630445, - "rpid_str": "1627517285", - "root_str": "646408628", - "parent_str": "646408628", - "like": 75, - "action": 0, - "member": { - "mid": "244446278", - "uname": "KRHX", - "sex": "男", - "sign": "自由的明天仍在前方\n如繁星般闪烁着光芒\n即便只是缥缈的愿景\n也要朝着那黎明迈向\n哪怕路途艰辛\n哪怕前途渺茫\n世间进步仍未停息\n向那理想的彼方", - "avatar": "http://i2.hdslb.com/bfs/face/df0e691dd30d84f9c5224dbb7820b03953c7e6de.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1647446400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "东方不能沉啊", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "1013天前发布" - } - } - ], - "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, - "invisible": false, - "reply_control": { - "sub_reply_entry_text": "共160条回复", - "sub_reply_title_text": "相关回复共160条", - "time_desc": "1471天前发布" - } - } - ], - "top": { - "admin": null, - "upper": null, - "vote": null - }, - "top_replies": null, - "lottery_card": null, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "https://www.bilibili.com/blackboard/foldingreply.html" - }, - "up_selection": { - "pending_count": 0, - "ignore_count": 0 - }, - "cm": {}, - "cm_info": { - "ads": null - }, - "effects": { - "preloading": "" - }, - "assist": 0, - "blacklist": 0, - "vote": 0, - "lottery": 0, - "config": { - "showadmin": 1, - "showentry": 1, - "showfloor": 0, - "showtopic": 1, - "show_up_flag": true, - "read_only": false, - "show_del_log": true - }, - "upper": { - "mid": 2 - }, - "show_bvid": false, - "control": { - "input_disable": false, - "root_input_text": "发一条友善的评论", - "child_input_text": "", - "giveup_input_text": "不发没关系,请继续友善哦~", - "bg_text": "看看下面~来发评论吧", - "web_selection": false, - "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", - "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", - "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", - "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6", - "show_type": 1, - "show_text": "", - "disable_jump_emote": false - }, - "note": 1, - "callbacks": null - } -} -``` - -
- -## 获取指定评论的回复 - -> https://api.bilibili.com/x/v2/reply/reply - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -按照回复顺序排序 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------------- | ------------ | ---------------------------------------- | -| access_key | str | APP登录 Token | APP 方式必要 | | -| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | -| oid | num | 目标评论区 id | 必要 | | -| root | num | 根回复 rpid | 必要 | | -| ps | num | 每页项数 | 非必要 | 默认为20
定义域:1-49
但 data_replies 的最大内容数为20,因此设置为49其实也只会有20条回复被返回 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | -------------- | -------------------------------------- | -| config | obj | 评论区显示控制 | | -| control | obj | 评论区输入属性 | | -| page | obj | 页面信息 | | -| replies | array | 评论对话树列表 | 最大内容数为20 | -| root | obj | 根评论信息 | [对象定义见表](readme.md#评论条目对象) | -| show_bvid | bool | 显示 bvid? | | -| show_text | str | (?) | | -| show_type | num | (?) | | -| upper | obj | UP主 mid | | - -`data`中的`config`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------------------ | ---- | -| showadmin | num | 是否显示管理置顶 | | -| showentry | num | ? | | -| showfloor | num | 是否显示楼层号 | | -| showtopic | num | 是否显示话题 | | -| show_up_flag | bool | 是否显示“UP觉得很赞”标志 | | -| read_only | bool | 是否只读评论区 | | -| show_del_log | bool | 是否显示删除记录 | | - -`data`中的`control`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------ | ---- | ------------------ | ----------------------------------- | -| input_disable | bool | (?) | | -| root_input_text | str | 评论框文字 | | -| child_input_text | str | 评论框文字 | | -| bg_text | str | 空评论区文字 | | -| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | -| answer_guide_text | str | 答题页面链接文字 | | -| answer_guide_icon_url | str | 答题页面图标 url | | -| answer_guide_ios_url | str | 答题页面 ios url | | -| answer_guide_android_url | str | 答题页面安卓 url | | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ---- | -| count | num | 二级评论数 | | -| num | num | 当前页码 | | -| size | num | 每页项数 | | - -`data`中的`replies`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------ | -------------------------------------- | -| 0 | obj | 对话评论条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 对话评论条目 (n+1) | 按照回复顺序排列 | -| …… | obj | …… | …… | - -`data`中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| mid | num | UP 主 mid | | - -**示例:** - -获取视频`av201022189`下评论`rpid=3030790837`的回复,每页5项,获取第1页 - -```shell -curl -G 'https://api.bilibili.com/x/v2/reply/reply' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=201022189' \ ---data-urlencode 'root=3030790837' \ ---data-urlencode 'ps=5' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "config": { - "showadmin": 0, - "showentry": 0, - "showfloor": 0, - "showtopic": 0, - "show_up_flag": false, - "read_only": false, - "show_del_log": false - }, - "control": { - "input_disable": false, - "root_input_text": "发一条友善的评论", - "child_input_text": "", - "giveup_input_text": "不发没关系,请继续友善哦~", - "bg_text": "看看下面~来发评论吧", - "web_selection": false, - "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", - "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", - "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", - "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6", - "show_type": 1, - "show_text": "", - "disable_jump_emote": false - }, - "page": { - "count": 230, - "num": 1, - "size": 5 - }, - "replies": [ - { - "rpid": 3030802207, - "oid": 201022189, - "type": 1, - "mid": 172604528, - "root": 3030790837, - "parent": 3030790837, - "dialog": 3030802207, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592018067, - "rpid_str": "3030802207", - "root_str": "3030790837", - "parent_str": "3030790837", - "like": 41, - "action": 0, - "member": { - "mid": "172604528", - "uname": "超高校级的认真", - "sex": "男", - "sign": "just do it for yourself", - "avatar": "http://i2.hdslb.com/bfs/face/d0d957faa6162388467cb0750a9d33cf616e73e9.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626364800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "怎么上p站呀,翻吗", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "627天前发布" - } - }, - { - "rpid": 3030810089, - "oid": 201022189, - "type": 1, - "mid": 342581997, - "root": 3030790837, - "parent": 3030802207, - "dialog": 3030802207, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592018123, - "rpid_str": "3030810089", - "root_str": "3030790837", - "parent_str": "3030802207", - "like": 7, - "action": 0, - "member": { - "mid": "342581997", - "uname": "VAN样斯基", - "sex": "保密", - "sign": "", - "avatar": "http://i0.hdslb.com/bfs/face/bc9c6d37b5a4c8b3b0a3cd483fd66e63b1ae0cec.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626364800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @中等校级的努力 :是啊", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "627天前发布" - } - }, - { - "rpid": 3030843245, - "oid": 201022189, - "type": 1, - "mid": 92586428, - "root": 3030790837, - "parent": 3030790837, - "dialog": 3030843245, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592018688, - "rpid_str": "3030843245", - "root_str": "3030790837", - "parent_str": "3030790837", - "like": 588, - "action": 0, - "member": { - "mid": "92586428", - "uname": "浪潮工作室", - "sex": "保密", - "sign": "洞见时代的浪潮。", - "avatar": "http://i2.hdslb.com/bfs/face/67f183f13f8fe3afb374916d32f9810df8ef042a.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": 0, - "desc": "专栏优质UP主" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "不会吧不会吧,不会真的有人上P站不是为了学习吧", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "627天前发布" - } - }, - { - "rpid": 3030881609, - "oid": 201022189, - "type": 1, - "mid": 393121222, - "root": 3030790837, - "parent": 3030802207, - "dialog": 3030802207, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592019208, - "rpid_str": "3030881609", - "root_str": "3030790837", - "parent_str": "3030802207", - "like": 110, - "action": 0, - "member": { - "mid": "393121222", - "uname": "鱼氏博物馆", - "sex": "保密", - "sign": "", - "avatar": "http://i1.hdslb.com/bfs/face/f61a8ea36828884d760d855293136a838fa9e848.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1602691200000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @中等校级的努力 :p是什么,当然是plane啦,plane站其实就是✈场[doge]所以去p站就是去✈场啦", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[doge]": { - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "http://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1645206695, - "jump_title": "doge" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "627天前发布" - } - }, - { - "rpid": 3030978856, - "oid": 201022189, - "type": 1, - "mid": 11814633, - "root": 3030790837, - "parent": 3030790837, - "dialog": 3030978856, - "count": 0, - "rcount": 0, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592020635, - "rpid_str": "3030978856", - "root_str": "3030790837", - "parent_str": "3030790837", - "like": 60, - "action": 0, - "member": { - "mid": "11814633", - "uname": "我到四川省来", - "sex": "保密", - "sign": "保持内心的平静", - "avatar": "http://i0.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 1885, - "name": "公主连结凯露", - "image": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 3, - "name": "白银殿堂", - "image": "http://i0.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png", - "image_small": "http://i0.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png", - "level": "高级勋章", - "condition": "单个自制视频总播放数>=10万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1715270400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 1885, - "name": "公主连结凯露", - "image": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "jump_url": "", - "type": "vip", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "image_enhance_frame": "" - }, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "看有机化学考研视频", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "627天前发布" - } - } - ], - "root": { - "rpid": 3030790837, - "oid": 201022189, - "type": 1, - "mid": 342581997, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 268, - "rcount": 230, - "state": 0, - "fansgrade": 0, - "attr": 768, - "ctime": 1592017909, - "rpid_str": "3030790837", - "root_str": "0", - "parent_str": "0", - "like": 8018, - "action": 0, - "member": { - "mid": "342581997", - "uname": "VAN样斯基", - "sex": "保密", - "sign": "", - "avatar": "http://i0.hdslb.com/bfs/face/bc9c6d37b5a4c8b3b0a3cd483fd66e63b1ae0cec.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626364800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "去P站当然只是为了学习啊[doge]", - "plat": 0, - "device": "", - "members": [], - "emote": { - "[doge]": { - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "http://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1645206695, - "jump_title": "doge" - } - }, - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "https://www.bilibili.com/blackboard/foldingreply.html" - }, - "up_action": { - "like": true, - "reply": true - }, - "show_follow": false, - "invisible": false, - "card_label": [ - { - "rpid": 3030790837, - "text_content": "UP主觉得很赞", - "text_color_day": "#757575", - "text_color_night": "#939393", - "label_color_day": "#F4F4F4", - "label_color_night": "#1E1E1E", - "image": "", - "type": 0, - "background": "", - "background_width": 0, - "background_height": 0, - "jump_url": "" - } - ], - "reply_control": { - "up_reply": true, - "sub_reply_entry_text": "共230条回复", - "sub_reply_title_text": "相关回复共230条", - "time_desc": "627天前发布" - } - }, - "show_bvid": true, - "show_text": "", - "show_type": 2, - "upper": { - "mid": 92586428 - } - } -} -``` - -
- -## 获取指定评论对话树 - -> https://api.bilibili.com/x/v2/reply/dialog/cursor - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -按照对话链排列 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------------- | ------------ | ---------------------------------------- | -| access_key | str | APP登录 Token | APP 方式必要 | | -| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | -| oid | num | 目标评论区 id | 必要 | | -| root | num | 根回复 rpid | 必要 | | -| dialog | num | 对话树根 rpid | 必要 | | -| size | num | 每页最大项数 | 必要 | | -| min_floor | num | (?) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | -------------- | ---- | -| cursor | obj | 页楼层信息 | | -| dialog | obj | 对话楼层信息 | | -| replies | array | 评论对话树列表 | | -| assist | num | (?) | | -| blacklist | num | (?) | | -| vote | num | (?) | | -| lottery | num | (?) | | -| config | obj | 评论区显示控制 | | -| upper | obj | UP主 mid | | -| show_bvid | bool | 显示 bvid? | | -| control | obj | 评论区输入属性 | | -| note | num | (?) | | - -`data`中的`cursor`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---------------- | ---- | -| min_floor | num | 本页最低对话楼层 | | -| max_floor | num | 本页最高对话楼层 | | -| size | num | 本页项数 | | - -`data`中的`dialog`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | -------------------- | ---- | -| min_floor | num | 二级评论最低对话楼层 | | -| max_floor | num | 二级评论最高对话楼层 | | - -`data`中的`replies`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------ | -------------------------------------- | -| 0 | obj | 对话评论条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 对话评论条目 (n+1) | 按照对话链排列 | -| …… | obj | …… | …… | - -`data`中的`config`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------------------- | ---- | -| showadmin | num | 是否显示管理置顶 | | -| showentry | num | ? | | -| showfloor | num | 是否显示楼层号 | | -| showtopic | num | 是否显示话题 | | -| show_up_flag | bool | 是否显示“UP 觉得很赞”标志 | | -| read_only | bool | 是否只读评论区 | | -| show_del_log | bool | 是否显示删除记录 | | - -`data`中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| mid | num | UP 主 mid | | - -`data`中的`control`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------ | ---- | ------------------ | ----------------------------------- | -| input_disable | bool | (?) | | -| root_input_text | str | 评论框文字 | | -| child_input_text | str | 评论框文字 | | -| bg_text | str | 空评论区文字 | | -| web_selection | bool | 评论是否筛选后可见 | false:无需筛选
true:需要筛选 | -| answer_guide_text | str | 答题页面链接文字 | | -| answer_guide_icon_url | str | 答题页面图标 url | | -| answer_guide_ios_url | str | 答题页面 ios url | | -| answer_guide_android_url | str | 答题页面安卓 url | | - -**示例:** - -获取视频`av201022189`下评论`rpid=3030790837`的对话`rpid=3030978856`,每页最大5项 - -```shell -curl -G 'https://api.bilibili.com/x/v2/reply/dialog/cursor' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=201022189' \ ---data-urlencode 'root=3030790837' \ ---data-urlencode 'dialog=3030978856' \ ---data-urlencode 'size=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "cursor": { - "min_floor": 5, - "max_floor": 99, - "size": 5 - }, - "dialog": { - "min_floor": 0, - "max_floor": 243 - }, - "replies": [ - { - "rpid": 3030978856, - "oid": 201022189, - "type": 1, - "mid": 11814633, - "root": 3030790837, - "parent": 3030790837, - "dialog": 3030978856, - "count": 0, - "rcount": 0, - "floor": 5, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592020635, - "rpid_str": "3030978856", - "root_str": "3030790837", - "parent_str": "3030790837", - "like": 60, - "action": 0, - "member": { - "mid": "11814633", - "uname": "我到四川省来", - "sex": "保密", - "sign": "保持内心的平静", - "avatar": "http://i0.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 1885, - "name": "公主连结凯露", - "image": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 3, - "name": "白银殿堂", - "image": "http://i2.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png", - "image_small": "http://i0.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png", - "level": "高级勋章", - "condition": "单个自制视频总播放数>=10万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1715270400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 1885, - "name": "公主连结凯露", - "image": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "jump_url": "", - "type": "vip", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "image_enhance_frame": "" - }, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "看有机化学考研视频", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "627天前发布" - } - }, - { - "rpid": 3049044835, - "oid": 201022189, - "type": 1, - "mid": 34598825, - "root": 3030790837, - "parent": 3032092982, - "dialog": 3030978856, - "count": 0, - "rcount": 0, - "floor": 54, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592368714, - "rpid_str": "3049044835", - "root_str": "3030790837", - "parent_str": "3032092982", - "like": 1, - "action": 0, - "member": { - "mid": "34598825", - "uname": "人宇君sayo", - "sex": "男", - "sign": "", - "avatar": "http://i2.hdslb.com/bfs/face/bf61490cabaedd8e98740f2c98a342ac6d2c607d.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1629561600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @緑箭口香糖 :牛的", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "623天前发布" - } - }, - { - "rpid": 3049581999, - "oid": 201022189, - "type": 1, - "mid": 479083152, - "root": 3030790837, - "parent": 3030978856, - "dialog": 3030978856, - "count": 0, - "rcount": 0, - "floor": 93, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592378703, - "rpid_str": "3049581999", - "root_str": "3030790837", - "parent_str": "3030978856", - "like": 2, - "action": 0, - "member": { - "mid": "479083152", - "uname": "人间多了许茫然", - "sex": "保密", - "sign": "无聊...\n", - "avatar": "http://i0.hdslb.com/bfs/face/6e7ee177b5cc681b9609c07f8d5eb574b52d409c.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1632240000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": null, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @我到四川省来 :哈哈,考研不考化学吧", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "623天前发布" - } - }, - { - "rpid": 3049578129, - "oid": 201022189, - "type": 1, - "mid": 11814633, - "root": 3030790837, - "parent": 3049581999, - "dialog": 3030978856, - "count": 0, - "rcount": 0, - "floor": 94, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592378760, - "rpid_str": "3049578129", - "root_str": "3030790837", - "parent_str": "3049581999", - "like": 1, - "action": 0, - "member": { - "mid": "11814633", - "uname": "我到四川省来", - "sex": "保密", - "sign": "保持内心的平静", - "avatar": "http://i0.hdslb.com/bfs/face/1c7cad967633c718ddef302f4aa39efaed53a2e4.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 1885, - "name": "公主连结凯露", - "image": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 3, - "name": "白银殿堂", - "image": "http://i2.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png", - "image_small": "http://i0.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png", - "level": "高级勋章", - "condition": "单个自制视频总播放数>=10万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1715270400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 1885, - "name": "公主连结凯露", - "image": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "jump_url": "", - "type": "vip", - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/ecf1b11044845abc92e576dfdf93ad4f5e5a0958.png", - "image_enhance_frame": "" - }, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @转手告别旧生活 :专业课 考啊", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "623天前发布" - } - }, - { - "rpid": 3049748009, - "oid": 201022189, - "type": 1, - "mid": 39891232, - "root": 3030790837, - "parent": 3032092982, - "dialog": 3030978856, - "count": 0, - "rcount": 0, - "floor": 99, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1592382373, - "rpid_str": "3049748009", - "root_str": "3030790837", - "parent_str": "3032092982", - "like": 1, - "action": 0, - "member": { - "mid": "39891232", - "uname": "夏次一町and庵野一洋", - "sex": "保密", - "sign": "嘚儿~驾!", - "avatar": "http://i1.hdslb.com/bfs/face/79fbbc56271053565f6dd4395cd77120bad7c568.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 452, - "name": "灵笼", - "image": "http://i1.hdslb.com/bfs/face/9c5f14d6749daded668f3f66998baf4a50e7d8da.png", - "expire": 0, - "image_enhance": "http://i1.hdslb.com/bfs/face/9c5f14d6749daded668f3f66998baf4a50e7d8da.png", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1628870400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "" - }, - "avatar_subscript": 0, - "nickname_color": "" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": { - "pendant": { - "id": 452, - "name": "灵笼", - "image": "http://i0.hdslb.com/bfs/face/9c5f14d6749daded668f3f66998baf4a50e7d8da.png", - "jump_url": "", - "type": "vip", - "image_enhance": "http://i0.hdslb.com/bfs/face/9c5f14d6749daded668f3f66998baf4a50e7d8da.png", - "image_enhance_frame": "" - }, - "cardbg": null, - "cardbg_with_focus": null - }, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "回复 @緑箭口香糖 :不收费啊", - "plat": 0, - "device": "", - "members": [], - "jump_url": {}, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": { - "time_desc": "623天前发布" - } - } - ], - "assist": 0, - "blacklist": 0, - "vote": 0, - "lottery": 0, - "config": { - "showadmin": 1, - "showentry": 1, - "showfloor": 0, - "showtopic": 1, - "show_up_flag": true, - "read_only": false, - "show_del_log": true - }, - "upper": { - "mid": 92586428 - }, - "show_bvid": false, - "control": { - "input_disable": false, - "root_input_text": "发一条友善的评论", - "child_input_text": "", - "giveup_input_text": "不发没关系,请继续友善哦~", - "bg_text": "看看下面~来发评论吧", - "web_selection": false, - "answer_guide_text": "需要升级成为lv2会员后才可以评论,先去答题转正吧!", - "answer_guide_icon_url": "http://i0.hdslb.com/bfs/emote/96940d16602cacbbac796245b7bb99fa9b5c970c.png", - "answer_guide_ios_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=12", - "answer_guide_android_url": "https://www.bilibili.com/h5/newbie/entry?navhide=1&re_src=6", - "show_type": 1, - "show_text": "", - "disable_jump_emote": false - }, - "note": 1 - } -} -``` - -
- -## 获取评论区热评 - -> https://api.bilibili.com/x/v2/reply/hot - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -按照热评排列 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | -------------- | ------------ | ---------------------------------------- | -| access_key | str | APP登录 Token | APP 方式必要 | | -| type | num | 评论区类型代码 | 必要 | [类型代码见表](readme.md#评论区类型代码) | -| oid | num | 目标评论区 id | 必要 | | -| root | num | 根回复 rpid | 必要 | | -| ps | num | 每页项数 | 非必要 | 默认为20
定义域:1-49 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12002:评论区已关闭
12009:评论主体的type不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---- | -| page | obj | 页面信息 | | -| replies | obj | 热评列表 | | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ---- | -| acount | num | 总评论数 | | -| count | num | 热评数 | | -| num | num | 当前页码 | | -| size | num | 每页项数 | | - -`data`中的`replies`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | -------------------------------------- | -| 0 | obj | 热评条目 1 | [对象定义见表](readme.md#评论条目对象) | -| n | obj | 热评条目 (n+1) | 按照热评排列 | -| …… | obj | …… | …… | - -**示例:** - -获取视频`av2`的评论区热评,每页5项,查看第1页 - -```shell -curl -G 'https://api.bilibili.com/x/v2/reply/hot' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=2' \ ---data-urlencode 'ps=5' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "page": { - "acount": 76796, - "count": 60975, - "num": 1, - "size": 5 - }, - "replies": [ - { - "rpid": 476670, - "oid": 2, - "type": 1, - "mid": 58426, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 2733, - "rcount": 2608, - "floor": 2, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1291350931, - "like": 90425, - "action": 0, - "member": null, - "content": { - "message": "貌似没人来", - "plat": 0, - "device": "", - "members": null, - "jump_url": null, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": {} - }, - { - "rpid": 917945205, - "oid": 2, - "type": 1, - "mid": 34762090, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 461, - "rcount": 365, - "floor": 17977, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1532071373, - "like": 29795, - "action": 0, - "member": null, - "content": { - "message": "7.20日,站长被封7天\n\n历史性留名[2233娘_卖萌]", - "plat": 0, - "device": "", - "members": null, - "jump_url": null, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": {} - }, - { - "rpid": 2576184175, - "oid": 2, - "type": 1, - "mid": 24512285, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 1066, - "rcount": 1000, - "floor": 40932, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1584945297, - "like": 44309, - "action": 0, - "member": null, - "content": { - "message": "人类最古のav号(挂了的不算)也变成bv了[大哭][大哭][大哭]青春结束了", - "plat": 0, - "device": "", - "members": null, - "jump_url": null, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": {} - }, - { - "rpid": 495059, - "oid": 2, - "type": 1, - "mid": 2, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 898, - "rcount": 838, - "floor": 5, - "state": 2, - "fansgrade": 0, - "attr": 0, - "ctime": 1291918239, - "like": 34224, - "action": 0, - "member": null, - "content": { - "message": "wwwww", - "plat": 0, - "device": "", - "members": null, - "jump_url": null, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": {} - }, - { - "rpid": 646408628, - "oid": 2, - "type": 1, - "mid": 33066927, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 173, - "rcount": 160, - "floor": 10914, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1519135750, - "like": 7197, - "action": 0, - "member": null, - "content": { - "message": "第一首:来夢緑 - kagome-kagome ~ 月の眷属達カラオケ\n第二首:dBu music - 千年幻想郷 -Aurora sky edition-\n第三首:Sensitive Heart - 千年幻想郷 ~ History of the Moon\n第四首:Yellow-Zebra - 月の律动~Rhythm of the moon~(东方永夜抄 “千年幻想郷 ~ History of the Moon”)\n第五首:工藤舞 - D.S.F.S(ヴォヤージュ1969)\n第六首:Angelic Quasar - かの郷は永き幻の\n第七首:東方永夜抄 - 黒髪のアマンダ\n第八首:君の美術館 - 千年幻想郷 ~ History of the Moon\n\n------------------------\n这些是av:2出现的音乐,应该不会缺少的喵~。(笑) 如果有需要有兴趣的话欢迎复制喵~~(`・ω・´)\n复制的9818楼的\n前排提示:本视频只有大会员能看", - "plat": 0, - "device": "", - "members": null, - "jump_url": null, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": {} - } - ] - } -} -``` - -
- -## ~~获取指定评论信息~~ - -> https://api.bilibili.com/x/v2/reply/info - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------------- | ------ | -------------------------------------------- | -| type | num | 评论区类型代码 | 非必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区 id | 非必要 | | -| rpid | num | 目标评论 rpid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | --------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 评论条目 | [对象定义见表](readme.md#评论条目对象) | - -**示例:** - -获取视频`av379743801`评论区下`rpid=95737567200`的信息 - -```bash -curl -G 'https://api.bilibili.com/x/v2/reply/info' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=379743801' \ ---data-urlencode 'rpid=95737567200' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "rpid": 95737567200, - "oid": 379743801, - "type": 1, - "mid": 293793435, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 34, - "rcount": 34, - "floor": 382, - "state": 0, - "fansgrade": 0, - "attr": 514, - "ctime": 1639916028, - "like": 154, - "action": 0, - "member": { - "mid": "293793435", - "uname": "社会易姐QwQ", - "sex": "男", - "sign": "普通带砖技术宅,爱好MC 编程 电子,是车万人也是术术人,粉丝群:1136462265,博客:shakianee.top", - "avatar": "http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", - "rank": "10000", - "DisplayRank": "0", - "face_nft_new": 0, - "is_senior_member": 0, - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 2511, - "name": "初音未来13周年", - "image": "http://i0.hdslb.com/bfs/garb/item/4f8f3f1f2d47f0dad84f66aa57acd4409ea46361.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/fe0b83b53e2342b16646f6e7a9370d8a867decdb.webp", - "image_enhance_frame": "http://i0.hdslb.com/bfs/garb/item/127c507ec8448be30cf5f79500ecc6ef2fd32f2c.png" - }, - "nameplate": { - "nid": 4, - "name": "青铜殿堂", - "image": "http://i2.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", - "image_small": "http://i0.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", - "level": "普通勋章", - "condition": "单个自制视频总播放数>=1万" - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1675785600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "nickname_color": "#FB7299" - }, - "fans_detail": null, - "following": 0, - "is_followed": 0, - "user_sailing": null, - "is_contractor": false, - "contract_desc": "" - }, - "content": { - "message": "这款机器背后发热超级严重。。。。。最烫的时候有60-70℃手不敢摸,而发烫后会降频,最低会降到0.6Ghz[笑哭][笑哭]\n现在解决办法已经出来了https://b23.tv/suUd3g7", - "plat": 0, - "device": "", - "members": null, - "jump_url": null, - "max_line": 999 - }, - "replies": null, - "assist": 0, - "folder": { - "has_folded": false, - "is_folded": false, - "rule": "" - }, - "up_action": { - "like": false, - "reply": false - }, - "show_follow": false, - "invisible": false, - "reply_control": {} - } -} -``` - -
- -## 获取评论区评论总数 - -> https://api.bilibili.com/x/v2/reply/count - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------------- | ------ | -------------------------------------------- | -| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** | -| oid | num | 目标评论区 id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无此项
12009:评论主体的type不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ---- | -| count | num | 评论条数 | | - -**示例:** - -获取视频`av2`的评论区总计评论条数 - -```shell -curl -G 'https://api.bilibili.com/x/v2/reply/count' \ ---data-urlencode 'type=1' \ ---data-urlencode 'oid=2' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 65521 - } -} -``` - -
- diff --git a/comment/readme.md b/comment/readme.md deleted file mode 100644 index d89bc8e..0000000 --- a/comment/readme.md +++ /dev/null @@ -1,336 +0,0 @@ -# 评论区 - - - -评论系统为全站通用,且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
大于一级评论则为根评论 id | -| parent | num | 回复父评论 rpid | 若为一级评论则为 0
若为二级评论则为根评论 rpid
大于二级评论为上一级评 论 rpid | -| dialog | num | 回复对方 rpid | 若为一级评论则为 0
若为二级评论则为该评论 rpid
大于二级评论为上一级评论 rpid | -| count | num | 二级评论条数 | | -| rcount | num | 回复评论条数 | | -| floor | num | 评论楼层号 | **注:若不支持楼层则无此项** | -| state | num | (?) | | -| fansgrade | num | 是否具有粉丝标签 | 0:无
1:有 | -| attr | num | 某属性位? | | -| ctime | num | 评论发送时间 | 时间戳 | -| rpid_str | str | 评论rpid | 字串格式 | -| root_str | str | 根评论rpid | 字串格式 | -| parent_str | str | 回复父评论rpid | 字串格式 | -| like | num | 评论获赞数 | | -| action | num | 当前用户操作状态 | 需要登录(Cookie 或 APP)
否则恒为 0
0:无
1:已点赞
2:已点踩 | -| member | obj | 评论发送者信息 | | -| content | obj | 评论信息 | | -| replies | 无效时:null
有效时:array | 评论回复条目预览 | **仅嵌套一层**
否则为 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
有效时:obj | 发送者粉丝标签 | | -| following | num | 是否关注该用户 | 需要登录(Cookie或APP)
否则恒为0
0:未关注
1:已关注 | -| is_followed | num | 是否被该用户关注 | 需要登录(Cookie或APP)
否则恒为0
0:未关注
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:无
0:个人认证
1:机构认证 | -| desc | str | 认证信息 | 无为空 | - -`member`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ---- | -------------- | --------------------------------------- | -| vipType | num | 大会员类型 | 0:无
1:月会员
2:年以上会员 | -| vipDueDate | num | 大会员到期时间 | 毫秒 时间戳 | -| dueRemark | str | (?) | | -| accessStatus | num | (?) | | -| vipStatus | num | 大会员状态 | 0:无
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:大会员
annual_vip:年度大会员
ten_annual_vip:十年大会员
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
有效时:obj | 头像框信息 | | -| cardbg | 无效时:null
有效时:obj | 评论卡片装扮 | | -| cardbg_with_focus | null | (?) | | - -`user_sailing`中的`pendant`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ---- | -------------- | -------------------------------------- | -| id | num | 头像框 id | | -| name | str | 头像框名称 | | -| image | str | 头像框图片 url | | -| jump_url | str | 空 | | -| type | str | 装扮类型 | suit:一般装扮
vip_suit:vip 装扮 | -| 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:一般装扮
vip_suit:vip 装扮 | - -`cardbg`中的`fan`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------------ | ---------------- | -| is_fan | num | 是否为粉丝专属装扮 | 0:否
1:是 | -| number | num | 粉丝专属编号 | | -| color | str | 数字颜色 | 颜色码 | -| name | str | 装扮名称 | | -| num_desc | str | 粉丝专属编号 | 字串格式 | - -`评论条目`中的`content`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ----- | ------------------ | ------------------------------------------------------------ | -| message | str | 评论内容 | **重要** | -| plat | num | 评论发送端 | 1:web端
2:安卓客户端
3:ios 客户端
4:wp 客户端 | -| device | str | 评论发送平台设备 | | -| members | array | at 到的用户信息 | | -| emote | obj | 需要渲染的表情转义 | 评论内容无表情则无此项 | -| jump_url | obj | 需要高亮的超链转义 | | -| max_line | num | 6 | 收起最大行数 | - -`content`中的`members`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------------- | -------------------------------- | -| 0 | obj | at到的用户 1 | 基本同`评论条目`中的`member`对象 | -| n | obj | at到的用户 (n+1) | 项数为at到的不同的用户数 | -| …… | obj | …… | …… | - -`content`中的`emote`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---------------- | -------- | -| {表情转义符} | obj | 表情转义符信息 1 | | -| …… | obj | 表情转义符信息 n | 向下扩展 | - -`emote`中的`{表情转义符}`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------ | -------------------------------------------------------- | -| id | num | 表情 id | | -| package_id | num | 表情包 id | | -| state | num | 0 | | -| type | num | 表情类型 | 1:免费
2:会员专属
3:购买所得
4:颜文字 | -| attr | num | (?) | | -| text | str | 表情转义符 | | -| url | str | 表情图片 url | | -| meta | obj | 属性信息 | | -| mtime | num | 表情创建时间 | 时间戳 | -| jump_title | str | 表情名称 | | - -`{表情转义符}`中的`meta`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------ | ---------------- | -| size | num | 表情尺寸信息 | 1:小
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 | **为本对象的递归嵌套**
**仅可嵌套一层**
按照热度顺序排列 | -| 1 | obj | 回复条目2 | | -| 2 | obj | 回复条目3 | 最后一项 | - -`评论条目`中的`folder`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------------------- | ---- | -| has_folded | bool | 是否有被折叠的二级评论 | | -| is_folded | bool | 评论是否被折叠 | | -| rule | str | 相关规则页面 url | | - -`评论条目`中的`up_action`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------------- | ----------------------- | -| like | bool | 是否UP主觉得很赞 | false:否
true:是 | -| reply | bool | 是否被UP主回复 | false:否
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 天/小时 前发布` | diff --git a/contents.md b/contents.md deleted file mode 100644 index 418e106..0000000 --- a/contents.md +++ /dev/null @@ -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) diff --git a/creativecenter/railgun.md b/creativecenter/railgun.md deleted file mode 100644 index 6b5abaf..0000000 --- a/creativecenter/railgun.md +++ /dev/null @@ -1,275 +0,0 @@ -# 电磁力相关 - -- [获取电磁力等级(web端)](#获取电磁力等级web端) -- [获取电磁力详细数值(双端)](#获取电磁力详细数值双端) -- [获取电磁力数值历史变化(双端)](#获取电磁力数值历史变化双端) - ---- - -电磁力每周日下午刷新 - -## 获取电磁力等级(web端) - -> https://member.bilibili.com/x/web/elec/user - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ---------------- | -| mid | num | 当前用户mid | | -| state | num | 电磁力等级 | | -| reason | str | 空 | **作用尚不明确** | - -**示例:** - -```shell -curl 'https://member.bilibili.com/x/web/elec/user' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 293793435, - "state": 2, - "reason": "" - } -} -``` - -
- -## 获取电磁力详细数值(双端) - -> https://api.bilibili.com/studio/up-rating/rating/summary - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ---- | -------------- | ---- | -| date | str | 数据刷新时间 | YYYY-MM-DD | -| level | obj | 电磁力等级 | | -| creative | obj | 创作力 | | -| influence | obj | 影响力 | | -| credit | obj | 信用分 | | - -`data`中的`level` `creative` `influence` `credit`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ---- | -| data | num | 数值 | | -| prev | num | ??? | **作用尚不明确** | -| desc | str | 描述 | | -| date | num | 刷新时间 | 时间戳 | - -**示例:** - -Cookie方式: - -```shell -curl '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' -``` - -
-查看响应示例: - -```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 - } - } -} -``` - -
- -## 获取电磁力数值历史变化(双端) - -> https://api.bilibili.com/studio/up-rating/rating/history - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 目标数据类型 | 必要 | 类型代码见下表 | - -类型代码`type`: - -| 代码 | 含义 | -| ---- | ------ | -| 1 | 创作力 | -| 2 | 影响力 | -| 3 | 信用分 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ----- | ------------ | -------- | -| date | array | 数据记录时间 | 每周更新 | -| score | array | 电磁力等级 | 每周更新 | - -`data`中的`date`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | -------------- | -| 0 | str | 1周前的日期 | MM-DD | -| n | str | (n+1)周前的日期 | 与数值一一对应 | -| …… | str | …… | …… | -| 7 | str | 8周前的日期 | 最后一条 | - -`data`中的`score`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | -------------- | -| 0 | num | 1周前的数值 | | -| n | num | (n+1)周前的数值 | 与日期一一对应 | -| …… | num | …… | …… | -| 7 | num | 8周前的数值 | 最后一条 | - -**示例:** - -查询创作力的历史变化 - -Cookie方式: - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "date": [ - "05-17", - "05-24", - "05-31", - "06-07", - "06-14", - "06-21", - "06-28", - "07-05" - ], - "score": [ - 48, - 48, - 49, - 49, - 49, - 49, - 49, - 49 - ] - } -} -``` - -
diff --git a/creativecenter/statistics&data.md b/creativecenter/statistics&data.md deleted file mode 100644 index 2e82b05..0000000 --- a/creativecenter/statistics&data.md +++ /dev/null @@ -1,811 +0,0 @@ -# 统计与数据 - -- [UP主视频状态数据](#UP主视频状态数据) -- [UP主专栏状态数据](#UP主专栏状态数据) -- [视频数据增量趋势](#视频数据增量趋势) -- [专栏数据增量趋势](#专栏数据增量趋势) -- [稿件操作来源占比情况](#稿件操作来源占比情况) -- [播放来源占比情况(平台及方式)](#播放来源占比情况平台及方式) -- [播放分布情况(粉丝与路人)](#播放分布情况粉丝与路人) - ---- - -统计与数据次日中午12刷新 - -## UP主视频状态数据 - -> https://member.bilibili.com/x/web/index/stat - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## UP主专栏状态数据 - -> https://member.bilibili.com/x/web/data/article - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 视频数据增量趋势 - -> https://member.bilibili.com/x/web/data/article/thirty - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -数据为前30天 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | -------------- | -| type | num | 目标数据类型 | 必要 | 类型代码见下表 | - -类型代码`type`: - -| 代码 | 含义 | -| ---- | ---- | -| 1 | 播放 | -| 2 | 弹幕 | -| 3 | 评论 | -| 4 | 分享 | -| 5 | 投币 | -| 6 | 收藏 | -| 7 | 充电 | -| 8 | 点赞 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-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' -``` - -
-查看响应示例: - -```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 - }, - ………… - ] -} -``` - -
- -## 专栏数据增量趋势 - -> https://member.bilibili.com/x/web/data/article/thirty - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -数据为前30天 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | -------------- | -| type | num | 目标数据类型 | 必要 | 类型代码见下表 | - -类型代码`type`: - -| 代码 | 含义 | -| ---- | ---- | -| 1 | 阅读 | -| 2 | 评论 | -| 3 | 分享 | -| 4 | 投币 | -| 5 | 收藏 | -| 6 | 点赞 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-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' -``` - -
-查看响应示例: - -```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 - }] -} -``` - -
- -## 稿件操作来源占比情况 - -> https://member.bilibili.com/x/web/data/survey - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -数据为上一天的 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | -------------- | -| type | num | 目标数据类型 | 必要 | 类型代码见下表 | - -类型代码`type`: - -| 代码 | 含义 | -| ---- | ---- | -| 1 | 播放 | -| 2 | 弹幕 | -| 3 | 评论 | -| 4 | 分享 | -| 5 | 投币 | -| 6 | 收藏 | -| 7 | 充电 | -| 8 | 点赞 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-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' -``` - -
-查看响应示例: - -```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 - } - } - } -} -``` - -
- -## 播放来源占比情况(平台及方式) - -> https://member.bilibili.com/x/web/data/playsource - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } - } -} -``` - -
- -## 播放分布情况(粉丝与路人) - -> https://member.bilibili.com/x/web/data/base - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } - } - } -} -``` - -
diff --git a/danmaku/action.md b/danmaku/action.md deleted file mode 100644 index 3c38836..0000000 --- a/danmaku/action.md +++ /dev/null @@ -1,822 +0,0 @@ -# 弹幕操作 - -- [发送视频弹幕](#发送视频弹幕) -- [发送互动弹幕](#发送互动弹幕) -- [撤回弹幕](#撤回弹幕) -- [购买高级弹幕发送权限](#购买高级弹幕发送权限) -- [检测高级弹幕发送权限](#检测高级弹幕发送权限) -- [查询弹幕点赞数](#查询弹幕点赞数) -- [点赞弹幕](#点赞弹幕) -- [举报弹幕](#举报弹幕) -- [保护&删除弹幕](#保护&删除弹幕) -- [修改字幕池](#修改字幕池) - ---- - -## 发送视频弹幕 - -> https://api.bilibili.com/x/v2/dm/post - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -此接口与漫画弹幕相同 - -`mode=6`的逆向弹幕与`mode=8`的代码弹幕不可发送 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 | -| oid | num | 视频cid | 必要 | | -| msg | str | 弹幕内容 | 必要 | 长度小于100字符 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒
默认为0 | -| color | num | 弹幕颜色设置 | 非必要 | 十进制RGB888值
默认为16777215(#FFFFFF)白色 | -| fontsize | num | 弹幕字号设置 | 非必要 | 默认为25
极小:12
超小:16
小:18
标准:25
大:36
超大:45
极大:64 | -| pool | num | 弹幕池选择 | 非必要 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕)
默认为0 | -| mode | num | 弹幕类型选择 | 必要 | 1:普通弹幕
4:底部弹幕
5:顶部弹幕
7:高级弹幕
9:BAS弹幕(`pool`必须为2) | -| rnd | num | 当前时间戳*1000000 | 非必要 | **若无此项,则发送弹幕冷却时间限制为90s**
若有此项,则发送弹幕冷却时间限制为5s | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36700:系统升级中
36701:弹幕包含被禁止的内容
36702:弹幕长度大于100
36703:发送频率过快
36704:禁止向未审核的视频发送弹幕
36705:您的等级不足,不能发送弹幕
36706:您的等级不足,不能发送顶端弹幕
36707:您的等级不足,不能发送底端弹幕
36708:您的等级不足,不能发送彩色弹幕
36709:您的等级不足,不能发送高级弹幕
36710:您的权限不足,不能发送这种样式的弹幕
36711:该视频禁止发送弹幕
36712:level 1用户发送弹幕的最大长度为20
36713:稿件未付费
36714:弹幕发送时间不合法
36715:当日操作数量超过上限 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ------------ | -| action | str | 空 | 作用尚不明确 | -| dmid | num | 弹幕dmid | | -| dmid_str | str | 弹幕dmid | 字串形式 | -| visible | bool | true | 作用尚不明确 | - -**示例:** - -为视频`av2`/`BV1xx411c7mD`(cid为`62131`)的5000ms位置发送一条弹幕`前来考古`(颜色为#FFFFFF,字号25,普通弹幕,游动弹幕) - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "action":"", - "dmid":32161968826613767, - "dmid_str":"32161968826613767", - "visible":true - } -} -``` - -
- -## 发送互动弹幕 - -> https://api.bilibili.com/x/v2/dm/command/post - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -2020-09-25 B站更新了互动弹幕功能,包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能 - -详情见: - -[【客户端更新】6.10版本更新!UP主支持发布关联视频弹幕]( https://www.bilibili.com/read/cv7728299 ) - - [引导关注卡片]( https://www.bilibili.com/blackboard/activity-c8a0iDRQy.html ) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 互动弹幕类型 | 必要 | 1:UP主头像弹幕
2:关联视频弹幕
5:视频内嵌引导关注按钮 | -| aid | num | 稿件avid | 必要 | | -| cid | num | 视频cid | 必要 | | -| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒
默认为0 | -| plat | num | 平台标识 | 必要 | 1:web端
2:安卓端
8:视频管理页面 | -| data | str | json序列 | 必要 | | -| dmid | num | 修改互动弹幕的弹幕id | 非必要 | 注:修改弹幕`plat`必须为8 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -`data`参数json序列: - -类型为【UP主头像弹幕】时: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| msg | str | 弹幕内容 | | - -类型为【关联视频弹幕】时: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | ---- | -| msg | str | 弹幕内容 | | -| bvid | str | 关联视频的bvid | | - -类型为【视频内嵌引导关注按钮】时: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | --------------- | -| duration | num | 持续时间 | 单位为毫秒 | -| posX | num | X坐标 | 区间:[118-549] | -| posY | num | Y坐标 | 区间:[82-293] | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
-500:服务器错误
36711:该视频禁止发送弹幕
79026:发送失败,请勿填写当前稿件bvid
79024:发送失败,请输入正确的bvid
79036:该指令弹幕超出限制
79037:关注弹幕坐标溢出 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 正确时:obj
错误时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------------------- | ------------------------------------------------------------ | -| command | str | 指令? | UP主头像弹幕:#UP#
关联视频弹幕:#LINK#
视频内嵌引导关注按钮:#ATTENTION# | -| content | str | 弹幕内容 | | -| extra | str | 弹幕数据 | json序列 | -| id | num | 弹幕dmid | | -| idStr | str | 弹幕dmid | 字串形式 | -| mid | num | 用户mid | | -| oid | num | 视频cid | | -| progress | num | 弹幕出现在视频内的时间 | | -| type | num | 互动弹幕类型 | 1:UP主头像弹幕
2:关联视频弹幕
5:视频内嵌引导关注按钮 | - -`extra`序列数据: - -类型为【UP主头像弹幕】时: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| icon | str | UP主头像url | | - -类型为【关联视频弹幕】时: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------------- | ---- | -| aid | num | 关联视频的avid | | -| title | str | 关联视频的标题 | | -| bvid | str | 关联视频的bvid | | - -类型为【视频内嵌引导关注按钮】时: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------ | ------------------------------------------ | -| duration | num | 持续时间 | 单位为毫秒 | -| posX | num | X坐标 | 区间:[118-549] | -| posY | num | Y坐标 | 区间:[82-293] | -| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 | -| type | num | 关注按钮类型 | 0:仅关注
1:仅三联
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "id": 39053842117558279, - "oid": 230709860, - "mid": 293793435, - "type": 1, - "command": "#UP#", - "content": "test", - "extra": "{\"icon\":\"http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg\"}", - "idStr": "39053842117558279" - } -} -``` - -
- -为视频`av201947622`(cid为`230709860`)的5000ms位置发送一条发送关联视频弹幕`测试1234`关联视频为`BV1kz4y1X7XP` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "id": 39054383689236483, - "oid": 230709860, - "mid": 293793435, - "type": 2, - "command": "#LINK#", - "content": "测试1234", - "progress": 11925, - "extra": "{\"aid\":583785685,\"title\":\"【cmd】访问api 命令行也能上B站\",\"bvid\":\"BV1kz4y1X7XP\"}", - "idStr": "39054383689236483" - } -} -``` - -
- - -为视频`av201947622`(cid为`230709860`)的5000ms位置发送视频内嵌引导关注按钮,X坐标为118,Y坐标为82,持续时间为5000ms - -```shell -curl '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' -``` - -
-查看响应示例: - -```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" - } -} -``` - -
- - -## 撤回弹幕 - -> https://api.bilibili.com/x/dm/recall - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -仅能撤回自己两分钟内的弹幕,且每天只有3次机会 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| dmid | num | 弹幕dmid | 必要 | | -| cid | num | 视频cid | 必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
-404:无此项
36301:撤回失败,弹幕发送已过2分钟
36302:撤回失败,弹幕已经被删除或撤回
36303:撤回失败,今天撤回的机会已经用完
36304:撤回失败,服务器出错 | -| message | str | 错误信息 | 成功后显示剩余次数 | -| ttl | num | 1 | | - -**示例:** - -撤回`cid=168901231`下的弹幕`32310301474947077`的弹幕 - -```shell -curl 'https://api.bilibili.com/x/dm/recall' \ ---data-urlencode 'cid=168901231' \ ---data-urlencode 'dmid=32310301474947077' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "撤回成功,你还有3次撤回机会" -} -``` - -
- -## 购买高级弹幕发送权限 - -> https://api.bilibili.com/x/dm/adv/buy - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -购买一次需要2硬币,同时向up主发送请求 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| mode | str | sp | 必要 | | -| cid | num | 视频cid | 必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-107:硬币不足
-400:请求错误
36007:不允许购买
36009:正在确认中
36010:已购买 | -| message | str | 返回信息 | | -| ttl | num | 1 | | - -示例: - -购买视频cid为`168901231`的高级弹幕发送权限 - -```shell -curl 'https://api.bilibili.com/x/dm/adv/buy' \ ---data-urlencode 'cid=168901231' \ ---data-urlencode 'mode=sp' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"已成功购买" -} -``` - -
- -## 检测高级弹幕发送权限 - -> https://api.bilibili.com/x/dm/adv/state - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| mode | str | sp | 必要 | | -| cid | num | 视频cid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | ---------------- | -------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
--400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有效时:obj
无效时:null | 有效时:信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------------- | ------------------------------------------ | -| coins | num | 需要支付的硬币数 | | -| confirm | num | 是否同意 | 1:同意
2:未同意
未购买时无此项 | -| accept | bool | 是否允许申请 | true:允许
false:不允许 | -| hasBuy | bool | 是否已购买 | true:已购买
未购买时无此项 | - -**示例:** - -查询视频cid为`168901231`的视频高级弹幕权限购买状态 - -当前状态为已购买且同意 - -```shell -curl -G 'https://api.bilibili.com/x/dm/adv/state' \ ---data-urlencode 'cid=168901231' \ ---data-urlencode 'mode=sp' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "coins": 2, - "confirm": 1, - "accept": true, - "hasBuy": true - } -} -``` - -
- -## 查询弹幕点赞数 - -> https://api.bilibili.com/x/v2/dm/thumbup/stats - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| oid | num | 视频cid | 必要 | | -| ids | nums | 弹幕dmid列表 | 必要 | 多个id之间用`,`分隔 | - -**json回复** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------------- | --------------------------------- | -| {弹幕id} | obj | 弹幕id对应的信息 | id分别对应请求参数中的`ids`,下同 | -| …… | obj | 弹幕id对应的信息 | | - -`{弹幕id}`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | -------- | ------------------------------------------------------------ | -| likes | num | 点赞数 | | -| user_like | num | 是否点赞 | 0:未点赞
1:已点赞
需要登录(Cookie或APP)
未登录恒为0 | -| id_str | str | 弹幕dmid | | - -**示例** - -查询`cid=236871317`下的弹幕`35600074482384899`、`38880975220375559`、`39052528418553863`点赞数 - -```shell -curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \ ---data-urlencode 'oid=236871317' \ ---data-urlencode 'ids=39019145405661191,38880975220375559,39052528418553863' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "38880975220375559": { - "likes": 1, - "user_like": 1, - "id_str": "38880975220375559" - }, - "39019145405661191": { - "likes": 3, - "user_like": 1, - "id_str": "39019145405661191" - }, - "39052528418553863": { - "likes": 2, - "user_like": 0, - "id_str": "39052528418553863" - } - } -} -``` - -
- -## 点赞弹幕 - -> https://api.bilibili.com/x/v2/dm/thumbup/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| dmid | num | 弹幕dmid | 必要 | | -| oid | num | 视频cid | 必要 | | -| op | num | 操作 | 必要 | 1:点赞
2:取消点赞 | -| platform | str | 平台 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
36106:该弹幕已被删除
36805:该视频禁止点赞弹幕
65004:取消赞失败 未点赞过
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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
- -## 举报弹幕 - -> https://api.bilibili.com/x/dm/report/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| cid | num | 视频cid | 必要 | | -| dmid | num | 弹幕dmid | 必要 | | -| reason | num | 举报类型 | 必要 | **类型代码见下表** | -| content | str | 其他举报备注 | 非必要 | `reason=11`时有效 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -举报类型`reason`: - -| 代码 | 含义 | -| ---- | ---------- | -| 1 | 违法违禁 | -| 2 | 色情低俗 | -| 3 | 赌博诈骗 | -| 4 | 人身攻击 | -| 5 | 侵犯隐私 | -| 6 | 垃圾广告 | -| 7 | 引战 | -| 8 | 剧透 | -| 9 | 恶意刷屏 | -| 10 | 视频无关 | -| 11 | 其他 | -| 12 | 青少年不良 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
36201:举报弹幕不存在
36203:举报原因类型错误
36204:已举报 | -| message | str | 错误信息 | 默认为空 | -| tll | num | 1 | 举报失败时 | - -**示例** - -举报`cid=145928946`下的弹幕`35600074482384899`,理由是`引战` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"" -} -``` - -
- -## 保护&删除弹幕 - -> https://api.bilibili.com/x/v2/dm/edit/state - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) 或APP - -注:只能操作自己的稿件或有骑士权限的稿件 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | --------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 | -| oid | num | 视频cid | 必要 | | -| dmids | nums | 弹幕dmid | 必要 | 多个id之间用`,`分隔 | -| state | num | 操作代码 | 必要 | 1:删除弹幕
2:弹幕保护
3:取消保护 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例** - -删除`cid=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531` - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
- -## 修改字幕池 - -> https://api.bilibili.com/x/v2/dm/edit/pool - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) 或APP - -注:只能操作自己的稿件或有骑士权限的稿件 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| type | num | 弹幕类选择 | 必要 | 1:视频弹幕 | -| oid | num | 视频cid | 必要 | | -| dmids | nums | 弹幕dmid | 必要 | 多个id之间用`,`分隔 | -| pool | num | 操作代码 | 必要 | 0:移出字幕池
1:移入字幕池 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例** - -将`cid=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531`移入字幕池 - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
diff --git a/danmaku/buzzword.md b/danmaku/buzzword.md deleted file mode 100644 index d03c719..0000000 --- a/danmaku/buzzword.md +++ /dev/null @@ -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代表“哔哩哔哩热词图鉴”
5代表“语言类” | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页项数 | 非必要 | 默认为20 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } - } -} -``` - -
- -## 查询名词解释详情 - -> https://api.bilibili.com/x/v2/dm/buzzword/detail - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------ | ------ | -------------------------------- | -| id | num | 名词id | 必要 | 如:1代表“kksk”
2代表“打脸” | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | --------------------------------- | -------- | --------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:不存在该名词 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有数据时:obj
无数据时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ------------------------------- | -------------------- | ----------------------------- | -| id | num | 名词id | | -| name | str | 名词 | | -| description | str | 名词解释 | | -| picture | str | 名词图片 url | | -| types | array | 父分类列表 | 该名词可能隶属多个父分类 | -| related_words | array | 近义词/相关词 | | -| uppers | 有数据:array
无数据:null | 相关 UP 列表 | 该名词(梗)出处 | -| related_ugc | 有数据:array
无数据:null | 相关 ucg 视频列表 | 该名词(梗)出处 | -| related_ogv | 有数据:array
无数据:null | 相关 pgc 视频列表 | 该名词(梗)出处 | -| guides | obj | 推荐创作信息 | | -| related_buzzwords | array | 推荐名词列表 | | -| topic | obj | 关联话题信息 | | -| show_dynamic | bool | 是否展示话题动态聚合 | `true`展示
`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 | 相关 UP(n+1) | | -| …… | obj | …… | …… | - -`uppers`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------- | ------------------------------------------------------------ | -| id | num | UP 主 mid | | -| recommend | str | | | -| name | str | UP 主昵称 | | -| face | str | UP 主头像 url | | -| official | obj | UP 主认证信息 | | -| followed | bool | 是否关注 | 需要登录(Cookie 或 APP)
`true`已关注
`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`已追剧/番
`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' -``` - -
-查看响应示例: - - -```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 - } -} -``` - -
diff --git a/danmaku/config.md b/danmaku/config.md deleted file mode 100644 index 06b9c6b..0000000 --- a/danmaku/config.md +++ /dev/null @@ -1,75 +0,0 @@ -# 弹幕个人配置修改 - -- [修改弹幕个人配置(web端)](#修改弹幕个人配置web端) - ---- - -## 修改弹幕个人配置(web端) - -> https://api.bilibili.com/x/v2/dm/web/config - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ------ | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| dm_switch | bool | 弹幕开关 | 非必要 | true:开启
false:关闭 | -| blockscroll | bool | 屏蔽类型-滚动 | 非必要 | true:不屏蔽
false:屏蔽 | -| blocktop | bool | 屏蔽类型-顶部 | 非必要 | 同上 | -| blockbottom | bool | 屏蔽类型-底部 | 非必要 | 同上 | -| blockcolor | bool | 屏蔽类型-彩色 | 非必要 | 同上 | -| blockspecial | bool | 屏蔽类型-特殊 | 非必要 | 同上 | -| ai_switch | bool | 是否打开智能云屏蔽 | 非必要 | true:开启
false:关闭 | -| ai_level | num | 智能云屏蔽等级 | 非必要 | 区间:[0-10]
0为默认等级(3级) | -| preventshade | bool | 防挡弹幕(底部15%) | 非必要 | true:开启
false:关闭 | -| dmask | bool | 智能防挡弹幕(人像蒙版) | 非必要 | 同上 | -| opacity | num | 弹幕不透明度 | 非必要 | 区间:[0-1] | -| dmarea | num | 弹幕显示区域 | 非必要 | 100:不重叠
75:3/4屏
50:半瓶
25:1/4屏
0:不限 | -| speedplus | num | 弹幕速度 | 非必要 | 区间:[0.4-1.6] | -| fontsize | num | 字体大小 | 非必要 | 区间:[0.4-1.6] | -| screensync | bool | 跟随屏幕缩放比例 | 非必要 | true:开启
false:关闭 | -| speedsync | bool | 根据播放倍速调整速度 | 非必要 | 同上 | -| fontfamily | str | 字体类型 | 非必要 | 未启用 | -| bold | bool | 粗体 | 非必要 | 未启用 | -| fontborder | num | 描边类型 | 非必要 | 0:重墨
1:描边
2:45°投影 | -| drawType | string | 渲染类型 | 非必要 | 未启用 | -| ts | num | 当前时间戳 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
\ No newline at end of file diff --git a/danmaku/danmaku_proto.md b/danmaku/danmaku_proto.md deleted file mode 100644 index bb11abd..0000000 --- a/danmaku/danmaku_proto.md +++ /dev/null @@ -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:普通弹幕
4:底部弹幕
5:顶部弹幕
6:逆向弹幕
7:高级弹幕
8:代码弹幕
9:BAS弹幕(仅限于特殊弹幕专包) | -| fontsize | int32 | 弹幕字号 | 18:小
25:标准
36:大 | -| color | uint32 | 弹幕颜色 | 十进制RGB888值 | -| midHash | string | 发送者mid的HASH | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id | -| content | string | 弹幕内容 | utf-8编码 | -| ctime | int64 | 弹幕发送时间 | 时间戳 | -| weight | int32 | 权重 | 用于智能屏蔽,根据弹幕语义及长度通过AI识别得出
范围:[0-10]
值越大权重越高 | -| action | string | 动作? | 作用尚不明确 | -| pool | int32 | 弹幕池 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕) | -| idStr | string | 弹幕dmid | 字串形式
唯一 可用于操作参数 | - -**示例:** - -获取视频`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 -``` - diff --git a/danmaku/danmaku_view_proto.md b/danmaku/danmaku_view_proto.md deleted file mode 100644 index ebc6601..0000000 --- a/danmaku/danmaku_view_proto.md +++ /dev/null @@ -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* - -认证方式:仅可Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ----------- | -| type | num | 弹幕类 | 必要 | 1:视频弹幕 | -| oid | num | 视频cid | 必要 | | -| pid | num | 稿件avid | 非必要 | | - -**proto回复:** - -消息`DmWebViewReply`: - -| 名称 | 类型 | 含义 | 备注 | -| ---------- | -------------------- | ---------------------- | ---------------------------- | -| state | int32 | 弹幕开放状态 | 0:开放弹幕
1:禁止弹幕 | -| text | string | ? | | -| textSide | string | ? | | -| dmSge | DmSegConfig | 分段弹幕包信息? | | -| flag | DanmakuFlagConfig | ? | | -| specialDms | repeated string | BAS(代码)弹幕专包url | | -| checkBox | bool | ? | | -| count | int64 | 实际弹幕总数 | 具有1500-6000不等的上限 | -| commandDms | repeated CommandDm | 互动弹幕条目 | | -| dmSetting | DanmuWebPlayerConfig | 弹幕个人配置 | 仅登录后存在 | - -消息`dmSge`: - -| 名称 | 类型 | 含义 | 备注 | -| -------- | ----- | ------------ | ---------- | -| pageSize | int64 | 分段时间? | 单位为毫秒 | -| total | int64 | 最大分页数? | | - -消息`flag`: - -| 名称 | 类型 | 含义 | 备注 | -| --------- | ------ | ---- | ---- | -| recFlag | int32 | ? | | -| recText | string | ? | | -| recSwitch | int32 | ? | | - -消息`commandDms`: - -| 名称 | 类型 | 含义 | 备注 | -| -------- | ------ | ------------ | ------------------------------------------------------------ | -| id | int64 | 弹幕dmid | | -| oid | int64 | 视频cid | | -| mid | int64 | 发送者mid | | -| command | string | 弹幕指令 | `#UP#`:UP主头像弹幕
`#LINK#`:关联视频弹幕
`#ATTENTION#`:视频内嵌引导关注按钮 | -| content | string | 弹幕文字 | | -| progress | int32 | 弹幕出现时间 | 单位为毫秒 | -| ctime | string | 创建时间? | 此项为空 | -| mtime | string | 修改时间? | 此项为空 | -| extra | string | 弹幕负载数据 | json序列字串 | -| idStr | string | 弹幕dmid | 字串形式 | - -`extra`json序列: - -类型为【UP主头像弹幕】时: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| icon | str | UP主头像url | | - -类型为【关联视频弹幕】时: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------------- | ---- | -| aid | num | 关联视频的avid | | -| title | str | 关联视频的标题 | | -| icon | str | 关联视频按钮图片url | | -| bvid | str | 关联视频的bvid | | - -类型为【视频内嵌引导关注按钮】时: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------ | ------------------------------------------ | -| duration | num | 持续时间 | 单位为毫秒 | -| posX | num | X坐标 | 区间:[118-549] | -| posY | num | Y坐标 | 区间:[82-293] | -| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 | -| type | num | 关注按钮类型 | 0:仅关注
1:仅三联
2:关注+三联 | - -消息`dmSetting`: - -| 名称 | 类型 | 含义 | 备注 | -| ------------ | ------ | ------------------------ | ------------------------------------------------------------ | -| dmSwitch | bool | 弹幕开关 | true:开启
false:关闭 | -| aiSwitch | bool | 智能云屏蔽 | 同上 | -| aiLevel | int32 | 智能云屏蔽级别 | 区间:[1-10] | -| blocktop | bool | 屏蔽类型-顶部 | true:不屏蔽
false:屏蔽 | -| blockscroll | bool | 屏蔽类型-滚动 | 同上 | -| blockbottom | bool | 屏蔽类型-底部 | 同上 | -| blockcolor | bool | 屏蔽类型-彩色 | 同上 | -| blockspecial | bool | 屏蔽类型-特殊 | 同上 | -| preventshade | bool | 防挡弹幕(底部15%) | true:开启
false:关闭 | -| dmask | bool | 智能防挡弹幕(人像蒙版) | 同上 | -| opacity | float | 弹幕不透明度 | 区间:[0-1] | -| dmarea | int32 | 弹幕显示区域 | 100:不重叠
75:3/4屏
50:半瓶
25:1/4屏
0:不限 | -| speedplus | float | 弹幕速度 | 区间:[0.4-1.6] | -| fontsize | float | 字体大小 | 区间:[0.4-1.6] | -| screensync | bool | 跟随屏幕缩放比例 | | -| speedsync | bool | 根据播放倍速调整速度 | | -| fontfamily | string | 字体类型? | 未启用 | -| bold | bool | 粗体? | 未启用 | -| fontborder | int32 | 描边类型 | 0:重墨
1:描边
2:45°投影 | -| drawType | string | 渲染类型? | 未启用 | - -protobuf结构体: - -**web_dmview.proto** - -```protobuf -syntax = "proto3"; - -//分段弹幕包信息? -message DmSegConfig { - int64 pageSize = 1; //分段时间? - int64 total = 2; //最大分页数? -} - -// -message DanmakuFlagConfig { - int32 recFlag = 1; // - string recText = 2; // - int32 recSwitch = 3; // -} - -// 互动弹幕条目 -message CommandDm { - int64 id = 1; //弹幕dmid - int64 oid = 2; //视频cid - int64 mid = 3; //发送者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数据 diff --git a/danmaku/danmaku_xml.md b/danmaku/danmaku_xml.md deleted file mode 100644 index bf568c9..0000000 --- a/danmaku/danmaku_xml.md +++ /dev/null @@ -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回复:** - -
-查看响应示例: - -```xml - - - chat.bilibili.com - 144541892 - 0 - 1500 - 0 - 0 - e-r - 从结尾回来看这里,更感动了! - 咦三体居然还有动画 - 哈哈哈哈开心 - 红岸么 - 我就是想看我的世界里水滴长啥样 - 有手指? - 侦测到在途的聚变打击 - 都是虫子 - ocean - 村民,哼~ - 黄河之水天上来 - 镇站之宝 - 这水 - 海的那边是什么 - 折跃门准备完毕 - ………… - -``` - -
- -## 弹幕格式 - -### xml格式结构 - -- 标签 i - - - 标签 chatserver:chat.bilibili.com - - 标签 chatid:视频cid - - 标签 mission:0 - - 标签 maxlimit:实时弹幕池最大容量 - - 标签 state:弹幕状态(0:正常 1:弹幕已关闭) - - 标签 real_name:0 - - 标签 source:e-r - - - 标签 d (带有属性 p):弹幕内容 - -### 属性 p - -字符串内每项用逗号`,`分隔 - -| 项 | 含义 | 类型 | 备注 | -| ---- | ------------------ | ------ | ------------------------------------------------------------ | -| 0 | 视频内弹幕出现时间 | float | 秒 | -| 1 | 弹幕类型 | int32 | 1 2 3:普通弹幕
4:底部弹幕
5:顶部弹幕
6:逆向弹幕
7:高级弹幕
8:代码弹幕
9:BAS弹幕(`pool`必须为2) | -| 2 | 弹幕字号 | int32 | 18:小
25:标准
36:大 | -| 3 | 弹幕颜色 | int32 | 十进制RGB888值 | -| 4 | 弹幕发送时间 | int32 | 时间戳 | -| 5 | 弹幕池类型 | int32 | 0:普通池
1:字幕池
2:特殊池(代码/BAS弹幕) | -| 6 | 发送者mid的HASH | string | 用于屏蔽用户和查看用户发送的所有弹幕 也可反查用户id | -| 7 | 弹幕dmid | int64 | 唯一 可用于操作参数 | -| 8 | 弹幕的屏蔽等级 | int32 | 0-10,低于用户设定等级的弹幕将被屏蔽
(新增,下方样例未包含) | - -```xml -从结尾回来看这里,更感动了! -``` - -弹幕内容为:“从结尾回来看这里,更感动了!” - -参数为:视频内出现的时间是490.19100秒,类型是普通弹幕,字号为标准,颜色为白色(#FFFFFF),发送时间是2020/3/15 18:41:32......... - -### web版标准颜色 - -弹幕的颜色属性使用**十进制RGB888**值 - -| 颜色 | HEX(RGB888) | DEC(RGB888) | -| --------------------------------- | ----------------------------------- | ------------------------------------- | -| 红色 | FE0302 | 16646914‬ | -| 橘红 | FF7204 | 16740868 | -| 橘黄 | FFAA02 | 16755202 | -| 淡黄 | FFD302 | 16765698 | -| 黄色 | FFFF00 | 16776960 | -| 草绿 | A0EE00 | 10546688 | -| 绿色 | 00CD00 | 52480 | -| 墨绿 | 019899 | 104601 | -| 紫色 | 4266BE | 4351678 | -| 青色 | 89D5FF | 9022215 | -| 品红 | CC0273 | 13369971 | -| 黑色 | 222222 | 2236962 | -| 灰色 | 9B9B9B | 10197915 | -| 白色 | FFFFFF | 16777215 | diff --git a/danmaku/history.md b/danmaku/history.md deleted file mode 100644 index 9bb322d..0000000 --- a/danmaku/history.md +++ /dev/null @@ -1,246 +0,0 @@ -# 历史弹幕 - -**注:历史弹幕的xml接口已经失效,现已改为protobuf接口** - -- [查询历史弹幕日期](#查询历史弹幕日期) -- [获取历史弹幕protobuf接口](#获取历史弹幕protobuf接口) -- [~~获取历史弹幕xml接口~~](#获取历史弹幕xml接口) - ---- - -## 查询历史弹幕日期 - -> https://api.bilibili.com/x/v2/dm/history/index - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**注:查询历史弹幕需要登录** - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | ------- | -| type | num | 1 | 必要 | | -| oid | num | 视频cid | 必要 | | -| month | str | 查询目标年月 | 必要 | YYYY-MM | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------------------------------- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有弹幕:array
无弹幕: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' -``` - -
-查看响应示例: - -```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" - ] -} -``` - -
- -返回结果的 `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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": null -} -``` - -
- -## 获取历史弹幕protobuf接口 - -> https://api.bilibili.com/x/v2/dm/web/history/seg.so - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**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接口 - -
-查看折叠内容: - -> https://api.bilibili.com/x/v2/dm/history - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**注:查询历史弹幕需要登录** - -结果为[标准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' -``` - -
-查看响应示例: - -```xml - - - chat.bilibili.com - 144541892 - 0 - 1500 - 0 - 0 - 敬礼 - 悄默声的更新啊怎么 - 久等了 - 不都是乱纪元才浸泡 - 已阅,狗屁不通。大字报在地上搞搞就行,别弄到天上去 - CSSC。。。 - 看到了个寂寞 - 有耳朵了! - 雪天不用浸泡吧 - 未来史学派 - 浸泡!!!!!!! - 章召忠 - mi24av - 泪奔 - 组建太空军 - 是未来史学派? - 刘培强还行 - ………… - -``` - -
- -
\ No newline at end of file diff --git a/danmaku/snapshot.md b/danmaku/snapshot.md deleted file mode 100644 index 7fad064..0000000 --- a/danmaku/snapshot.md +++ /dev/null @@ -1,92 +0,0 @@ -# 弹幕快照 - -- [获取弹幕快照](#获取弹幕快照) - ---- - -## 获取弹幕快照 - -> https://api.bilibili.com/x/v2/dm/ajax - -*请求方式:GET* - -最近产生的几条弹幕内容,**最多20条** - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | -------- | ------------------ | ------ | ---- | -| aid | num或str | 稿件avid或稿件bvid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | --------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - "漫画比动漫好看而且血腥", - "666", - "金木小天使", - "太喜欢了", - "每天一遍防止抑郁", - "我还记得土豆那时候还有的看", - "把在给我摸摸~", - "突然泪目", - "感谢野生字幕君", - "993-7", - "刚刚出的时候小学看,现在高二了", - "原版op有这么长吗?搞笑,肯定做了剪辑,op会给你放全歌?", - "让你看个op 3 : 5 4 秒?", - "说原版不原版的都是弱智", - "樱花", - "请打开洗脑循环食用,请打开洗脑循环食用,请打开洗脑循环食用,请打开洗脑循环食用,请打开洗脑循环食用,", - "再来亿遍", - "错的不是我,而是这个世界。", - "吃货的第一季的最后一季足以让他封神!", - "+" - ] -} -``` - -
diff --git a/dynamic/action.md b/dynamic/action.md deleted file mode 100644 index 9f45494..0000000 --- a/dynamic/action.md +++ /dev/null @@ -1,109 +0,0 @@ - - -# 动态操作 - -- [删除动态](#删除动态) -- [删除定时发送动态](#删除草稿) - -## 删除动态 - -> https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/rm_dynamic - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数(multipart/form-data):** - -| 参数名 | 类型 | 内容 | -| ---------- | ---- | ------ | -| dynamic_id | num | 动态id | -| csrf_token | str | csrf | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | -| ------- | ---- | ----------------- | -| code | num | 0:成功 | -| | | 500404:已经删除过 | -| | | 500406:不是自己的 | -| msg | str | 错误信息 | -| message | str | 和msg一样 | -| data | obj | 未知 | - -
-查看示例 - - -```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 - } -} -``` - -
- -## 删除草稿 - -> https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/rm_draft - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数(application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | -| ---------- | ---- | -------------- | -| draft_id | num | 定时发送草稿id | -| csrf_token | str | csrf | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | -| ------- | ---- | ---------------------------- | -| code | num | 0:成功
4120015: 系统异常 | -| message | str | 错误信息 | -| ttl | num | 1 | -| data | obj | 空对象 | - -
-查看示例 - - -```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": {} -} -``` - -
- diff --git a/dynamic/atlist.md b/dynamic/atlist.md deleted file mode 100644 index 09a0adf..0000000 --- a/dynamic/atlist.md +++ /dev/null @@ -1,146 +0,0 @@ -# 根据关键字搜索用户(at别人时的填充列表) - -**注意关键字不一定顺序匹配,如最后示例** - -> https://api.vc.bilibili.com/dynamic_mix/v1/dynamic_mix/at_search - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**正文参数(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:我的关注
4:其他 | -| group_name | str | 分组名字 | -| items | obj[] | 用户信息 | - -item对象: - -| 字段 | 类型 | 内容 | -| --- | --- | --- | -| uid | num | 用户id | -| uname | str | 用户昵称 | -| face | str | 用户头像url | -| fans | num | 用户粉丝数 | -| official_verify_type | num | 认证信息? | - -
-查看示例 - -```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 - } -} -``` - -
\ No newline at end of file diff --git a/dynamic/basicInfo.md b/dynamic/basicInfo.md deleted file mode 100644 index ce7ef7c..0000000 --- a/dynamic/basicInfo.md +++ /dev/null @@ -1,1595 +0,0 @@ - - -# 动态基本信息 -- 单条动态基本信息 - - [动态转发列表](#动态转发列表) - - [动态评论列表](../comment/list.md) - - [动态点赞列表](#动态点赞列表) -- [获取草稿箱(定时发送)列表](#获取草稿列表) - -## 动态转发列表 - -> https://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/repost_detail - -请求方式:GET - -==Attention: 转发列表总计超过550部分继续获取可能被限制。== - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| :--------: | :--: | :----: | :----: | :--: | -| dynamic_id | id | 动态id | 必要 | | -| offset | - | - | 非必要 | | - -**json回复:** - -根对象: - - - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 默认为空 | -| msg | num | 空 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------------- | ------------ | -| has_more | bool | 是否还有下一页 | 每页最多20条 | -| total | int | 总计包含 | 不超过20条 | -| _gt_ | num | 0 | 作用尚不明确 | - -`data`中的`items`对象: - -由于参数过多,这里不一一列举,请自行参阅其他文件理解。 - -**示例:** - -获取`哔哩哔哩弹幕网`的动态id为`669016644742283288`动态 - -```shell -curl -G 'https://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/repost_detail' \ ---data-urlencode 'dynamic_id=669016644742283288' -``` - -
-查看响应示例 - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "has_more": 0, - "total": 3, - "items": [ - { - "desc": { - "uid": 478909651, - "type": 1, - "rid": 669023160171702063, - "acl": 0, - "view": 0, - "repost": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 669023160201379864, - "timestamp": 1654607493, - "pre_dy_id": 669016644742283288, - "orig_dy_id": 669007814298959974, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 478909651, - "uname": "-牛马之玉", - "face": "http://i0.hdslb.com/bfs/face/member/noface.jpg", - "face_nft": 0 - }, - "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": 2 - } - }, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669023160201379864", - "pre_dy_id_str": "669016644742283288", - "orig_dy_id_str": "669007814298959974", - "rid_str": "669023160171702063", - "origin": { - "uid": 392836434, - "type": 2, - "rid": 196658860, - "acl": 1024, - "view": 46111, - "repost": 1446, - "like": 0, - "dynamic_id": 669007814298959974, - "timestamp": 1654603920, - "pre_dy_id": 0, - "orig_dy_id": 0, - "uid_type": 1, - "stype": 0, - "r_type": 0, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669007814298959974", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "196658860" - }, - "previous": { - "uid": 9617619, - "type": 1, - "rid": 669016644698939384, - "acl": 1024, - "view": 1381, - "repost": 3, - "like": 0, - "dynamic_id": 669016644742283288, - "timestamp": 1654605976, - "pre_dy_id": 669007814298959974, - "orig_dy_id": 669007814298959974, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669016644742283288", - "pre_dy_id_str": "669007814298959974", - "orig_dy_id_str": "669007814298959974", - "rid_str": "669016644698939384" - } - }, - "card": "{ \"user\": { \"uid\": 478909651, \"uname\": \"-牛马之玉\", \"face\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/face\\/member\\/noface.jpg\" }, \"item\": { \"rp_id\": 669023160171702063, \"uid\": 478909651, \"content\": \"\\/\\/@哔哩哔哩直播:6月8日KPL首届夏季赛火热开赛,明星主播花式解说!开赛首日直播间礼品...\", \"ctrl\": \"[{\\\"location\\\":2,\\\"length\\\":7,\\\"data\\\":\\\"9617619\\\",\\\"type\\\":1}]\", \"orig_dy_id\": 669007814298959974, \"pre_dy_id\": 669016644742283288, \"timestamp\": 0, \"at_uids\": [ 9617619 ], \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":4,\\\\\\\"data\\\\\\\":\\\\\\\"4\\\\\\\",\\\\\\\"type\\\\\\\":2}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"互动抽奖 【上B站,看KPL】\\\\r\\\\nKPL首届夏季赛即将来袭,6月8日15:00B站55官方直播间等你来看!你最期待哪场对决呢?更有多位明星主播陪你观赛,趣味吐槽花式解说开赛首日~\\\\r\\\\n\\\\r\\\\n55直播间马超-无双飞将皮肤助力金撒不停,赛事全程天选好礼每局掉落,观赛还能领取游戏内道具!APP端参与直播间【热议】讨论,更有机会获超多奖励。\\\\r\\\\n\\\\r\\\\nKPL赛事征稿开赛日同步上线,带#KPL激励计划#话题投稿,瓜分30万奖金~\\\\r\\\\n战火将燃,谁将勇夺开门红,让我们拭目以待! [打call]\\\\n\\\\n直播间TP:https:\\\\\\/\\\\\\/live.bilibili.com\\\\\\/55 \\\\n赛事预测:https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/v\\\\\\/game\\\\\\/match\\\\\\/competition?spm_id_from=444.42.0.0 \\\\n更多比赛:https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/v\\\\\\/game\\\\\\/match\\\\\\/schedule?mid=0&gid=0&tid=0&time=1639785600000&spm_id_from=444.42.0.0\\\",\\\"id\\\":196658860,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":6758,\\\"img_size\\\":4693.3251953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/d4fd33fe00c80938daf6f14641f15901bc4a0d17.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080}],\\\"pictures_count\\\":1,\\\"reply\\\":128,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1654603920},\\\"user\\\":{\\\"head_url\\\":\\\"http:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/50de7906e50260c0e596d54ca51687e58ed7a9ba.jpg\\\",\\\"name\\\":\\\"哔哩哔哩王者荣耀赛事\\\",\\\"uid\\\":392836434,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1661097600000,\\\"label\\\":{\\\"label_theme\\\":\\\"annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"年度大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":96074}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"4\\\",\\\"length\\\":4,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"verify\\\":{\\\"aegis_enable\\\":true,\\\"asw\\\":{},\\\"cc\\\":{},\\\"csw\\\":{},\\\"dc\\\":{},\\\"gc\\\":{},\\\"ra\\\":{},\\\"sp\\\":{},\\\"sw\\\":{},\\\"ur\\\":{},\\\"verify_first\\\":true}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":96074},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 392836434, \"uname\": \"哔哩哔哩王者荣耀赛事\", \"face\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/face\\/50de7906e50260c0e596d54ca51687e58ed7a9ba.jpg\", \"face_nft\": 0 }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩王者荣耀赛事官方帐号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1661097600000, \"vipStatus\": 1, \"themeType\": 0, \"label\": { \"path\": \"\", \"text\": \"年度大会员\", \"label_theme\": \"annual_vip\", \"text_color\": \"#FFFFFF\", \"bg_style\": 1, \"bg_color\": \"#FB7299\", \"border_color\": \"\" }, \"avatar_subscript\": 1, \"nickname_color\": \"#FB7299\", \"role\": 3, \"avatar_subscript_url\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/vip\\/icon_Certification_big_member_22_3x.png\" }, \"pendant\": { \"pid\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"哔哩哔哩王者荣耀赛事官方账号\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"\":{\"at_mids\":[{\"at_type\":2,\"mid_list\":[9617619]}],\"content\":\"\\/\\/@哔哩哔哩直播:6月8日KPL首届夏季赛火热开赛,明星主播花式解说!开赛首日直播间礼品...\",\"data_type\":2,\"need_send_msg\":true,\"publisher\":478909651},\"ctrl\":[{\"data\":\"9617619\",\"length\":7,\"location\":2,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.fast_repost\",\"verify\":{\"aegis_enable\":true,\"asw\":{},\"cc\":{},\"csw\":{},\"dc\":{},\"gc\":{},\"ra\":{},\"sp\":{},\"sw\":{},\"ur\":{}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"}}", - "display": { - "origin": { - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "http://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1648834168 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - } - } - }, - { - "desc": { - "uid": 37906788, - "type": 1, - "rid": 669022472968542526, - "acl": 0, - "view": 0, - "repost": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 669022473022341136, - "timestamp": 1654607333, - "pre_dy_id": 669016644742283288, - "orig_dy_id": 669007814298959974, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 37906788, - "uname": "整天就想吃桃子", - "face": "http://i0.hdslb.com/bfs/face/388f29bb0e426d625378b99eec690775467ebb00.jpg", - "face_nft": 0 - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1712073600000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669022473022341136", - "pre_dy_id_str": "669016644742283288", - "orig_dy_id_str": "669007814298959974", - "rid_str": "669022472968542526", - "origin": { - "uid": 392836434, - "type": 2, - "rid": 196658860, - "acl": 1024, - "view": 46111, - "repost": 1446, - "like": 0, - "dynamic_id": 669007814298959974, - "timestamp": 1654603920, - "pre_dy_id": 0, - "orig_dy_id": 0, - "uid_type": 1, - "stype": 0, - "r_type": 0, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669007814298959974", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "196658860" - }, - "previous": { - "uid": 9617619, - "type": 1, - "rid": 669016644698939384, - "acl": 1024, - "view": 1381, - "repost": 3, - "like": 0, - "dynamic_id": 669016644742283288, - "timestamp": 1654605976, - "pre_dy_id": 669007814298959974, - "orig_dy_id": 669007814298959974, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669016644742283288", - "pre_dy_id_str": "669007814298959974", - "orig_dy_id_str": "669007814298959974", - "rid_str": "669016644698939384" - } - }, - "card": "{ \"user\": { \"uid\": 37906788, \"uname\": \"整天就想吃桃子\", \"face\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/face\\/388f29bb0e426d625378b99eec690775467ebb00.jpg\" }, \"item\": { \"rp_id\": 669022472968542526, \"uid\": 37906788, \"content\": \"\\/\\/@哔哩哔哩直播:6月8日KPL首届夏季赛火热开赛,明星主播花式解说!开赛首日直播间礼品不定时掉...\", \"ctrl\": \"[{\\\"location\\\":2,\\\"length\\\":7,\\\"data\\\":\\\"9617619\\\",\\\"type\\\":1}]\", \"orig_dy_id\": 669007814298959974, \"pre_dy_id\": 669016644742283288, \"timestamp\": 0, \"at_uids\": [ 9617619 ], \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":4,\\\\\\\"data\\\\\\\":\\\\\\\"4\\\\\\\",\\\\\\\"type\\\\\\\":2}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"互动抽奖 【上B站,看KPL】\\\\r\\\\nKPL首届夏季赛即将来袭,6月8日15:00B站55官方直播间等你来看!你最期待哪场对决呢?更有多位明星主播陪你观赛,趣味吐槽花式解说开赛首日~\\\\r\\\\n\\\\r\\\\n55直播间马超-无双飞将皮肤助力金撒不停,赛事全程天选好礼每局掉落,观赛还能领取游戏内道具!APP端参与直播间【热议】讨论,更有机会获超多奖励。\\\\r\\\\n\\\\r\\\\nKPL赛事征稿开赛日同步上线,带#KPL激励计划#话题投稿,瓜分30万奖金~\\\\r\\\\n战火将燃,谁将勇夺开门红,让我们拭目以待! [打call]\\\\n\\\\n直播间TP:https:\\\\\\/\\\\\\/live.bilibili.com\\\\\\/55 \\\\n赛事预测:https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/v\\\\\\/game\\\\\\/match\\\\\\/competition?spm_id_from=444.42.0.0 \\\\n更多比赛:https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/v\\\\\\/game\\\\\\/match\\\\\\/schedule?mid=0&gid=0&tid=0&time=1639785600000&spm_id_from=444.42.0.0\\\",\\\"id\\\":196658860,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":6758,\\\"img_size\\\":4693.3251953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/d4fd33fe00c80938daf6f14641f15901bc4a0d17.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080}],\\\"pictures_count\\\":1,\\\"reply\\\":128,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1654603920},\\\"user\\\":{\\\"head_url\\\":\\\"http:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/50de7906e50260c0e596d54ca51687e58ed7a9ba.jpg\\\",\\\"name\\\":\\\"哔哩哔哩王者荣耀赛事\\\",\\\"uid\\\":392836434,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1661097600000,\\\"label\\\":{\\\"label_theme\\\":\\\"annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"年度大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":96074}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"4\\\",\\\"length\\\":4,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"verify\\\":{\\\"aegis_enable\\\":true,\\\"asw\\\":{},\\\"cc\\\":{},\\\"csw\\\":{},\\\"dc\\\":{},\\\"gc\\\":{},\\\"ra\\\":{},\\\"sp\\\":{},\\\"sw\\\":{},\\\"ur\\\":{},\\\"verify_first\\\":true}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":96074},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 392836434, \"uname\": \"哔哩哔哩王者荣耀赛事\", \"face\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/face\\/50de7906e50260c0e596d54ca51687e58ed7a9ba.jpg\", \"face_nft\": 0 }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩王者荣耀赛事官方帐号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1661097600000, \"vipStatus\": 1, \"themeType\": 0, \"label\": { \"path\": \"\", \"text\": \"年度大会员\", \"label_theme\": \"annual_vip\", \"text_color\": \"#FFFFFF\", \"bg_style\": 1, \"bg_color\": \"#FB7299\", \"border_color\": \"\" }, \"avatar_subscript\": 1, \"nickname_color\": \"#FB7299\", \"role\": 3, \"avatar_subscript_url\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/vip\\/icon_Certification_big_member_22_3x.png\" }, \"pendant\": { \"pid\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"哔哩哔哩王者荣耀赛事官方账号\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"\":{\"at_mids\":[{\"at_type\":2,\"mid_list\":[9617619]}],\"content\":\"\\/\\/@哔哩哔哩直播:6月8日KPL首届夏季赛火热开赛,明星主播花式解说!开赛首日直播间礼品不定时掉...\",\"data_type\":2,\"need_send_msg\":true,\"publisher\":37906788},\"ctrl\":[{\"data\":\"9617619\",\"length\":7,\"location\":2,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.fast_repost\",\"verify\":{\"aegis_enable\":true,\"asw\":{},\"cc\":{},\"csw\":{},\"dc\":{},\"gc\":{},\"ra\":{},\"sp\":{},\"sw\":{},\"ur\":{}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"}}", - "display": { - "origin": { - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "http://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1648834168 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - } - } - }, - { - "desc": { - "uid": 586724890, - "type": 1, - "rid": 669019754258423810, - "acl": 0, - "view": 0, - "repost": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 669019754292314181, - "timestamp": 1654606700, - "pre_dy_id": 669016644742283288, - "orig_dy_id": 669007814298959974, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 586724890, - "uname": "雪羽枭白", - "face": "http://i1.hdslb.com/bfs/face/a270f0df9a621d6d7f05a0ff94c64bad5fcb6964.jpg", - "face_nft": 0 - }, - "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": 4 - } - }, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669019754292314181", - "pre_dy_id_str": "669016644742283288", - "orig_dy_id_str": "669007814298959974", - "rid_str": "669019754258423810", - "origin": { - "uid": 392836434, - "type": 2, - "rid": 196658860, - "acl": 1024, - "view": 46111, - "repost": 1446, - "like": 0, - "dynamic_id": 669007814298959974, - "timestamp": 1654603920, - "pre_dy_id": 0, - "orig_dy_id": 0, - "uid_type": 1, - "stype": 0, - "r_type": 0, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669007814298959974", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "196658860" - }, - "previous": { - "uid": 9617619, - "type": 1, - "rid": 669016644698939384, - "acl": 1024, - "view": 1381, - "repost": 3, - "like": 0, - "dynamic_id": 669016644742283288, - "timestamp": 1654605976, - "pre_dy_id": 669007814298959974, - "orig_dy_id": 669007814298959974, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "669016644742283288", - "pre_dy_id_str": "669007814298959974", - "orig_dy_id_str": "669007814298959974", - "rid_str": "669016644698939384" - } - }, - "card": "{ \"user\": { \"uid\": 586724890, \"uname\": \"雪羽枭白\", \"face\": \"http:\\/\\/i1.hdslb.com\\/bfs\\/face\\/a270f0df9a621d6d7f05a0ff94c64bad5fcb6964.jpg\" }, \"item\": { \"rp_id\": 669019754258423810, \"uid\": 586724890, \"content\": \"\\/\\/@哔哩哔哩直播:6月8日KPL首届夏季赛火热开赛,明星主播花式解说!开赛首日直播间礼品不定时掉落,记得好好蹲守哦~明天15点,2022KPL夏季赛我们不见不散>>>网页链接\", \"ctrl\": \"[{\\\"location\\\":2,\\\"length\\\":7,\\\"data\\\":\\\"9617619\\\",\\\"type\\\":1}]\", \"orig_dy_id\": 669007814298959974, \"pre_dy_id\": 669016644742283288, \"timestamp\": 0, \"at_uids\": [ 9617619 ], \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":4,\\\\\\\"data\\\\\\\":\\\\\\\"4\\\\\\\",\\\\\\\"type\\\\\\\":2}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"互动抽奖 【上B站,看KPL】\\\\r\\\\nKPL首届夏季赛即将来袭,6月8日15:00B站55官方直播间等你来看!你最期待哪场对决呢?更有多位明星主播陪你观赛,趣味吐槽花式解说开赛首日~\\\\r\\\\n\\\\r\\\\n55直播间马超-无双飞将皮肤助力金撒不停,赛事全程天选好礼每局掉落,观赛还能领取游戏内道具!APP端参与直播间【热议】讨论,更有机会获超多奖励。\\\\r\\\\n\\\\r\\\\nKPL赛事征稿开赛日同步上线,带#KPL激励计划#话题投稿,瓜分30万奖金~\\\\r\\\\n战火将燃,谁将勇夺开门红,让我们拭目以待! [打call]\\\\n\\\\n直播间TP:https:\\\\\\/\\\\\\/live.bilibili.com\\\\\\/55 \\\\n赛事预测:https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/v\\\\\\/game\\\\\\/match\\\\\\/competition?spm_id_from=444.42.0.0 \\\\n更多比赛:https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/v\\\\\\/game\\\\\\/match\\\\\\/schedule?mid=0&gid=0&tid=0&time=1639785600000&spm_id_from=444.42.0.0\\\",\\\"id\\\":196658860,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":6758,\\\"img_size\\\":4693.3251953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/d4fd33fe00c80938daf6f14641f15901bc4a0d17.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080}],\\\"pictures_count\\\":1,\\\"reply\\\":128,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1654603920},\\\"user\\\":{\\\"head_url\\\":\\\"http:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/50de7906e50260c0e596d54ca51687e58ed7a9ba.jpg\\\",\\\"name\\\":\\\"哔哩哔哩王者荣耀赛事\\\",\\\"uid\\\":392836434,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1661097600000,\\\"label\\\":{\\\"label_theme\\\":\\\"annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"年度大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":96074}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"4\\\",\\\"length\\\":4,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"verify\\\":{\\\"aegis_enable\\\":true,\\\"asw\\\":{},\\\"cc\\\":{},\\\"csw\\\":{},\\\"dc\\\":{},\\\"gc\\\":{},\\\"ra\\\":{},\\\"sp\\\":{},\\\"sw\\\":{},\\\"ur\\\":{},\\\"verify_first\\\":true}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":96074},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 392836434, \"uname\": \"哔哩哔哩王者荣耀赛事\", \"face\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/face\\/50de7906e50260c0e596d54ca51687e58ed7a9ba.jpg\", \"face_nft\": 0 }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩王者荣耀赛事官方帐号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1661097600000, \"vipStatus\": 1, \"themeType\": 0, \"label\": { \"path\": \"\", \"text\": \"年度大会员\", \"label_theme\": \"annual_vip\", \"text_color\": \"#FFFFFF\", \"bg_style\": 1, \"bg_color\": \"#FB7299\", \"border_color\": \"\" }, \"avatar_subscript\": 1, \"nickname_color\": \"#FB7299\", \"role\": 3, \"avatar_subscript_url\": \"http:\\/\\/i0.hdslb.com\\/bfs\\/vip\\/icon_Certification_big_member_22_3x.png\" }, \"pendant\": { \"pid\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"哔哩哔哩王者荣耀赛事官方账号\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"\":{\"at_mids\":[{\"at_type\":2,\"mid_list\":[9617619]}],\"content\":\"\\/\\/@哔哩哔哩直播:6月8日KPL首届夏季赛火热开赛,明星主播花式解说!开赛首日直播间礼品不定时掉落,记得好好蹲守哦~明天15点,2022KPL夏季赛我们不见不散>>>网页链接\",\"data_type\":2,\"need_send_msg\":true,\"publisher\":586724890},\"ctrl\":[{\"data\":\"9617619\",\"length\":7,\"location\":2,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.dynamic.web\",\"verify\":{\"aegis_enable\":true,\"asw\":{},\"cc\":{},\"csw\":{},\"dc\":{},\"gc\":{},\"ra\":{},\"sp\":{},\"sw\":{},\"ur\":{}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"}}", - "display": { - "origin": { - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "http://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1648834168 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - } - } - } - ], - "_gt_": 0 - } -} -``` -
- - -## 动态点赞列表 - -> https://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/spec_item_likes - -请求方式:GET - -==Attention: 点赞列表总计超过25K部分继续获取可能被限制。== - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------ | ------- | ---- | -|dynamic_id|int64 | 动态id | 必须 | | -|pn|int64 | 页码 | 非必须 | | -|ps|int64 | 每页数量 | 非必须 |该值不得大于20 | - -**json回复:** -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 默认为空 | -| msg | num | 空 | | - -`data`对象: - -| 字段 | 类型 | 用途 | 备注 | -| -------- | ---- | -------------- | ------------ | -|item_likes|list |点赞信息列表主体 | | -| has_more | bool | 是否还有下一页 | 每页最多20条 | -| total_count | int | 总计点赞数 | | -| _gt_ | num | 0 | 作用尚不明确 | - -`data`中的`item_likes`对象: - -由于参数过多,这里不一一列举,请自行参阅其他文件理解。 - -**示例:** - -获取`哔哩哔哩弹幕网`的动态id为`669016644742283288`动态 -```shell -curl -G 'https://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/spec_item_likes' \ ---data-urlencode 'dynamic_id=669016644742283288' -``` - -
-查看响应示例 - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "item_likes": [ - { - "uid": 660169578, - "time": 1654946013, - "face_url": "http://i0.hdslb.com/bfs/face/346ce28e99cc0a7d9cc05b0c0951957445cbcb61.jpg", - "uname": "空蓝奇观", - "user_info": { - "uid": 660169578, - "uname": "空蓝奇观", - "face": "http://i0.hdslb.com/bfs/face/346ce28e99cc0a7d9cc05b0c0951957445cbcb61.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1656604800000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "大会员", - "label_theme": "vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "", - "role": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "sign": "。。。", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 522318130, - "time": 1654901839, - "face_url": "http://i1.hdslb.com/bfs/face/3159660d82bf0ffc878265cd11f7bb55122848a8.jpg", - "uname": "114514号饼干机器人", - "user_info": { - "uid": 522318130, - "uname": "114514号饼干机器人", - "face": "http://i1.hdslb.com/bfs/face/3159660d82bf0ffc878265cd11f7bb55122848a8.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1655740800000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "大会员", - "label_theme": "vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "", - "role": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "sign": "", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 473098535, - "time": 1654874055, - "face_url": "http://i2.hdslb.com/bfs/face/ae37c4c8a7512322186eaf1c1cb170362c604215.jpg", - "uname": "花式送人头的感觉", - "user_info": { - "uid": 473098535, - "uname": "花式送人头的感觉", - "face": "http://i2.hdslb.com/bfs/face/ae37c4c8a7512322186eaf1c1cb170362c604215.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626451200000, - "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": 32446, - "name": "EDG战队", - "image": "http://i2.hdslb.com/bfs/garb/item/422c8bd354989845bd9ed64bd00cfa1048e92580.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/garb/item/422c8bd354989845bd9ed64bd00cfa1048e92580.png", - "image_enhance_frame": "" - }, - "sign": "", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 297957406, - "time": 1654870870, - "face_url": "http://i1.hdslb.com/bfs/face/c28b431177fa6faffc4b928b9506a7057f002f73.jpg", - "uname": "冷水ensq", - "user_info": { - "uid": 297957406, - "uname": "冷水ensq", - "face": "http://i1.hdslb.com/bfs/face/c28b431177fa6faffc4b928b9506a7057f002f73.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1657036800000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "sign": "这个人很神秘,只写了这么点东西", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 384080149, - "time": 1654869742, - "face_url": "http://i1.hdslb.com/bfs/face/74efb9ca3fc68679cb3ddbf331ceffc246f13929.jpg", - "uname": "嵇獬", - "user_info": { - "uid": 384080149, - "uname": "嵇獬", - "face": "http://i1.hdslb.com/bfs/face/74efb9ca3fc68679cb3ddbf331ceffc246f13929.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1583942400000, - "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": "" - }, - "sign": "这个人很懒,也不知道写什么\n我会一直做自己", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 666484726, - "time": 1654867375, - "face_url": "http://i1.hdslb.com/bfs/face/8e7c02c5d98d8ee52d0643227aed59b4fca1420d.jpg", - "uname": "未未成年累月", - "user_info": { - "uid": 666484726, - "uname": "未未成年累月", - "face": "http://i1.hdslb.com/bfs/face/8e7c02c5d98d8ee52d0643227aed59b4fca1420d.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626624000000, - "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": "" - }, - "sign": "", - "level_info": { - "current_level": 3 - } - }, - "attend": 0 - }, - { - "uid": 298557818, - "time": 1654865058, - "face_url": "http://i2.hdslb.com/bfs/face/b3bea3c029e4a35788625228a8ffbcec6c00eaea.jpg", - "uname": "爱吃星河的饼干", - "user_info": { - "uid": 298557818, - "uname": "爱吃星河的饼干", - "face": "http://i2.hdslb.com/bfs/face/b3bea3c029e4a35788625228a8ffbcec6c00eaea.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1603209600000, - "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": "" - }, - "sign": "规矩,既是束缚,也是保护。", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 431901641, - "time": 1654845296, - "face_url": "http://i2.hdslb.com/bfs/face/88bf1a1c0cbbdf39032fa766e0b2324716b5315e.jpg", - "uname": "水粉墨殇", - "user_info": { - "uid": 431901641, - "uname": "水粉墨殇", - "face": "http://i2.hdslb.com/bfs/face/88bf1a1c0cbbdf39032fa766e0b2324716b5315e.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1655740800000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 5305, - "name": "明日方舟音律系列", - "image": "http://i2.hdslb.com/bfs/garb/item/615a1653281141ddf64cbb98c792ddaee78f7f40.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/garb/item/516ecdf2d495a62f1bac31497c831b711823140c.webp", - "image_enhance_frame": "http://i2.hdslb.com/bfs/garb/item/c0751afbf950373c260254d02768eabf30ff3906.png" - }, - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 670417135, - "time": 1654833667, - "face_url": "http://i1.hdslb.com/bfs/face/f8fddf339016be034736c45714b52fbb148d5252.jpg", - "uname": "阿布不喜欢我", - "user_info": { - "uid": 670417135, - "uname": "阿布不喜欢我", - "face": "http://i1.hdslb.com/bfs/face/f8fddf339016be034736c45714b52fbb148d5252.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1626451200000, - "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": "" - }, - "sign": "", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 339203848, - "time": 1654798783, - "face_url": "http://i1.hdslb.com/bfs/face/6bead07c483681db51d519aed8b8d00de265e8ae.jpg", - "uname": "XD君233", - "user_info": { - "uid": 339203848, - "uname": "XD君233", - "face": "http://i1.hdslb.com/bfs/face/6bead07c483681db51d519aed8b8d00de265e8ae.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1620748800000, - "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": "" - }, - "sign": "大爱火柴人,我的世界和一些求生枪战游戏", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 199624899, - "time": 1654792330, - "face_url": "http://i0.hdslb.com/bfs/face/59526a5bfbe6985a0741ddaacffaee3c90c5e34a.jpg", - "uname": "猛Pink", - "user_info": { - "uid": 199624899, - "uname": "猛Pink", - "face": "http://i0.hdslb.com/bfs/face/59526a5bfbe6985a0741ddaacffaee3c90c5e34a.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1598112000000, - "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": "" - }, - "sign": "这个人很神秘,什么都看不了=●ω●=", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 451151619, - "time": 1654791995, - "face_url": "http://i0.hdslb.com/bfs/face/9322b5a5802b5c831b2382afed073f5290be6e38.jpg", - "uname": "七城关", - "user_info": { - "uid": 451151619, - "uname": "七城关", - "face": "http://i0.hdslb.com/bfs/face/9322b5a5802b5c831b2382afed073f5290be6e38.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1655827200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 6249, - "name": "星座系列:处女座", - "image": "http://i0.hdslb.com/bfs/garb/item/cd82b1c35fe0ea221c4fd56525893bc58ec53300.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/cd82b1c35fe0ea221c4fd56525893bc58ec53300.png", - "image_enhance_frame": "" - }, - "sign": "强迫症", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 375385022, - "time": 1654785903, - "face_url": "http://i2.hdslb.com/bfs/face/fbdfa7917e8f874382f4b42fcccd9c7296461cb9.jpg", - "uname": "想变成魔法少女的笙绘", - "user_info": { - "uid": 375385022, - "uname": "想变成魔法少女的笙绘", - "face": "http://i2.hdslb.com/bfs/face/fbdfa7917e8f874382f4b42fcccd9c7296461cb9.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1643472000000, - "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": "" - }, - "sign": "希望自己的原创作品可以成为自活过的证明", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 291506521, - "time": 1654782383, - "face_url": "http://i1.hdslb.com/bfs/face/887f13f658cfbee23e3e200fe61755f1a8d5823c.jpg", - "uname": "星が落ちた日", - "user_info": { - "uid": 291506521, - "uname": "星が落ちた日", - "face": "http://i1.hdslb.com/bfs/face/887f13f658cfbee23e3e200fe61755f1a8d5823c.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1673884800000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 4104, - "name": "良辰美景·不问天", - "image": "http://i1.hdslb.com/bfs/garb/item/4dbf08aae75f9479a21db2bb289229b8d71631e1.png", - "expire": 0, - "image_enhance": "http://i1.hdslb.com/bfs/garb/item/253bf41272ddef301c1f6a0361abd49d772bfafc.webp", - "image_enhance_frame": "http://i1.hdslb.com/bfs/garb/item/c4934a1ffdb3865fe79b319de439af3973b53ec9.png" - }, - "sign": "一时摸鱼一时爽,一直摸鱼一直爽!", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 179333519, - "time": 1654780391, - "face_url": "http://i2.hdslb.com/bfs/face/89a58c10bf500fb7c9530ba8f28f73208c510d22.jpg", - "uname": "纳眉兹www", - "user_info": { - "uid": 179333519, - "uname": "纳眉兹www", - "face": "http://i2.hdslb.com/bfs/face/89a58c10bf500fb7c9530ba8f28f73208c510d22.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1646496000000, - "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": "" - }, - "sign": "人生", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 497821251, - "time": 1654780363, - "face_url": "http://i0.hdslb.com/bfs/face/a7bf301db14cb7fa094dba5f68d13faa7c5798d2.jpg", - "uname": "不器用な・ジョゼ", - "user_info": { - "uid": 497821251, - "uname": "不器用な・ジョゼ", - "face": "http://i0.hdslb.com/bfs/face/a7bf301db14cb7fa094dba5f68d13faa7c5798d2.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1683216000000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 299, - "name": "梦塔·雪谜城", - "image": "http://i0.hdslb.com/bfs/face/c93e1eeb77b1bb0753eff243d49c006bf18d69c5.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/face/c93e1eeb77b1bb0753eff243d49c006bf18d69c5.png", - "image_enhance_frame": "" - }, - "sign": "・花无凋零之日,爱无传达之时,爱情亘古不变,紫罗兰永世长存\n・人活着就是为了樱岛麻衣\nキャ━━━━(゚∀゚)━━━━!!", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - }, - { - "uid": 1054063538, - "time": 1654779485, - "face_url": "http://i2.hdslb.com/bfs/face/bc60a7b5c3b5fd624043050a3ab15e2c4c871803.jpg", - "uname": "贪吃的ZZ", - "user_info": { - "uid": 1054063538, - "uname": "贪吃的ZZ", - "face": "http://i2.hdslb.com/bfs/face/bc60a7b5c3b5fd624043050a3ab15e2c4c871803.jpg", - "rank": "10000", - "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": "" - }, - "sign": "(ฅ>ω<*ฅ)", - "level_info": { - "current_level": 3 - } - }, - "attend": 0 - }, - { - "uid": 305663999, - "time": 1654777857, - "face_url": "http://i2.hdslb.com/bfs/face/3a2b2f84990ec182af8380ef97db8256c6ecec25.jpg", - "uname": "qw夕颜", - "user_info": { - "uid": 305663999, - "uname": "qw夕颜", - "face": "http://i2.hdslb.com/bfs/face/3a2b2f84990ec182af8380ef97db8256c6ecec25.jpg", - "rank": "10000", - "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": "" - }, - "sign": "", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 436616802, - "time": 1654776381, - "face_url": "http://i0.hdslb.com/bfs/face/e1ddfcdac95b39217e4710f3605005abfecb53a1.jpg", - "uname": "桐影映江边", - "user_info": { - "uid": 436616802, - "uname": "桐影映江边", - "face": "http://i0.hdslb.com/bfs/face/e1ddfcdac95b39217e4710f3605005abfecb53a1.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1664208000000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "大会员", - "label_theme": "vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "", - "role": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 1990, - "name": "明日方舟", - "image": "http://i0.hdslb.com/bfs/garb/item/0c8e7d627a35c378b757f39419889ef1fcc0ed9b.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/1815c81da71069ea3db4553cad7d233f782da2f2.webp", - "image_enhance_frame": "http://i0.hdslb.com/bfs/garb/item/ed2b4ef1da228c0b937753542b33af8f04d1d70c.png" - }, - "sign": "追寻着你的身影,从迷失的世界起航,直到深海的尽头~", - "level_info": { - "current_level": 4 - } - }, - "attend": 0 - }, - { - "uid": 266536964, - "time": 1654775142, - "face_url": "http://i2.hdslb.com/bfs/face/b15e60d6e5403075f212d5bd3d30dc0fb3016088.jpg", - "uname": "君九j", - "user_info": { - "uid": 266536964, - "uname": "君九j", - "face": "http://i2.hdslb.com/bfs/face/b15e60d6e5403075f212d5bd3d30dc0fb3016088.jpg", - "rank": "10000", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1683648000000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 1293, - "name": "碧蓝航线", - "image": "http://i2.hdslb.com/bfs/face/2508daec59b2aaada2784f26f9c1c28069f28e43.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/face/2508daec59b2aaada2784f26f9c1c28069f28e43.png", - "image_enhance_frame": "" - }, - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "attend": 0 - } - ], - "has_more": 1, - "total_count": 2367, - "_gt_": 0 - } -} -``` - -## 获取草稿列表 - -> https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/get_drafts - -请求方式:GET - -认证方式:Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 正常为"0" | -| ttl | num | 1 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | -------- | ---- | -| drafts | array | 草稿列表 | | - -`drafts`列表的每一项: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | -------------------- | ------------------------------------------------------------ | -| draft_id | str | 草稿id | | -| publish_time | num | 定时发送的秒级时间戳 | | -| type | num | 动态类型 | 请参考[获取特定动态卡片信息](get_dynamic_detail.md) | -| uid | num | 自己的mid | | -| user_profile | obj | 自己的用户信息 | 请参考[用户基本信息](../user/info.md) | -| request | str | 动态内容 | 该项为json转成str,内容请参考[发表纯文本动态](publish.md#发表纯文本动态) | diff --git a/dynamic/card_info.md b/dynamic/card_info.md deleted file mode 100644 index 0b7c8d8..0000000 --- a/dynamic/card_info.md +++ /dev/null @@ -1,487 +0,0 @@ -# 动态详细信息字段 - -不同动态内容卡片的具体信息。包含在***获取特定动态卡片信息,话题下特定动态信息***等API的Json回复中。 - -以card字段的形式出现,内容为一个可被解析为Json对象的字符串。 - -不同类型的动态内容拥有不同的字段。 - -**** - -## 在转发类动态中(type=1) - -需注意账号转发视频投稿,其他用户的动态以及分享收藏夹等均为转发类内容,并不属于type=4300的收藏类动态等。 - -在type=1的转发类动态中,解析出的对象包含以下内容: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| user | obj | 转发者用户信息 | 包含用户名,用户id和头像 | -| item | obj | 转发相关信息 | `content`字段为转发附言 | | -| origin | str | 被转发动态信息 | 即本文档所描述的动态详细信息字段。
动态类型为`item`对象的`orig_type`字段 | -| origin_extend_json | str | 被转发动态补充信息 | | -| origin_user | obj | 被转发用户信息 | | -| activity_infos | obj | 被转发动态参与的活动 | | - -
-查看字段内容示例: - -```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\":\"打卡挑战\"}" - } - ] - } -} -``` - -
- -## 在图片动态中(type=2) - -在type=2的图片动态中,解析出的对象包含以下内容: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| item | obj | 图片动态内容 | `description`字段为文字内容
`pictures`字段图片 | | -| user | obj | 发布者用户信息 | 包含用户名,用户id和头像 | - - -
-查看字段内容示例: - -```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 - } - } -} -``` - -
- - -## 在文字动态中(type=4) - -在type=4的文字动态中,解析出的对象包含以下内容: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| item | obj | 文字动态内容 | `description`字段为文字内容 | | -| user | obj | 发布者用户信息 | 包含用户名,用户id和头像 | - - -
-查看字段内容示例: - -```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 - } -} -``` - -
- -## 在视频投稿动态中(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 | 视频数| | - - - -
-查看字段内容示例: - -```json -{ - "aid": 506318410, - "attribute": 0, - "cid": 432711595, - "copyright": 1, - "ctime": 1635403080, - "desc": "我看谁敢欺负天依依?都别动啊,放那儿让我来!\n好久不写萌歌歌了,耐心心看到结尾,有天依依激萌嚎叫(不\n\n作曲曲/编曲曲/混音音:iKz @Signal-E | 作词词:叫叫与壶壶\n唱歌歌:洛天依 | 调校校:Creuzer\n曲绘绘:pelokio & 贝贝web & 壶芬奇\nPVV:AYWC八毛 @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 -} -``` - -
- -## 在专栏投稿动态中(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 | 可能是专栏类别 | | - -
-查看字段内容示例: - -```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 -} -``` - -
- -## 在音频投稿动态中(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 | 上传者的头像链接 | | - -
-查看字段内容示例: - -```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" -} -``` - -
diff --git a/dynamic/content.md b/dynamic/content.md deleted file mode 100644 index 19fa44d..0000000 --- a/dynamic/content.md +++ /dev/null @@ -1,1039 +0,0 @@ -# 动态信息 - -- [获取正在直播的已关注者](#获取正在直播的已关注者) -- [获取发布新动态的已关注者](#获取发布新动态的已关注者) - ---- - -## 获取正在直播的已关注者 - -> https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ------ | -------- | -| size | num | 每页显示数 | 非必要 | 默认为10 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 默认为0 | -| msg | num | 空 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ---------- | ------------ | -| count | num | 直播者数量 | | -| group | str | "default" | 作用尚不明确 | -| items | array | 直播者列表 | | -| _gt_ | num | 0 | 作用尚不明确 | - -`data`中的`items`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 第一位直播者 | | -| n | obj | 第(n+1)位直播者 | | -| …… | obj | …… | …… | - -`data`中的`items`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ---- | -| face | str | 直播者头像 | | -| link | str | 直播链接 | | -| title | str | 直播标题 | | -| uid | num | 直播者id | | -| uname | str | 直播者昵称 | | - -**示例:** - -```shell -curl -G 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_live_users' \ ---data-urlencode 'size=10' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "count": 4, - "group": "default", - "items": [ - { - "uid": 430774867, - "uname": "AIofficial", - "face": "https://i0.hdslb.com/bfs/face/f9a65c15bd1e9871419e6566aeee891eef420c5b.jpg", - "link": "https://live.bilibili.com/21412734", - "title": "【罚站AI】换装24小时AI直播间唱聊~" - }, - { - "uid": 456664753, - "uname": "央视新闻", - "face": "https://i1.hdslb.com/bfs/face/5a6808606bf1f7a2390b77e14df8d0d1d04680d9.jpg", - "link": "https://live.bilibili.com/21686237", - "title": "8.19中国医师节 一起“医”路同行" - }, - { - "uid": 5755666, - "uname": "可爱的大枣子", - "face": "https://i1.hdslb.com/bfs/face/248428206eca5b9ca34514dc2df54d456fbecb9e.jpg", - "link": "https://live.bilibili.com/2116488", - "title": "早上好" - }, - { - "uid": 290515513, - "uname": "地球频道", - "face": "https://i1.hdslb.com/bfs/face/33b60973ae3608beb27189947b02ccc2164a96d5.jpg", - "link": "https://live.bilibili.com/9196015", - "title": "【直播】从太空看地球" - } - ], - "_gt_": 0 - } -} -``` - -
- -## 获取发布新动态的已关注者 - -> https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_uplist - -*请求方式:GET* - -认证方式:Cookie(SESSDSTA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------------- | ---- | ------------------ | ------ | ---------------- | -| teenagers_mode | num | 是否开启青少年模式 | 非必要 | 否:0
是:1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------- | -| code | num | 返回值 | 0:成功
-6:未登录 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 默认为0 | -| msg | num | 空 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ----- | ---------- | ------------ | -| button_statement | str | 空 | 作用尚不明确 | -| items | array | 更新者列表 | | -| _gt_ | num | 0 | 作用尚不明确 | - -`data`中的`items`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 第一位更新者 | | -| n | obj | 第(n+1)位更新者 | | -| …… | obj | …… | …… | - -**示例:** - -```shell -curl -G 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/w_dyn_uplist' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "button_statement": "", - "items": [{ - "user_profile": { - "info": { - "uid": 332704117, - "uname": "白上吹雪Official", - "face": "https://i1.hdslb.com/bfs/face/26298b21c4a059d95ee9d009bbdf1dca94da951f.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名UP主、直播签约主播" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1634832000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "hololive一期生,虚拟白发狐狸白上吹雪是也(^・ω・^§)ノ 画师:凪白みと 协力:白上吹雪字幕组 商务合作请私信", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 282994, - "uname": "泠鸢yousa", - "face": "https://i2.hdslb.com/bfs/face/28f95c383f2805dbed32e93007c91ccfda28775f.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 2019百大UP主、直播签约主播" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1649001600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 301, - "name": "实验品家庭", - "image": "https://i1.hdslb.com/bfs/face/6fbee28f782926612eb1ad71d6c8aa7264206fe9.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/face/6fbee28f782926612eb1ad71d6c8aa7264206fe9.png" - }, - "rank": "10000", - "sign": "虚拟艺人团体VirtuaReal Star成员,微博&网易云等搜:泠鸢yousa ", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 13765857, - "uname": "LShang001", - "face": "https://i2.hdslb.com/bfs/face/4bc59f57e6d31fcf868d7e935f643a043dd6b99f.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1599926400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "Excelsior", - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 410527811, - "uname": "WhatOnEarth一探究竟", - "face": "https://i0.hdslb.com/bfs/face/0ef3c74f61c4f5f0ef70ddbf3f1f0ebfed18a1b8.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名科普UP主" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1599494400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "硬核人文科普,精彩社会案例,尽在WOE。", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 519253600, - "uname": "火柴人AlanBecker", - "face": "https://i1.hdslb.com/bfs/face/75e1219501e9ca3e82cad2c4a466fb4b5c7d0557.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "Alan Becker官方帐号,动画UP主" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1594137600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "Alan Becker官方频道", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 293793435, - "uname": "社会易姐QwQ", - "face": "https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1612454400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265", - "level_info": { - "current_level": 5, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 5755666, - "uname": "可爱的大枣子", - "face": "https://i1.hdslb.com/bfs/face/248428206eca5b9ca34514dc2df54d456fbecb9e.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1645286400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "檐外清风惊落一池桃花染", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 51270387, - "uname": "挽竹Killer", - "face": "https://i2.hdslb.com/bfs/face/3a9f7b01c8b7d235fa2fa8d761b94520fb82bd20.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1613404800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "(15w粉女装直播嗷)粉丝群:872444546", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 4409391, - "uname": "估读", - "face": "https://i0.hdslb.com/bfs/face/f0d6b44b38eff3ce023b354f692cdb5ae0013772.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1578412800000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "关注一下这只硬核up吧~ 脑洞能开,双手能做,立志把硬核内容做得易于食用ヾ(✿゚▽゚)ノ 粉丝群971392670。微博ID“估读酱”", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 70547713, - "uname": "Dr丶寻一", - "face": "https://i1.hdslb.com/bfs/face/fb2f66c64b1de4da329b8ccdbe4cc2db19bab488.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1598025600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 2360, - "name": "#EveOneCat", - "image": "https://i1.hdslb.com/bfs/garb/item/3a6053f073f979a776e02e088dd7dd7694c5b1f3.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/garb/item/6c7f2ccb92627b11101dfbb616524845cac8f216.webp" - }, - "rank": "10000", - "sign": "准备开黑乐谱的坑,有时还会弄点其他的红石音乐。有什么好的黑乐谱可以私信我下载链接,只要是我电脑上的fl能够成功导入,看实际情况施工。", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 591856754, - "uname": "卢正义的雕刻时光", - "face": "https://i0.hdslb.com/bfs/face/5acc7be5c21c1dc7a4d0ebe8d741e60555971029.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名UP主" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1624377600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "我是卢正义,年方二十有七\n初来贵站,还望各位多多关照\n商务合作⭐ JOJOMONO\n木品咨询⭐ lym11336699\n", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 361818130, - "uname": "是田小浪呀", - "face": "https://i1.hdslb.com/bfs/face/917d7f539e24860a52ccca2e8dbf8d6d6ca0e66b.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 3, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 108572682, - "uname": "月下玄月", - "face": "https://i1.hdslb.com/bfs/face/9cb69b21cd23fce7545c441415db17f2d57af159.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名UP主" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1619712000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "QQ1群:701762419;QQ2群:1062508843", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 7450650, - "uname": "超果果mc", - "face": "https://i2.hdslb.com/bfs/face/0202ae8b377d750fe3fbeff4f9b8219b48071ee5.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名游戏UP主、直播签约主播" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1645113600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "希望做出大家看了都会开心的视频 微博@超果果mc 商业合作加qq:169113409", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 4958429, - "uname": "Mukyo木西", - "face": "https://i0.hdslb.com/bfs/face/15c9b8360e524332a61b998360dd4958e0d1fd31.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1582992000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "各个音乐平台搜 Mukyo木西。微博@Mukyo木西就是狗狗。", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 26321770, - "uname": "和猫住の", - "face": "https://i2.hdslb.com/bfs/face/a0f1e2e8fa05317c12064b7026a20900bdb25b5a.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名UP主" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1627488000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 303, - "name": "喂,看见耳朵啦", - "image": "https://i1.hdslb.com/bfs/face/09f3180cb0a4a0a479045fe4fad705f9b92a82d2.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/face/09f3180cb0a4a0a479045fe4fad705f9b92a82d2.png" - }, - "rank": "10000", - "sign": "年轻人的猫咪救援领养平台,微博/公众号:和猫住 客服v:公众号和猫住菜单“联系我”", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 37556366, - "uname": "NickZhuOfficial", - "face": "https://i0.hdslb.com/bfs/face/e3a45f58368a70c5277af394bb40e32156ca2a23.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 2248, - "name": "搞笑专属头像挂件", - "image": "https://i2.hdslb.com/bfs/garb/item/bab219d170a1662c26beede8944c6afbc6bc2bb4.png", - "expire": 0, - "image_enhance": "https://i2.hdslb.com/bfs/garb/item/bab219d170a1662c26beede8944c6afbc6bc2bb4.png" - }, - "rank": "10000", - "sign": "鬼畜人", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 438345816, - "uname": "盲人母亲曹世美", - "face": "https://i2.hdslb.com/bfs/face/61111e0fa1ce0e8224b7aa48cc8b4dddc2ec6046.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名UP主" - } - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "来自贵州纳雍大山深处的一家三口,父亲腿脚残疾,母亲看不见,还有一个脑瘫儿子,盲人母亲就这样用她一双手撑起了一个家想了解v:llj104890", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 486633990, - "uname": "我是江无情", - "face": "https://i1.hdslb.com/bfs/face/bf667a09070a9345c881ec8e3e6844d8ecb043ca.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名科普UP主" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1617379200000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "一个做视频的,商务请私信微博:我是江无情", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 1 - }, - { - "user_profile": { - "info": { - "uid": 13337125, - "uname": "GoldenEggs", - "face": "https://i0.hdslb.com/bfs/face/11a78303bf3c69a1bf34cab25bb219eeee47961e.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名游戏UP主" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1649865600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "" - }, - "rank": "10000", - "sign": "脑洞区up主,常借助Minecraft平台实现一些好玩的想法 // 创意交流群:871449268/合作QQ:1558854197", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": "0" - } - }, - "has_update": 0 - }], - "_gt_": 0 - } -} -``` - -
\ No newline at end of file diff --git a/dynamic/get_dynamic_detail.md b/dynamic/get_dynamic_detail.md deleted file mode 100644 index 0b8490e..0000000 --- a/dynamic/get_dynamic_detail.md +++ /dev/null @@ -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' -``` - -
-查看响应示例 - -```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 - } -} -``` - -
- -## 最近更新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:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 是否认证 | -1:无
0:认证 | - -`my_info`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | --- | --------- | -------------------------------------------- | -| type | num | 会员类型 | 0:无
1:月大会员
2:年度及以上大会员 | -| status | num | 会员状态 | 0:无
1:有 | -| due_date | num | 会员过期时间 | Unix时间戳(毫秒) | -| vip_pay_type | num | 支付类型 | 0:未支付(常见于官方账号)
1:已支付(以正常渠道获取的大会员均为此值) | -| theme_type | num | 0 | 作用尚不明确 | -| label | obj | 会员标签 | | -| avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | -| nickname_color | str | 会员昵称颜色 | 颜色码,一般为`#FB7299`,曾用于愚人节改变大会员配色 | -| role | num | 大角色类型 | 1:月度大会员
3:年度大会员
7:十年大会员
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:大会员
annual_vip:年度大会员
ten_annual_vip:十年大会员
hundred_annual_vip:百年大会员
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主昵称 | | - -
-查看响应示例: - -```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----" - } - ] - } -} -``` - -
diff --git a/dynamic/publish.md b/dynamic/publish.md deleted file mode 100644 index a9d868e..0000000 --- a/dynamic/publish.md +++ /dev/null @@ -1,881 +0,0 @@ -# 发布动态 - -- [发布动态](#发布动态) - - [为图片动态上传图片](#为图片动态上传图片) - - [创建投票](#创建投票) - - [发表纯文本动态](#发表纯文本动态) - - [发表复杂动态](#发表复杂动态) - - [立即发布定时动态](#立即发布定时动态) - ---- - -## 为图片动态上传图片 - -> https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -注意:非日常类型像素宽高必须大于420 - -**正文参数 (multipart/form-data):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ | -| file_up | file | 需要上传的图片文件 | 必要 | 格式仅支持jpg png gif | -| category | str | 图片类型 | 必要 | daily:日常(动态)
draw:绘画(画友)
cos:摄影(COSPLAY) | -| biz | str | | | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-1:未添加图片
-2:参数错误
-3:图片尺寸过小
-4:账号未登录
-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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"success", - "data":{ - "image_url":"http:\/\/i0.hdslb.com\/bfs\/album\/13f9523efe186a8066b2d72e80283cea2437eb62.png", - "image_width":1225, - "image_height":850 - } -} -``` - -
- - -## 创建投票 - -> https://api.vc.bilibili.com/vote_svr/v1/vote_svr/create_vote - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -注意: options最少两个,下标n从0开始 - -**正文参数 (multipart/form-data):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------------------------- | ---- | ------------------------ | ------ | -------------------------------------------------------- | -| info[title] | str | 投票标题 | 必要 | | -| info[desc] | str | 投票描述 | 非必要 | 可为空 | -| info[type] | num | 投票类型 | 必要 | 0:文字投票 1:图片投票 | -| info[choice_cnt] | num | 最多选几项 | 必要 | | -| info[duration] | num | 投票持续秒数 | 必要 | 常用:
三天:259200
七天:604800
三十天:2592000 | -| info[options]\[ n ][desc] | str | 第n项选项文字内容 | 必要 | | -| info[options]\[ n ][img_url] | str | 第n项选项投票图片 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 非必要 | 头次见非必要的csrf | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------------------------------- | -| code | num | 返回值 | 0:成功
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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "vote_id": 4947171, - "_gt_": 0 - } -} -``` - -
- -## 发表纯文本动态 - -> 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 | | - -
-查看示例(纯文本) - -```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 - } -} - -``` - -
- -
-查看示例(at两个人) - -动态正文 -``` -[热词系列_神仙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=******' -``` - -
- - - -## 发表复杂动态 - - - -> 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
带图: 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
带图片: 2
其他请参考 get_dynamic_detail.md | -| \_gt_ | num | 0 | | - -**警告:下面的内容又乱又杂,而且绝大多数情况用不到,我建议大家用这个接口的时候随便带一个buvid3的cookie屏蔽掉它们算了.** - -当Cookie中不含有`buvid3`时,较上述字段多出一个`fake_card`对象,大概是移动端用的卡片: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---- | ------------ | -| fake_card | obj | 0 | 又多又乱又杂 | - -`fake_card`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------------ | ------------------------------------------------------------ | -| card_type | num | 卡片类型 | 不带图片: 4
带图片: 2
其他请参考 [获取特定动态卡片信息](get_dynamic_detail.md) | -| modules | array | 卡片组件列表 | | -| extend | obj | 其他杂项信息 | | - -`fake_card`对象的`modules`数组中每一项对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | -------------------------------------------- | -| module_type | num | 组件类型 | 1: 作者信息
3: 动态内容
其他有待发现 | -| 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: 图片
其他未知 | -| 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
带图片: 2
其他待探索 | -| uid | num | 发送者mid | | -| card_url | str | b站自定义`bilibili://`协议链接,指向该条动态 | | -| desc | array | 动态组件列表,重复了一遍`module_desc`的desc数组 | | -| reply | obj | 评论区相关 | | - -`extend`的`reply`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | ------------------------------------------------- | ---- | -| uri | str | b站自定义`bilibili://`协议链接,指向该条动态评论区 | | -| params | array | 未知 | | - -
-查看示例(不带`buvid3`) - -```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" - } - ] - } - } - } - } -} -``` - -
- -
-查看示例(带`buvid3`) - -动态正文 -``` -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 - } -} -``` - - - -
- -## 立即发布定时动态 - -> https://api.vc.bilibili.com/dynamic_draft/v1/dynamic_draft/publish_now - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数 (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 | 不明 | - -
-查看示例 - - -```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":{} -} -``` - -
- diff --git a/dynamic/tag_dynamics.md b/dynamic/tag_dynamics.md deleted file mode 100644 index 73e0657..0000000 --- a/dynamic/tag_dynamics.md +++ /dev/null @@ -1,7934 +0,0 @@ -# 话题下特定动态信息 -- [获取包含置顶及热门的动态列表](#获取包含置顶及热门的动态列表) -- [获取历史动态列表](#获取历史动态列表) ---- - -## 获取包含置顶及热门的动态列表 - -> https://api.vc.bilibili.com/topic_svr/v1/topic_svr/fetch_dynamics - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ---------- | ------ | -------- | -| topic_name | str | 话题名称 | 必要(可选) | topic_id与topic_name任选一个 | -| topic_id | num | 话题id | 必要(可选) | topic_id与topic_name任选一个 | -| sortby | num | 排序方式 | 非必要 | 一般情况下带上参数2,在部分话题中使用可以排除热门部分| -| offset | num | 偏移值 | 非必要| 可用于偏移显示的动态列表(为`0`时获取不包含置顶及热门的最新动态) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 默认为空 | -| msg | num | 空 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ---------- | ------------ | -| attentions | obj | 当前登录账户关注列表(仅在传递了登录信息时出现) | | -| cards | array | 动态列表 | | -| founder_uid | num | 0 | 作用尚不明确 | -| has_more | num | 当前话题是否有额外的动态 | 0:无额外动态
1:有额外动态 | -| is_drawer_topic | num | 0 | 作用尚不明确 | -| offset | str | 接下来获取列表时的偏移值 | 一般为当前获取的话题列表下最后一个动态id | -| \_gt\_ | num | 0 | 作用尚不明确 | - -`data`中的`cards`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 第1条动态卡片 | | -| n | obj | 第(n+1)条动态卡片 | | -| …… | obj | …… | …… | - -`data`中的`cards`数组中的对象: - -基本同「[获取特定动态卡片信息](get_dynamic_detail.md)」中的data对象 - -**示例:** - -获取话题`哔哩哔哩漫画`(话题id`7539944`)的当前动态列表(包含置顶&热门) - -topic_name方式: -```shell -curl -G 'https://api.vc.bilibili.com/topic_svr/v1/topic_svr/fetch_dynamics' \ ---data-urlencode 'topic_name=哔哩哔哩漫画&sortby=2' -``` -topic_id方式: -```shell -curl -G 'https://api.vc.bilibili.com/topic_svr/v1/topic_svr/fetch_dynamics' \ ---data-urlencode 'topic_id=7539944&sortby=2' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "has_more": 1, - "cards": [ - { - "desc": { - "uid": 628215255, - "type": 8, - "rid": 332648194, - "view": 4768, - "repost": 18, - "like": 8325, - "is_liked": 0, - "dynamic_id": 516720707860453704, - "timestamp": 1619146815, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 628215255, - "uname": "faguowenhua", - "face": "https://i0.hdslb.com/bfs/face/341a390cbae7efc021d3c492da56665f2a4944ee.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": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "A", - "topic_board_desc": "热门", - "status": 1, - "dynamic_id_str": "516720707860453704", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "332648194", - "bvid": "BV1eA411L7Ck" - }, - "card": "{\"aid\":332648194,\"attribute\":0,\"cid\":327661869,\"copyright\":1,\"ctime\":1619091334,\"desc\":\"漫画节之际,恰逢世界读书日,哔哩哔哩漫画联合欧漫达高,邀请到了法国驻上海总领事馆文化领事柯梅燕女士在线推荐漫画啦!\\n被称为“图像小说”的纯正法国漫画是什么样呢?让我们一起跟着柯梅燕女士的介绍看看这本《莫奈逐光者》,领略欧陆漫画艺术的独特魅力吧~\",\"dimension\":{\"height\":2160,\"rotate\":0,\"width\":3840},\"duration\":219,\"dynamic\":\"漫画节之际,恰逢世界读书日,法国驻上海总领事馆文化领事柯梅燕女士应哔哩哔哩漫画与@欧漫达高 邀请,来给大家推荐漫画啦!\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/332648194\\/?page=1&player_preload=null&player_width=3840&player_height=2160&player_rotate=0\",\"mission_id\":20024,\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/341a390cbae7efc021d3c492da56665f2a4944ee.jpg\",\"mid\":628215255,\"name\":\"faguowenhua\"},\"pic\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/archive\\/7de60703c311c2afae10fab44a18bd3fbb5b3a13.jpg\",\"player_info\":null,\"pubdate\":1619146812,\"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\\/BV1eA411L7Ck\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1eA411L7Ck\",\"stat\":{\"aid\":332648194,\"coin\":291,\"danmaku\":18,\"dislike\":0,\"favorite\":295,\"his_rank\":0,\"like\":8325,\"now_rank\":0,\"reply\":148,\"share\":95,\"view\":42916},\"state\":0,\"tid\":124,\"title\":\"大师的故事《莫奈逐光者》——来自法国文化领事的漫画推荐│哔哩哔哩漫画节\",\"tname\":\"社科人文\",\"videos\":1}", - "extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\",\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "activity_infos": { - "details": [ - { - "type": 1, - "detail": "{\"is_show\":1,\"topic_id\":877418,\"topic_link\":\"https:\\/\\/www.bilibili.com\\/blackboard\\/activity-7uSyvlCGRS.html\",\"topic_name\":\"漫画节\"}" - } - ] - }, - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 19380831, - "topic_name": "2021读书日", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1449371, - "topic_name": "法国漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 877418, - "topic_name": "漫画节", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html" - }, - { - "topic_id": 591844, - "topic_name": "莫奈", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 507003, - "topic_name": "欧漫", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "tags": [ - { - "tag_type": 3, - "sub_type": 1, - "icon": "https://i0.hdslb.com/bfs/album/4c1880a3e9d5fd2c72b339929a73a4b83d2bab93.png", - "text": "漫画节", - "link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html?topic_from=topic-card&name=%E6%BC%AB%E7%94%BB%E8%8A%82", - "rid": 877418, - "sub_module": "topic" - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 7435683, - "type": 8, - "rid": 630241940, - "acl": 0, - "view": 32187, - "repost": 13, - "like": 10044, - "is_liked": 0, - "dynamic_id": 516457881633694548, - "timestamp": 1619085621, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 7435683, - "uname": "葉月Mashiro灬", - "face": "https://i0.hdslb.com/bfs/face/a536ad1c4c66e17113cfb599fcbb97e03bcdae44.jpg" - }, - "card": { - "official_verify": { - "type": 0, - "desc": "bilibili 知名动漫UP主" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1642694400000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 2701, - "name": "七濑胡桃", - "image": "https://i0.hdslb.com/bfs/garb/item/2c40fe802d1935d96e4fc63ec42274d8846a34b7.png", - "expire": 0, - "image_enhance": "https://i0.hdslb.com/bfs/garb/item/2c40fe802d1935d96e4fc63ec42274d8846a34b7.png", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "个人up主 商业合作QQ:740998177月月本人 动漫交流群:958318991 约稿请私信", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "A", - "topic_board_desc": "热门", - "status": 1, - "dynamic_id_str": "516457881633694548", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "630241940", - "bvid": "BV1b84y1F7qT" - }, - "card": "{\"aid\":630241940,\"attribute\":0,\"cid\":325729439,\"copyright\":1,\"ctime\":1618830035,\"desc\":\"BGM:No Rainbows In The Desert (Pluto Tapes),歌手名:Unlike Pluto\\n咒术回战单素材,帅就完事!求3连!\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":94,\"dynamic\":\"\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/630241940\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/a536ad1c4c66e17113cfb599fcbb97e03bcdae44.jpg\",\"mid\":7435683,\"name\":\"葉月Mashiro灬\"},\"pic\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/archive\\/663b7f275b0f93356523880aa7e626803168df93.jpg\",\"player_info\":null,\"pubdate\":1619085619,\"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\\/BV1b84y1F7qT\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1b84y1F7qT\",\"stat\":{\"aid\":630241940,\"coin\":889,\"danmaku\":146,\"dislike\":0,\"favorite\":1163,\"his_rank\":0,\"like\":10044,\"now_rank\":0,\"reply\":95,\"share\":205,\"view\":61268},\"state\":0,\"tid\":24,\"title\":\"全员高能!这才是咒术回战!\",\"tname\":\"MAD·AMV\",\"videos\":1}", - "extend_json": "{\"\":{\"decoration\":{\"decoration_id\":0},\"game\":{\"game_id\":0},\"manga\":{\"manga_id\":26505},\"match\":{\"match_id\":0},\"official_activity\":{\"official_activity_id\":0},\"ogv\":{\"auto_bind\":0,\"ogv_id\":0},\"pgc\":0,\"pugv\":{\"pugv_id\":0},\"reserve\":{\"reserve_id\":0},\"ugc\":{\"ugc_id\":0}},\"bottom\":{},\"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": 391, - "topic_name": "AMV", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 281, - "topic_name": "MAD", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 7662089, - "topic_name": "五条悟", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/66796" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 6497596, - "topic_name": "咒术回战", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3545, - "topic_name": "热血", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/ca4c24bd8bf896545811f401106c19588b80549d.png", - "cover_type": 2, - "title": "咒术回战", - "desc_first": "更新至146", - "desc_second": "冒险,热血,奇幻", - "jump_url": "https://manga.bilibili.com/m/detail/mc26505?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26505" - }, - "add_on_card_info": [ - { - "add_on_card_show_type": 2, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/ca4c24bd8bf896545811f401106c19588b80549d.png", - "cover_type": 2, - "title": "咒术回战", - "desc_first": "更新至146", - "desc_second": "冒险,热血,奇幻", - "jump_url": "https://manga.bilibili.com/m/detail/mc26505?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26505" - } - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 381355897, - "type": 2, - "rid": 131242904, - "acl": 0, - "view": 20829, - "repost": 0, - "comment": 0, - "like": 99, - "is_liked": 0, - "dynamic_id": 516859813265346703, - "timestamp": 1619179203, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 381355897, - "uname": "电绘狂", - "face": "https://i1.hdslb.com/bfs/face/19c52b3c93e12698cd1e23093f8e2661e32e2533.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1580486400000, - "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": 1823, - "name": "春日樱花", - "image": "https://i1.hdslb.com/bfs/garb/item/dbe7d6c13cfa15ee717f7219501dc4613affbb9c.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/garb/item/dbe7d6c13cfa15ee717f7219501dc4613affbb9c.png", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "交流群:100931574、cctalk&B站每周三天 直播绘画教学+改图", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "A", - "topic_board_desc": "热门", - "status": 1, - "dynamic_id_str": "516859813265346703", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131242904" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"‍【#寒远#第十话:你穿什么都好看!!】\\n新角色登场!!猜猜他们是小公主的谁呢?[妙啊]\\n彩色条漫+每周五更新+ :https:\\/\\/manga.bilibili.com\\/detail\\/mc29468 \\n\\n#哔哩哔哩漫画# \",\"id\":131242904,\"is_fav\":0,\"pictures\":[{\"img_height\":1260,\"img_size\":151.478515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/cce04242486413faf4299ba0fd4e6cb072cd376e.jpg\",\"img_tags\":null,\"img_width\":750},{\"img_height\":1040,\"img_size\":126.9970703125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/678a826ac0e2e869e4ee2c1556a60c69d626dbfd.jpg\",\"img_tags\":null,\"img_width\":750}],\"pictures_count\":2,\"reply\":0,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619179203},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/19c52b3c93e12698cd1e23093f8e2661e32e2533.jpg\",\"name\":\"电绘狂\",\"uid\":381355897,\"vip\":{\"avatar_subscript\":0,\"due_date\":1580486400000,\"label\":{\"label_theme\":\"\",\"path\":\"\",\"text\":\"\"},\"nickname_color\":\"\",\"status\":0,\"theme_type\":0,\"type\":1,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 17996793, - "topic_name": "寒远", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[妙啊]", - "id": 435, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[妙啊]", - "url": "https://i0.hdslb.com/bfs/emote/b4cb77159d58614a9b787b91b1cd22a81f383535.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 350963773, - "type": 8, - "rid": 972741830, - "acl": 0, - "view": 2059, - "repost": 5, - "like": 53, - "is_liked": 0, - "dynamic_id": 515066247810442308, - "timestamp": 1618761606, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 350963773, - "uname": "届不到_Zula", - "face": "https://i1.hdslb.com/bfs/face/613e6dcd59feaecf875092ae945834a362b37f6c.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1674403200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "什么时候来个卡车,善良的送我去异世界", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "A", - "topic_board_desc": "热门", - "status": 1, - "dynamic_id_str": "515066247810442308", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "972741830", - "bvid": "BV1Mp4y1b7vk" - }, - "card": "{\"aid\":972741830,\"attribute\":0,\"cid\":325740795,\"copyright\":1,\"ctime\":1618713447,\"desc\":\"我永远喜欢水原千鹤!\\n水原千鹤应援群:605563880\\n欢迎加入!\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":207,\"dynamic\":\"水原千鹤,生日快乐\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/972741830\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/613e6dcd59feaecf875092ae945834a362b37f6c.jpg\",\"mid\":350963773,\"name\":\"届不到_Zula\"},\"pic\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/archive\\/5e8a7e26b2b386626f3ddc54d1999ee3f1978888.jpg\",\"player_info\":null,\"pubdate\":1618761602,\"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\\/BV1Mp4y1b7vk\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1Mp4y1b7vk\",\"stat\":{\"aid\":972741830,\"coin\":58,\"danmaku\":15,\"dislike\":0,\"favorite\":29,\"his_rank\":0,\"like\":53,\"now_rank\":0,\"reply\":45,\"share\":15,\"view\":427},\"state\":0,\"tid\":24,\"title\":\"【2021水原千鹤生贺】此生能遇见你,真是太好了\",\"tname\":\"MAD·AMV\",\"up_from_v2\":19,\"videos\":2}", - "extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"bottom\":{},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\",\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 170379, - "topic_name": "生贺", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 4145, - "topic_name": "恋爱", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 391, - "topic_name": "AMV", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 281, - "topic_name": "MAD", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 7382791, - "topic_name": "水原千鹤", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/43055" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "tags": [ - { - "tag_type": 5, - "icon": "https://i0.hdslb.com/bfs/album/969bfb96b77f12acb2e36068fa03de3b418b2219.png", - "text": "领取专属形象赢大奖", - "link": "https://www.bilibili.com/blackboard/activity-K4Yvj51WtJ.html", - "sub_module": "diversion", - "show_action": 0 - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131534120, - "acl": 0, - "view": 196445, - "repost": 2, - "comment": 54, - "like": 1048, - "is_liked": 0, - "dynamic_id": 517602000793534062, - "timestamp": 1619352007, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517602000793534062", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131534120" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 作品推荐】兽人控狂喜!《#不莱梅乐队#》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc28880\\n[思考]大家小时候看过一篇叫做《不莱梅的音乐家》的格林童话吗?\\n[惊喜]只不过在这部#欧漫#里,这四个动物的目的不是赶走强盗,而是追逐梦想、爱情、自由、正义。在这个充满混沌的世界里,他们将用音乐的力量改写自己和他人的命运。 \",\"id\":131534120,\"is_fav\":0,\"pictures\":[{\"img_height\":1922,\"img_size\":1163.9267578125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/f5a82f03475eed52973b3cecb2b5180b090cc5f0.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":757,\"img_size\":273.130859375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/ca4055c7b9c246e7e922190102d5c87cd4dbcea8.png\",\"img_tags\":null,\"img_width\":436},{\"img_height\":1067,\"img_size\":640.29296875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/9de3ece4d374d07fb7b192db4520779a477cdf97.png\",\"img_tags\":null,\"img_width\":542},{\"img_height\":972,\"img_size\":374.8349609375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/cac12d548a3686335d3154cce672f1823ca92517.png\",\"img_tags\":null,\"img_width\":487}],\"pictures_count\":4,\"reply\":54,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619352007},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"cc\":{\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 15149492, - "topic_name": "不莱梅乐队", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 507003, - "topic_name": "欧漫", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[思考]", - "id": 1941, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[思考]", - "url": "https://i0.hdslb.com/bfs/emote/cfa9b7e89e4bfe04bbcd34ccb1b0df37f4fa905c.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - }, - { - "emoji_name": "[惊喜]", - "id": 19, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[惊喜]", - "url": "https://i0.hdslb.com/bfs/emote/0afecaf3a3499479af946f29749e1a6c285b6f65.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 240911350, - "type": 1, - "rid": 517516389208371264, - "acl": 0, - "view": 237, - "repost": 0, - "comment": 0, - "like": 2, - "is_liked": 0, - "dynamic_id": 517516389214088892, - "timestamp": 1619332074, - "pre_dy_id": 517479366596833835, - "orig_dy_id": 517479366596833835, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 240911350, - "uname": "Kekkai-piano", - "face": "https://i1.hdslb.com/bfs/face/f9b56adf0e9fb16d556fb5af93fc8367a255e4af.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1658851200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 2511, - "name": "初音未来13周年", - "image": "https://i1.hdslb.com/bfs/garb/item/4f8f3f1f2d47f0dad84f66aa57acd4409ea46361.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/garb/item/fe0b83b53e2342b16646f6e7a9370d8a867decdb.webp", - "image_enhance_frame": "https://i1.hdslb.com/bfs/garb/item/127c507ec8448be30cf5f79500ecc6ef2fd32f2c.png" - }, - "rank": "10000", - "sign": "看动画片的88键音游爱好者 \n专业人士轻喷 \n正在寻找缺失之物 \n超天変地異みたいな狂騒にも慣れて\n高三备考ing,莫要取关(bushi)", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517516389214088892", - "pre_dy_id_str": "517479366596833835", - "orig_dy_id_str": "517479366596833835", - "rid_str": "517516389208371264", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131479206, - "acl": 1024, - "view": 1379492, - "repost": 11233, - "dynamic_id": 517479366596833835, - "timestamp": 1619323454, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517479366596833835", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131479206" - } - }, - "card": "{ \"user\": { \"uid\": 240911350, \"uname\": \"Kekkai-piano\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/f9b56adf0e9fb16d556fb5af93fc8367a255e4af.jpg\" }, \"item\": { \"rp_id\": 517516389208371264, \"uid\": 240911350, \"content\": \"分母报道[doge]#哔哩哔哩漫画#,#AISHA#\", \"orig_dy_id\": 517479366596833835, \"pre_dy_id\": 517479366596833835, \"timestamp\": 1619332074, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\",\\\\\\\"length\\\\\\\":0,\\\\\\\"location\\\\\\\":0,\\\\\\\"type\\\\\\\":2},{\\\\\\\"location\\\\\\\":19,\\\\\\\"type\\\\\\\":1,\\\\\\\"length\\\\\\\":8,\\\\\\\"data\\\\\\\":\\\\\\\"1425490690\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 关+转,抽3位幸运小伙伴送@漫画家法吉特 【《逆光》画集作者签名版】~\\\\n #哔哩哔哩漫画#重磅安利之《#AISHA#》\\\\n当当当当!剧情党福音~\\\\n答题就有机会赢得礼物?还有法吉特太太亲签精美画集?\\\\n活动入口→https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/blackboard\\\\\\/topic\\\\\\/activity-oPISh007wv.html\\\\n\\\\n你以为这样就结束了了吗?\\\\nNONONO~\\\\n法吉特老师首次出版个人作品集《逆光》~商城4月25日0点首发开售!\\\\n有法吉特老师签名版掉落哦!随书额外附赠专属书签特典!\\\\n活动指路:哔哩哔哩漫画APP-我的-商城-banner\\\",\\\"id\\\":131479206,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":782,\\\"img_size\\\":1097.2451171875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/8965a784f77e2545f4f2f168df4f417ed3ace818.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":750}],\\\"pictures_count\\\":1,\\\"reply\\\":573,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619323454},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":61398}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2},{\\\"data\\\":\\\"1425490690\\\",\\\"length\\\":8,\\\"location\\\":19,\\\"type\\\":1}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":61398},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[doge]", - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1192711092, - "type": 1, - "rid": 517505230885402892, - "acl": 0, - "view": 2, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517505230886905525, - "timestamp": 1619329476, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1192711092, - "uname": "会发光的偶恰", - "face": "https://i0.hdslb.com/bfs/face/b85a508793bd96deec61e2491d60e68f10378395.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 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517505230886905525", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517505230885402892", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1951519, - "repost": 16543, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 1192711092, \"uname\": \"会发光的偶恰\", \"face\": \"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/b85a508793bd96deec61e2491d60e68f10378395.jpg\" }, \"item\": { \"rp_id\": 517505230885402892, \"uid\": 1192711092, \"content\": \"我最喜欢这个了,我也想要#哔哩哔哩漫画#\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619329476, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1003,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1365116, - "type": 1, - "rid": 517503525787575777, - "acl": 0, - "view": 1, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517503525779637979, - "timestamp": 1619329079, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1365116, - "uname": "濑户的海参", - "face": "https://i2.hdslb.com/bfs/face/8426c61be9c3ccd2296d080a54691c3bed5f2f9f.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": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517503525779637979", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517503525787575777", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1951519, - "repost": 16543, - "comment": 1003, - "like": 6950, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 1365116, \"uname\": \"濑户的海参\", \"face\": \"https:\\/\\/i2.hdslb.com\\/bfs\\/face\\/8426c61be9c3ccd2296d080a54691c3bed5f2f9f.jpg\" }, \"item\": { \"rp_id\": 517503525787575777, \"uid\": 1365116, \"content\": \"嗯哼#哔哩哔哩漫画#\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619329079, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1003,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131489076, - "acl": 0, - "view": 1385233, - "repost": 31, - "comment": 23, - "like": 3737, - "is_liked": 0, - "dynamic_id": 517501494260096644, - "timestamp": 1619328606, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517501494260096644", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131489076" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 限免活动+周边路透】✿ヽ(°▽°)ノ✿ \\n《#天宝伏妖录#》漫画第二卷将在【4月25日至5月2日】限时免费1周[打call][打call],感谢大家一直以来的支持[W-哈哈]!精彩剧情,不容错过!\\n同时之前《#天宝伏妖录#》第三卷活动售卖的周边近期在准备开补款啦~\\n小伙伴们先看看限定周边的实物图透叭(P1-P8)[打call]! 新卷也一直在筹备中,新卷封面同时奉上(P9)! \\n【追漫传送】:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc27592 \",\"id\":131489076,\"is_fav\":0,\"pictures\":[{\"img_height\":5046,\"img_size\":16654.3876953125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/6bcd7a96fe7bc616a7ea334319b58a3ab451cda2.jpg\",\"img_tags\":null,\"img_width\":6728},{\"img_height\":5046,\"img_size\":15713.2236328125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/41e9e8ed2f181ce84adbb1175dcfc47b6b32d270.jpg\",\"img_tags\":null,\"img_width\":6728},{\"img_height\":5136,\"img_size\":20368.2822265625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/81936f0dacc1fa63264d18cdba738b3582562cdd.jpg\",\"img_tags\":null,\"img_width\":7705},{\"img_height\":4427,\"img_size\":15909.310546875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/5116024add807a033cf63395683c5b6ade28fbcf.jpg\",\"img_tags\":null,\"img_width\":6641},{\"img_height\":5136,\"img_size\":20431.3994140625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/61155f325c5a862b0dcdb1dacc95f252ac768a4e.jpg\",\"img_tags\":null,\"img_width\":7705},{\"img_height\":5261,\"img_size\":19335.5029296875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/6f5a7241d8f0093952edf16195b4d0aecfa2c6cd.jpg\",\"img_tags\":null,\"img_width\":7014},{\"img_height\":1408,\"img_size\":4784.3037109375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/0350c791822a980d72450da226b1d61fa7b68c8f.png\",\"img_tags\":null,\"img_width\":1878},{\"img_height\":1408,\"img_size\":4614.8251953125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/271187137e9973d07f01763a9a41b9b7f25f68fd.png\",\"img_tags\":null,\"img_width\":1878},{\"img_height\":3508,\"img_size\":1452.4482421875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/f818bb197c7cc914ed4c921a6f7488f87ca15faf.jpg\",\"img_tags\":null,\"img_width\":2480}],\"pictures_count\":9,\"reply\":23,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619328606},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3812656, - "topic_name": "天宝伏妖录", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/62601" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[W-哈哈]", - "id": 3045, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[W-哈哈]", - "url": "https://i0.hdslb.com/bfs/emote/83d527303c8f62f494e6971c48836487e7d87b1b.png", - "meta": { - "size": 1 - }, - "mtime": 1608785082 - }, - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "https://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1902548007, - "type": 2, - "rid": 131480564, - "acl": 0, - "view": 1056, - "repost": 0, - "comment": 0, - "like": 16, - "is_liked": 0, - "dynamic_id": 517482725259184156, - "timestamp": 1619324236, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 1902548007, - "uname": "BV社", - "face": "https://i0.hdslb.com/bfs/face/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "BV社官方账号" - } - }, - "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": "Vomic,让你爱的漫画更动听", - "level_info": { - "current_level": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517482725259184156", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131480564" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"location\\\":122,\\\"type\\\":1,\\\"length\\\":8,\\\"data\\\":\\\"326499679\\\"},{\\\"location\\\":133,\\\"type\\\":1,\\\"length\\\":5,\\\"data\\\":\\\"1902548007\\\"},{\\\"location\\\":141,\\\"type\\\":1,\\\"length\\\":9,\\\"data\\\":\\\"386135764\\\"},{\\\"location\\\":153,\\\"type\\\":1,\\\"length\\\":6,\\\"data\\\":\\\"1740792\\\"}]\",\"category\":\"daily\",\"description\":\"#哔哩哔哩漫画#独家\\n“女鬼”找上门,却是为了救人?\\n“养尸地?那是啥?里面有宝贝嘛?”\\n“有凶尸。”\\n哟,父子俩这是什么情况?\\n惊奇 #Vomic##幽冥诡匠#第五集正式上线!每周日更新!更多精彩,小剧场,花絮,尽在哔哩哔哩漫画APP\\n出品:@哔哩哔哩漫画\\n策划:@BV社\\n制作:@回声漫响工作室\\n录制:@音熊联萌 \",\"id\":131480564,\"is_fav\":0,\"pictures\":[{\"img_height\":2400,\"img_size\":2852.115234375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/cb7632509c8cb8a7703f5ab289320b26a07ec62e.jpg\",\"img_tags\":null,\"img_width\":2400}],\"pictures_count\":1,\"reply\":0,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619324236},\"user\":{\"head_url\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg\",\"name\":\"BV社\",\"uid\":1902548007,\"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}}}", - "extend_json": "{\"ctrl\":[{\"data\":\"326499679\",\"length\":8,\"location\":122,\"type\":1},{\"data\":\"1902548007\",\"length\":5,\"location\":133,\"type\":1},{\"data\":\"386135764\",\"length\":9,\"location\":141,\"type\":1},{\"data\":\"1740792\",\"length\":6,\"location\":153,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.dynamic.web\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3208432, - "topic_name": "Vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106426" - }, - { - "topic_id": 7128092, - "topic_name": "幽冥诡匠", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/42527" - }, - { - "topic_id": 37542, - "topic_name": "VOMIC", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106283" - }, - { - "topic_id": 8972604, - "topic_name": "vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106766" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 255495142, - "type": 1, - "rid": 517480856950088884, - "acl": 0, - "view": 331, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517480856947349138, - "timestamp": 1619323801, - "pre_dy_id": 517479366596833835, - "orig_dy_id": 517479366596833835, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 255495142, - "uname": "坐怀不乱登徒子", - "face": "https://i1.hdslb.com/bfs/face/fa18d118f6c58da704400909743fb895c4c47627.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1626451200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 204, - "name": "至高守护", - "image": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517480856947349138", - "pre_dy_id_str": "517479366596833835", - "orig_dy_id_str": "517479366596833835", - "rid_str": "517480856950088884", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131479206, - "acl": 1024, - "view": 1379492, - "repost": 11233, - "comment": 573, - "like": 6337, - "is_liked": 0, - "dynamic_id": 517479366596833835, - "timestamp": 1619323454, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517479366596833835", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131479206" - } - }, - "card": "{ \"user\": { \"uid\": 255495142, \"uname\": \"坐怀不乱登徒子\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/fa18d118f6c58da704400909743fb895c4c47627.jpg\" }, \"item\": { \"rp_id\": 517480856950088884, \"uid\": 255495142, \"content\": \"[doge]#哔哩哔哩漫画#,#AISHA#\", \"orig_dy_id\": 517479366596833835, \"pre_dy_id\": 517479366596833835, \"timestamp\": 1619323801, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\",\\\\\\\"length\\\\\\\":0,\\\\\\\"location\\\\\\\":0,\\\\\\\"type\\\\\\\":2},{\\\\\\\"location\\\\\\\":19,\\\\\\\"type\\\\\\\":1,\\\\\\\"length\\\\\\\":8,\\\\\\\"data\\\\\\\":\\\\\\\"1425490690\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 关+转,抽3位幸运小伙伴送@漫画家法吉特 【《逆光》画集作者签名版】~\\\\n #哔哩哔哩漫画#重磅安利之《#AISHA#》\\\\n当当当当!剧情党福音~\\\\n答题就有机会赢得礼物?还有法吉特太太亲签精美画集?\\\\n活动入口→https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/blackboard\\\\\\/topic\\\\\\/activity-oPISh007wv.html\\\\n\\\\n你以为这样就结束了了吗?\\\\nNONONO~\\\\n法吉特老师首次出版个人作品集《逆光》~商城4月25日0点首发开售!\\\\n有法吉特老师签名版掉落哦!随书额外附赠专属书签特典!\\\\n活动指路:哔哩哔哩漫画APP-我的-商城-banner\\\",\\\"id\\\":131479206,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":782,\\\"img_size\\\":1097.2451171875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/8965a784f77e2545f4f2f168df4f417ed3ace818.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":750}],\\\"pictures_count\\\":1,\\\"reply\\\":573,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619323454},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":61398}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2},{\\\"data\\\":\\\"1425490690\\\",\\\"length\\\":8,\\\"location\\\":19,\\\"type\\\":1}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":61398},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[doge]", - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131479206, - "acl": 1024, - "view": 1379492, - "repost": 11233, - "comment": 573, - "like": 6337, - "is_liked": 0, - "dynamic_id": 517479366596833835, - "timestamp": 1619323454, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517479366596833835", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131479206" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2},{\\\"location\\\":19,\\\"type\\\":1,\\\"length\\\":8,\\\"data\\\":\\\"1425490690\\\"}]\",\"category\":\"daily\",\"description\":\"​互动抽奖 关+转,抽3位幸运小伙伴送@漫画家法吉特 【《逆光》画集作者签名版】~\\n #哔哩哔哩漫画#重磅安利之《#AISHA#》\\n当当当当!剧情党福音~\\n答题就有机会赢得礼物?还有法吉特太太亲签精美画集?\\n活动入口→https:\\/\\/www.bilibili.com\\/blackboard\\/topic\\/activity-oPISh007wv.html\\n\\n你以为这样就结束了了吗?\\nNONONO~\\n法吉特老师首次出版个人作品集《逆光》~商城4月25日0点首发开售!\\n有法吉特老师签名版掉落哦!随书额外附赠专属书签特典!\\n活动指路:哔哩哔哩漫画APP-我的-商城-banner\",\"id\":131479206,\"is_fav\":0,\"pictures\":[{\"img_height\":782,\"img_size\":1097.2451171875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/8965a784f77e2545f4f2f168df4f417ed3ace818.png\",\"img_tags\":null,\"img_width\":750}],\"pictures_count\":1,\"reply\":573,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619323454},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extension": { - "lott": "{\"lottery_id\":61398}" - }, - "extend_json": "{\"ctrl\":[{\"data\":\"5\",\"length\":0,\"location\":0,\"type\":2},{\"data\":\"1425490690\",\"length\":8,\"location\":19,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.dynamic.web\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"cc\":{\"vf\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"lott\":{\"lottery_id\":61398},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 271873076, - "type": 2, - "rid": 131468623, - "acl": 0, - "view": 22, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517452016241823721, - "timestamp": 1619317086, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 271873076, - "uname": "爱乐果iLEGUO", - "face": "https://i2.hdslb.com/bfs/face/fb79ac0f6de92c8ecc7d4cd1e958d19376c85fe8.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": "龙俦纪+羞耻侠+妖怪IDOLS+偶像饲养手册+闪亮的家+神奇少年团+第8界+爱果系列+爱次元!研究社", - "level_info": { - "current_level": 4 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517452016241823721", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131468623" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"《龙俦纪》第99话4月25日更新!\\n高振采药遇险,竟然从悬崖上坠入万丈深渊?!!\\n苏郃首次展现能力,苏千屹又从苏郃身上发现了什么秘密?\\n《龙俦纪》正在好评连载中,逢“五”更新,欢迎追漫!\\n#哔哩哔哩漫画# https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc26014 \\n#宝藏漫画##爱乐果##漫画##二次元##古风##玄幻##二次元条漫# \",\"id\":131468623,\"is_fav\":0,\"pictures\":[{\"img_height\":720,\"img_size\":297.19140625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/54e4f9e0c339f42484fcbe42cb7e7f69be4b87aa.jpg\",\"img_tags\":null,\"img_width\":1280}],\"pictures_count\":1,\"reply\":0,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619317086},\"user\":{\"head_url\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/face\\/fb79ac0f6de92c8ecc7d4cd1e958d19376c85fe8.jpg\",\"name\":\"爱乐果iLEGUO\",\"uid\":271873076,\"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}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 10182306, - "topic_name": "宝藏漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 9628017, - "topic_name": "爱乐果", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1184, - "topic_name": "漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1907, - "topic_name": "二次元", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/7694" - }, - { - "topic_id": 8227, - "topic_name": "古风", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 62935, - "topic_name": "玄幻", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 12532729, - "topic_name": "二次元条漫", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1677019, - "type": 1, - "rid": 517443572335742626, - "acl": 0, - "view": 3, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517443572332941328, - "timestamp": 1619315120, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1677019, - "uname": "逗妇卤", - "face": "https://i1.hdslb.com/bfs/face/15a8f5d8c93f8f30bda71f192b92cfde2c76a1c7.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1637510400000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517443572332941328", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517443572335742626", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1951519, - "repost": 16543, - "comment": 1003, - "like": 6950, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 1677019, \"uname\": \"逗妇卤\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/15a8f5d8c93f8f30bda71f192b92cfde2c76a1c7.jpg\" }, \"item\": { \"rp_id\": 517443572335742626, \"uid\": 1677019, \"content\": \"【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\/玩偶等福利好礼相送!\\n[干杯] 快来哔哩哔哩漫画追漫吧~\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619315120, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1003,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 324540735, - "type": 8, - "rid": 672631542, - "acl": 0, - "view": 29, - "repost": 0, - "like": 1, - "is_liked": 0, - "dynamic_id": 517311278755293659, - "timestamp": 1619284318, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 324540735, - "uname": "文雯兄", - "face": "https://i0.hdslb.com/bfs/face/8000d5ad4652f8bf9074781a108eb54243a06889.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1613491200000, - "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": 4 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517311278755293659", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "672631542", - "bvid": "BV1dU4y1h78A" - }, - "card": "{\"aid\":672631542,\"attribute\":0,\"cid\":328783995,\"copyright\":1,\"ctime\":1619284318,\"desc\":\"本漫画由哔哩哔哩漫画出品,本人配音,谢谢大家的支持。\",\"dimension\":{\"height\":1920,\"rotate\":0,\"width\":864},\"duration\":191,\"dynamic\":\"\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/672631542\\/?page=1&player_preload=null&player_width=864&player_height=1920&player_rotate=0\",\"mission_id\":18978,\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/8000d5ad4652f8bf9074781a108eb54243a06889.jpg\",\"mid\":324540735,\"name\":\"文雯兄\"},\"pic\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/archive\\/b2d2dc3a909696ea1db3fbfeeb7ab42dc37ced87.jpg\",\"player_info\":null,\"pubdate\":1619284318,\"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\\/BV1dU4y1h78A\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1dU4y1h78A\",\"stat\":{\"aid\":672631542,\"coin\":0,\"danmaku\":0,\"dislike\":0,\"favorite\":0,\"his_rank\":0,\"like\":1,\"now_rank\":0,\"reply\":0,\"share\":0,\"view\":10},\"state\":0,\"tid\":138,\"title\":\"怎么办,我穿越成最弱小野怪了(三十九)【关于我不当人的这件事】\",\"tname\":\"搞笑\",\"up_from_v2\":8,\"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": 19254944, - "topic_name": "火力配音王-配音剧场", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/108663" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3844, - "topic_name": "穿越", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1833, - "topic_name": "搞笑", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1217, - "topic_name": "自制", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1184, - "topic_name": "漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 326499679, - "type": 8, - "rid": 972719486, - "acl": 0, - "view": 2745390, - "repost": 4, - "like": 5879, - "is_liked": 0, - "dynamic_id": 517261895213635612, - "timestamp": 1619272820, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "十年大会员", - "label_theme": "ten_annual_vip", - "text_color": "#FFFFFF",- - "orig_dy_id_str": "0", - "rid_str": "972719486", - "bvid": "BV1Gp4y1b7ZB" - }, - "card": "{\"aid\":972719486,\"attribute\":0,\"cid\":328058863,\"copyright\":1,\"ctime\":1619272820,\"desc\":\"#反派初始化# #Vomic#\\n圈圈叉叉,桃树开花,花瓣落下,生出新芽。\\n@哔哩哔哩漫画 出品、@BV社 策划、 @Antler_墨柚 原作、@叉叉叉叉叉口叉 主笔、@补天研究所 制作、@音熊联萌 录制、Vomic《反派初始化》第二集正式上线!\\n哔哩哔哩漫画独家播放,每周六更新!\\n还有小剧场,花絮不定时掉落、敬请期待~\\n\\n出品:@哔哩哔哩漫画\\n策划:@BV社\\n制作:@补天研究所\\n录制:@音熊联萌\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":62,\"dynamic\":\"#哔哩哔哩漫画#独家,#Vomic#2021年4月3日起每周六更新!更多精彩,小剧场,花絮,尽在哔哩哔哩漫画APP\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/972719486\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"mid\":326499679,\"name\":\"哔哩哔哩漫画\"},\"pic\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/archive\\/3c8a720b809153f95b1134acb991011eb79dc80b.jpg\",\"player_info\":null,\"pubdate\":1619272819,\"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},\"short_link\":\"https:\\/\\/b23.tv\\/BV1Gp4y1b7ZB\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1Gp4y1b7ZB\",\"stat\":{\"aid\":972719486,\"coin\":115,\"danmaku\":4,\"dislike\":0,\"favorite\":43,\"his_rank\":0,\"like\":5879,\"now_rank\":0,\"reply\":36,\"share\":145,\"view\":31840},\"state\":0,\"tid\":27,\"title\":\"【Vomic】滴——《反派初始化》第二集精彩片段!\",\"tname\":\"综合\",\"videos\":1}", - "extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\",\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3208432, - "topic_name": "Vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106426" - }, - { - "topic_id": 37542, - "topic_name": "VOMIC", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106283" - }, - { - "topic_id": 8972604, - "topic_name": "vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106766" - }, - { - "topic_id": 210754, - "topic_name": "夏磊", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 10526139, - "topic_name": "反派初始化", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1322133, - "topic_name": "赵路", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 423864, - "topic_name": "音熊联萌", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/17389" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 255495142, - "type": 1, - "rid": 517243774753706830, - "acl": 0, - "view": 8, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517243774755903256, - "timestamp": 1619268601, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 255495142, - "uname": "坐怀不乱登徒子", - "face": "https://i1.hdslb.com/bfs/face/fa18d118f6c58da704400909743fb895c4c47627.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1626451200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 204, - "name": "至高守护", - "image": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517243774755903256", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517243774753706830", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1951519, - "repost": 16543, - "comment": 1003, - "like": 6950, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 255495142, \"uname\": \"坐怀不乱登徒子\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/fa18d118f6c58da704400909743fb895c4c47627.jpg\" }, \"item\": { \"rp_id\": 517243774753706830, \"uid\": 255495142, \"content\": \"冲冲冲#哔哩哔哩漫画#\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619268601, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1003,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 335270851, - "type": 1, - "rid": 517243658786443535, - "acl": 0, - "view": 24, - "repost": 0, - "comment": 0, - "like": 1, - "is_liked": 0, - "dynamic_id": 517243658790736702, - "timestamp": 1619268574, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 335270851, - "uname": "符号门", - "face": "https://i1.hdslb.com/bfs/face/67371311c9e047543a70c1d41e7a03c3854f2981.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1647014400000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 4 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517243658790736702", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517243658786443535", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1951519, - "repost": 16543, - "comment": 1003, - "like": 6950, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 335270851, \"uname\": \"符号门\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/67371311c9e047543a70c1d41e7a03c3854f2981.jpg\" }, \"item\": { \"rp_id\": 517243658786443535, \"uid\": 335270851, \"content\": \"#哔哩哔哩漫画#[打call][打call][打call]\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619268574, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1003,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "https://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1951519, - "repost": 16543, - "comment": 1003, - "like": 6950, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"type\\\":2,\\\"location\\\":0,\\\"length\\\":0,\\\"data\\\":\\\"5\\\"}]\",\"category\":\"daily\",\"description\":\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\/玩偶等福利好礼相送!\\n[干杯] 快来哔哩哔哩漫画追漫吧~\",\"id\":131403515,\"is_fav\":0,\"pictures\":[{\"img_height\":1357,\"img_size\":1759.1650390625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":1238,\"img_size\":832.51953125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":2193,\"img_size\":3424.060546875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":800,\"img_size\":166.1552734375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\",\"img_tags\":null,\"img_width\":800}],\"pictures_count\":4,\"reply\":1003,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619268097},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extension": { - "lott": "{\"callbackId\":10,\"lottery_id\":61382,\"lottery_time\":1620504000,\"title\":\"互动抽奖\"}" - }, - "extend_json": "{\"ctrl\":[{\"data\":\"5\",\"length\":0,\"location\":0,\"type\":2}],\"from\":{\"emoji_type\":1,\"from\":\"\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"cc\":{\"vf\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"lott\":{\"callbackId\":10,\"lottery_id\":61382,\"lottery_time\":1620504000,\"title\":\"互动抽奖\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131384529, - "acl": 0, - "view": 1599049, - "repost": 5, - "comment": 63, - "like": 4614, - "is_liked": 0, - "dynamic_id": 517215462328123502, - "timestamp": 1619262009, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517215462328123502", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131384529" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 近期更新】(`・ω・´)\\nP1《#辉夜大小姐想让我告白# ~天才们的恋爱头脑战~ 》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc26009\\nP2《#入间同学入魔了#!》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc27189\\nP3《催眠麦克风-Division Rap Battle- side D.H&B.A.T》\\nP4《他和她的魔法契约》\\nP5《瓦尼塔斯的手记》\\nP6《见面5秒开始战斗》\\nP7《魔气来袭》\\nP8《尖帽子的魔法工坊》 \",\"id\":131384529,\"is_fav\":0,\"pictures\":[{\"img_height\":2920,\"img_size\":1993.103515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/24a3e5d04e8ad86fcdae48e6ee88f90a0351f82d.jpg\",\"img_tags\":null,\"img_width\":2000},{\"img_height\":2872,\"img_size\":2453.1513671875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d512d771dd3f91b54733f104e5de7e38d61ef56c.jpg\",\"img_tags\":null,\"img_width\":2000},{\"img_height\":2806,\"img_size\":4156.140625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/119fe01717120eb9c8c04d2c48a22298c8f88d17.jpg\",\"img_tags\":null,\"img_width\":2000},{\"img_height\":1147,\"img_size\":152.23046875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d2fb2a6d2229a03ea967ee2182faefd67b0811fd.jpg\",\"img_tags\":null,\"img_width\":800},{\"img_height\":2637,\"img_size\":10432.2978515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/e8966e96d34938474eebfcf60f38e14932e09be4.jpg\",\"img_tags\":null,\"img_width\":3600},{\"img_height\":2268,\"img_size\":6175.017578125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/4ed99d7329108e9e585db49da63a56bdcf7e8670.jpg\",\"img_tags\":null,\"img_width\":3200},{\"img_height\":1461,\"img_size\":283.990234375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/a8f37ec732103b1912fd3448d06d610cae5486df.jpg\",\"img_tags\":null,\"img_width\":800},{\"img_height\":2871,\"img_size\":3639.478515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/fe8e58fd4f7c7063f880f064b3366e758dbfd7ee.jpg\",\"img_tags\":null,\"img_width\":2000}],\"pictures_count\":8,\"reply\":63,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619262009},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 4386628, - "topic_name": "辉夜大小姐想让我告白", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 8724199, - "topic_name": "入间同学入魔了", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/69330" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - } - ], - "offset": "517215462328123502", - "is_drawer_topic": 0, - "founder_uid": 0, - "_gt_": 0 - } -} -``` - -
- -## 获取历史动态列表 -> https://api.vc.bilibili.com/topic_svr/v1/topic_svr/topic_history - - *请求方式:GET* - - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ---------- | ------ | -------- | -| topic_name | str | 话题名称 | 必要(可选) | topic_id与topic_name任选一个 | -| topic_id | num | 话题id | 必要(可选) | topic_id与topic_name任选一个 | -| offset_dynamic_id | num | 偏移值 | 必要| 可用于偏移显示的动态列表(为`0`时获取最新动态) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 信息本体 | | -| message | str | 错误信息 | 默认为空 | -| msg | num | 空 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ---------- | ------------ | -| attentions | obj | 当前登录账户关注列表(仅在传递了登录信息时出现) | | -| cards | array | 动态列表 | | -| has_more | num | 当前话题是否有额外的动态 | 0:无额外动态
1:有额外动态 | -| offset | str | 接下来获取列表时的偏移值 | 一般为当前获取的话题列表下最后一个动态id | -| \_gt\_ | num | 0 | 作用尚不明确 | - -`data`中的`cards`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 第1条动态卡片 | | -| n | obj | 第(n+1)条动态卡片 | | -| …… | obj | …… | …… | - -`data`中的`cards`数组中的对象: - -基本同「[获取特定动态卡片信息](get_dynamic_detail.md)」中的data对象 - -**示例:** - -获取话题`哔哩哔哩漫画`(话题id`7539944`)的当前动态列表 - -topic_name方式: -```shell -curl -G 'https://api.vc.bilibili.com/topic_svr/v1/topic_svr/topic_history' \ ---data-urlencode 'topic_name=哔哩哔哩漫画&offset_dynamic_id=0' -``` -topic_id方式: -```shell -curl -G 'https://api.vc.bilibili.com/topic_svr/v1/topic_svr/topic_history' \ ---data-urlencode 'topic_id=7539944&offset_dynamic_id=0' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "has_more": 1, - "cards": [ - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131534120, - "acl": 0, - "view": 555573, - "repost": 9, - "comment": 90, - "like": 2478, - "is_liked": 0, - "dynamic_id": 517602000793534062, - "timestamp": 1619352007, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517602000793534062", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131534120" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 作品推荐】兽人控狂喜!《#不莱梅乐队#》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc28880\\n[思考]大家小时候看过一篇叫做《不莱梅的音乐家》的格林童话吗?\\n[惊喜]只不过在这部#欧漫#里,这四个动物的目的不是赶走强盗,而是追逐梦想、爱情、自由、正义。在这个充满混沌的世界里,他们将用音乐的力量改写自己和他人的命运。 \",\"id\":131534120,\"is_fav\":0,\"pictures\":[{\"img_height\":1922,\"img_size\":1163.9267578125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/f5a82f03475eed52973b3cecb2b5180b090cc5f0.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":757,\"img_size\":273.130859375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/ca4055c7b9c246e7e922190102d5c87cd4dbcea8.png\",\"img_tags\":null,\"img_width\":436},{\"img_height\":1067,\"img_size\":640.29296875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/9de3ece4d374d07fb7b192db4520779a477cdf97.png\",\"img_tags\":null,\"img_width\":542},{\"img_height\":972,\"img_size\":374.8349609375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/cac12d548a3686335d3154cce672f1823ca92517.png\",\"img_tags\":null,\"img_width\":487}],\"pictures_count\":4,\"reply\":90,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619352007},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"cc\":{\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 15149492, - "topic_name": "不莱梅乐队", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 507003, - "topic_name": "欧漫", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[思考]", - "id": 1941, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[思考]", - "url": "https://i0.hdslb.com/bfs/emote/cfa9b7e89e4bfe04bbcd34ccb1b0df37f4fa905c.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - }, - { - "emoji_name": "[惊喜]", - "id": 19, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[惊喜]", - "url": "https://i0.hdslb.com/bfs/emote/0afecaf3a3499479af946f29749e1a6c285b6f65.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 240911350, - "type": 1, - "rid": 517516389208371264, - "acl": 0, - "view": 251, - "repost": 0, - "comment": 0, - "like": 2, - "is_liked": 0, - "dynamic_id": 517516389214088892, - "timestamp": 1619332074, - "pre_dy_id": 517479366596833835, - "orig_dy_id": 517479366596833835, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 240911350, - "uname": "Kekkai-piano", - "face": "https://i1.hdslb.com/bfs/face/f9b56adf0e9fb16d556fb5af93fc8367a255e4af.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1658851200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 2511, - "name": "初音未来13周年", - "image": "https://i1.hdslb.com/bfs/garb/item/4f8f3f1f2d47f0dad84f66aa57acd4409ea46361.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/garb/item/fe0b83b53e2342b16646f6e7a9370d8a867decdb.webp", - "image_enhance_frame": "https://i1.hdslb.com/bfs/garb/item/127c507ec8448be30cf5f79500ecc6ef2fd32f2c.png" - }, - "rank": "10000", - "sign": "看动画片的88键音游爱好者 \n专业人士轻喷 \n正在寻找缺失之物 \n超天変地異みたいな狂騒にも慣れて\n高三备考ing,莫要取关(bushi)", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517516389214088892", - "pre_dy_id_str": "517479366596833835", - "orig_dy_id_str": "517479366596833835", - "rid_str": "517516389208371264", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131479206, - "acl": 1024, - "view": 1412747, - "repost": 11488, - "dynamic_id": 517479366596833835, - "timestamp": 1619323454, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517479366596833835", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131479206" - } - }, - "card": "{ \"user\": { \"uid\": 240911350, \"uname\": \"Kekkai-piano\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/f9b56adf0e9fb16d556fb5af93fc8367a255e4af.jpg\" }, \"item\": { \"rp_id\": 517516389208371264, \"uid\": 240911350, \"content\": \"分母报道[doge]#哔哩哔哩漫画#,#AISHA#\", \"orig_dy_id\": 517479366596833835, \"pre_dy_id\": 517479366596833835, \"timestamp\": 1619332074, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\",\\\\\\\"length\\\\\\\":0,\\\\\\\"location\\\\\\\":0,\\\\\\\"type\\\\\\\":2},{\\\\\\\"location\\\\\\\":19,\\\\\\\"type\\\\\\\":1,\\\\\\\"length\\\\\\\":8,\\\\\\\"data\\\\\\\":\\\\\\\"1425490690\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 关+转,抽3位幸运小伙伴送@漫画家法吉特 【《逆光》画集作者签名版】~\\\\n #哔哩哔哩漫画#重磅安利之《#AISHA#》\\\\n当当当当!剧情党福音~\\\\n答题就有机会赢得礼物?还有法吉特太太亲签精美画集?\\\\n活动入口→https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/blackboard\\\\\\/topic\\\\\\/activity-oPISh007wv.html\\\\n\\\\n你以为这样就结束了了吗?\\\\nNONONO~\\\\n法吉特老师首次出版个人作品集《逆光》~商城4月25日0点首发开售!\\\\n有法吉特老师签名版掉落哦!随书额外附赠专属书签特典!\\\\n活动指路:哔哩哔哩漫画APP-我的-商城-banner\\\",\\\"id\\\":131479206,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":782,\\\"img_size\\\":1097.2451171875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/8965a784f77e2545f4f2f168df4f417ed3ace818.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":750}],\\\"pictures_count\\\":1,\\\"reply\\\":599,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619323454},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":61398}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2},{\\\"data\\\":\\\"1425490690\\\",\\\"length\\\":8,\\\"location\\\":19,\\\"type\\\":1}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":61398},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[doge]", - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1192711092, - "type": 1, - "rid": 517505230885402892, - "acl": 0, - "view": 3, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517505230886905525, - "timestamp": 1619329476, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1192711092, - "uname": "会发光的偶恰", - "face": "https://i0.hdslb.com/bfs/face/b85a508793bd96deec61e2491d60e68f10378395.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 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517505230886905525", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517505230885402892", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1962092, - "repost": 16607, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 1192711092, \"uname\": \"会发光的偶恰\", \"face\": \"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/b85a508793bd96deec61e2491d60e68f10378395.jpg\" }, \"item\": { \"rp_id\": 517505230885402892, \"uid\": 1192711092, \"content\": \"我最喜欢这个了,我也想要#哔哩哔哩漫画#\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619329476, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1020,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1365116, - "type": 1, - "rid": 517503525787575777, - "acl": 0, - "view": 2, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517503525779637979, - "timestamp": 1619329079, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1365116, - "uname": "濑户的海参", - "face": "https://i2.hdslb.com/bfs/face/8426c61be9c3ccd2296d080a54691c3bed5f2f9f.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": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517503525779637979", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517503525787575777", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1962092, - "repost": 16607, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 1365116, \"uname\": \"濑户的海参\", \"face\": \"https:\\/\\/i2.hdslb.com\\/bfs\\/face\\/8426c61be9c3ccd2296d080a54691c3bed5f2f9f.jpg\" }, \"item\": { \"rp_id\": 517503525787575777, \"uid\": 1365116, \"content\": \"嗯哼#哔哩哔哩漫画#\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619329079, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1020,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131489076, - "acl": 0, - "view": 1429218, - "repost": 34, - "comment": 23, - "like": 3872, - "is_liked": 0, - "dynamic_id": 517501494260096644, - "timestamp": 1619328606, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517501494260096644", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131489076" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 限免活动+周边路透】✿ヽ(°▽°)ノ✿ \\n《#天宝伏妖录#》漫画第二卷将在【4月25日至5月2日】限时免费1周[打call][打call],感谢大家一直以来的支持[W-哈哈]!精彩剧情,不容错过!\\n同时之前《#天宝伏妖录#》第三卷活动售卖的周边近期在准备开补款啦~\\n小伙伴们先看看限定周边的实物图透叭(P1-P8)[打call]! 新卷也一直在筹备中,新卷封面同时奉上(P9)! \\n【追漫传送】:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc27592 \",\"id\":131489076,\"is_fav\":0,\"pictures\":[{\"img_height\":5046,\"img_size\":16654.3876953125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/6bcd7a96fe7bc616a7ea334319b58a3ab451cda2.jpg\",\"img_tags\":null,\"img_width\":6728},{\"img_height\":5046,\"img_size\":15713.2236328125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/41e9e8ed2f181ce84adbb1175dcfc47b6b32d270.jpg\",\"img_tags\":null,\"img_width\":6728},{\"img_height\":5136,\"img_size\":20368.2822265625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/81936f0dacc1fa63264d18cdba738b3582562cdd.jpg\",\"img_tags\":null,\"img_width\":7705},{\"img_height\":4427,\"img_size\":15909.310546875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/5116024add807a033cf63395683c5b6ade28fbcf.jpg\",\"img_tags\":null,\"img_width\":6641},{\"img_height\":5136,\"img_size\":20431.3994140625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/61155f325c5a862b0dcdb1dacc95f252ac768a4e.jpg\",\"img_tags\":null,\"img_width\":7705},{\"img_height\":5261,\"img_size\":19335.5029296875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/6f5a7241d8f0093952edf16195b4d0aecfa2c6cd.jpg\",\"img_tags\":null,\"img_width\":7014},{\"img_height\":1408,\"img_size\":4784.3037109375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/0350c791822a980d72450da226b1d61fa7b68c8f.png\",\"img_tags\":null,\"img_width\":1878},{\"img_height\":1408,\"img_size\":4614.8251953125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/271187137e9973d07f01763a9a41b9b7f25f68fd.png\",\"img_tags\":null,\"img_width\":1878},{\"img_height\":3508,\"img_size\":1452.4482421875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/f818bb197c7cc914ed4c921a6f7488f87ca15faf.jpg\",\"img_tags\":null,\"img_width\":2480}],\"pictures_count\":9,\"reply\":23,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619328606},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3812656, - "topic_name": "天宝伏妖录", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/62601" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[W-哈哈]", - "id": 3045, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[W-哈哈]", - "url": "https://i0.hdslb.com/bfs/emote/83d527303c8f62f494e6971c48836487e7d87b1b.png", - "meta": { - "size": 1 - }, - "mtime": 1608785082 - }, - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "https://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1902548007, - "type": 2, - "rid": 131480564, - "acl": 0, - "view": 1095, - "repost": 0, - "comment": 0, - "like": 16, - "is_liked": 0, - "dynamic_id": 517482725259184156, - "timestamp": 1619324236, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 1902548007, - "uname": "BV社", - "face": "https://i0.hdslb.com/bfs/face/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "BV社官方账号" - } - }, - "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": "Vomic,让你爱的漫画更动听", - "level_info": { - "current_level": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517482725259184156", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131480564" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"location\\\":122,\\\"type\\\":1,\\\"length\\\":8,\\\"data\\\":\\\"326499679\\\"},{\\\"location\\\":133,\\\"type\\\":1,\\\"length\\\":5,\\\"data\\\":\\\"1902548007\\\"},{\\\"location\\\":141,\\\"type\\\":1,\\\"length\\\":9,\\\"data\\\":\\\"386135764\\\"},{\\\"location\\\":153,\\\"type\\\":1,\\\"length\\\":6,\\\"data\\\":\\\"1740792\\\"}]\",\"category\":\"daily\",\"description\":\"#哔哩哔哩漫画#独家\\n“女鬼”找上门,却是为了救人?\\n“养尸地?那是啥?里面有宝贝嘛?”\\n“有凶尸。”\\n哟,父子俩这是什么情况?\\n惊奇 #Vomic##幽冥诡匠#第五集正式上线!每周日更新!更多精彩,小剧场,花絮,尽在哔哩哔哩漫画APP\\n出品:@哔哩哔哩漫画\\n策划:@BV社\\n制作:@回声漫响工作室\\n录制:@音熊联萌 \",\"id\":131480564,\"is_fav\":0,\"pictures\":[{\"img_height\":2400,\"img_size\":2852.115234375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/cb7632509c8cb8a7703f5ab289320b26a07ec62e.jpg\",\"img_tags\":null,\"img_width\":2400}],\"pictures_count\":1,\"reply\":0,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619324236},\"user\":{\"head_url\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg\",\"name\":\"BV社\",\"uid\":1902548007,\"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}}}", - "extend_json": "{\"ctrl\":[{\"data\":\"326499679\",\"length\":8,\"location\":122,\"type\":1},{\"data\":\"1902548007\",\"length\":5,\"location\":133,\"type\":1},{\"data\":\"386135764\",\"length\":9,\"location\":141,\"type\":1},{\"data\":\"1740792\",\"length\":6,\"location\":153,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.dynamic.web\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3208432, - "topic_name": "Vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106426" - }, - { - "topic_id": 7128092, - "topic_name": "幽冥诡匠", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/42527" - }, - { - "topic_id": 37542, - "topic_name": "VOMIC", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106283" - }, - { - "topic_id": 8972604, - "topic_name": "vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106766" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 255495142, - "type": 1, - "rid": 517480856950088884, - "acl": 0, - "view": 344, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517480856947349138, - "timestamp": 1619323801, - "pre_dy_id": 517479366596833835, - "orig_dy_id": 517479366596833835, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 255495142, - "uname": "坐怀不乱登徒子", - "face": "https://i1.hdslb.com/bfs/face/fa18d118f6c58da704400909743fb895c4c47627.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1626451200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 204, - "name": "至高守护", - "image": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517480856947349138", - "pre_dy_id_str": "517479366596833835", - "orig_dy_id_str": "517479366596833835", - "rid_str": "517480856950088884", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131479206, - "acl": 1024, - "view": 1412747, - "repost": 11488, - "dynamic_id": 517479366596833835, - "timestamp": 1619323454, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517479366596833835", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131479206" - } - }, - "card": "{ \"user\": { \"uid\": 255495142, \"uname\": \"坐怀不乱登徒子\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/fa18d118f6c58da704400909743fb895c4c47627.jpg\" }, \"item\": { \"rp_id\": 517480856950088884, \"uid\": 255495142, \"content\": \"[doge]#哔哩哔哩漫画#,#AISHA#\", \"orig_dy_id\": 517479366596833835, \"pre_dy_id\": 517479366596833835, \"timestamp\": 1619323801, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\",\\\\\\\"length\\\\\\\":0,\\\\\\\"location\\\\\\\":0,\\\\\\\"type\\\\\\\":2},{\\\\\\\"location\\\\\\\":19,\\\\\\\"type\\\\\\\":1,\\\\\\\"length\\\\\\\":8,\\\\\\\"data\\\\\\\":\\\\\\\"1425490690\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 关+转,抽3位幸运小伙伴送@漫画家法吉特 【《逆光》画集作者签名版】~\\\\n #哔哩哔哩漫画#重磅安利之《#AISHA#》\\\\n当当当当!剧情党福音~\\\\n答题就有机会赢得礼物?还有法吉特太太亲签精美画集?\\\\n活动入口→https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/blackboard\\\\\\/topic\\\\\\/activity-oPISh007wv.html\\\\n\\\\n你以为这样就结束了了吗?\\\\nNONONO~\\\\n法吉特老师首次出版个人作品集《逆光》~商城4月25日0点首发开售!\\\\n有法吉特老师签名版掉落哦!随书额外附赠专属书签特典!\\\\n活动指路:哔哩哔哩漫画APP-我的-商城-banner\\\",\\\"id\\\":131479206,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":782,\\\"img_size\\\":1097.2451171875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/8965a784f77e2545f4f2f168df4f417ed3ace818.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":750}],\\\"pictures_count\\\":1,\\\"reply\\\":599,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619323454},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":61398}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2},{\\\"data\\\":\\\"1425490690\\\",\\\"length\\\":8,\\\"location\\\":19,\\\"type\\\":1}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":61398},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[doge]", - "id": 26, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[doge]", - "url": "https://i0.hdslb.com/bfs/emote/3087d273a78ccaff4bb1e9972e2ba2a7583c9f11.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131479206, - "acl": 1024, - "view": 1412747, - "repost": 11488, - "comment": 599, - "like": 6530, - "is_liked": 0, - "dynamic_id": 517479366596833835, - "timestamp": 1619323454, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517479366596833835", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131479206" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2},{\\\"location\\\":19,\\\"type\\\":1,\\\"length\\\":8,\\\"data\\\":\\\"1425490690\\\"}]\",\"category\":\"daily\",\"description\":\"​互动抽奖 关+转,抽3位幸运小伙伴送@漫画家法吉特 【《逆光》画集作者签名版】~\\n #哔哩哔哩漫画#重磅安利之《#AISHA#》\\n当当当当!剧情党福音~\\n答题就有机会赢得礼物?还有法吉特太太亲签精美画集?\\n活动入口→https:\\/\\/www.bilibili.com\\/blackboard\\/topic\\/activity-oPISh007wv.html\\n\\n你以为这样就结束了了吗?\\nNONONO~\\n法吉特老师首次出版个人作品集《逆光》~商城4月25日0点首发开售!\\n有法吉特老师签名版掉落哦!随书额外附赠专属书签特典!\\n活动指路:哔哩哔哩漫画APP-我的-商城-banner\",\"id\":131479206,\"is_fav\":0,\"pictures\":[{\"img_height\":782,\"img_size\":1097.2451171875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/8965a784f77e2545f4f2f168df4f417ed3ace818.png\",\"img_tags\":null,\"img_width\":750}],\"pictures_count\":1,\"reply\":599,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619323454},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extension": { - "lott": "{\"lottery_id\":61398}" - }, - "extend_json": "{\"ctrl\":[{\"data\":\"5\",\"length\":0,\"location\":0,\"type\":2},{\"data\":\"1425490690\",\"length\":8,\"location\":19,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.dynamic.web\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"cc\":{\"vf\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"lott\":{\"lottery_id\":61398},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 148830, - "topic_name": "AISHA", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/18159" - }, - { - "topic_id": 2514603, - "topic_name": "aisha", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 271873076, - "type": 2, - "rid": 131468623, - "acl": 0, - "view": 23, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517452016241823721, - "timestamp": 1619317086, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 271873076, - "uname": "爱乐果iLEGUO", - "face": "https://i2.hdslb.com/bfs/face/fb79ac0f6de92c8ecc7d4cd1e958d19376c85fe8.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": "龙俦纪+羞耻侠+妖怪IDOLS+偶像饲养手册+闪亮的家+神奇少年团+第8界+爱果系列+爱次元!研究社", - "level_info": { - "current_level": 4 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517452016241823721", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131468623" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"《龙俦纪》第99话4月25日更新!\\n高振采药遇险,竟然从悬崖上坠入万丈深渊?!!\\n苏郃首次展现能力,苏千屹又从苏郃身上发现了什么秘密?\\n《龙俦纪》正在好评连载中,逢“五”更新,欢迎追漫!\\n#哔哩哔哩漫画# https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc26014 \\n#宝藏漫画##爱乐果##漫画##二次元##古风##玄幻##二次元条漫# \",\"id\":131468623,\"is_fav\":0,\"pictures\":[{\"img_height\":720,\"img_size\":297.19140625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/54e4f9e0c339f42484fcbe42cb7e7f69be4b87aa.jpg\",\"img_tags\":null,\"img_width\":1280}],\"pictures_count\":1,\"reply\":0,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619317086},\"user\":{\"head_url\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/face\\/fb79ac0f6de92c8ecc7d4cd1e958d19376c85fe8.jpg\",\"name\":\"爱乐果iLEGUO\",\"uid\":271873076,\"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}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 10182306, - "topic_name": "宝藏漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 9628017, - "topic_name": "爱乐果", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1184, - "topic_name": "漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1907, - "topic_name": "二次元", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/7694" - }, - { - "topic_id": 8227, - "topic_name": "古风", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 62935, - "topic_name": "玄幻", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 12532729, - "topic_name": "二次元条漫", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1677019, - "type": 1, - "rid": 517443572335742626, - "acl": 0, - "view": 5, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517443572332941328, - "timestamp": 1619315120, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1677019, - "uname": "逗妇卤", - "face": "https://i1.hdslb.com/bfs/face/15a8f5d8c93f8f30bda71f192b92cfde2c76a1c7.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1637510400000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517443572332941328", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517443572335742626", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1962092, - "repost": 16607, - "comment": 1020, - "like": 7002, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 1677019, \"uname\": \"逗妇卤\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/15a8f5d8c93f8f30bda71f192b92cfde2c76a1c7.jpg\" }, \"item\": { \"rp_id\": 517443572335742626, \"uid\": 1677019, \"content\": \"【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\/玩偶等福利好礼相送!\\n[干杯] 快来哔哩哔哩漫画追漫吧~\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619315120, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1020,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 324540735, - "type": 8, - "rid": 672631542, - "acl": 0, - "view": 31, - "repost": 0, - "like": 1, - "is_liked": 0, - "dynamic_id": 517311278755293659, - "timestamp": 1619284318, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 324540735, - "uname": "文雯兄", - "face": "https://i0.hdslb.com/bfs/face/8000d5ad4652f8bf9074781a108eb54243a06889.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 1, - "vipDueDate": 1613491200000, - "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": 4 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517311278755293659", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "672631542", - "bvid": "BV1dU4y1h78A" - }, - "card": "{\"aid\":672631542,\"attribute\":0,\"cid\":328783995,\"copyright\":1,\"ctime\":1619284318,\"desc\":\"本漫画由哔哩哔哩漫画出品,本人配音,谢谢大家的支持。\",\"dimension\":{\"height\":1920,\"rotate\":0,\"width\":864},\"duration\":191,\"dynamic\":\"\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/672631542\\/?page=1&player_preload=null&player_width=864&player_height=1920&player_rotate=0\",\"mission_id\":18978,\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/8000d5ad4652f8bf9074781a108eb54243a06889.jpg\",\"mid\":324540735,\"name\":\"文雯兄\"},\"pic\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/archive\\/b2d2dc3a909696ea1db3fbfeeb7ab42dc37ced87.jpg\",\"player_info\":null,\"pubdate\":1619284318,\"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\\/BV1dU4y1h78A\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1dU4y1h78A\",\"stat\":{\"aid\":672631542,\"coin\":0,\"danmaku\":0,\"dislike\":0,\"favorite\":0,\"his_rank\":0,\"like\":1,\"now_rank\":0,\"reply\":0,\"share\":0,\"view\":10},\"state\":0,\"tid\":138,\"title\":\"怎么办,我穿越成最弱小野怪了(三十九)【关于我不当人的这件事】\",\"tname\":\"搞笑\",\"up_from_v2\":8,\"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": 19254944, - "topic_name": "火力配音王-配音剧场", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/108663" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3844, - "topic_name": "穿越", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1833, - "topic_name": "搞笑", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1217, - "topic_name": "自制", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1184, - "topic_name": "漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 326499679, - "type": 8, - "rid": 972719486, - "acl": 0, - "view": 2766257, - "repost": 3, - "like": 5925, - "is_liked": 0, - "dynamic_id": 517261895213635612, - "timestamp": 1619272820, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517261895213635612", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "972719486", - "bvid": "BV1Gp4y1b7ZB" - }, - "card": "{\"aid\":972719486,\"attribute\":0,\"cid\":328058863,\"copyright\":1,\"ctime\":1619272820,\"desc\":\"#反派初始化# #Vomic#\\n圈圈叉叉,桃树开花,花瓣落下,生出新芽。\\n@哔哩哔哩漫画 出品、@BV社 策划、 @Antler_墨柚 原作、@叉叉叉叉叉口叉 主笔、@补天研究所 制作、@音熊联萌 录制、Vomic《反派初始化》第二集正式上线!\\n哔哩哔哩漫画独家播放,每周六更新!\\n还有小剧场,花絮不定时掉落、敬请期待~\\n\\n出品:@哔哩哔哩漫画\\n策划:@BV社\\n制作:@补天研究所\\n录制:@音熊联萌\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":62,\"dynamic\":\"#哔哩哔哩漫画#独家,#Vomic#2021年4月3日起每周六更新!更多精彩,小剧场,花絮,尽在哔哩哔哩漫画APP\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/972719486\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"mid\":326499679,\"name\":\"哔哩哔哩漫画\"},\"pic\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/archive\\/3c8a720b809153f95b1134acb991011eb79dc80b.jpg\",\"player_info\":null,\"pubdate\":1619272819,\"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},\"short_link\":\"https:\\/\\/b23.tv\\/BV1Gp4y1b7ZB\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1Gp4y1b7ZB\",\"stat\":{\"aid\":972719486,\"coin\":115,\"danmaku\":4,\"dislike\":0,\"favorite\":44,\"his_rank\":0,\"like\":5925,\"now_rank\":0,\"reply\":35,\"share\":145,\"view\":32070},\"state\":0,\"tid\":27,\"title\":\"【Vomic】滴——《反派初始化》第二集精彩片段!\",\"tname\":\"综合\",\"videos\":1}", - "extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\",\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3208432, - "topic_name": "Vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106426" - }, - { - "topic_id": 37542, - "topic_name": "VOMIC", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106283" - }, - { - "topic_id": 8972604, - "topic_name": "vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106766" - }, - { - "topic_id": 210754, - "topic_name": "夏磊", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 10526139, - "topic_name": "反派初始化", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1322133, - "topic_name": "赵路", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 423864, - "topic_name": "音熊联萌", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/17389" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 255495142, - "type": 1, - "rid": 517243774753706830, - "acl": 0, - "view": 9, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517243774755903256, - "timestamp": 1619268601, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 255495142, - "uname": "坐怀不乱登徒子", - "face": "https://i1.hdslb.com/bfs/face/fa18d118f6c58da704400909743fb895c4c47627.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1626451200000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 204, - "name": "至高守护", - "image": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "expire": 0, - "image_enhance": "https://i1.hdslb.com/bfs/face/88162662c23c2768c9e9e5c25017375685e83798.png", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517243774755903256", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517243774753706830", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1962092, - "repost": 16607, - "comment": 1020, - "like": 7002, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 255495142, \"uname\": \"坐怀不乱登徒子\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/fa18d118f6c58da704400909743fb895c4c47627.jpg\" }, \"item\": { \"rp_id\": 517243774753706830, \"uid\": 255495142, \"content\": \"冲冲冲#哔哩哔哩漫画#\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619268601, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1020,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 335270851, - "type": 1, - "rid": 517243658786443535, - "acl": 0, - "view": 25, - "repost": 0, - "comment": 0, - "like": 1, - "is_liked": 0, - "dynamic_id": 517243658790736702, - "timestamp": 1619268574, - "pre_dy_id": 517241610091321208, - "orig_dy_id": 517241610091321208, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 335270851, - "uname": "符号门", - "face": "https://i1.hdslb.com/bfs/face/67371311c9e047543a70c1d41e7a03c3854f2981.jpg" - }, - "card": { - "official_verify": { - "type": -1, - "desc": "" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1647014400000, - "vipStatus": 1, - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "https://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "", - "level_info": { - "current_level": 4 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517243658790736702", - "pre_dy_id_str": "517241610091321208", - "orig_dy_id_str": "517241610091321208", - "rid_str": "517243658786443535", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1962092, - "repost": 16607, - "comment": 1020, - "like": 7002, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - } - }, - "card": "{ \"user\": { \"uid\": 335270851, \"uname\": \"符号门\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/67371311c9e047543a70c1d41e7a03c3854f2981.jpg\" }, \"item\": { \"rp_id\": 517243658786443535, \"uid\": 335270851, \"content\": \"#哔哩哔哩漫画#[打call][打call][打call]\", \"orig_dy_id\": 517241610091321208, \"pre_dy_id\": 517241610091321208, \"timestamp\": 1619268574, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"type\\\\\\\":2,\\\\\\\"location\\\\\\\":0,\\\\\\\"length\\\\\\\":0,\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\"}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\\\\\/玩偶等福利好礼相送!\\\\n[干杯] 快来哔哩哔哩漫画追漫吧~\\\",\\\"id\\\":131403515,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":1357,\\\"img_size\\\":1759.1650390625,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":1238,\\\"img_size\\\":832.51953125,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":2193,\\\"img_size\\\":3424.060546875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1080},{\\\"img_height\\\":800,\\\"img_size\\\":166.1552734375,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":800}],\\\"pictures_count\\\":4,\\\"reply\\\":1020,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619268097},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"}\" }, \"origin_extend_json\": \"{\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"asw\\\":{\\\"fl\\\":15,\\\"nv\\\":1},\\\"cc\\\":{\\\"vf\\\":1},\\\"sw\\\":{\\\"fl\\\":15,\\\"nv\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"callbackId\\\":10,\\\"lottery_id\\\":61382,\\\"lottery_time\\\":1620504000,\\\"title\\\":\\\"互动抽奖\\\"},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "https://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131403515, - "acl": 1024, - "view": 1962092, - "repost": 16607, - "comment": 1020, - "like": 7002, - "is_liked": 0, - "dynamic_id": 517241610091321208, - "timestamp": 1619268097, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517241610091321208", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131403515" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"type\\\":2,\\\"location\\\":0,\\\"length\\\":0,\\\"data\\\":\\\"5\\\"}]\",\"category\":\"daily\",\"description\":\"​互动抽奖 【关+转】抽1位小伙伴送【哔哩哔哩小电视兔子包】~\\n【#哔哩哔哩漫画# 作品推荐】大量西幻少女漫爆更来啦———\\n[干杯] 即日起,《重生成为公爵家的丑女》《暴君的监护人是反派魔女》《姐姐捡回了男主》等大量西幻少女精品漫画爆更,追漫更有樱花立牌\\/玩偶等福利好礼相送!\\n[干杯] 快来哔哩哔哩漫画追漫吧~\",\"id\":131403515,\"is_fav\":0,\"pictures\":[{\"img_height\":1357,\"img_size\":1759.1650390625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/1ce565e7f36e0ae5a3809df21bb39aa2fe578a88.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":1238,\"img_size\":832.51953125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/6df0150c77a7f42a5d31cce8bb006105a660dad9.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":2193,\"img_size\":3424.060546875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/adce81c59436184b56d84e5394583d2ab491b2e6.png\",\"img_tags\":null,\"img_width\":1080},{\"img_height\":800,\"img_size\":166.1552734375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/9c4e8d6fc04d5a1f3df225d5967fb65c7a3f5f09.jpg\",\"img_tags\":null,\"img_width\":800}],\"pictures_count\":4,\"reply\":1020,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619268097},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extension": { - "lott": "{\"callbackId\":10,\"lottery_id\":61382,\"lottery_time\":1620504000,\"title\":\"互动抽奖\"}" - }, - "extend_json": "{\"ctrl\":[{\"data\":\"5\",\"length\":0,\"location\":0,\"type\":2}],\"from\":{\"emoji_type\":1,\"from\":\"\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"cc\":{\"vf\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"lott\":{\"callbackId\":10,\"lottery_id\":61382,\"lottery_time\":1620504000,\"title\":\"互动抽奖\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[干杯]", - "id": 1949, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[干杯]", - "url": "https://i0.hdslb.com/bfs/emote/8da12d5f55a2c7e9778dcc05b40571979fe208e6.png", - "meta": { - "size": 1 - }, - "mtime": 1597738918 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131384529, - "acl": 0, - "view": 1605629, - "repost": 5, - "comment": 63, - "like": 4631, - "is_liked": 0, - "dynamic_id": 517215462328123502, - "timestamp": 1619262009, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517215462328123502", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131384529" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 近期更新】(`・ω・´)\\nP1《#辉夜大小姐想让我告白# ~天才们的恋爱头脑战~ 》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc26009\\nP2《#入间同学入魔了#!》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc27189\\nP3《催眠麦克风-Division Rap Battle- side D.H&B.A.T》\\nP4《他和她的魔法契约》\\nP5《瓦尼塔斯的手记》\\nP6《见面5秒开始战斗》\\nP7《魔气来袭》\\nP8《尖帽子的魔法工坊》 \",\"id\":131384529,\"is_fav\":0,\"pictures\":[{\"img_height\":2920,\"img_size\":1993.103515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/24a3e5d04e8ad86fcdae48e6ee88f90a0351f82d.jpg\",\"img_tags\":null,\"img_width\":2000},{\"img_height\":2872,\"img_size\":2453.1513671875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d512d771dd3f91b54733f104e5de7e38d61ef56c.jpg\",\"img_tags\":null,\"img_width\":2000},{\"img_height\":2806,\"img_size\":4156.140625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/119fe01717120eb9c8c04d2c48a22298c8f88d17.jpg\",\"img_tags\":null,\"img_width\":2000},{\"img_height\":1147,\"img_size\":152.23046875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d2fb2a6d2229a03ea967ee2182faefd67b0811fd.jpg\",\"img_tags\":null,\"img_width\":800},{\"img_height\":2637,\"img_size\":10432.2978515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/e8966e96d34938474eebfcf60f38e14932e09be4.jpg\",\"img_tags\":null,\"img_width\":3600},{\"img_height\":2268,\"img_size\":6175.017578125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/4ed99d7329108e9e585db49da63a56bdcf7e8670.jpg\",\"img_tags\":null,\"img_width\":3200},{\"img_height\":1461,\"img_size\":283.990234375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/a8f37ec732103b1912fd3448d06d610cae5486df.jpg\",\"img_tags\":null,\"img_width\":800},{\"img_height\":2871,\"img_size\":3639.478515625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/fe8e58fd4f7c7063f880f064b3366e758dbfd7ee.jpg\",\"img_tags\":null,\"img_width\":2000}],\"pictures_count\":8,\"reply\":63,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619262009},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 4386628, - "topic_name": "辉夜大小姐想让我告白", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 8724199, - "topic_name": "入间同学入魔了", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/69330" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1572178656, - "type": 2, - "rid": 131375699, - "acl": 0, - "view": 13, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 517200331161362689, - "timestamp": 1619258486, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 1572178656, - "uname": "星宿战纪漫画", - "face": "https://i0.hdslb.com/bfs/face/f791586939dcbd3f19545af1e65c369983e63c39.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": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517200331161362689", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131375699" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"#哔哩哔哩漫画# #星宿战纪# #星宿战纪漫画# #漫画# B漫:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc29438\\n闭关修炼ing的小金蝉~可可爱爱[热词系列_奥力给]\",\"id\":131375699,\"is_fav\":0,\"pictures\":[{\"img_height\":593,\"img_size\":86.4052734375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d3074ad36616678a285de9011d3ba1cee04fa69e.jpg\",\"img_tags\":null,\"img_width\":375}],\"pictures_count\":1,\"reply\":0,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619258486},\"user\":{\"head_url\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/f791586939dcbd3f19545af1e65c369983e63c39.jpg\",\"name\":\"星宿战纪漫画\",\"uid\":1572178656,\"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}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"\",\"up_close_comment\":0,\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 18523004, - "topic_name": "星宿战纪", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 18523003, - "topic_name": "星宿战纪漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1184, - "topic_name": "漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[热词系列_奥力给]", - "id": 1885, - "package_id": 53, - "state": 0, - "type": 1, - "attr": 2, - "text": "[热词系列_奥力给]", - "url": "https://i0.hdslb.com/bfs/emote/c9b8683827ec6c00fea5327c9bec14f581cef2aa.png", - "meta": { - "size": 2 - }, - "mtime": 1598525979 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131350038, - "acl": 0, - "view": 1974729, - "repost": 13, - "comment": 39, - "like": 4732, - "is_liked": 0, - "dynamic_id": 517153601912668248, - "timestamp": 1619247606, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517153601912668248", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131350038" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 作品推荐】来读一部治愈系#欧漫#吧:《#格莱米耶姐妹#》https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc28726\\n[W-哈哈]还记得童年最爱的五个魔力少女吗?《#魔力W.i.t.c.h.#》的作者带着全新的故事来了!\\n[打call]熟悉的画风,同样的治愈,主角变成了可爱的三姐妹。她们想在妈妈生日当天送给她一本图画书,却意外发现了一张特别的照片,一个亲情秘密即将被揭晓…… \",\"id\":131350038,\"is_fav\":0,\"pictures\":[{\"img_height\":960,\"img_size\":911.2685546875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/f88be70d1dee3dd408fb00daf27ca2b551045424.jpg\",\"img_tags\":null,\"img_width\":720},{\"img_height\":3705,\"img_size\":3552.703125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/0c1ad02cfed7d09fb68da69f6f6ed3afb33759ac.png\",\"img_tags\":null,\"img_width\":800},{\"img_height\":3373,\"img_size\":2038.8671875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/4eed376d55d27870b126b7089082cd6f32582c55.png\",\"img_tags\":null,\"img_width\":800}],\"pictures_count\":3,\"reply\":39,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619247606},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 507003, - "topic_name": "欧漫", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 19491399, - "topic_name": "格莱米耶姐妹", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 19491398, - "topic_name": "魔力W.i.t.c.h.", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1161514, - "topic_name": "魔力W.I.T.C.H.", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[W-哈哈]", - "id": 3045, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[W-哈哈]", - "url": "https://i0.hdslb.com/bfs/emote/83d527303c8f62f494e6971c48836487e7d87b1b.png", - "meta": { - "size": 1 - }, - "mtime": 1608785082 - }, - { - "emoji_name": "[打call]", - "id": 510, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[打call]", - "url": "https://i0.hdslb.com/bfs/emote/431432c43da3ee5aab5b0e4f8931953e649e9975.png", - "meta": { - "size": 1 - }, - "mtime": 1617293741 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1902548007, - "type": 2, - "rid": 131326547, - "acl": 0, - "view": 1681, - "repost": 0, - "comment": 2, - "like": 17, - "is_liked": 0, - "dynamic_id": 517110364476558101, - "timestamp": 1619237539, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 1902548007, - "uname": "BV社", - "face": "https://i0.hdslb.com/bfs/face/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "BV社官方账号" - } - }, - "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": "Vomic,让你爱的漫画更动听", - "level_info": { - "current_level": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "517110364476558101", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131326547" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"location\\\":93,\\\"type\\\":1,\\\"length\\\":8,\\\"data\\\":\\\"326499679\\\"},{\\\"location\\\":104,\\\"type\\\":1,\\\"length\\\":5,\\\"data\\\":\\\"1902548007\\\"},{\\\"location\\\":112,\\\"type\\\":1,\\\"length\\\":7,\\\"data\\\":\\\"492733946\\\"},{\\\"location\\\":122,\\\"type\\\":1,\\\"length\\\":6,\\\"data\\\":\\\"1740792\\\"}]\",\"category\":\"daily\",\"description\":\"#哔哩哔哩漫画#独家,#反派初始化# #Vomic# 我命定的男主!凌辰!!\\n第四集准时上线!2021年4月3日起每周六更新!更多精彩,小剧场,花絮,尽在哔哩哔哩漫画APP\\n \\n出品:@哔哩哔哩漫画\\n策划:@BV社\\n制作:@补天研究所\\n录制:@音熊联萌 \",\"id\":131326547,\"is_fav\":0,\"pictures\":[{\"img_height\":2400,\"img_size\":2228.2724609375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/461e7359ad89788cea42f61690b9cf7c73cc6ab5.jpg\",\"img_tags\":null,\"img_width\":2400}],\"pictures_count\":1,\"reply\":2,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619237539},\"user\":{\"head_url\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg\",\"name\":\"BV社\",\"uid\":1902548007,\"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}}}", - "extend_json": "{\"ctrl\":[{\"data\":\"326499679\",\"length\":8,\"location\":93,\"type\":1},{\"data\":\"1902548007\",\"length\":5,\"location\":104,\"type\":1},{\"data\":\"492733946\",\"length\":7,\"location\":112,\"type\":1},{\"data\":\"1740792\",\"length\":6,\"location\":122,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"create.dynamic.web\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 10526139, - "topic_name": "反派初始化", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3208432, - "topic_name": "Vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106426" - }, - { - "topic_id": 37542, - "topic_name": "VOMIC", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106283" - }, - { - "topic_id": 8972604, - "topic_name": "vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106766" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1192711092, - "type": 1, - "rid": 516803952918881881, - "acl": 0, - "view": 231, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 516803952924449005, - "timestamp": 1619166197, - "pre_dy_id": 516417934145814823, - "orig_dy_id": 516417934145814823, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1192711092, - "uname": "会发光的偶恰", - "face": "https://i0.hdslb.com/bfs/face/b85a508793bd96deec61e2491d60e68f10378395.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 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516803952924449005", - "pre_dy_id_str": "516417934145814823", - "orig_dy_id_str": "516417934145814823", - "rid_str": "516803952918881881", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131093146, - "acl": 1024, - "view": 1794629, - "repost": 10824, - "dynamic_id": 516417934145814823, - "timestamp": 1619076320, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "516417934145814823", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131093146" - } - }, - "card": "{ \"user\": { \"uid\": 1192711092, \"uname\": \"会发光的偶恰\", \"face\": \"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/b85a508793bd96deec61e2491d60e68f10378395.jpg\" }, \"item\": { \"rp_id\": 516803952918881881, \"uid\": 1192711092, \"content\": \"给我也整一个,我太爱了#漫画节#,#哔哩哔哩漫画#\", \"ctrl\": \"\", \"orig_dy_id\": 516417934145814823, \"pre_dy_id\": 516417934145814823, \"timestamp\": 1619166197, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\",\\\\\\\"length\\\\\\\":0,\\\\\\\"location\\\\\\\":0,\\\\\\\"type\\\\\\\":2}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽3位幸运小伙伴送【哔哩哔哩漫画商城 · 50元图书无门槛优惠券】~\\\\n【#漫画节# 买书礼】商城图书活动开启,23日0点抢新书秒杀,最高立减160元!\\\\n《罗小黑战记 兰溪镇2》《我是蜘蛛又怎样》等多款新书5元起!\\\\n更有8折立减券,来商城看看吧!\\\\n[羞羞] 活动指路:#哔哩哔哩漫画#APP - 我的 - 漫画商城\\\",\\\"id\\\":131093146,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":600,\\\"img_size\\\":251.2998046875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1103a166b95de39f9f05455fed2bcfce5edfacc6.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1200}],\\\"pictures_count\\\":1,\\\"reply\\\":857,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619076320},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":61227}\" }, \"origin_extend_json\": \"{\\\"\\\":{\\\"manga\\\":{\\\"manga_id\\\":26551}},\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"cc\\\":{\\\"vf\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":61227},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } }, \"activity_infos\": { \"details\": [ { \"type\": 1, \"detail\": \"{\\\"is_show\\\":1,\\\"topic_id\\\":877418,\\\"topic_link\\\":\\\"https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/blackboard\\\\\\/activity-7uSyvlCGRS.html\\\",\\\"topic_name\\\":\\\"漫画节\\\"}\" } ] } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 877418, - "topic_name": "漫画节", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 877418, - "topic_name": "漫画节", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[羞羞]", - "id": 2901, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[羞羞]", - "url": "https://i0.hdslb.com/bfs/emote/f4f9171e4d8c3f30827a8b96ea1ce1beb825ad50.png", - "meta": { - "size": 1 - }, - "mtime": 1606448649 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/e79378436e02fd7f227b901efb9fe79c2df9499c.jpg", - "cover_type": 2, - "title": "罗小黑战记·蓝溪镇", - "desc_first": "更新至068", - "desc_second": "搞笑,治愈,古风", - "jump_url": "https://manga.bilibili.com/m/detail/mc26551?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26551" - }, - "tags": [ - { - "tag_type": 3, - "sub_type": 1, - "icon": "https://i0.hdslb.com/bfs/album/4c1880a3e9d5fd2c72b339929a73a4b83d2bab93.png", - "text": "漫画节", - "link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html?topic_from=topic-card&name=%E6%BC%AB%E7%94%BB%E8%8A%82", - "rid": 877418, - "sub_module": "topic" - } - ], - "add_on_card_info": [ - { - "add_on_card_show_type": 2, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/e79378436e02fd7f227b901efb9fe79c2df9499c.jpg", - "cover_type": 2, - "title": "罗小黑战记·蓝溪镇", - "desc_first": "更新至068", - "desc_second": "搞笑,治愈,古风", - "jump_url": "https://manga.bilibili.com/m/detail/mc26551?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26551" - } - } - ], - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1365116, - "type": 1, - "rid": 516801496201774949, - "acl": 0, - "view": 185, - "repost": 0, - "comment": 0, - "like": 0, - "is_liked": 0, - "dynamic_id": 516801496202094777, - "timestamp": 1619165625, - "pre_dy_id": 516417934145814823, - "orig_dy_id": 516417934145814823, - "orig_type": 2, - "user_profile": { - "info": { - "uid": 1365116, - "uname": "濑户的海参", - "face": "https://i2.hdslb.com/bfs/face/8426c61be9c3ccd2296d080a54691c3bed5f2f9f.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": 5 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516801496202094777", - "pre_dy_id_str": "516417934145814823", - "orig_dy_id_str": "516417934145814823", - "rid_str": "516801496201774949", - "origin": { - "uid": 326499679, - "type": 2, - "rid": 131093146, - "acl": 1024, - "view": 1794629, - "repost": 10824, - "dynamic_id": 516417934145814823, - "timestamp": 1619076320, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "516417934145814823", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131093146" - } - }, - "card": "{ \"user\": { \"uid\": 1365116, \"uname\": \"濑户的海参\", \"face\": \"https:\\/\\/i2.hdslb.com\\/bfs\\/face\\/8426c61be9c3ccd2296d080a54691c3bed5f2f9f.jpg\" }, \"item\": { \"rp_id\": 516801496201774949, \"uid\": 1365116, \"content\": \"嗯哼#漫画节#,#哔哩哔哩漫画#\", \"ctrl\": \"\", \"orig_dy_id\": 516417934145814823, \"pre_dy_id\": 516417934145814823, \"timestamp\": 1619165625, \"reply\": 0, \"orig_type\": 2 }, \"origin\": \"{\\\"item\\\":{\\\"at_control\\\":\\\"[{\\\\\\\"data\\\\\\\":\\\\\\\"5\\\\\\\",\\\\\\\"length\\\\\\\":0,\\\\\\\"location\\\\\\\":0,\\\\\\\"type\\\\\\\":2}]\\\",\\\"category\\\":\\\"daily\\\",\\\"description\\\":\\\"​互动抽奖 【关+转】抽3位幸运小伙伴送【哔哩哔哩漫画商城 · 50元图书无门槛优惠券】~\\\\n【#漫画节# 买书礼】商城图书活动开启,23日0点抢新书秒杀,最高立减160元!\\\\n《罗小黑战记 兰溪镇2》《我是蜘蛛又怎样》等多款新书5元起!\\\\n更有8折立减券,来商城看看吧!\\\\n[羞羞] 活动指路:#哔哩哔哩漫画#APP - 我的 - 漫画商城\\\",\\\"id\\\":131093146,\\\"is_fav\\\":0,\\\"pictures\\\":[{\\\"img_height\\\":600,\\\"img_size\\\":251.2998046875,\\\"img_src\\\":\\\"https:\\\\\\/\\\\\\/i0.hdslb.com\\\\\\/bfs\\\\\\/album\\\\\\/1103a166b95de39f9f05455fed2bcfce5edfacc6.jpg\\\",\\\"img_tags\\\":null,\\\"img_width\\\":1200}],\\\"pictures_count\\\":1,\\\"reply\\\":857,\\\"role\\\":[],\\\"settings\\\":{\\\"copy_forbidden\\\":\\\"0\\\"},\\\"source\\\":[],\\\"title\\\":\\\"\\\",\\\"upload_time\\\":1619076320},\\\"user\\\":{\\\"head_url\\\":\\\"https:\\\\\\/\\\\\\/i1.hdslb.com\\\\\\/bfs\\\\\\/face\\\\\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\\\",\\\"name\\\":\\\"哔哩哔哩漫画\\\",\\\"uid\\\":326499679,\\\"vip\\\":{\\\"avatar_subscript\\\":1,\\\"due_date\\\":1941033600000,\\\"label\\\":{\\\"label_theme\\\":\\\"ten_annual_vip\\\",\\\"path\\\":\\\"\\\",\\\"text\\\":\\\"十年大会员\\\"},\\\"nickname_color\\\":\\\"#FB7299\\\",\\\"status\\\":1,\\\"theme_type\\\":0,\\\"type\\\":2,\\\"vip_pay_type\\\":0}}}\", \"origin_extension\": { \"lott\": \"{\\\"lottery_id\\\":61227}\" }, \"origin_extend_json\": \"{\\\"\\\":{\\\"manga\\\":{\\\"manga_id\\\":26551}},\\\"ctrl\\\":[{\\\"data\\\":\\\"5\\\",\\\"length\\\":0,\\\"location\\\":0,\\\"type\\\":2}],\\\"from\\\":{\\\"emoji_type\\\":1,\\\"from\\\":\\\"create.dynamic.web\\\",\\\"up_close_comment\\\":0,\\\"verify\\\":{\\\"cc\\\":{\\\"vf\\\":1}}},\\\"like_icon\\\":{\\\"action\\\":\\\"\\\",\\\"action_url\\\":\\\"\\\",\\\"end\\\":\\\"\\\",\\\"end_url\\\":\\\"\\\",\\\"start\\\":\\\"\\\",\\\"start_url\\\":\\\"\\\"},\\\"lott\\\":{\\\"lottery_id\\\":61227},\\\"topic\\\":{\\\"is_attach_topic\\\":1}}\", \"origin_user\": { \"info\": { \"uid\": 326499679, \"uname\": \"哔哩哔哩漫画\", \"face\": \"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\" }, \"card\": { \"official_verify\": { \"type\": 1, \"desc\": \"哔哩哔哩漫画官方账号\" } }, \"vip\": { \"vipType\": 2, \"vipDueDate\": 1941033600000, \"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\": 0, \"name\": \"\", \"image\": \"\", \"expire\": 0, \"image_enhance\": \"\", \"image_enhance_frame\": \"\" }, \"rank\": \"10000\", \"sign\": \"↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑\", \"level_info\": { \"current_level\": 6 } }, \"activity_infos\": { \"details\": [ { \"type\": 1, \"detail\": \"{\\\"is_show\\\":1,\\\"topic_id\\\":877418,\\\"topic_link\\\":\\\"https:\\\\\\/\\\\\\/www.bilibili.com\\\\\\/blackboard\\\\\\/activity-7uSyvlCGRS.html\\\",\\\"topic_name\\\":\\\"漫画节\\\"}\" } ] } }", - "extend_json": "{\"from\":{\"emoji_type\":1,\"from\":\"create.comment\",\"up_close_comment\":0},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 877418, - "topic_name": "漫画节", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "origin": { - "topic_info": { - "topic_details": [ - { - "topic_id": 877418, - "topic_name": "漫画节", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[羞羞]", - "id": 2901, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[羞羞]", - "url": "https://i0.hdslb.com/bfs/emote/f4f9171e4d8c3f30827a8b96ea1ce1beb825ad50.png", - "meta": { - "size": 1 - }, - "mtime": 1606448649 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/e79378436e02fd7f227b901efb9fe79c2df9499c.jpg", - "cover_type": 2, - "title": "罗小黑战记·蓝溪镇", - "desc_first": "更新至068", - "desc_second": "搞笑,治愈,古风", - "jump_url": "https://manga.bilibili.com/m/detail/mc26551?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26551" - }, - "tags": [ - { - "tag_type": 3, - "sub_type": 1, - "icon": "https://i0.hdslb.com/bfs/album/4c1880a3e9d5fd2c72b339929a73a4b83d2bab93.png", - "text": "漫画节", - "link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html?topic_from=topic-card&name=%E6%BC%AB%E7%94%BB%E8%8A%82", - "rid": 877418, - "sub_module": "topic" - } - ], - "add_on_card_info": [ - { - "add_on_card_show_type": 2, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/e79378436e02fd7f227b901efb9fe79c2df9499c.jpg", - "cover_type": 2, - "title": "罗小黑战记·蓝溪镇", - "desc_first": "更新至068", - "desc_second": "搞笑,治愈,古风", - "jump_url": "https://manga.bilibili.com/m/detail/mc26551?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26551" - } - } - ], - "show_tip": { - "del_tip": "要删除动态吗?" - } - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 1902548007, - "type": 2, - "rid": 131192629, - "view": 1537, - "repost": 0, - "comment": 1, - "like": 18, - "is_liked": 0, - "dynamic_id": 516737432462144044, - "timestamp": 1619150709, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 1902548007, - "uname": "BV社", - "face": "https://i0.hdslb.com/bfs/face/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "BV社官方账号" - } - }, - "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": "Vomic,让你爱的漫画更动听", - "level_info": { - "current_level": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516737432462144044", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131192629" - }, - "card": "{\"item\":{\"at_control\":\"[{\\\"location\\\":111,\\\"type\\\":1,\\\"length\\\":8,\\\"data\\\":\\\"326499679\\\"},{\\\"location\\\":122,\\\"type\\\":1,\\\"length\\\":5,\\\"data\\\":\\\"1902548007\\\"},{\\\"location\\\":130,\\\"type\\\":1,\\\"length\\\":6,\\\"data\\\":\\\"1740792\\\"}]\",\"category\":\"daily\",\"description\":\"#哔哩哔哩漫画#独家,#神赐予我这种尴尬的超能力究竟有什么用?# #Vomic# 这粉色情侣套间是怎么回事?搞这么大排场!?2021年4月9日起每周五更新!更多精彩,小剧场,花絮,尽在哔哩哔哩漫画APP \\n \\n出品:@哔哩哔哩漫画\\n策划:@BV社\\n承制:@音熊联萌 \",\"id\":131192629,\"is_fav\":0,\"pictures\":[{\"img_height\":2400,\"img_size\":2546.9873046875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/b355832bc3bf9196f9a6e024504b99279e1463fa.jpg\",\"img_tags\":null,\"img_width\":2400}],\"pictures_count\":1,\"reply\":1,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619150709},\"user\":{\"head_url\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/48f8e6afa688e37b9f1e3721a86bea8ce02688dc.jpg\",\"name\":\"BV社\",\"uid\":1902548007,\"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}}}", - "extend_json": "{\"ctrl\":[{\"data\":\"326499679\",\"length\":8,\"location\":111,\"type\":1},{\"data\":\"1902548007\",\"length\":5,\"location\":122,\"type\":1},{\"data\":\"1740792\",\"length\":6,\"location\":130,\"type\":1}],\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"asw\":{\"fl\":15,\"nv\":1},\"sw\":{\"fl\":15,\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 15321050, - "topic_name": "神赐予我这种尴尬的超能力究竟有什么用?", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3208432, - "topic_name": "Vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106426" - }, - { - "topic_id": 37542, - "topic_name": "VOMIC", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106283" - }, - { - "topic_id": 8972604, - "topic_name": "vomic", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/106766" - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 8, - "rid": 332648194, - "view": 2470218, - "repost": 11, - "like": 8329, - "is_liked": 0, - "dynamic_id": 516720707859405128, - "timestamp": 1619146815, - "orig_dy_id": 516720707860453704, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516720707859405128", - "pre_dy_id_str": "0", - "orig_dy_id_str": "516720707860453704", - "rid_str": "332648194", - "origin": { - "uid": 628215255, - "type": 8, - "rid": 332648194, - "view": 4802, - "repost": 18, - "dynamic_id": 516720707860453704, - "timestamp": 1619146815, - "uid_type": 1, - "r_type": 1, - "status": 1, - "dynamic_id_str": "516720707860453704", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "332648194", - "bvid": "BV1eA411L7Ck" - }, - "bvid": "BV1eA411L7Ck" - }, - "card": "{\"aid\":332648194,\"attribute\":0,\"cid\":327661869,\"copyright\":1,\"ctime\":1619091334,\"desc\":\"漫画节之际,恰逢世界读书日,哔哩哔哩漫画联合欧漫达高,邀请到了法国驻上海总领事馆文化领事柯梅燕女士在线推荐漫画啦!\\n被称为“图像小说”的纯正法国漫画是什么样呢?让我们一起跟着柯梅燕女士的介绍看看这本《莫奈逐光者》,领略欧陆漫画艺术的独特魅力吧~\",\"dimension\":{\"height\":2160,\"rotate\":0,\"width\":3840},\"duration\":219,\"dynamic\":\"漫画节之际,恰逢世界读书日,法国驻上海总领事馆文化领事柯梅燕女士应哔哩哔哩漫画与@欧漫达高 邀请,来给大家推荐漫画啦!\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/332648194\\/?page=1&player_preload=null&player_width=3840&player_height=2160&player_rotate=0\",\"mission_id\":20024,\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/341a390cbae7efc021d3c492da56665f2a4944ee.jpg\",\"mid\":628215255,\"name\":\"faguowenhua\"},\"pic\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/archive\\/7de60703c311c2afae10fab44a18bd3fbb5b3a13.jpg\",\"player_info\":null,\"pubdate\":1619146812,\"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\\/BV1eA411L7Ck\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1eA411L7Ck\",\"stat\":{\"aid\":332648194,\"coin\":291,\"danmaku\":18,\"dislike\":0,\"favorite\":295,\"his_rank\":0,\"like\":8329,\"now_rank\":0,\"reply\":148,\"share\":95,\"view\":42929},\"state\":0,\"tid\":124,\"title\":\"大师的故事《莫奈逐光者》——来自法国文化领事的漫画推荐│哔哩哔哩漫画节\",\"tname\":\"社科人文\",\"videos\":1}", - "extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\",\"verify\":{}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "activity_infos": { - "details": [ - { - "type": 1, - "detail": "{\"is_show\":1,\"topic_id\":877418,\"topic_link\":\"https:\\/\\/www.bilibili.com\\/blackboard\\/activity-7uSyvlCGRS.html\",\"topic_name\":\"漫画节\"}" - } - ] - }, - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 19380831, - "topic_name": "2021读书日", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 1449371, - "topic_name": "法国漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 877418, - "topic_name": "漫画节", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html" - }, - { - "topic_id": 591844, - "topic_name": "莫奈", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 507003, - "topic_name": "欧漫", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "与他人联合创作", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "tags": [ - { - "tag_type": 3, - "sub_type": 1, - "icon": "https://i0.hdslb.com/bfs/album/4c1880a3e9d5fd2c72b339929a73a4b83d2bab93.png", - "text": "漫画节", - "link": "https://www.bilibili.com/blackboard/activity-7uSyvlCGRS.html?topic_from=topic-card&name=%E6%BC%AB%E7%94%BB%E8%8A%82", - "rid": 877418, - "sub_module": "topic" - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131140536, - "view": 2969785, - "repost": 11, - "comment": 55, - "like": 5077, - "is_liked": 0, - "dynamic_id": 516519647563103432, - "timestamp": 1619100002, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516519647563103432", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131140536" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 作品推荐】《#蘑菇汤#》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc29622\\n[霜叶-疑问]才刚转学离开了熟悉的朋友们,就被爸爸送的“生日礼物”震惊到!\\n[煌-震撼]在2次敲打礼物树后,雅丽瞬间往地下坠落?!魅力无穷的蘑菇族的故事现在开始! \",\"id\":131140536,\"is_fav\":0,\"pictures\":[{\"img_height\":960,\"img_size\":198.8623046875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/b9f8d6849478db32593ebd4b6b452b873c989fae.jpg\",\"img_tags\":null,\"img_width\":720},{\"img_height\":4532,\"img_size\":4342.27734375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/ce9803ca6c0e3424cebcfa42fc4d9a59e809f3d7.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":2293,\"img_size\":298.7080078125,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d52ce6a063eba9c8256458e85e776cd3c82b07f7.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":4122,\"img_size\":2115.80859375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/7bd83bd470376334a3c5ce9266cb6f045cb72faa.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":4149,\"img_size\":1425.8837890625,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/80aaba99dbc558287b89aa961329e15814ff85a2.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":5019,\"img_size\":1546.1396484375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/3a86cdd61a701559935bf87bdd7a3f68f59cf5f6.jpg\",\"img_tags\":null,\"img_width\":1280}],\"pictures_count\":6,\"reply\":55,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619100002},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"\":{\"manga\":{\"manga_id\":29622}},\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 699, - "topic_name": "蘑菇汤", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[煌-震撼]", - "id": 3047, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[煌-震撼]", - "url": "https://i0.hdslb.com/bfs/emote/7bb39ac289bc97fe52af047020a9bf324ecdebe1.png", - "meta": { - "size": 1 - }, - "mtime": 1608785082 - }, - { - "emoji_name": "[霜叶-疑问]", - "id": 3048, - "package_id": 1, - "state": 0, - "type": 1, - "attr": 0, - "text": "[霜叶-疑问]", - "url": "https://i0.hdslb.com/bfs/emote/ada3aea8594e724511c1daad15fb3b23900d8e24.png", - "meta": { - "size": 1 - }, - "mtime": 1608785082 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/72bb5ca8058c0a5b19093136f09a77c2dca707cb.jpg", - "cover_type": 2, - "title": "蘑菇汤", - "desc_first": "更新至13", - "desc_second": "奇幻,日常,治愈", - "jump_url": "https://manga.bilibili.com/m/detail/mc29622?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "29622" - }, - "add_on_card_info": [ - { - "add_on_card_show_type": 2, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/72bb5ca8058c0a5b19093136f09a77c2dca707cb.jpg", - "cover_type": 2, - "title": "蘑菇汤", - "desc_first": "更新至13", - "desc_second": "奇幻,日常,治愈", - "jump_url": "https://manga.bilibili.com/m/detail/mc29622?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "29622" - } - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 326499679, - "type": 2, - "rid": 131131421, - "acl": 0, - "view": 2620670, - "repost": 8, - "comment": 46, - "like": 4764, - "is_liked": 0, - "dynamic_id": 516504207153429574, - "timestamp": 1619096407, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516504207153429574", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "131131421" - }, - "card": "{\"item\":{\"at_control\":\"\",\"category\":\"daily\",\"description\":\"【#哔哩哔哩漫画# 作品推荐】《#身体互换#》:https:\\/\\/manga.bilibili.com\\/m\\/detail\\/mc29621 \\n[热词系列_害]青梅竹马三人组,同是失恋沦落人,相逢在许愿池边时奇怪的事情发生了……\\n[热词系列_知识增加]什么?我和喜欢的女生互换了身体?!学霸、落落大方、机智果断的属性都出现在我自己的身上,突……突然感觉自己变帅了?\",\"id\":131131421,\"is_fav\":0,\"pictures\":[{\"img_height\":960,\"img_size\":537.4560546875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/0144a1a68b77eb293915fe8e63876a592c39a179.jpg\",\"img_tags\":null,\"img_width\":720},{\"img_height\":2687,\"img_size\":880.25,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/5c169c961e6abe6ed9e19a508d8ce742219fce48.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":2329,\"img_size\":649.5859375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/20d28936c37fa2c62e9ef5bab0050d670a6074c7.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":2236,\"img_size\":703.5146484375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/5ddea24d47abb40636d05b1cd07a759eb7fe7967.jpg\",\"img_tags\":null,\"img_width\":1280},{\"img_height\":3472,\"img_size\":714.130859375,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/d1c9aafd4317192c3815fb342aee64887cfd1a6e.jpg\",\"img_tags\":null,\"img_width\":2500},{\"img_height\":6321,\"img_size\":3838.9482421875,\"img_src\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/album\\/f16021df4379261ec1c118d7e2a3b7259e759671.jpg\",\"img_tags\":null,\"img_width\":2500}],\"pictures_count\":6,\"reply\":46,\"role\":[],\"settings\":{\"copy_forbidden\":\"0\"},\"source\":[],\"title\":\"\",\"upload_time\":1619096407},\"user\":{\"head_url\":\"https:\\/\\/i1.hdslb.com\\/bfs\\/face\\/2254162161a60b528cfec449f3450409a81ebc37.jpg\",\"name\":\"哔哩哔哩漫画\",\"uid\":326499679,\"vip\":{\"avatar_subscript\":1,\"due_date\":1941033600000,\"label\":{\"label_theme\":\"ten_annual_vip\",\"path\":\"\",\"text\":\"十年大会员\"},\"nickname_color\":\"#FB7299\",\"status\":1,\"theme_type\":0,\"type\":2,\"vip_pay_type\":0}}}", - "extend_json": "{\"\":{\"manga\":{\"manga_id\":29621}},\"from\":{\"emoji_type\":1,\"from\":\"timer.publish\",\"up_close_comment\":0,\"verify\":{\"cc\":{\"nv\":1}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 200686, - "topic_name": "身体互换", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/20573" - } - ] - }, - "emoji_info": { - "emoji_details": [ - { - "emoji_name": "[热词系列_害]", - "id": 1965, - "package_id": 53, - "state": 0, - "type": 1, - "attr": 2, - "text": "[热词系列_害]", - "url": "https://i0.hdslb.com/bfs/emote/cbe798a194612958537c5282fcca7c3bcd2aa15c.png", - "meta": { - "size": 2 - }, - "mtime": 1598525979 - }, - { - "emoji_name": "[热词系列_知识增加]", - "id": 1937, - "package_id": 53, - "state": 0, - "type": 1, - "attr": 2, - "text": "[热词系列_知识增加]", - "url": "https://i0.hdslb.com/bfs/emote/142409b595982b8210b2958f3d340f3b47942645.png", - "meta": { - "size": 2 - }, - "mtime": 1617293934 - } - ] - }, - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/2f7e4c1c1e6122c6488ce986d5785319fc329b89.jpg", - "cover_type": 2, - "title": "身体互换", - "desc_first": "更新至15", - "desc_second": "恋爱,校园,奇幻", - "jump_url": "https://manga.bilibili.com/m/detail/mc29621?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "29621" - }, - "add_on_card_info": [ - { - "add_on_card_show_type": 2, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/2f7e4c1c1e6122c6488ce986d5785319fc329b89.jpg", - "cover_type": 2, - "title": "身体互换", - "desc_first": "更新至15", - "desc_second": "恋爱,校园,奇幻", - "jump_url": "https://manga.bilibili.com/m/detail/mc29621?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "29621" - } - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - } - } - }, - { - "desc": { - "uid": 398468825, - "type": 8, - "rid": 545184671, - "acl": 0, - "view": 393, - "repost": 0, - "like": 8, - "is_liked": 0, - "dynamic_id": 516478317094534470, - "timestamp": 1619090379, - "pre_dy_id": 0, - "orig_dy_id": 0, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 398468825, - "uname": "欧漫达高", - "face": "https://i2.hdslb.com/bfs/face/0ba24b18b461b80c5727b5dee9a66bb9e25c1f46.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": "经典欧洲绘本、漫画、动画集合地。Weibo:欧漫达高 WeChat:DargaudShanghai", - "level_info": { - "current_level": 2 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516478317094534470", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "545184671", - "bvid": "BV1ki4y1A7Kb" - }, - "card": "{\"aid\":545184671,\"attribute\":0,\"cid\":327679459,\"copyright\":1,\"ctime\":1619090379,\"desc\":\"2151年,由于气候变化,世界人口缩减到了原来的十分之一,人类生活在脆弱的平衡之中。仅剩的7个城市区建立了新的社会生活模式。宇航员西蒙是名为“未来计划”的太空探险任务的一员,但这将是一场有去无回的旅行,承载着人类历史上前所未有的野心。在出发之前,西蒙带儿子尤里兜了最后一次风。开始了解世界的尤里能否明白母亲对完美、对冒险和对未知的渴求呢?\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":58,\"dynamic\":\"昨天的科幻欧漫预告片还没看过瘾?今天和另一部科幻漫的编剧一起规划未来吧!这位作者的日常向漫画《双面人生》中文版在#哔哩哔哩漫画#就能看哦~\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/545184671\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/face\\/0ba24b18b461b80c5727b5dee9a66bb9e25c1f46.jpg\",\"mid\":398468825,\"name\":\"欧漫达高\"},\"pic\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/archive\\/3411696f65b2bce0954f1dc66b1adc0a73de398a.jpg\",\"player_info\":null,\"pubdate\":1619090379,\"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\\/BV1ki4y1A7Kb\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1ki4y1A7Kb\",\"stat\":{\"aid\":545184671,\"coin\":4,\"danmaku\":0,\"dislike\":0,\"favorite\":1,\"his_rank\":0,\"like\":8,\"now_rank\":0,\"reply\":0,\"share\":1,\"view\":29},\"state\":0,\"tid\":27,\"title\":\"【欧漫作家访谈】《未来计划》(SOON)作者Thomas Cadène采访\",\"tname\":\"综合\",\"videos\":1}", - "extend_json": "{\"\":{\"ogv\":{\"ogv_id\":0}},\"dispute\":{\"content\":\"\"},\"from\":{\"from\":\"\",\"verify\":{\"asw\":{\"fl\":15},\"sw\":{\"fl\":15}}},\"like_icon\":{\"action\":\"\",\"action_url\":\"\",\"end\":\"\",\"end_url\":\"\",\"start\":\"\",\"start_url\":\"\"},\"topic\":{\"is_attach_topic\":1}}", - "display": { - "topic_info": { - "topic_details": [ - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 530918, - "topic_name": "动漫杂谈", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 444408, - "topic_name": "编剧", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 43646, - "topic_name": "生态", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 33730, - "topic_name": "法语", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 13619, - "topic_name": "欧美", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 9264, - "topic_name": "宇宙", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "投稿了视频", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - }, - { - "desc": { - "uid": 326499679, - "type": 8, - "rid": 630241940, - "view": 2624796, - "repost": 5, - "like": 10051, - "is_liked": 0, - "dynamic_id": 516457881632645972, - "timestamp": 1619085621, - "orig_dy_id": 516457881633694548, - "orig_type": 0, - "user_profile": { - "info": { - "uid": 326499679, - "uname": "哔哩哔哩漫画", - "face": "https://i1.hdslb.com/bfs/face/2254162161a60b528cfec449f3450409a81ebc37.jpg" - }, - "card": { - "official_verify": { - "type": 1, - "desc": "哔哩哔哩漫画官方账号" - } - }, - "vip": { - "vipType": 2, - "vipDueDate": 1941033600000, - "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": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "rank": "10000", - "sign": "↑ 【关注漫画姬】就送【漫读券5张】,当日或次日登录哔哩哔哩漫画APP即可领取,快来关注领券吧(°∀°)ノ ↑", - "level_info": { - "current_level": 6 - } - }, - "uid_type": 1, - "recommend_info": { - "is_attention": 0 - }, - "r_type": 1, - "topic_board": "C", - "topic_board_desc": "最新", - "status": 1, - "dynamic_id_str": "516457881632645972", - "pre_dy_id_str": "0", - "orig_dy_id_str": "516457881633694548", - "rid_str": "630241940", - "origin": { - "uid": 7435683, - "type": 8, - "rid": 630241940, - "acl": 0, - "view": 32239, - "repost": 13, - "like": 0, - "dynamic_id": 516457881633694548, - "timestamp": 1619085621, - "pre_dy_id": 0, - "orig_dy_id": 0, - "uid_type": 1, - "stype": 0, - "r_type": 1, - "inner_id": 0, - "status": 1, - "dynamic_id_str": "516457881633694548", - "pre_dy_id_str": "0", - "orig_dy_id_str": "0", - "rid_str": "630241940", - "bvid": "BV1b84y1F7qT" - }, - "bvid": "BV1b84y1F7qT" - }, - "card": "{\"aid\":630241940,\"attribute\":0,\"cid\":325729439,\"copyright\":1,\"ctime\":1618830035,\"desc\":\"BGM:No Rainbows In The Desert (Pluto Tapes),歌手名:Unlike Pluto\\n咒术回战单素材,帅就完事!求3连!\",\"dimension\":{\"height\":1080,\"rotate\":0,\"width\":1920},\"duration\":94,\"dynamic\":\"\",\"item\":{\"at_control\":\"\"},\"jump_url\":\"bilibili:\\/\\/video\\/630241940\\/?page=1&player_preload=null&player_width=1920&player_height=1080&player_rotate=0\",\"owner\":{\"face\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/face\\/a536ad1c4c66e17113cfb599fcbb97e03bcdae44.jpg\",\"mid\":7435683,\"name\":\"葉月Mashiro灬\"},\"pic\":\"https:\\/\\/i2.hdslb.com\\/bfs\\/archive\\/663b7f275b0f93356523880aa7e626803168df93.jpg\",\"player_info\":null,\"pubdate\":1619085619,\"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\\/BV1b84y1F7qT\",\"short_link_v2\":\"https:\\/\\/b23.tv\\/BV1b84y1F7qT\",\"stat\":{\"aid\":630241940,\"coin\":889,\"danmaku\":146,\"dislike\":0,\"favorite\":1167,\"his_rank\":0,\"like\":10051,\"now_rank\":0,\"reply\":95,\"share\":205,\"view\":61405},\"state\":0,\"tid\":24,\"title\":\"全员高能!这才是咒术回战!\",\"tname\":\"MAD·AMV\",\"videos\":1}", - "extend_json": "{\"\":{\"decoration\":{\"decoration_id\":0},\"game\":{\"game_id\":0},\"manga\":{\"manga_id\":26505},\"match\":{\"match_id\":0},\"official_activity\":{\"official_activity_id\":0},\"ogv\":{\"auto_bind\":0,\"ogv_id\":0},\"pgc\":0,\"pugv\":{\"pugv_id\":0},\"reserve\":{\"reserve_id\":0},\"ugc\":{\"ugc_id\":0}},\"bottom\":{},\"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": 391, - "topic_name": "AMV", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 281, - "topic_name": "MAD", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 7662089, - "topic_name": "五条悟", - "is_activity": 1, - "topic_link": "https://www.bilibili.com/blackboard/dynamic/66796" - }, - { - "topic_id": 7539944, - "topic_name": "哔哩哔哩漫画", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 6497596, - "topic_name": "咒术回战", - "is_activity": 0, - "topic_link": "" - }, - { - "topic_id": 3545, - "topic_name": "热血", - "is_activity": 0, - "topic_link": "" - } - ] - }, - "usr_action_txt": "与他人联合创作", - "relation": { - "status": 1, - "is_follow": 0, - "is_followed": 0 - }, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/ca4c24bd8bf896545811f401106c19588b80549d.png", - "cover_type": 2, - "title": "咒术回战", - "desc_first": "更新至146", - "desc_second": "冒险,热血,奇幻", - "jump_url": "https://manga.bilibili.com/m/detail/mc26505?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26505" - }, - "add_on_card_info": [ - { - "add_on_card_show_type": 2, - "attach_card": { - "type": "manga", - "head_text": "相关漫画作品", - "cover_url": "https://i0.hdslb.com/bfs/manga-static/ca4c24bd8bf896545811f401106c19588b80549d.png", - "cover_type": 2, - "title": "咒术回战", - "desc_first": "更新至146", - "desc_second": "冒险,热血,奇幻", - "jump_url": "https://manga.bilibili.com/m/detail/mc26505?from=sub_card", - "button": { - "type": 2, - "uncheck": { - "icon": "https://i0.hdslb.com/bfs/bangumi/154b6898d2b2c20c21ccef9e41fcf809b518ebb4.png", - "text": "追漫" - }, - "check": { - "icon": "", - "text": "已追漫" - }, - "status": 1 - }, - "oid_str": "26505" - } - } - ], - "up_act_button": { - "report_title": "举报", - "founder_report_title": "举报(发起人)", - "top_title": "置顶", - "top_confirm_title": "确定将此动态置顶吗", - "top_cancel_title": "确定将此动态取消置顶吗" - }, - "show_tip": { - "del_tip": "要删除动态吗?" - }, - "cover_play_icon_url": "https://i0.hdslb.com/bfs/album/2269afa7897830b397797ebe5f032b899b405c67.png" - } - } - ], - "offset": "516457881632645972", - "_gt_": 0 - } -} -``` -
\ No newline at end of file diff --git a/electric/Bcoin.md b/electric/Bcoin.md deleted file mode 100644 index 684fbd9..0000000 --- a/electric/Bcoin.md +++ /dev/null @@ -1,331 +0,0 @@ -# B币方式充电 - - - -**注:以前充电是电池的概念,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* - -认证方式:Cookie(SESSDATA) - -**正文参数( 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:空间充电
archive:视频充电 | -| oid | num | 充电来源代码 | 必要 | 空间充电:充电对象用户mid
视频充电:稿件avid | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功(并不代表充电成功)
-101:账号未登录
-111:csrf校验失败
-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:成功
-2:低于20电池下限
-4:B币不足 | -| 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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "mid":293793435, - "up_mid":293793435, - "order_no":"BPRG5CEC3VUPOOANA540", - "bp_num":2, - "exp":"2", - "status":4, - "msg":"" - } -} -``` - -
- -当所充电贝壳数小于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' -``` - -
-查看响应示例: - -```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" - } -} -``` - -
- -当所充贝壳数折合的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' -``` - -
-查看响应示例: - -```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 币余额不足" - } -} -``` - -
- - -## 老版本B币充电 - -老版本目前已过期,调用接口成功后(code返回0),data.status会返回0,且B币不会消耗,贝壳也不会增加。以下是历史信息: - -
-查看折叠内容 - -> https://api.bilibili.com/x/ugcpay/trade/elec/pay/quick - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | -| elec_num | num | 充电电池数量 | 必要 | 必须在2-9999之间 | -| up_mid | num | 充电对象用户mid | 必要 | | -| otype | str | 充电来源 | 必要 | up:空间充电
archive:视频充电 | -| oid | num | 充电来源代码 | 必要 | 空间充电:充电对象用户mid
视频充电:稿件avid | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功(并不代表充电成功)
-101:账号未登录
-111:csrf校验失败
-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:成功
-2:低于20电池下限
-4:B币不足 | -| 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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "mid":293793435, - "up_mid":293793435, - "order_no":"BPRG5CEC3VUPOOANA540", - "elec_num":20, - "exp":2, - "status":4, - "msg":"" - } -} -``` - -
- -当所充电池数小于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' -``` - -
-查看响应示例: - -```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" - } -} -``` - -
- -当所充电池数折合的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' -``` - -
-查看响应示例: - -```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 币余额不足" - } -} -``` - -
-
diff --git a/electric/WeChat&Alipay.md b/electric/WeChat&Alipay.md deleted file mode 100644 index e8cca96..0000000 --- a/electric/WeChat&Alipay.md +++ /dev/null @@ -1,207 +0,0 @@ -# 微信&支付宝方式充电 - - - -- [申请充电二维码及扫码秘钥](#申请充电二维码及扫码秘钥) - -- [检查扫码支付结果](#检查扫码支付结果) - ---- - -操作流程: - -1.申请充电二维码及扫码秘钥,秘钥临时保存备用 - -2.使用`qr_code_url`中的值生成二维码 - -3.用支付宝或微信扫描 - -4.以扫码秘钥作为参数轮询检查扫码支付结果 - -## 申请充电二维码及扫码秘钥 - -> https://api.bilibili.com/x/ugcpay/web/v2/trade/elec/pay/qr_code/create - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -秘钥有效时间为10分钟 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ | -| bp_num | num | 充电B币数量 | 必要 | 必须在2-9999之间 | -| up_mid | num | 充电对象用户mid | 必要 | | -| is_bp_remains_prior | bool | 是否优先扣除B币 | 必要 | true:是
false:否
在B币不足时剩余的部分利用支付平台支付 | -| otype | str | 充电来源 | 必要 | up:空间充电
archive:视频充电 | -| oid | num | 充电来源代码 | 必要 | 空间充电:充电对象用户mid
视频充电:稿件avid | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 检查扫码支付结果 - -> https://api.bilibili.com/x/ugcpay/trade/elec/pay/order/status - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | ---- | -| qr_token | str | 扫码秘钥 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ----------- | ------------------------------------------------------------ | -| qr_token | str | 扫码秘钥 | | -| order_no | str | 留言token | 未成功则无此项
用于添加充电留言 | -| mid | num | 当前用户mid | | -| status | num | 状态值 | 若秘钥错误则无此项
1:已支付
2:未扫描
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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "qr_token":"c7cbdc47fc424cd18f2146db653597b8", - "mid":293793435, - "status":2 - } -} -``` - -
- -当申请到的支付二维码已扫描但未确认时,`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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "qr_token":"c7cbdc47fc424cd18f2146db653597b8", - "mid":293793435, - "status":3 - } -} -``` - -
- -成功支付后,`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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "qr_token":"bd649c836c524550bfe22a369334fc05", - "order_no":"BPTD36U3KP82I31RSSLG", - "mid":293793435, - "status":1 - } -} -``` - -
diff --git a/electric/charge_list.md b/electric/charge_list.md deleted file mode 100644 index dd46641..0000000 --- a/electric/charge_list.md +++ /dev/null @@ -1,530 +0,0 @@ -# 充电列表 - -- [获取空间充电公示列表](#获取空间充电公示列表) -- [获取视频充电鸣谢名单](#获取视频充电鸣谢名单) -- [查询我收到的充电列表](#查询我收到的充电列表) -- [查询历史充电数据](#查询历史充电数据) - ---- - -## 获取空间充电公示列表 - -> https://elec.bilibili.com/api/query.rank.do - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
500011:mid错误 | -| 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:无
1:月会员
2:年会员 | -| vipDueMsec | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | - -**示例:** - -查询用户`mid=53456`的充电公示列表 - -```shell -curl -G 'https://elec.bilibili.com/api/query.rank.do' \ ---data-urlencode 'mid=53456' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "display_num": 0, - "count": 226, - "total_count": 11528, - "list": [ - { - "mid": 53456, - "pay_mid": 346545025, - "rank": 1, - "uname": "还有什么名字没人用", - "avatar": "http://i1.hdslb.com/bfs/face/76d4b1ecd13e992a6c7303d77bf716dd922ab234.jpg", - "message": "早日康复,五月快乐", - "msg_deleted": 0, - "vip_info": { - "vipType": 2, - "vipDueMsec": 0, - "vipStatus": 1 - }, - "trend_type": 0 - }, - { - "mid": 53456, - "pay_mid": 8826056, - "rank": 2, - "uname": "煋痕", - "avatar": "http://i2.hdslb.com/bfs/face/35b7c752d0eb1bb7a924804f240b9bfd9199625f.jpg", - "message": "", - "msg_deleted": 0, - "vip_info": { - "vipType": 2, - "vipDueMsec": 0, - "vipStatus": 1 - }, - "trend_type": 0 - }, - { - "mid": 53456, - "pay_mid": 356668487, - "rank": 3, - "uname": "舞象祥", - "avatar": "http://i1.hdslb.com/bfs/face/574f6203ef5bd0d56b95ded6a2736676d9cc5307.jpg", - "message": "warma hayo", - "msg_deleted": 0, - "vip_info": { - "vipType": 1, - "vipDueMsec": 0, - "vipStatus": 1 - }, - "trend_type": 0 - }, - ………… - ], - "user": null - } -} -``` - -
- -## 获取视频充电鸣谢名单 - -> 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:成功
-400:请求错误
-404:无视频
62001:不需要展示充电信息 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ------ | ---------------- | ------------ | -| show_info | obj | 展示选项 | | -| av_count | num | 目标视频充电人数 | | -| count | num | 本月充电人数 | | -| total_count | num | 总计充电人数 | | -| special_day | num | 0 | 作用尚不明确 | -| display_num | num | 0 | 作用尚不明确 | -| list | array | 本月充电用户列表 | | - -`data`中的`show_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------------------ | ----------------------------- | -| show | bool | 是否展示视频充电鸣谢名单 | false:不展示
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:无
1:月会员
2:年会员 | -| vipDueMsec | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
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 ' -``` - -
-查看响应示例: - -```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 - }, - ...... - ] - } -} -``` - -
- -## 查询我收到的充电列表 - -> https://pay.bilibili.com/bk/brokerage/listForCustomerRechargeRecord - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | -------------------------------- | -| currentPage | num | 页数 | 必要 | | -| pageSize | num | 分页大小 | 必要 | 取值范围[1,50] | -| customerId | num | (?) | 必要 | 目前为固定值:10026 | -| beginTime | str | 开始日期 | | yyyy-MM-dd | -| endTime | str | 结束日期 | | yyyy-MM-dd | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
800501007:user not login
800501008:内部错误
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' -``` - -
-查看响应示例: - -```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 -} -``` - -
- -## 查询历史充电数据 - -> https://member.bilibili.com/x/h5/elec/rank/recent - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**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' -``` - -
-查看响应示例: - -```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 - } - } -} -``` - -
diff --git a/electric/charge_msg.md b/electric/charge_msg.md deleted file mode 100644 index 10805ab..0000000 --- a/electric/charge_msg.md +++ /dev/null @@ -1,303 +0,0 @@ -# 充电留言 - -- [发送充电留言](#发送充电留言) -- [查询我收到的充电留言](#查询我收到的充电留言) -- [查询充电留言详情](#查询充电留言详情) -- [回复充电留言](#回复充电留言) - ---- - -## 发送充电留言 - -> https://api.bilibili.com/x/ugcpay/trade/elec/message - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ---- | -| order_id | str | 留言token | 必要 | | -| message | str | 留言内容 | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
- -## 查询我收到的充电留言 - -> https://member.bilibili.com/x/web/elec/remark/list - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------------ | ------------------ | -| begin | str | 起始日期 | | 默认2016-01-01 | -| end | str | 结束日期 | | 默认2050-01-01 | -| pn | str | 页数 | | | -| ps | str | 分页大小 | | 取值范围[1,12] | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-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:未回复
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;' -``` - -
-查看响应示例: - -```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 - } - } -} -``` - -
- -## 查询充电留言详情 - -> https://member.bilibili.com/x/web/elec/remark/detail?id=6662619 - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | -------------------------------- | -| id | num | 留言id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-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:未回复
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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 回复充电留言 - -> https://member.bilibili.com/x/web/elec/remark/reply - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ------ | ------------------------ | -------------- | ------------------------------------------------------------ | -| csrf | str | csrf | 必要 | | -| id | num | 留言id | 必要 | | -| msg | str | 回复信息 | | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf 校验失败
-400:请求错误20004:充电服务异常
| -| 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 ̄)' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": 1 -} -``` - -
\ No newline at end of file diff --git a/emoji/action.md b/emoji/action.md deleted file mode 100644 index 315aed6..0000000 --- a/emoji/action.md +++ /dev/null @@ -1,110 +0,0 @@ -# 表情操作 - -- [添加表情包](#添加表情包) -- [移除表情包](#移除表情包) - ---- - -## 添加表情包 - -> https://api.bilibili.com/x/emote/package/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -只能添加有会员权限或已购买的表情包 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | ------ | -------------------------------- | -| package_id | num | 表情包id | 必要 | | -| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -添加id为`25`的表情包,使用场景为评论区 - -```shell -curl 'https://api.bilibili.com/x/emote/package/add' \ ---data-urlencode 'package_id=25' \ ---data-urlencode 'business=reply' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 移除表情包 - -> https://api.bilibili.com/x/emote/package/remove - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | ------ | -------------------------------- | -| package_id | num | 表情包id | 必要 | | -| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -移除id为`25`的表情包,使用场景为评论区 - -```shell -curl 'https://api.bilibili.com/x/emote/package/remove' \ ---data-urlencode 'package_id=25' \ ---data-urlencode 'business=reply' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
diff --git a/emoji/list.md b/emoji/list.md deleted file mode 100644 index e3bd468..0000000 --- a/emoji/list.md +++ /dev/null @@ -1,646 +0,0 @@ -# 表情列表 - -- [获取我的表情列表](#获取我的表情列表) -- [取指定的表情包明细](#取指定的表情包明细) -- [获取所有表情包列表](#获取所有表情包列表) -- [附表-表情包对象](#附表-表情包对象) - ---- - -## 获取我的表情列表 - -> https://api.bilibili.com/x/emote/user/panel/web - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -使用登录(Cookie)进行会员专属及已购买表情包的分发,否则全为免费表情包 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | -------------------------------- | -| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ----- | ------ | ---- | -| packages | array | 表情包 | | - -`data`中的`packages`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | -------------- | -| 0 | obj | 表情包1 | **详情见附表** | -| n | obj | 表情包(n+1) | **详情见附表** | -| …… | obj | …… | …… | - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/emote/user/panel/web' \ ---data-urlencode 'business=reply' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "packages": [ - { - "id": 1, - "text": "小黄脸", - "url": "http://i0.hdslb.com/bfs/emote/81edf17314cea3b48674312b4364df44d5c01f17.png", - "mtime": 1591604235, - "type": 1, - "attr": 66, - "meta": { - "size": 1, - "item_id": 958 - }, - "emote": [ - { - "id": 2126, - "package_id": 1, - "text": "[视频卫星]", - "url": "http://i0.hdslb.com/bfs/emote/dce6fc7d6dfeafff01241924db60f8251cca5307.png", - "mtime": 1590986882, - "type": 1, - "attr": 0, - "meta": { - "size": 1 - }, - "flags": {} - }, - { - "id": 1901, - "package_id": 1, - "text": "[加油武汉]", - "url": "http://i0.hdslb.com/bfs/emote/eb966aaa5b690d3f9308a9f936f5b5a72a7f956b.png", - "mtime": 1580024058, - "type": 1, - "attr": 0, - "meta": { - "size": 1 - }, - "flags": {} - }, - { - "id": 1906, - "package_id": 1, - "text": "[口罩]", - "url": "http://i0.hdslb.com/bfs/emote/3ad2f66b151496d2a5fb0a8ea75f32265d778dd3.png", - "mtime": 1581309529, - "type": 1, - "attr": 0, - "meta": { - "size": 1 - }, - "flags": {} - }, - { - "id": 1, - "package_id": 1, - "text": "[微笑]", - "url": "http://i0.hdslb.com/bfs/emote/685612eadc33f6bc233776c6241813385844f182.png", - "mtime": 1582182040, - "type": 1, - "attr": 0, - "meta": { - "size": 1 - }, - "flags": {} - }, - { - "id": 1958, - "package_id": 1, - "text": "[笑]", - "url": "http://i0.hdslb.com/bfs/emote/81edf17314cea3b48674312b4364df44d5c01f17.png", - "mtime": 1582184940, - "type": 1, - "attr": 0, - "meta": { - "size": 1 - }, - "flags": {} - }, - ………… - }, - { - "id": 53, - "text": "热词系列一", - "url": "http://i0.hdslb.com/bfs/emote/bacd6e17997348873ef89e5f1bcbbda877a1606a.png", - "mtime": 1592205524, - "type": 1, - "attr": 2, - "meta": { - "size": 2, - "item_id": 1039 - }, - "emote": [ - { - "id": 1937, - "package_id": 53, - "text": "[热词系列_知识增加]", - "url": "http://i0.hdslb.com/bfs/emote/142409b595982b8210b2958f3d340f3b47942645.png", - "mtime": 1585202919, - "type": 1, - "attr": 2, - "meta": { - "size": 2, - "alias": "知识增加" - }, - "flags": {} - }, - { - "id": 2147, - "package_id": 53, - "text": "[热词系列_希望没事]", - "url": "http://i0.hdslb.com/bfs/emote/6c0d2e6c486d1ba5afd6204a96e102652464a01d.png", - "mtime": 1591689594, - "type": 1, - "attr": 2, - "meta": { - "size": 2, - "alias": "希望没事" - }, - "flags": {} - }, - { - "id": 2083, - "package_id": 53, - "text": "[热词系列_泪目]", - "url": "http://i0.hdslb.com/bfs/emote/bba3703ab90b7d16fe9dbcb85ed949db687f8331.png", - "mtime": 1588910215, - "type": 1, - "attr": 2, - "meta": { - "size": 2, - "alias": "泪目" - }, - "flags": {} - }, - { - "id": 2082, - "package_id": 53, - "text": "[热词系列_保护]", - "url": "http://i0.hdslb.com/bfs/emote/55f8f6445ca7c3170cdfc5b16036abf639ce9b57.png", - "mtime": 1588910215, - "type": 1, - "attr": 2, - "meta": { - "size": 2, - "alias": "保护" - }, - "flags": {} - }, - ………… - }, - ………… - ] - } -} -``` - -
- -## 获取指定的表情包明细 - -> https://api.bilibili.com/x/emote/package - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | -------------------------------- | -| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | -| ids | nums | 表情包id | 必要 | id之间以`,`隔开 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有效时:obj
无效时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ----- | ------ | ---- | -| packages | array | 表情包 | | - -`data`中的`packages`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | -------------- | -| 0 | obj | 表情包1 | **详情见附表** | -| n | obj | 表情包(n+1) | **详情见附表** | -| …… | obj | …… | …… | - -**示例:** - -获取表情包id为`93`的表情包明细 - -```shell -curl -G 'https://api.bilibili.com/x/emote/package' \ ---data-urlencode 'ids=93' \ ---data-urlencode 'business=reply' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "packages": [ - { - "id": 93, - "text": "泠鸢yousa", - "url": "http://i0.hdslb.com/bfs/emote/5fa6082e098402d16d58c68e441ae76e40befd2c.png", - "mtime": 1592213522, - "type": 3, - "attr": 28, - "meta": { - "size": 2, - "item_id": 1907, - "item_url": "https://www.bilibili.com/h5/mall/suit/detail?navhide=1&stahide=0&id=1911" - }, - "emote": [ - { - "id": 2086, - "package_id": 93, - "text": "[泠鸢yousa_awsl]", - "url": "http://i0.hdslb.com/bfs/emote/7663b729161bd4556c2ec318c07791000743eb56.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "awsl" - }, - "flags": {} - }, - { - "id": 2087, - "package_id": 93, - "text": "[泠鸢yousa_打call]", - "url": "http://i0.hdslb.com/bfs/emote/718e9495846db4172eb87d2f7f02015a34d35ea2.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "打call" - }, - "flags": {} - }, - { - "id": 2088, - "package_id": 93, - "text": "[泠鸢yousa_沉默]", - "url": "http://i0.hdslb.com/bfs/emote/5e967cf1669743ed92e9a8ff3e5de6d90ca63d3d.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "沉默" - }, - "flags": {} - }, - { - "id": 2089, - "package_id": 93, - "text": "[泠鸢yousa_大哭]", - "url": "http://i0.hdslb.com/bfs/emote/3f757b147b9b1e201470eae7dac9cc0360172569.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "大哭" - }, - "flags": {} - }, - { - "id": 2090, - "package_id": 93, - "text": "[泠鸢yousa_干杯]", - "url": "http://i0.hdslb.com/bfs/emote/5cf5e14101be845233a222ab1bbdc21c63af04c3.png", - "mtime": 1590401422, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "干杯" - }, - "flags": {} - }, - { - "id": 2091, - "package_id": 93, - "text": "[泠鸢yousa_好人卡]", - "url": "http://i0.hdslb.com/bfs/emote/e3907b3bb20b18e7ecb11cd86829c9a4ce5b1b2f.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "好人卡" - }, - "flags": {} - }, - { - "id": 2092, - "package_id": 93, - "text": "[泠鸢yousa_加大力度]", - "url": "http://i0.hdslb.com/bfs/emote/a0393a2d4b522f07a319dfd2e91754a3cdff2c48.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "加大力度" - }, - "flags": {} - }, - { - "id": 2093, - "package_id": 93, - "text": "[泠鸢yousa_滑稽]", - "url": "http://i0.hdslb.com/bfs/emote/a8057c0e0579b93c16010a270e261fd0a64034af.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "滑稽" - }, - "flags": {} - }, - { - "id": 2094, - "package_id": 93, - "text": "[泠鸢yousa_请吃桃]", - "url": "http://i0.hdslb.com/bfs/emote/e92276d9d8c28f85f7dbcc0fbbb6ecb3345ce33e.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "请吃桃" - }, - "flags": {} - }, - { - "id": 2095, - "package_id": 93, - "text": "[泠鸢yousa_惊讶]", - "url": "http://i0.hdslb.com/bfs/emote/9fdc2c5b4b970aded56fe2f326bd4d00e849339d.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "惊讶" - }, - "flags": {} - }, - { - "id": 2096, - "package_id": 93, - "text": "[泠鸢yousa_生气]", - "url": "http://i0.hdslb.com/bfs/emote/9e6ba9ff34101e04d3e321cad486f845f892050e.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "生气" - }, - "flags": {} - }, - { - "id": 2097, - "package_id": 93, - "text": "[泠鸢yousa_贴贴]", - "url": "http://i0.hdslb.com/bfs/emote/dbc177d314231add509501ffc6bc7655fca2c10f.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "贴贴" - }, - "flags": {} - }, - { - "id": 2098, - "package_id": 93, - "text": "[泠鸢yousa_头晕]", - "url": "http://i0.hdslb.com/bfs/emote/49830c1c8a1652f7ee9cb854ac7dbf8e378cdcd6.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "头晕" - }, - "flags": {} - }, - { - "id": 2099, - "package_id": 93, - "text": "[泠鸢yousa_问号]", - "url": "http://i0.hdslb.com/bfs/emote/ab7a543233eff83138c3221c86a762ab36bab7bc.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "问号" - }, - "flags": {} - }, - { - "id": 2100, - "package_id": 93, - "text": "[泠鸢yousa_真棒]", - "url": "http://i0.hdslb.com/bfs/emote/02ea49543a3ac52feee185c156ab08fb2bfdd89e.png", - "mtime": 1589776042, - "type": 3, - "attr": 0, - "meta": { - "size": 2, - "alias": "真棒" - }, - "flags": {} - } - ], - "flags": { - "added": true - } - } - ] - } -} -``` - -
- -## 获取所有表情包列表 - -> https://api.bilibili.com/x/emote/setting/panel - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | -------------------------------- | -| business | str | 使用场景 | 必要 | reply:评论区
dynamic:动态 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ----- | ---------------- | ---- | -| user_panel_packages | array | 用户拥有的表情包 | | -| all_packages | array | 所有表情包 | | -| mall | obj | 商城页面 | | - -`data`对象中的`user_panel_packages`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | -------------- | -| 0 | obj | 用户拥有的表情包1 | **详情见附表** | -| n | obj | 用户拥有的表情包(n+1) | **详情见附表** | -| …… | obj | …… | …… | - -`data`对象中的`all_packages`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | -------------- | -| 0 | obj | 所有表情包1 | **详情见附表** | -| n | obj | 所有表情包(n+1) | **详情见附表** | -| …… | obj | …… | …… | - -`data`对象中的`mall`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ----------- | ---- | -| title | str | 商城名称 | | -| url | str | 商城页面url | | - -**示例:** - -```shell -curl -G '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:普通
2:会员专属
3:购买所得
4:颜文字 | -| attr | num | ??? | **作用尚不明确** | -| meta | obj | 属性信息 | | -| emote | array | 表情列表 | | -| flags | obj | 是否添加标志 | | - -`表情包对象`中的`flags`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ------------------------------------------------------------ | -| added | bool | 是否已添加 | true:已添加
false:未添加
需要登录(SESSDATA)
否则恒为false | - -`表情包对象`中的`meta`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | --------------- | ---------------- | -| size | num | 表情尺寸信息 | 1:小
2:大 | -| item_id | num | 购买物品id | | -| item_url | num | 购买物品页面url | 无则无此项 | - -`表情包对象`中的`emote`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| 0 | obj | 表情1 | | -| n | obj | 表情(n+1) | | -| …… | obj | …… | …… | - -`emote`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ----------- | -------------------------------------------------------- | -| id | num | 表情id | | -| package_id | num | 表情包id | | -| text | str | 表情转义符 | 颜文字时为该字串 | -| url | str | 表情图片url | 颜文字时为该字串 | -| mtime | num | 创建时间 | 时间戳 | -| type | num | 表情类型 | 1:普通
2:会员专属
3:购买所得
4:颜文字 | -| attr | num | ??? | **作用尚不明确** | -| meta | obj | 属性信息 | | -| flags | obj | 禁用标志 | 无则为空 | - -`emote`数组中的对象中的`flags`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---------- | ------------------------------------------------------ | -| no_access | bool | 是否为禁用 | true:禁用
需要登录(SESSDATA)
否则恒为true | - -`emote`数组中的对象中的`meta`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------ | ---------------- | -| size | num | 表情尺寸信息 | 1:小
2:大 | -| alias | str | 简写名 | 无则无此项 | diff --git a/fav/action.md b/fav/action.md deleted file mode 100644 index b554be8..0000000 --- a/fav/action.md +++ /dev/null @@ -1,482 +0,0 @@ -# 收藏夹操作 - -- [管理收藏夹](#管理收藏夹) - - [新建收藏夹](#新建收藏夹) - - [修改收藏夹](#修改收藏夹) - - [删除收藏夹](#删除收藏夹) -- [管理收藏内容](#管理收藏内容) - - [批量复制内容](#批量复制内容) - - [清空所有失效内容](#清空所有失效内容) - ---- - -## 管理收藏夹 - -### 新建收藏夹 - -> https://api.bilibili.com/x/v3/fav/folder/add - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ------------------------ | -------------- | ------------------------------------ | -| title | str | 收藏夹标题 | 必要 | | -| intro | str | 收藏夹简介 | 非必要 | 默认为空 | -| privacy | num | 是否公开 | 非必要 | 默认为公开
0:公开
1:私密 | -| cover | str | 封面图url | 非必要 | 封面会被审核 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -### 修改收藏夹 - -> https://api.bilibili.com/x/v3/fav/folder/edit - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | -------------- | ------------------------------------------ | -| media_id | num | 目标收藏夹mdid | 必要 | | -| title | str | 修改收藏夹标题 | 必要 | | -| intro | str | 修改收藏夹简介 | 非必要 | | -| privacy | num | 是否公开 | 非必要 | 默认为公开

0:公开
1:私密 | -| cover | str | 封面图url | 非必要 | 封面会被审核 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功
-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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -### 删除收藏夹 - -> https://api.bilibili.com/x/v3/fav/folder/del - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( 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' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":0 -} -``` - -
- -## 管理收藏内容 - -### 批量复制内容 - -> https://api.bilibili.com/x/v3/fav/resource/copy - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| src_media_id | num | 源收藏夹id | 必要 | | -| tar_media_id | num | 目标收藏夹id | 必要 | | -| mid | num | 当前用户mid | 必要 | | -| resources | strs | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}
每个成员间用`,`分隔
类型:
2:视频稿件
12:音频
21:视频合集
内容id:
视频稿件:视频稿件avid
音频:音频auid
视频合集:视频合集id | -| platform | str | 平台标识 | 非必要 | 可为web | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
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' -``` - -
-查看响应示例: - - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":0 -} -``` - -
- -### 批量移动内容 - -> https://api.bilibili.com/x/v3/fav/resource/move - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| src_media_id | num | 源收藏夹id | 必要 | | -| tar_media_id | num | 目标收藏夹id | 必要 | | -| mid | num | 当前用户mid | 必要 | | -| resources | strs | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}
每个成员间用`,`分隔
类型:
2:视频稿件
12:音频
21:视频合集
内容id:
视频稿件:视频稿件avid
音频:音频auid
视频合集:视频合集id | -| platform | str | 平台标识 | 非必要 | 可为web | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
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' -``` - -
-查看响应示例: - - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":0 -} -``` - -
- -### 批量删除内容 - -> https://api.bilibili.com/x/v3/fav/resource/batch-del - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | -------------- | ------------------------ | ------------------------------------------------------------ | ------- | -| resources | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}
每个成员间用`,`分隔
类型:
2:视频稿件
12:音频
21:视频合集
内容id:
视频稿件:视频稿件avid
音频:音频auid
视频合集:视频合集id | | -| media_id | num | 目标收藏夹id | 必要 | | -| platform | str | 平台标识 | 非必要 | 可为web | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
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' -``` - -
-查看响应示例: - - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":0 -} -``` - -
- -### 清空所有失效内容 - -> https://api.bilibili.com/x/v3/fav/resource/clean - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( 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' -``` - -
-查看响应示例: - - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":0 -} -``` - -
diff --git a/fav/info.md b/fav/info.md deleted file mode 100644 index 60979fd..0000000 --- a/fav/info.md +++ /dev/null @@ -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:成功
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| data | 有效时:obj
无效或: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
未收藏收藏夹:0
需要登录 | -| like_state | num | 点赞状态 | 已点赞:1
未点赞:0
需要登录 | -| media_count | num | 收藏夹内容数量 | | - - -`info`中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------------- | ----------------------------------------------- | -| mid | num | 创建者mid | | -| name | str | 创建者昵称 | | -| face | str | 创建者头像url | | -| followed | bool | 是否已关注创建者 | | -| vip_type | num | 会员类别 | 0:无
1:月大会员
2:年度及以上大会员 | -| vip_statue | num | 会员开通状态 | 0:无
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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 获取指定用户创建的所有收藏夹信息 - -> https://api.bilibili.com/x/v3/fav/folder/created/list-all - -*请求方式:GET* - -认证方式:Cookie或APP - -**注:查询权限收藏夹时需要相应用户登录** - -该接口也能查询目标内容id存在于那些收藏夹中 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | ---------------------------------------- | -| up_mid | num | 目标用户mid | 必要 | | -| type | num | 目标内容属性 | 非必要 | 默认为全部
0:全部
2:视频稿件 | -| rid | num | 目标内容id | 非必要 | 视频稿件:视频稿件avid | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| data | 有效时:obj
无效或: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
不存在于该收藏夹: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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 批量获取指定收藏id的内容 - -> https://api.bilibili.com/x/v3/fav/resource/infos - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | -------------- | ------ | ------------------------------------------------------------ | -| resources | strs | 目标内容id列表 | 必要 | 格式:{内容id}:{内容类型}
每个成员间用`,`分隔
类型:
2:视频稿件
12:音频
21:视频合集
内容id:
视频稿件:视频稿件avid
音频:音频auid
视频合集:视频合集id | -| platform | str | 平台标识 | 非必要 | 可为web(影响内容列表类型) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------------------------------- | ------------ | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| data | 有效时:array
无效或:null | 内容信息列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 内容信息1 | | -| n | obj | 内容信息(n+1) | | -| ... | obj | ... | | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------- | ------------------------------------------------------------ | -| id | num | 内容id | 视频稿件:视频稿件avid
音频:音频auid
视频合集:视频合集id | -| type | num | 内容类型 | 2:视频稿件
12:音频
21:视频合集 | -| title | str | 标题 | | -| cover | str | 封面url | | -| intro | str | 简介 | | -| page | num | 视频分P数 | | -| duration | num | 音频/视频时长 | | -| upper | obj | UP主信息 | | -| attr | num | 属性 | 0:正常
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' -``` - -
-查看响应示例: - -```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 - } - ] -} -``` - -
\ No newline at end of file diff --git a/fav/list.md b/fav/list.md deleted file mode 100644 index 86eb8e5..0000000 --- a/fav/list.md +++ /dev/null @@ -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 | 非必要 | 默认为全部分区
0:全部分区
[详见说明](../video/video_zone.md) | -| keyword | str | 搜索关键字 | 非必要 | | -| order | str | 排序方式 | 非必要 | 按收藏时间:mtime
按播放量: view
按投稿时间:pubtime | -| type | num | 查询范围 | 非必要 | 0:当前收藏夹(对应media_id)
1:全部收藏夹 | -| ps | num | 每页数量 | 必要 | 定义域:1-20 | -| pn | num | 页码 | 非必要 | 默认为1 | -| platform | str | 平台标识 | 非必要 | 可为web(影响内容列表类型) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | --------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| data | 有效时:obj
无效或:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | ------------ | ---- | -| info | obj | 收藏夹元数据 | | -| medias | array | 收藏夹内容 | | - -`data`中的`info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------------------- | -------------------------------------------------- | -| id | num | 收藏夹mlid(完整id) | 收藏夹原始id+创建者mid尾号2位 | -| fid | num | 收藏夹原始id | | -| mid | num | 创建者mid | | -| attr | num | 属性 | 0:正常
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
未收藏收藏夹:0
需要登录 | -| like_state | num | 点赞状态 | 已点赞:1
未点赞:0
需要登录 | -| media_count | num | 收藏夹内容数量 | | - - -`info`中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------------- | ----------------------------------------------- | -| mid | num | 创建者mid | | -| name | str | 创建者昵称 | | -| face | str | 创建者头像url | | -| followed | bool | 是否已关注创建者 | | -| vip_type | num | 会员类别 | 0:无
1:月大会员
2:年度及以上大会员 | -| vip_statue | num | 会员开通状态 | 0:无
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
音频:音频auid
视频合集:视频合集id | -| type | num | 内容类型 | 2:视频稿件
12:音频
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' -``` - -
-查看响应示例: - -```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 - } -} -``` - -
- -## 获取收藏夹全部内容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:成功
-400:请求错误
-403:访问权限不足 | -| message | str | 错误信息 | 默认为0 | -| data | 有效时:array
无效或:null | 内容id列表 | | - -`data`中的`medias`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 收藏内容id1 | | -| n | obj | 收藏内容id(n+1) | | -| ... | obj | ... | | - -`medias`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------ | ------------------------------------------------------------ | -| id | num | 内容id | 视频稿件:视频稿件avid
音频:音频auid
视频合集:视频合集id | -| type | num | 内容类型 | 2:视频稿件
12:音频
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' -``` - -
-查看响应示例: - -```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" - } - ] -} -``` - -
diff --git a/garb/color.md b/garb/color.md deleted file mode 100644 index 3ec7e07..0000000 --- a/garb/color.md +++ /dev/null @@ -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:成功
-3:API校验密匙错误
-400:请求错误 | -| data | array | 主题颜色列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 主题颜色1 | | -| n | obj | 主题颜色(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------ | ------------------------------- | -| id | num | 颜色id | | -| name | str | 颜色名称 | | -| is_free | bool | 是否免费 | false:收费
true:免费 | -| price | num | 价格 | 单位为硬币 | -| is_bought | bool | 是否已购买 | false:未购买
true:已购买 | -| status | num | 状态 | 1:自动续费
4:已退订 | -| buy_time | num | 购买时间 | 毫秒时间戳 | -| due_time | num | 到期时间 | 毫秒时间戳 | -| color_name | str | 颜色类型名称 | | -| is_overdue | bool | 是否已到期 | false:未到期
true:已到期 | - -**示例:** - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```json -{ - "ts": 1599225638239, - "code": 0, - "data": [ - { - "id": 2, - "name": "少女粉", - "is_free": true, - "price": 0, - "is_bought": false, - "color_name": "pink", - "is_overdue": false - }, - { - "id": 1, - "name": "夜间模式", - "is_free": true, - "price": 0, - "is_bought": false, - "color_name": "black", - "is_overdue": false - }, - { - "id": 3, - "name": "姨妈红", - "is_free": false, - "price": 5, - "is_bought": false, - "color_name": "red", - "is_overdue": false - }, - { - "id": 4, - "name": "咸蛋黄", - "is_free": false, - "price": 5, - "is_bought": false, - "color_name": "yellow", - "is_overdue": false - }, - { - "id": 5, - "name": "早苗绿", - "is_free": false, - "price": 5, - "is_bought": false, - "status": 4, - "buy_time": 1599219782000, - "due_time": 1601811782000, - "color_name": "green", - "is_overdue": false - }, - { - "id": 6, - "name": "胖次蓝", - "is_free": false, - "price": 5, - "is_bought": false, - "color_name": "blue", - "is_overdue": false - }, - { - "id": 7, - "name": "基佬紫", - "is_free": false, - "price": 5, - "is_bought": false, - "color_name": "purple", - "is_overdue": false - } - ] -} -``` - -
- -## 获取主题色基本信息2 - -> https://api.bilibili.com/x/garb/skin/color/list - -*请求方式:GET* - -认证方式:仅可Cookie - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | -------- | ------ | ------------- | -| mobi_app | str | 平台标识 | 非必要 | 可为`android` | -| build | num | 版本 | 非必要 | 可为`6082000` | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | ------------ | ---------------------------------------------------- | -| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| data | array | 主题颜色列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 主题颜色1 | | -| n | obj | 主题颜色(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------ | ------------------------------- | -| id | num | 颜色id | | -| name | str | 颜色名称 | | -| is_free | bool | 是否免费 | false:收费
true:免费 | -| price | num | 价格 | 单位为硬币 | -| is_bought | bool | 是否已购买 | false:未购买
true:已购买 | -| status | num | 状态 | 1:自动续费
4:已退订 | -| buy_time | num | 购买时间 | 毫秒时间戳 | -| due_time | num | 到期时间 | 毫秒时间戳 | -| color_name | str | 颜色类型名称 | | -| is_overdue | bool | 是否已到期 | false:未到期
true:已到期 | - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/garb/skin/color/list' \ ---data-urlencode 'mobi_app=android' \ ---data-urlencode 'build=6082000' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "id": 8, - "name": "简洁白", - "is_free": true, - "price": 0, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "white", - "is_overdue": false - }, - { - "id": 2, - "name": "少女粉", - "is_free": true, - "price": 0, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "pink", - "is_overdue": false - }, - { - "id": 1, - "name": "夜间模式", - "is_free": true, - "price": 0, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "black", - "is_overdue": false - }, - { - "id": 3, - "name": "姨妈红", - "is_free": false, - "price": 5, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "red", - "is_overdue": false - }, - { - "id": 4, - "name": "咸蛋黄", - "is_free": false, - "price": 5, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "yellow", - "is_overdue": false - }, - { - "id": 5, - "name": "早苗绿", - "is_free": false, - "price": 5, - "is_bought": false, - "status": 4, - "buy_time": 1599219782000, - "due_time": 1601811782000, - "color_name": "green", - "is_overdue": false - }, - { - "id": 6, - "name": "胖次蓝", - "is_free": false, - "price": 5, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "blue", - "is_overdue": false - }, - { - "id": 7, - "name": "基佬紫", - "is_free": false, - "price": 5, - "is_bought": false, - "status": 0, - "buy_time": 0, - "due_time": 0, - "color_name": "purple", - "is_overdue": false - } - ] -} -``` - -
\ No newline at end of file diff --git a/garb/skin.md b/garb/skin.md deleted file mode 100644 index 51186ee..0000000 --- a/garb/skin.md +++ /dev/null @@ -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:成功
-3:API校验密匙错误
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ------------ | ------------ | -| user_equip | obj | 个性主题信息 | 有效时有此项 | -| skin_colors | array | 主题颜色列表 | | -| load_equip | obj | 加载动画信息 | 有效时有此项 | - -`data`中的`user_equip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | --------------- | ------ | -| id | num | 装扮id | | -| name | str | 装扮名称 | | -| preview | str | 装扮封面url | | -| ver | num | 装扮版本 | 时间戳 | -| package_url | str | 装扮包url | | -| package_md5 | str | 装扮包md5校验值 | | -| data | obj | 装扮配置 | | - -`user_equip`中的`data`对象: - -| 字段 | 类型 | 内容 | 必要性 | 备注 | -| ------------------- | ---- | ----------------- | -------- | --------------------------- | -| color_mode | str | 颜色模式 | 必要 | light:亮色
dark:暗色 | -| color | str | 前景色? | 必要 | 颜色
1. 使用十六进制颜色值
2. 颜色值的大小写不限,下同
3. 例:#ffffff | -| color_second_page | str | 背景色? | 必要 | 颜色 | -| tail_color | str | 底边栏颜色 | 必要 | 颜色 | -| tail_color_selected | str | 底边栏颜色(选择时) | 必要 | 颜色 | -| tail_icon_ani | bool | 有无底边栏动画 | 必要 | false:无
true:有 | -| tail_icon_ani_mode | str | 底边栏动画循环播放 | 必要 | once:播放一次 | -| head_myself_mp4_play| str | 我的页面头图(视频)循环 | 必要 | once:播放一次
loop:循环播放 | -| tail_icon_mode | str | 底栏改图标或改颜色 | 必要 | img:图标
color:颜色 | -| side_bg_color | str | 侧边栏颜色 | 非必要 | 颜色
5.x 版本客户端的侧边栏 | -| side_line_color | str | 侧边栏线条颜色? | 非必要 | 颜色
5.x 版本客户端的侧边栏 | -| tail_icon_color | str | 底栏图标颜色 | 可能必要 | 颜色
若 tail_icon_mode = "color",则必要 | -| tail_icon_color_dark| str | 底栏图标颜色(夜间模式) | 可能必要 | 颜色
若 tail_icon_mode = "color",则必要 | -| tail_icon_color_selected| str | 底栏图标颜色(选择时) | 可能必要 | 颜色
若 tail_icon_mode = "color",则必要 | -| tail_icon_color_selected_dark| str | 底栏图标颜色(选择时)(夜间模式) | 可能必要 | 颜色
若 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:收费
true:免费 | -| price | num | 价格 | 单位为硬币 | -| is_bought | bool | 是否已购买 | false:未购买
true:已购买 | -| status | num | 状态 | 1:自动续费
4:已退订 | -| buy_time | num | 购买时间 | 毫秒时间戳 | -| due_time | num | 到期时间 | 毫秒时间戳 | -| color_name | str | 颜色类型名称 | | -| is_overdue | bool | 是否已到期 | false:未到期
true:已到期 | - -`data`中的`load_equip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | --------------- | ------ | -| id | num | 装扮id | | -| name | str | 装扮名称 | | -| ver | num | 装扮版本 | 时间戳 | -| loading_url | str | 加载动画图标url | | - -**示例:** - -```shell -curl -G '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "user_equip": { - "id": 2529, - "name": "初音未来-日版", - "preview": "http://i0.hdslb.com/bfs/garb/item/2fa16380b31b3cee6c889d645f2699de8e9d9faf.jpg", - "ver": 1598600025, - "package_url": "http://i0.hdslb.com/bfs/garb/zip/9c393edea0c7b7b59685a20cd655363ef573a325.zip", - "package_md5": "7b6d20d998ad543c6a275948a6a1a5fe", - "data": { - "color_mode": "light", - "color": "#212121", - "color_second_page": "#fff2d2", - "side_bg_color": "#ffe7ae", - "tail_color": "#996c00", - "tail_color_selected": "#0d6872", - "tail_icon_ani": true, - "tail_icon_ani_mode": "once" - } - }, - "skin_colors": [ - { - "id": 2, - "name": "少女粉", - "is_free": true, - "color_name": "pink" - }, - { - "id": 1, - "name": "夜间模式", - "is_free": true, - "color_name": "black" - }, - { - "id": 3, - "name": "姨妈红", - "price": 5, - "color_name": "red" - }, - { - "id": 4, - "name": "咸蛋黄", - "price": 5, - "color_name": "yellow" - }, - { - "id": 5, - "name": "早苗绿", - "price": 5, - "status": 4, - "buy_time": 1599219782000, - "due_time": 1601811782000, - "color_name": "green" - }, - { - "id": 6, - "name": "胖次蓝", - "price": 5, - "color_name": "blue" - }, - { - "id": 7, - "name": "基佬紫", - "price": 5, - "color_name": "purple" - } - ], - "load_equip": { - "id": 2531, - "name": "初音未来13周年", - "ver": 1598602035, - "loading_url": "http://i0.hdslb.com/bfs/garb/item/9b12e8b5cc16a4c2e71e91c43796f09d5e132847.webp" - } - } -} -``` - -
- -## 主题包结构 - -主题包为app端付费主题(套装)的整合包,以zip格式通过url分发 - -包内的图片文件为app对应的资源替换,替换时可随意修改后缀 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 | 【我的】页面头图(视频)
格式参考:后缀必须 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 -``` - diff --git a/history&toview/history.md b/history&toview/history.md deleted file mode 100644 index b1b0925..0000000 --- a/history&toview/history.md +++ /dev/null @@ -1,852 +0,0 @@ -# 历史记录 - - - -- [获取历史记录列表_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
稿件:稿件 avid
剧集(番剧 / 影视):剧集 ssid
直播:直播间 id
文集:文集 rlid
文章:文章 cvid | -| business | str | 历史记录截止目标业务类型 | 非必要 | 默认为空
archive:稿件
pgc:剧集(番剧 / 影视)
live:直播
article-list:文集
article:文章 | -| view_at | num | 历史记录截止时间 | 非必要 | 时间戳
默认为 0
0 为当前时间 | -| type | str | 历史记录分类筛选 | 非必要 | all:全部类型(默认)
archive:稿件
live:直播
article:文章 | -| ps | num | 每页项数 | 非必要 | 默认为 20,最大 30 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | ------------ | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为 0 | -| ttl | num | 1 | | -| data | array | 历史记录列表 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | ---------------- | ---- | -| cursor | obj | 历史记录页面信息 | | -| tab | array | 历史记录筛选类型 | | -| list | array | 分段历史记录列表 | | - -`data`中的`cursor`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------------- | -------------- | -| max | num | 最后一项目标 id | **见请求参数** | -| view_at | num | 最后一项时间节点 | 时间戳 | -| business | str | 最后一项业务类型 | **见请求参数** | -| 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
无效时: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 | 视频观看进度 | 单位为秒
用于稿件视频或剧集 | -| badge | str | 角标文案 | 稿件视频 / 剧集 / 笔记 | -| show_title | str | 分 P 标题 | 用于稿件视频或剧集 | -| duration | num | 视频总时长 | 用于稿件视频或剧集 | -| current | str | (?) | | -| total | num | 总计分集数 | 仅用于剧集 | -| new_desc | str | 最新一话 / 最新一 P 标识 | 用于稿件视频或剧集 | -| is_finish | num | 是否已完结 | 仅用于剧集
0:未完结
1:已完结 | -| is_fav | num | 是否收藏 | 0:未收藏
1:已收藏 | -| kid | num | 条目目标 id | **详细内容见参数** | -| tag_name | str | 子分区名 | 用于稿件视频和直播 | -| live_status | num | 直播状态 | 仅用于直播
0:未开播
1:已开播 | - -`list`数组中的对象中的`covers`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | ---- | -| 0 | str | 封面图片 1 | | -| n | str | 封面图片 (n+1) | | -| …… | str | …… | | - -`list`数组中的对象中的`history`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | --------------------- | ------------------------------------------------------------ | -| oid | num | 目标id | 稿件视频&剧集(当`business=archive`或`business=pgc`时):稿件avid
直播(当`business=live`时):直播间id
文章(当`business=article`时):文章cvid
文集(当`business=article-list`时):文集rlid | -| epid | num | 剧集epid | 仅用于剧集 | -| bvid | str | 稿件bvid | 仅用于稿件视频 | -| page | num | 观看到的视频分P数 | 仅用于稿件视频 | -| cid | num | 观看到的对象id | 稿件视频&剧集(当`business=archive`或`business=pgc`时):视频cid
文集(当`business=article-list`时):文章cvid | -| part | str | 观看到的视频分 P 标题 | 仅用于稿件视频 | -| business | str | 业务类型 | **见请求参数** | -| dt | num | 记录查看的平台代码 | 1 3 5 7:手机端
2:web端
4 6:pad端
33:TV端
0:其他 | - -**示例:** - -获取当前时间截止的5条历史记录 - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/history/cursor' \ ---data-urlencode 'ps=5' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "cursor": { - "max": 26193, - "view_at": 1592985807, - "business": "pgc", - "ps": 5 - }, - "tab": [ - { - "type": "archive", - "name": "视频" - }, - { - "type": "live", - "name": "直播" - }, - { - "type": "article", - "name": "专栏" - } - ], - "list": [ - { - "title": "韩国漫画如何出海掘金?一年出口额2.8亿元", - "long_title": "", - "cover": "", - "covers": [ - "https://i0.hdslb.com/bfs/article/b170c6fd7429ae205d6cb935e1d431710d82609d.jpg" - ], - "uri": "", - "history": { - "oid": 6470274, - "epid": 0, - "bvid": "", - "page": 0, - "cid": 0, - "part": "", - "business": "article", - "dt": 2 - }, - "videos": 0, - "author_name": "三文娱", - "author_face": "http://i1.hdslb.com/bfs/face/98566839756a8e3de6e183109984b032de6ff2d9.jpg", - "author_mid": 34772409, - "view_at": 1593000539, - "progress": 0, - "badge": "专栏", - "show_title": "", - "duration": 0, - "current": "", - "total": 0, - "new_desc": "", - "is_finish": 0, - "is_fav": 0, - "kid": 6470274, - "tag_name": "", - "live_status": 0 - }, - { - "title": "从国际空间站俯瞰地球,静谧蓝星守护者", - "long_title": "", - "cover": "http://i0.hdslb.com/bfs/live/new_room_cover/f07d8a0c7c5655f81cf1586903a121f2680cf3bc.jpg", - "covers": null, - "uri": "https://live.bilibili.com/14047", - "history": { - "oid": 14047, - "epid": 0, - "bvid": "", - "page": 0, - "cid": 0, - "part": "", - "business": "live", - "dt": 2 - }, - "videos": 0, - "author_name": "Zelo-Balance", - "author_face": "http://i1.hdslb.com/bfs/face/7303b3032d1e13ca7c788cd9c30d4430f8ffd1ea.jpg", - "author_mid": 19193, - "view_at": 1592999822, - "progress": 0, - "badge": "直播中", - "show_title": "", - "duration": 0, - "current": "", - "total": 0, - "new_desc": "", - "is_finish": 0, - "is_fav": 0, - "kid": 14047, - "tag_name": "户外", - "live_status": 1 - }, - { - "title": "许巍 《蓝莲花》吉他Cover,这回你们不用截图抓我了吧", - "long_title": "", - "cover": "http://i2.hdslb.com/bfs/archive/0225b1f1a790393097ceebb51e89796be806d6bc.jpg", - "covers": null, - "uri": "", - "history": { - "oid": 883617049, - "epid": 0, - "bvid": "BV1sK4y147ob", - "page": 1, - "cid": 205017957, - "part": "许巍 《蓝莲花》 Cover_1", - "business": "archive", - "dt": 2 - }, - "videos": 1, - "author_name": "硬核拆解", - "author_face": "http://i1.hdslb.com/bfs/face/4e131c9609299303cdde882792fc62b9f99cdcde.jpg", - "author_mid": 427494870, - "view_at": 1592999572, - "progress": 13, - "badge": "", - "show_title": "", - "duration": 91, - "current": "", - "total": 0, - "new_desc": "", - "is_finish": 0, - "is_fav": 0, - "kid": 883617049, - "tag_name": "演奏", - "live_status": 0 - }, - { - "title": "从清楚与混沌之分看Vtuber形象塑造", - "long_title": "", - "cover": "", - "covers": [ - "https://i0.hdslb.com/bfs/article/5ddb94dd1890c639622717c7083fb2917b4aa475.jpg" - ], - "uri": "", - "history": { - "oid": 268656, - "epid": 0, - "bvid": "", - "page": 0, - "cid": 6233590, - "part": "", - "business": "article-list", - "dt": 2 - }, - "videos": 0, - "author_name": "普天一光", - "author_face": "http://i2.hdslb.com/bfs/face/3702810bdac3d5103d684e61dc5bc8492a74f904.jpg", - "author_mid": 6614889, - "view_at": 1592998686, - "progress": 0, - "badge": "专栏", - "show_title": "", - "duration": 0, - "current": "", - "total": 0, - "new_desc": "", - "is_finish": 0, - "is_fav": 0, - "kid": 268656, - "tag_name": "", - "live_status": 0 - }, - { - "title": "百妖谱", - "long_title": "庆忌(下)", - "cover": "http://i0.hdslb.com/bfs/archive/695a4566d05620a24c51d6eb935fa4767d673b45.jpg", - "covers": null, - "uri": "https://www.bilibili.com/bangumi/play/ss26193", - "history": { - "oid": 370908663, - "epid": 326789, - "bvid": "", - "page": 0, - "cid": 199204975, - "part": "", - "business": "pgc", - "dt": 3 - }, - "videos": 0, - "author_name": "", - "author_face": "", - "author_mid": 0, - "view_at": 1592985807, - "progress": 533, - "badge": "国创", - "show_title": "第8话 庆忌(下)", - "duration": 1402, - "current": "", - "total": 12, - "new_desc": "更新至第10话", - "is_finish": 0, - "is_fav": 0, - "kid": 26193, - "tag_name": "", - "live_status": 0 - } - ] - } -} -``` - -
- -## 获取视频观看历史记录_web端旧版 - -> https://api.bilibili.com/x/v2/history - -*请求方式:GET* - -认证方式:Cookie (SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ------- | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页项数 | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | ------------ | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 历史记录列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ------------------------------------------ | -| 0 | obj | 历史观看1 | | -| n | obj | 历史观看(n+1) | 按照观看顺序排列
项数为总计观看视频数 | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------------- | ------- | ------------------------------ | ------------------------------------------------------------ | -| aid | num | 稿件avid | | -| videos | num | 视频分P总数 | 默认为1 | -| tid | num | 分区tid | | -| tname | str | 子分区名称 | | -| copyright | num | 是否转载 | 1:原创
2:转载 | -| pic | str | 视频封面图片url | | -| title | str | 稿件标题 | | -| pubdate | num | 稿件发布时间 | 时间戳 | -| ctime | num | 用户提交稿件的时间 | 时间戳 | -| desc | str | 视频简介 | | -| state | num | 视频状态 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`state`备注 | -| ~~attribute~~(仅做历史性保留) | ~~num~~ | ~~稿件属性位配置~~ | 本字段已被删除
~~略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`attribute`备注~~ | -| duration | num | 视频总计持续时长(所有分P) | 单位为秒 | -| rights | obj | 视频属性标志 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`rights`对象 | -| owner | obj | 视频UP主信息 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`owner`对象 | -| stat | obj | 视频状态数 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`stat`对象 | -| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | -| cid | num | 视频1P cid | | -| dimension | obj | 视频1P分辨率 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`dimension`对象 | -| bangumi | obj | 番剧/影视信息 | 非番剧/影视无此项 | -| cheese | obj | 课程信息 | 非课程无此项 | -| favorite | bool | 是否已收藏 | true:已收藏
false:未收藏 | -| type | num | 视频属性 | 3:普通视频
4:剧集
10:课程 | -| sub_type | num | 附视频属性 | 0:普通视频
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | -| device | num | 观看平台代码 | 1 3 5 7:手机端
2:web端
4 6:pad端
33:TV端
0:其他 | -| page | obj | 最后观看的分P信息 | | -| count | num | 分P数 | 非投稿视频无此项 | -| progress | num | 观看进度 | 单位为秒 | -| view_at | num | 观看时间 | 时间戳 | -| kid | num | 稿件avid | | -| business | str | 视频类型标识 | archive:用户投稿视频
pgc:番剧/影视
cheese:课程 | -| redirect_link | str | 重定向url | | -| bvid | str | 稿件bvid | | - -`data`数组中的对象`bangumi`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | --------------- | ------------ | -| cover | str | 番剧封面图片url | | -| ep_id | num | 番剧epid | | -| episode_status | num | ??? | | -| follow | num | 0 | 作用尚不明确 | -| long_title | str | 单集标题 | | -| season | obj | 剧集信息 | | -| title | str | 集数 | | - -`bangumi`中的`season`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------ | ---------------------- | -| is_finish | num | 是否完结 | 0:连载中
1:完结 | -| newest_ep_id | num | 最细一话epid | | -| newest_ep_index | str | 最细一话集数 | | -| season_id | num | 番剧ssid | | -| season_status | num | ??? | | -| season_type | num | ??? | | -| title | str | 番剧标题 | | -| total_count | num | 总集数 | | - -`data`数组中的对象`cheese`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | --------------- | ---- | -| cover | str | 课程封面图片url | | -| long_title | str | 完整标题 | | -| number | str | 本集数 | | -| season_id | num | 课程ssid | | -| update_info | str | 总集数 | | - -**示例:** - -查询当前视频历史记录列表 - -```shell -curl -G 'https://api.bilibili.com/x/v2/history' \ ---data-urlencode 'ps=5' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "aid": 96523832, - "videos": 1, - "tid": 33, - "tname": "连载动画", - "copyright": 2, - "pic": "http://i0.hdslb.com/bfs/archive/dfc29be381565ee041a0ec9cfc7a32f8a63f76cd.jpg", - "title": "【1月】异度侵入 ID:INVADED 12【独家正版】", - "pubdate": 1584289800, - "ctime": 1584289800, - "desc": "#12", - "state": 0, - "attribute": 338688, - "duration": 1481, - "redirect_url": "https://www.bilibili.com/bangumi/play/ep307457", - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 1, - "hd5": 1, - "no_reprint": 0, - "autoplay": 0, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 928123, - "name": "哔哩哔哩番剧", - "face": "http://i1.hdslb.com/bfs/face/7a8412cbacb9fd18f40ddbbf0ad183e45afc1365.jpg" - }, - "stat": { - "aid": 96523832, - "view": 4772927, - "danmaku": 108890, - "reply": 48584, - "favorite": 46, - "coin": 61768, - "share": 290, - "now_rank": 0, - "his_rank": 0, - "like": 1241, - "dislike": 0 - }, - "dynamic": "", - "cid": 164789275, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "favorite": false, - "type": 4, - "sub_type": 1, - "device": 3, - "page": { - "cid": 164789275, - "page": 1, - "from": "vupload", - "part": "ID_INVADED_112.encoded", - "duration": 1481, - "vid": "", - "weblink": "", - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - } - }, - "bangumi": { - "ep_id": 307457, - "title": "12", - "long_title": "CHANNELED", - "episode_status": 13, - "follow": 0, - "cover": "http://i0.hdslb.com/bfs/archive/dfc29be381565ee041a0ec9cfc7a32f8a63f76cd.jpg", - "season": { - "season_id": 29310, - "title": "异度侵入 ID:INVADED", - "season_status": 13, - "is_finish": 1, - "total_count": 13, - "newest_ep_id": 307774, - "newest_ep_index": "13", - "season_type": 1 - } - }, - "progress": 277, - "view_at": 1588831600, - "kid": 29310, - "business": "pgc", - "redirect_link": "https://www.bilibili.com/bangumi/play/ep307457", - "bvid": "BV1K7411f7uu" - }, - { - "aid": 497899395, - "videos": 1, - "tid": 189, - "tname": "电脑装机", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/fd4e0893b234ee729cf15198065eced98367ebfe.jpg", - "title": "600元的2007款iMac,如今过时了吗?", - "pubdate": 1587727345, - "ctime": 1587708111, - "desc": "苹果东西是真的保值,酷睿2现在都还能卖的这么贵。第一次使用4K画质进行拍摄,应该比以前清楚一些。如有问题请在评论区指出,谢谢!", - "state": 0, - "attribute": 16768, - "duration": 389, - "mission_id": 13106, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 3391089, - "name": "数字云糕Official", - "face": "http://i2.hdslb.com/bfs/face/238dfbca5dda5de2d5ba95ee4e99804714e2b5e2.jpg" - }, - "stat": { - "aid": 497899395, - "view": 23325, - "danmaku": 92, - "reply": 115, - "favorite": 195, - "coin": 132, - "share": 23, - "now_rank": 0, - "his_rank": 0, - "like": 555, - "dislike": 0 - }, - "dynamic": "#IMAC##APPLE##MAC# 苹果东西是真的保值,酷睿2现在都还能卖的这么贵。第一次使用4K画质进行拍摄,应该比以前清楚一些。", - "cid": 182570131, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "favorite": false, - "type": 3, - "sub_type": 0, - "device": 3, - "page": { - "cid": 182570131, - "page": 1, - "from": "vupload", - "part": "iMac", - "duration": 389, - "vid": "", - "weblink": "", - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - } - }, - "count": 1, - "progress": -1, - "view_at": 1588828357, - "kid": 497899395, - "business": "archive", - "redirect_link": "https://www.bilibili.com/video/av497899395", - "bvid": "BV1NK41157EF" - } - ] -} -``` - -
- -## 删除历史记录 - -> https://api.bilibili.com/x/v2/history/delete - -*请求方式:POST* - -认证方式:Cookie (SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | --------------------------------------------------- | ------ | ------------------------------------------------------------ | -| kid | str | 删除的目标记录,格式为`{业务类型}_{目标id}`详见备注 | 必要 | 视频:archive\_{稿件avid}
直播:live_{直播间id}
专栏:article\_{专栏cvid}
剧集:pgc\_{剧集ssid}
文集:article-list\_{文集rlid} | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -删除视频`av540580868`的观看历史记录 - -```shell -curl 'https://api.bilibili.com/x/v2/history/delete' \ ---data-urlencode 'kid=archive_540580868' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 清空历史记录 - -> 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:成功
-101:账号未登录
-111:csrf校验失败 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -清空历史记录 - -```shell -curl 'https://api.bilibili.com/x/v2/history/clear' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 停用历史记录 - -> https://api.bilibili.com/x/v2/history/shadow/set - -*请求方式:POST* - -认证方式:Cookie (SESSDATA) - -该操作不会影响原有历史记录 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | -------------------------------------------- | -| switch | bool | 停用开关 | 非必要 | true:停用
false:正常
默认为false | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -停用历史记录功能 - -```shell -curl 'https://api.bilibili.com/x/v2/history/shadow/set' \ ---data-urlencode 'switch=true' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 查询历史记录停用状态 - -> https://api.bilibili.com/x/v2/history/shadow - -*请求方式:GET* - -认证方式:Cookie (SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | bool | 停用状态 | true:停用
false:正常 | - -**示例:** - -当前状态为未停用视频历史记录 - -```shell -curl 'https://api.bilibili.com/x/v2/history/shadow' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": false -} -``` - -
diff --git a/history&toview/toview.md b/history&toview/toview.md deleted file mode 100644 index 2f16ae7..0000000 --- a/history&toview/toview.md +++ /dev/null @@ -1,470 +0,0 @@ -# 稍后再看 - - - -- [视频添加稍后再看](#视频添加稍后再看) -- [添加频道中所有视频到稍后再看](#添加频道中所有视频到稍后再看) -- [获取稍后再看视频列表](#获取稍后再看视频列表) -- [删除稍后再看视频](#删除稍后再看视频) -- [清空稍后再看视频列表](#清空稍后再看视频列表) - ---- - -## 视频添加稍后再看 - ->https://api.bilibili.com/x/v2/history/toview/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -最多添加100个视频 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
90001:列表已满
90003:稿件已经被删除 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -添加视频`av41687433`/`BV1ht41147kj`到稍后再看列表 - -avid方式: - -```shell -curl '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' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 添加频道中所有视频到稍后再看 - -> https://space.bilibili.com/ajax/channel/addAllToView - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0,referer为 `.bilibili.com`域名下 - -带有转义 - -超过容量后会截取容量之内的添加 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| cid | num | 目标频道id | 必要 | | -| mid | num | 目标频道所属的用户mid | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | --------------------------- | -| status | bool | 是否成功 | false:失败
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' -``` - -
-查看响应示例: - -```json -{ - "status": true, - "data": "操作成功" -} -``` - -
- -## 获取稍后再看视频列表 - -> https://api.bilibili.com/x/v2/history/toview - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | data | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ---------------- | ---- | -| count | num | 稍后再看视频数 | | -| list | array | 稍后再看视频列表 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---------------------------------------------- | -| 0 | obj | 稍后再看1 | | -| n | obj | 稍后再看(n+1) | 按照添加顺序排列
项数为总计稍后再看视频数 | -| …… | obj | …… | …… | -| 99 | obj | 最后一项 | | - -`data`中的`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------------- | ------- | ------------------------------ | ------------------------------------------------------------ | -| aid | num | 稿件avid | | -| videos | num | 稿件分P总数 | 默认为1 | -| tid | num | 分区tid | | -| tname | str | 子分区名称 | | -| copyright | num | 是否转载 | 1:原创
2:转载 | -| pic | str | 稿件封面图片url | | -| title | str | 稿件标题 | | -| pubdate | num | 稿件发布时间 | 时间戳 | -| ctime | num | 用户提交稿件的时间 | 时间戳 | -| desc | str | 视频简介 | | -| state | num | 视频状态 | 略,见[获取视频详细信息(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' -``` - -
-查看响应示例: - -```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" - }, - ………… - ] - } -} -``` - -
- -## 删除稍后再看视频 - -> https://api.bilibili.com/x/v2/history/toview/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | -| viewed | bool | 是否删除所有已观看的视频 | 非必要 | true:删除已观看视频
false:不删除已观看视频
默认为false | -| aid | num | 删除的目标记录的avid | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -删除视频`av540580868`的稍后再看记录 - -```shell -curl 'https://api.bilibili.com/x/v2/history/toview/del' \ ---data-urlencode 'aid=540580868' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -删除所有已观看的视频 - -```shell -curl 'https://api.bilibili.com/x/v2/history/toview/del' \ ---data-urlencode 'viewed=true' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 清空稍后再看视频列表 - -> https://api.bilibili.com/x/v2/history/toview/clear - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| csrf | num | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -清空稍后再看视频列表 - -```shell -curl 'https://api.bilibili.com/x/v2/history/toview/clear' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
\ No newline at end of file diff --git a/imgs/2233login.png b/imgs/2233login.png deleted file mode 100644 index 3d9ff562262bff55999c956f1765c46842219904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45074 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 diff --git a/imgs/activit.svg b/imgs/activit.svg deleted file mode 100644 index b210f77..0000000 --- a/imgs/activit.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/add.svg b/imgs/add.svg deleted file mode 100644 index ecdea95..0000000 --- a/imgs/add.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/imgs/akari.jpg b/imgs/akari.jpg deleted file mode 100644 index 5e5ea0bc912b7e8b9eb447d35ee6fe5682616ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8992 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 xueIl6DyOnNq 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 Wf8K0CAWA^W@V`*tubls&nEOBCt+wa@ diff --git a/imgs/ban.png b/imgs/ban.png deleted file mode 100644 index a51f5b95d53282261f3cfa7ec13f88ab4e9f655b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5472 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 diff --git a/imgs/bili_icon2.woff2 b/imgs/bili_icon2.woff2 deleted file mode 100644 index 6930ed4fc1e3c62b8d5772056c648130cba0bd99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4740 zcmV-~5_|1;Pew8T0RR9101|`%3jhEB03zf701`F;0RR9100000000000000000000 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 SJUhA#T!9KY$)P>uyl(|fgCG+C diff --git a/imgs/bili_icon3.woff2 b/imgs/bili_icon3.woff2 deleted file mode 100644 index dfa8160938ee35dca937120b2dbda89ad540983b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15816 zcmV;(JvYL4Pew8T0RR9106oY63jhEB0C8*p06la70RR9100000000000000000000 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 - - diff --git a/imgs/blackroom.svg b/imgs/blackroom.svg deleted file mode 100644 index 10c801d..0000000 --- a/imgs/blackroom.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/imgs/channel.svg b/imgs/channel.svg deleted file mode 100644 index 308e4df..0000000 --- a/imgs/channel.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/imgs/class.svg b/imgs/class.svg deleted file mode 100644 index 51797d1..0000000 --- a/imgs/class.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/coin.svg b/imgs/coin.svg deleted file mode 100644 index d58a86e..0000000 --- a/imgs/coin.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/imgs/collect.svg b/imgs/collect.svg deleted file mode 100644 index b382480..0000000 --- a/imgs/collect.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/comment.svg b/imgs/comment.svg deleted file mode 100644 index f5cf6b1..0000000 --- a/imgs/comment.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/delete.svg b/imgs/delete.svg deleted file mode 100644 index 6901d1a..0000000 --- a/imgs/delete.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/download.svg b/imgs/download.svg deleted file mode 100644 index dca94f2..0000000 --- a/imgs/download.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/imgs/fav.svg b/imgs/fav.svg deleted file mode 100644 index eea2122..0000000 --- a/imgs/fav.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/imgs/follow.svg b/imgs/follow.svg deleted file mode 100644 index 900076b..0000000 --- a/imgs/follow.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - diff --git a/imgs/history.png b/imgs/history.png deleted file mode 100644 index dc42b04222dada65b6a0e5902ea3b70348ab8d32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2400 zcmcgud2G{G9L@@2lu{UHQ5j$i6vl9DC$vNCg-)hw&UC{EKfidj&L1pyX_7K`d!ITFmEbvTFRwEoxloa8LMO29v!_dR>v2s{efnyMz_0f4R%lcJ0D22g- zmY?H-ydIXqX^KKDX582`i5|N}RhlCT*{U3Y;;Lt)r_|Vn*$Jl|vt|<{Yjm3?a5wFy zX`H1g*3E)$C$ONmPbj4YOFR>cCWFb9G|-<|%b8FhmbQ$-65t1$is5);e}jZL5VPUb zn0#8mIBDhVL@%{ozV^tG404Z8fpgv%CSNe%A^D0Dqo7VIcmZwN(9mEqr7&K%voN>j$XVZ;%O<>B zfBW>fHFwT74C$ZY^@Tdt_D}1!dFi6`v_)%IZ0VBrQ=}yHMG8OZ{UU!)YRs@LEBCsj z=`gwSPS;Jb8f-^N>8Z8r4&J@6dM?>?fc|~mg9m>dy;652cK^yd;=U=?jZ<#jK8J6s zAJcI|=Zjm@-j<>TeHX|l(k`&Y)sFflT^$D+v!-7fJipO$Vl)|R!zeHH^DoO9@#ce^ z+im2)jDm(LhM1Y&6ref{bS~(+qIbwW>eLT?&h1S*IiV_6)aTwg{?wGI^&eebd8TgQ z)p_CJrQJ_f?>t<&{TpBA?xFkJpFh$oM;U(N=pd(~*QefL&Wu^Lrpr61<W4vj{H5;u=2M=j&GxF=gUj!@6=z%D zyLq0|sT<~PtIPI_&2^?(b=kRj!_SQFeZNg;US?=QO;#Jv<)yJK=O$0eHU7}F)J3+` zKl3lIT3l2+{ra(60}swPGg_`~i*#QSO`q=hF1PB!4dSayu(P`2Y}G`U@9;$E=7h|v zHwIeA7PK3$bedc67g|AiLJJvtkwQsZ1rLu9=q145ja>iOV4twv* zrd_XBU-S3BFte%t=&b7*9fY+?O1F`>`Zo4Bx^Sbb@9L%xOJD3a^?2!2UvqkD#){wI hNs~Sw@Iff6Ib)o?vg7``L1yC{$m_{-?{dw2<8N@ZIM4t9 diff --git a/imgs/home.svg b/imgs/home.svg deleted file mode 100644 index 21b5eb9..0000000 --- a/imgs/home.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/like.svg b/imgs/like.svg deleted file mode 100644 index cfc8cb1..0000000 --- a/imgs/like.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/imgs/live.svg b/imgs/live.svg deleted file mode 100644 index 4bd4e55..0000000 --- a/imgs/live.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/imgs/loadTV.gif b/imgs/loadTV.gif deleted file mode 100644 index 33ebcd88d63d41e8d37471924a5bcc3ea40c1649..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10013 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 Dln&x= diff --git a/imgs/logo.png b/imgs/logo.png deleted file mode 100644 index 57fedbddee9348599840402950661954a3be79f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 257403 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¨bxee%v+ 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 diff --git a/imgs/musicplus.svg b/imgs/musicplus.svg deleted file mode 100644 index a32c24e..0000000 --- a/imgs/musicplus.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/imgs/ploading.gif b/imgs/ploading.gif deleted file mode 100644 index 1a8c97d0443b2b3f17ffa6b91ad8395c939bff2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4610 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 E3(>4PcK`qY diff --git a/imgs/ranking.svg b/imgs/ranking.svg deleted file mode 100644 index c827ff1..0000000 --- a/imgs/ranking.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/imgs/read.svg b/imgs/read.svg deleted file mode 100644 index 8d16156..0000000 --- a/imgs/read.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/imgs/relation.svg b/imgs/relation.svg deleted file mode 100644 index a9e42ec..0000000 --- a/imgs/relation.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/share.svg b/imgs/share.svg deleted file mode 100644 index ca3b8fc..0000000 --- a/imgs/share.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/imgs/sponsorQR.jpg b/imgs/sponsorQR.jpg deleted file mode 100644 index 9178ffc1a8d5ce71122c48e9e9e4e5c779f9dda6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706776 zcmeFY1yo(lvLL*1cY;fBcZUOn1b26LcXxL?xFiI3cS&#!5Zv9J0KtO(eE0qL-TUUB zng7k2S+myMHNE?sU8kkGs=D^sUDegEi?5piy0o~IH~;|w01$5%@VX62EA{D_HlK78~lw}(>EB~;@@D;zhL8kgJb`KomG`Ty|u}GgJ~`P2{!&G z*u&M)^{vhDU+qmCo&SPY-(ZlPt=nH?{gwWr7}?BTP37&b`Su|KTmWT20{Hj_|1VAd zkf%dF0Px-b094{X%8WAspd}0d@Rt8kMwtr$XrTbmJmF~MZ1gu`px?eB&CLPesssQ~ zv;Y8W5&#f&{!ZvW`u<}s{u{i$f9pf^#;3#EWdYa%X25$u3a|%E0OmJ{9bg660Pfcn z;M1FW{LiJoko?bKc3J>0b&B4G9JDcLBT!0}dVm z2?iDt3i_`Gfo}>84FwGag^GiW2nz!b4+lWJRl&f*!DEmiV6tI}C?R4Kkn^f*7&*D8 zHqOkx!^OjA=jP#4bMpuSC#R(4)ipFt&EZfet7^I?)%Q$qT~Kmxa(z^Bc4?lcqBc&? zzx*T`R#+rvVjdhCUNAsID=uMb7Sh|-zrV9*vHL~=$=hQG0S)!n!}s?D4+#Z_009jP zgZNhOjsZYGK|(>nz#=1~p};~zpg;g`6k@=@lEM9rJ|ic1@*r^C1@=1}b~W{s)VzkN z83axqQDs$Q6IZvMOI$n(4leGGD((?U^^Mb8_>^K2lBUis;c0_IvsBcd#KQ(Ofvzy*D7S_F(*g{OsA zATQt-y}JkYD-hdt%k#qU0l*}a?*{vV?JsUfI$Bj$hL|ECxZhJJzW@k+Y14cFp#KH3NZkjU8bWO7 z$VHkLn^$16>n>G5AUa^s;F0hZc$W(xpqCi`3uxyX3k&)Hl-`NxApk`F3uJCu6t^AY zKrkWnD=;4LfctV)V&SB4Kl%!o1Z+0~5aigW{{q_i#)9@qH(>MK@(Tc9{0n5*0f_2v zwu+b(hF|~GyaFFzfpyi>bGlamKj75iNj(st{P^X6P(6j;#lwYfEW>ww@JyrB%(3Ve zyMUCPAd*2vDTq1d3-3pT*zfcD5Ni22@EcI<&dcM)PFKA%+67)b+`UrR5 zA>1-B9|?fiIOfTRhpzjqNZk1 zh#^6g)@UL-c0y`B+_+7TxQ75@Iz{0A|NiIX|LXLA{~uTwId+tyuUJ@OYbzYCE4`l1 zX)@89*KOqr+aOAwm}4DPO*3tkzpL}&X#k#LKs1S|xPbg#0dkT5X}T;?YQ^brsj(?o z+=hlCPcfg74U~2)+j9E^xyw4rX7fJkDjj28d_i(sF0j^;XCeMe^vqs7>wy%72@3AI z6ADDL-3`B!UTAW-z-|EUxuJJa5DB64^F6OWhQn`$ktNf*n>s9^a31sm=_c|m)g&Qs zazy$-ty3qx4f(a(SJyrdk;8%!uV&5V`>TEWTfW?;-X!B`l(-?E?#rF=rGWU;(LlCy zo6FCF)vyD_#jGMTH410P^t+KWmA(S6fW*ur+!2^WoT*_z&Qw3X;XK3skmMhz4N7CT z&TMe*h*qBkkB)dQZuFBg>o4CwxJ4wq6bn@+A8gX^*3YxFcVkuL5b?b{5kao_s?LiY zo(LU|<1t9+ zn^YUw6gTxW*MZxo+v_CVINZ1iYrZe5jG3DEn?YHF`X>VOIU<@Wbyi)RnmUKFzm}3z zTyO~KL#}@@dYXUv6YJPwkWf)uk<7@-$PEh(VpPv=Pj9x{d`40681=;mz& z?bLdn;K1a(0%$`yw=Yxwgh}Mjc1gXk1i?zgRiyq=L$OIn5=R79+NDyrjRf5RsY~B3 zO-uN`Z9B|&{=SJ`+7DyRt@r@AsVM))or@VT*x^~=aeD>vdS2r2L~Jf9 z>=_mB3=_$_!8&fY4ni=5s)C5e@{oJ@0>oW5{ot*`*2Jwa&N;gTGtfDOnrtN6zd&FFGT{E-goIk zu^E&tLouByBGDsCrHOCPCd*&Y-xAeSu}u`6Km^}Fu@Y|a4Rj4|3vCwX=V|#!ge1wY zi~fNdw{E6*^n|Tvx#`SDJ~zZaW_hsN)k)uwwCh(SDoh~cPTXS*m?@~3FeY% z&`{wxb)_SS=U(>rQT(_3Up8K=XekC0yJDwQ;2da)3qOju%rPS~$AlrVb~)BQd;X@( z!Y1X=GKP*b_|(@~=39NWJ7G$_I^DthlZCfa3PQ}QmOjwzce z7qd3yhC9D;=?j1?WEsf!9>xORC2}L0Yt!BZ`iXrCV*7+Qn+}R`JZljq^CPCazDdb9 zk=JUp#h&*JkAogl>dB2JLr~V0Z3yzI!(?^z+uwHPevYoGCjg5&dHNSEdZNIwX z(>-QNo0c~VR_-NB5=~kZ)x?D$F`h5iPO?*zGcKO-9NOMCHgMXbyRjkg5VN79tVCii zUgbBb$%<^#MMJ*4xo10$J2-V|%eD}p>n&YU2%a|1I59S=8nnr`ox_xApS-QBwu}{p z7btLS#gzLoH#l{>@Y!X}^*kG+G_QAbm9F-f581JvVX5er>T#Fku@fphri0Jw-Q%(H zmn!QB+<5Au32JI{pFf|)1(i-Nx~tnR%6zz3e+A7XS7hSc;yqCeOFD&Z1p=%5p-4z* zA5~%;L40iXHIV&d)z#$t^`+UD*P=rOMF(Z>uK+UQ$ydbm1{KtMw10raAK--2j5>!V zACu6sk4dOB3T%W{%I`$G7T$iWJh3uV`_k)=%L;6Q{sFoHXfmuDCWn3_aN{>hWI zr0UN!&d9I~1}R%FS6)p(VLG%6J~F;sDrab_%4N`}>e`|1Qi#Dz?v$X5Z^KU>t6E9r zNVI}a_hi^$F_)q?&BcD4t+Qy}qb&?EirLgL*p;8^*QLx}KMhhLq>ExpZzi7a_Z>6o z^2lp|Vo-|0`OL{l)*r$3%rmuF$4_u5MWcV35=W?r^{}9o)P7Ft4qGo(=q?fQ5ZvM| zPd{b{en=#wJr5fD!+>5?I8aeCQ2)Cqo3TrRm4vYAG)-z0K2J3B1Ts3k&uo88{xZ)RU@= zRQ_bn)=Kwd(9*W4=C+Q(`$Q2P-tNm)Vb(2I%}zoNi~O2!zFcr9hD9STS3e;f z>smDd`hMaEh6&BOKEYO#?+FbvWV;|tQO_L0g9w$f24AlPLG*^te1VW_u)R-S?Qram zz$zr)z|)({^I`AJ^!3NzdhizO#Y=F|&i_hT#>1BZ0vZ<++; zmPn(F`y$ENGSe)Qw{=kttW&k2S=6Rk&;i&nTK6{o`jFS{XlnPVy*z6OCuHy-0gb6@ zX(&2fygs=l0Q3qNK2b~%DG)!^JyVjaP;G+?if3>PQ$J19(Kyf3E;uo3Q8nnG9U+Km z4*0qkna#@O5(zMtmnSuGac6?G9bCQkn-mL{zc!hgd*&D?ZtfV$h39YP#3!J1fM~TP z(3wAcZ+ivU%Rc}ts8CpZnm+ zq?eYr(7fEhlWL%LqMvy$x*IiJ`rvvkRBV-!$@D8JU(pXDhrr36X*{d z@rCKBjT!AtkGK+E)^uTda);-QYFR67YhvJ7WIFDIQ($%q#ZAsygcZ+F>MZhWlD-1C zOYGRZ;m5k37p*f98V47tGTOR!ZQH~-9{ZaOanbikcQ<2RvGmFhw)O?8KXWOaPb5l6 zV-jM+Ld_b#k1`FHO!iqxVRfiB6~-`KX8f=YfK!pmrC~)aI@Ag!qO?J!7%nSqbrt2z z7lI+{WuGvA69ex?pUKqH#bt}!oLNzGYtvws_KreGM27DDrBbF*_^RKRf?Ut3S(5iW!6ENb(e}A1^gB1FkVH9hKg{o7hUymguz;|ftBu5j&;#)u?e3PoV1$Zw3 zA&0cZ@;G%*a*skv)s4`OY;S~8#jBpc@#0fV+UPa~W*Etps;zbA1s*EwZVVyDiao!} z_3x8u4cI#zsK!5VAro>wUYR)Ng7l0EnEj)^_h_3(e&nP#>DU!IDqL=Aa`~f2G&&{6 zTDx(m%v{qtr72_Eh6n>V<7UawMYsqVCl&*|>U-fhT9WuA8(TFPxTlHXOc>M9@%Yg6>%X8c-5IqS%N2=8Q z=UtZmv~?8Ex8{P{Z6@IKnkdq`$Mi~*<$wF1pBD85zdQ-&x=|-KduAG0aDLh8C*EWP z;r^zt(2K{N-rn9wpNP;tnp?fh@&=dg$G6LVW{kIgv;jFgW%_=K>_a=U!N526H2w(V z(b}|BRJ}ZV>%mAOR_sEYRZ!bup{p| zS7Rcf;cz@|Tc`I|H6TR;T!JnR((64 zo6Zbf5|8p_087h5o32+=#g7;3Qt}#+Gojy^H^``jRGO zTX8VCr)MV3>I`M>v!yM%XNTK{P;6_>U>BBFm*lcGs;HbJQ2EY?A$?$W0e~Mw@)wgN zZYQ@c$u_qUS+rN<*i*`*YCm`#)9~`K67sj#wv4~?Hjyoe3x7Bzb z>Ie$H&sJR99KvvNzu=}MG0s~z?lT|#6N1@Yh~M1}pBh69wKD?1pmn-}Ri(KzsLSH&sQHfF#(v3VQm}j$?EENvCo!u_mAP zzAdB#MR6=U%qq1eg_0_g3R5z2Cd#;HCtkqQ5%WSiaf?bWhmL*tULm6Jy@C^8#nnmw z(zdo%Vb0e~2B<#L&1%=tkh?w%5P{W==!lWNR%V&qwz)+-C|^9SGm=CtzsEf<%)}MU zPR9X@c9>N=*pxT(iMH5g7=Sz*4jZrWlU`zR<`z(i+Vy^7&O7&EjTIG>Kj3X`=F_HT zA{>|}oHqDmW7)RdLv0p6Gu*Jz2TAg2x`xtZtVta+tgVr-BkEvO3QgeRoM8vVX@Z-HLR+ zpepirA9{N=)g3+r-w2Be^e`qLTZV-(5czD05wZGaEcMGnn#PE1uVJ2mitwxIDoymL8gC zS*G=3ejf-E*do+!H8D5XS9z(i$fNx!Y)I{!Ah9l2>->OwJ8NV)9uX_EZhOgSuAOol z+beLRRtLG2Z{*|5X`PlL3qpxE=S;HUPQawhfor1a)x}REmq`;IfRtk#96S60fo=MH ztz2(jWcsKyEMt%50NSs|bc$kUY2FmIVhV{IwyBwzvg3MhRkK^4ueo}~2w@iiWgjn0 zyRXvF-zo`B^(NI$PsKU>S6~_C?!s9T%kP+=;55YVfyKF7mss-PBFKK-WzOI49Z}2! zT%24DreH)Qy!2Z;f2VSxVV;fNGA%Uhcbqj9T7ul=%>E;?6q{sn17qlgh4}>p5gbZR zN2fH%6RC@OO5GVY0k9E2*V@Zvl~L_re)U!83;OHhsNj=^d*bML#Duzz3YE&26&xKs zBo@!{q{tMEBY{+tW5Pcz7n{XXYv1EvBoMqbq)u{<^_FITn_*?&EnL$XrJfYcR|02E zKr%%%>aL>_cgnHY=YW@bv!rPvw-0<$2S*^ zKtCP%t`Q|8MSG+8B}#pI^9L%TcI>z`NC9(RDaYIs$J1zL3!iy9#B(I|n?7};)!`7i znd_Vqdw9wTuYF^r1y;4_)Oj?Mipq&#SmPCFkW+a%#WeJ4un7ky+*$~7A^>8}tBwB< zC9oy-E5~d{td%7WK@N>Pk=@Qk#eAz>n4I1G`Vk#xC&KWemg=z^r*w)%tIK8aP%T1`YnNKlr>;RRF$?m< z{>GF%#TmR_qkas-;Qlz8aId_S8rn#(;}DAQ3JhCvY+S>&ET(FQdoysclPXqYmM%5uyC zJqs)GE?$8n^~Ak^r{OLYrcnP*!oI|9yV6a*R>GK&&C@n+f3a|0^K5oN7qVf>{2(Js=@sZP94udfhz<{G;^(Gj+GXu?V-nh_ zZuKtxh`}AEoMQ1U1&sey1*75oy!pTs5^cO|EIsZV2-$4F+|{M{rr$ zZqhepPltFdV-J!2??1l~K&%}6Y|TidfOg@(onLN56DlzCI2Kgq5ZvaNC}gz0(734+ zXdgE$dUvBil`JNK)e++~gejxHt68DpBpl(hh1=2IgoWt9zO8FEA7|J4dAg85c0|<6 zSX>AB!`niU^5+8WmrQDNEr-o{e768+Tq50`q9$CL&yKA`UTt&5D0cwA+Yu2g+ z0GgNGTTC^Q{NH7Tn86$Zze#4Cx`Wl4h0f}>` zi-son=BHrO=v%a9>2`B-L0WQWf?ud=5NMGv*UT3AI%*m>D7WI5Dv{kUEkdpzeI47 zXBvePSIz{rGePg?__Y3V0y2&z5zI+*aZ?pM7j_VGeShsy+?QpZ3WV=w9#P1y+f>7) zk(PX->^Mi6nPjXo@-We<>9ktL^q9PdAK)UJZnpdrC5#S^=hFx00c|ut|M!kKhez$h z=m28N+P(njNieNB5MX`_jQ-EY#Qn#x9;hR0RHo~b1|-ZYwm!XLVkh1U8!~Fmhn>qs z$z~a?L(A~w-Vuc`62+y;1if`-xbOVlMA4sI6)AFS; zi^?Q|m6Nz=CjuiQ$0iCzg?>Srw-S6q&ah6K+2Q?+gwmRG5V*@V6i8ExwW|gzxWHud z84i;`uEQ3W1ZsTnvz2&+j*bjdsT1PInDSH%d>^Rp$gvCZ{t0sOWs7cJ)kN`7&1-Ck zpG|V|>uFuwqU{W^Mq^P!vwi(Z{b{DA1rDmC(6pEH>qHpfG;vK*i0ByI6ss@-7z<}p7y07D=8?^`+$r&j6u>IF=^$DMnH zbOZj7Ynnvm?1kf5#E-#|Rf8Y|1HY1&vYq4F5N%Bp zNL~iEUXT`xi<`bBb8&G^eEc`S3k=>h^?}>mQvPd4PH4WU0e4cK4T9jeMcrVYffL-U zHleb@JlnB1COzIoWO$_EJ&D<1!V71iOZz6X2vqUlI+v13_d1iK)uxQxH~0Tn_WvGN zM>5BH1)tKaCoNk?Mb}gq+bTI08QUH*3ok+>Lfrm0L;p%zwSh8^UOB;7S-e0f4+B4# z1)bDLrWjT;1=|Phcf3yZ2AY%T{#wo%zIJ@3*AM7%`ZP807?ZG7sM)*FqcoW7869II)4rSUOJFRf>bf0+}aa5nBKKzXe@Gjic~xZLZij-lK;x zK8J#X0r^1PYnV-_Lw8iBU@BoG%pY&U;P0yfry~$di<-@l@}f(iOW4OGA<0F)zeX3i z#Qxj3|GfQqOO~$7sADw%w&Ns|CVxs|{eZBEa60GR?Q=g*^ULG8Xkv~8$!h*$jnL_v zyG@?dP+6r|q~^8PAMlQD;u~^HA>S?UZUFbq?-Tj&8R|N6!U+Eceqx(6TwDv^&=>Z< z3>yDm8h|Z!|8Jg<(tbgxJeBKlVWSrpwNLXMuR!{b%IRlHeM}b< zsZ)Ca;w~QyKi>WK0m>v?j879&Z7mL>2%84Eb#;702;>52F6Qq8l)gTU3SXbw8r&TQ zwJGFH6ibfZZXKlnzjcm+f!RY(OE|XerlGY+hphVjF0IiepPm3T6vozEfRIoL2Jkn@ zd5e-P2zB@NPAsKQ$C*viAZ61r6>sbj5gjO_^fb4Murn9SG&c)3%P}4hlM|#=$SStn z3}^EgVF2=d|^>=zlM%t^7jJ;Dw21o6?>>Yg{Gf5qbBa#NsG zyFp7_dNm`lGA>R0r;NXZ@1CZTSyV5nDox^1fTcI&B+>zBjIG|@xx==!)( z=SjrFv&mpi()P>X{9}&7@ms7!If%+24|(*|yS4x70tc8_Q{**i2?>4hCFhDTx=qos zqED#h(7#=|%o!8SY2;9vdC(To<`GDfkV$#UfniFq#g-*2op}dso|5v(E~}O@M{Gt2 z1EZt0Zj8FdFf*85Ry?}gL@6R|07cYUuv=p)=@Y@W>G@JejzbAnVx8z?2OTnGz*W)_Y&(#N+dK59H7x{ zBHuH5-F(x~G_xPIs;Je|Q%J&( z@dvT!!{27|>=Con2Zr-LAjDJ{L}|w$d?TIz7W_F}+;$@zeDL@SIr;c2iw{@$$%_Y? z#+qB$o*(7Fb6nLO=sWP7AflQAqa}dZSpR0Jhe_m2Tw^bM_hi3AI)SZt0xHt5AyGEogqMgh9#^ic;Eg@{TM0yD$aeYws3anbgl|B6sPanwR z-X~q3a@33Rmwa}JjA*PUKSsY{86mB@M888ZnSS`wApw?)Xx@rwBq3t?GpQ+fYp*1` zew!9wd`!!$*-XBr9jd0+XxgkO@TOJ}`o@x)J>qYgtS!?2Sq zSmyIKc>O3Uf@v~e19X%yR3vHD7*y-j5&Zfyx4OawmE@mvaBxQhs-_w1`kn>p-@=3v zzM|F4{20&w9<&gFn&)EU5+_U*+)DJ4r0}8ZLzn$$Z@1|?O|e}M+mK0onhv~ks3Gur zJ>(ERa>j6sKRYR!h2z)@TlRG4Kp4J-hU6t6z8qX;j;M}%#*&pQ;l^TR_!$lt zZN{9lI)&M+uK)&Pn?M?OBd?N^HD?);XIe735(y%s*nIe*0wEf0+smA6_E;_S;z`ki zSSQx*k>(6Djq}hbktw^%ki*5iK*Zq&>F4;fgzbPs1ZKj1r^I{j4Xc%z^&{jB;+s?2 z$cZl38B3|@UE&5&oc}>JS6N<3Lh48HS>STXn`fit- zHX)>o$?JktMtuzC)_3h|FFsC*erZe44~? ztfN&n&KnmkwM^TfAeW)^++L^3nLbADD}G4BX`-U5D75A(O-iCWEghRR7Znv%$jr>V z!0}mu>6v=>EqanNGDl^KN$dlYcbQvBmLDSfJY(8amP_}9!!+-j(M|sC_iG}tpvmj| zd+OhT6rPJY$#WMQ6KZ$Ls*l(M0<_@Tl%h=4c2t;psqG|D3IsDs@y~4JlxKLBGYVe! zG9(>UM$#g(U=&4ps!GuhdCVBC`IP;}J~{QORc8@h--C>@GDA%i(UqJWn3(cO2*~E> z#HGlom$ef(y6Z-b;{5qtei`o7>UgPOYQY!u(~il`R135X4nIHr=X+TC+9pvcma-&&`}v%9iC>6}=2&4S7X48_gG zEgBx8tu~F$ zO2`|Y5tz@~u&U0mjgb|%kjsqnIDru8SPpS}W*J`;Xc5)(y_8g8*U3UpVtq%?R@;*s^E7$jzRI+ zm6x0J#uhE8Np+B5g9`8L%DZM24#6)V98HIvu3m15Hgk9B=_b9jX}i)G&er}+M8=mr zNfrysYvSxB{0cQz?0A|6*xizZCqAQ|h=#-+r*7?C$4v;_!x(AiV3 z*YUo=1FLe5kK757T+n^5ehz#+U07>sHZ#P&NitJcA=HOiY}$(9jSCS^L~|ReS?C|E)c+3GE%&C;ioeVWzl95L~A1rCdfB@F6G?OoKH!t^z0mW9JO>GG6z{?N7tto4C_W47BVEOA2~VFiTU$V zMJk@kN`_`ZU~rB^;xeg61zY}B<#Kd_`6mW@+9Pkf@g;P0DHlCuORmzJk$feRx}A95 zgUC&-pWNKk^E}5}a|>IuNQDV&YcPdLs3jF1Uq7GBP53)jRKY757^Z9+kBH$Y^RoNV zGpQvP_PUKofrfAD`V#`k5MF3Wepa;S%#{uu9g7F>n>ETdt)C-7Z`W!oo2ZAR!JWy%e8IXz39) z5LV4nT+q0p(l=P0sVf4J24Z&TUw(q)dkSCUlTXLM?nF-0#Q#()E)h>@I?dMKyw^}J zG|}|(&^xZ=F9R)&K%*vAD}{l9eX9k2lLZbM-qodxCdo#9nXrXf<|CR(+6yn@cwEOm z3V=&~5J8NlVS$RVzwDyjF7uHG&KDSC=4n5}0`2G>e`H z_^1B6QTs6@i`!P=ea6L_al@q@b*cI*;iDyeQM2cBFQZ0~?mW_Wb*Y9cgSRqY;p-*u zRkCk=Haf)%-&@^mCMKpmvzcwZ(V{fxv!%Vg6xSX|a3tswvPDxEC*vaFEy#5T#DBt+ zFROa}a*Xp$Sd6Q+e_JzM+i1N4L`UG1XaPTKc8~{S^UEXb*zwOB50e_IJ*Luc zD#~nkCmPqt^zb?i-lMd;!==Pr3;x#N*s&jJ{S#O(#0qDET_nB&i#g=!;T=JilTQ0} zQ27tPiCKPDn0y`wXj&4ue&rqiX3!^QGgki=9sX7MbiGbmNg%aMS~Z$CijMXc+nQsw zmYjTS!ZUot4^KJsbI!SQsa7SjYA0oO>UO^lgV}WNyKRtSJrxeDCka)fa;a9+z&k9o z*5dTFxZ4(%t;RnUu4|ZbyIMO{;e=06RPOqFlzY6>rRzKw??(z8;!=LBj3aV7k2y!A z2?!d=Xxq!3d!21=ikx0hY&o1c0^;D@VCjOYcrGI{?uC&mV^Vk7tgt zGa9wluEx(uemP?O$jMF~+eeizW-KS?hG~tEL&-cYoUgoKWM@P>JkeG>MV(+g9^H2# zF#nPwL$0GLR8gzQ)K}S*JKxYFb#ws6*g1{Km^>L9V7z{@xh!>)Vuvvah%v;9GsKDVYwhXusZ?9PL(q@Q?kAj5_3-Z<+T+IeO;AE$dS=l+a z3v=MQ0y9A`=eJl?g(V8#%~PC}U>IZkoTQWcPMXt}IJm%>cJgJV4a=-ddA);q$63{t zr6rD5ls_`;*)@Nk*9nIy_J1c=Wn|* zMBaNd{)DwCvi;Nm$ zif#GcK*Y#PNLSJ1+<{$YYZOhcLz&cqz>_LM_zsDE{s-6Kk9V`=?^9B<;^dPb^D=q8 z(s*;GuvQk==1V*F3S^70%3LOuGh=(%Tp!Q#`muG9q~~Nxsq(0Tvebg8WQObdFEQz- zzWA2;)l5w`s>$G@L8!>YBdRb2`jZVA7i2`JB(7AL+GxuV5rFt~=e2NpbZQ>mto%B( z3iqv;(|GXJq>9kEsLe85J8*V>GD)+WNmEc}o{-Ft5Bb=$GqCSfQh?0pWi43xkhxM^ zA1@`KK5WvAznv&YX3ZZDT&V@GiR3+WU!a(C8v?Uu>E^&5E?txL@2hi zXo44pDD4@2NM=f1bdhvXbAu59ph)`zE|yz1vh}6=kiwG5ObOlXfn94uX5+G+4nLUH z)=*MMf%1~JK;7;u7{9_sgtKgZ@*qODyD5eUgcd%0OZpnBwMI{Nq+*ZqgOoYftm;5R9r*j$ zYFQ3VHn%$Q=JcB9p{jGY@s;g~=yAa`V?PX+<9w9YxLij_aU)N*-=n;LxUFpW} zv1U^cX~91&uI^DIVZ)Z;rKVBqnxpl*{rpJ7!}b2F&&7HiMd$*B+4;0T$&0@n-IZf=wUa-#nN%( zbZa_SI;fylftthVj1r!F8{+$vWJn;Sx&BzSm7Z}VC9ZOr#Nj%rr0f|be-=)iL^u58;f+>5CU5i0YfDD1T&9oJ8)vhH$Ax!%Va1Evg$|mRwwLUj?uTt@JuPAR+D72-LQrY z*iF{-%4lb5^7g1=9x-n3%0A9p!t7z!23?9rIXqHT3y=$)y4o%Qh&&mkn77~451YLf z(Q+3{3`&cZBb%!qgsw~C(HbmXZfb#&vE7GiS7eA>Ga`D?o~JquKK{Pu%O4tn;+s z`0>u5+Z&tbnTgQkwuZEGQRCUbAU(Hq=Rfo{!CL5P*A-l_a7+rPPcK)FiuNa3^Gad2 zqE6X%s}&W%&nX_`c{aLo`W%sYfyiMHZM2<}T8+YvnB@h}%mnp4UPB-z@OvY}xcT>( zGb}12hd~z-*kvNV1Y7&h8k4H%2Wd?O$-((jD5K$d%|uV{QUKuc#6A@>$t1 zt*On4oZJ`}ri}(|vkI6-_(4Qe+~itvF;q{%W*SLJ2lYE+$<8(zIsA%r#=OcHDf2h3 z;ZY}bJd!bQO~0p_Fad(0+A)y0ndzM3)!AVQCQq7EbF&Qs_3G$~?E%wBHb=33_X}xg23J(25Q_`L=hOf{CljlAVLt^qJULyc8h{omFWInPD7r>v{Qzw3FyD z@?596ryI0g4U^gRO``S}rB9O7)p7)2*?1KB)-P&cdpZ{^sn!OHy(F!imy2wsZyM;g zCT40(n&#p7Ng`#Za^j(6bXIeJ$l2K$F@3htZjTiEm)}*)tGNnDdzFn1=PNdnw95&E z$fY52^pBG^S0lNJ>) zuoE22qj$@ENh;*Dqd1h5e%B_P_$#^6bD^7Ie1)?19ZcmgRWda}RA>P4R7s*dcO`iq z5@(J?QtWppG2g%AYJDt|F-f-LTuw#aR@Pq31REOkZnm2oZn6E^c17_)$~ta^3bJ}1 zLSYYo0J}5Td9GE$Zcg+r>EnU;lYCr_O@@pNF$Yvg5KbMO&QW=qAE7G)UUWX);ZSM2 zokJIGnA^}hdehmWs&A_1Uig_gFTB4ZBlXjyAmsHi=XRZ2-Sf<@mdnWraEL>(>^P@B z_Le3sBT<&T!{5}|H+G(-!`HfDmjI_EA;-2NXQRh;Vz={oWH+1T;}1}&#Yz>4iUp+; zh@??v{9G~ZD?MUm{Pv(NY3Oqt37+hq=j)sFXo&eh>0ncJb3vEArWIu5X)ilGz13>Q zL^)$DZ#z*`V(Q@IN58)26_*R{s*2BEvtIb%_X0B}bmOteQV9CHkP-;1A8|bszVcp{ zGK|PPu6`Z%7?}szY(m`K|9vVp+k9=TxY|&+m33r?Yw!EqHjI5GCf?394!y@^`vy@) z72nkE=@xbwXuAv*_7QkA8-evl)mxShA~9 zVjzblisZ}>_He@S`v%0eM2CS$JI5-EN4I|vZ&$;jL)-DU2j8Cw(t>Q)e$aRJE?4e;@tk7nX{*xIGGd3_<^+iu&K=NBF~MgQZiR)f;_3Aq$Bkwy~ErR#Hb} zQu?4tgzbCq`NE`q>>bkD1vx^%vayK7di@;Tv9THgWzy&YqCKJxWQaWhKEY4ts@&NE z^5K>-FQUB$@6&7%1p~Dx<$3nvQsriT&tj9T9m3spYB~4@_}T?Ub>`*f?z*^?%@p2s zvV^VHMzzHl$9)koIW=VPw;sl)f-ih)OpRjA1gjxETBQK8eJv({l-_=`R^k!a*oH!k zGUSLE6{?IE_oa54SQMvWtSPF<$}#rBNqQXd3RZyA)$QGlqSCbZQ8_)Ot&;f0n&3H# z-N;n_u3mp2ZxZAKp87kzxNS~Pbwc@vtmC7d;^MFnjkjG<6ioNy&AeNE@-yNW_bC zpMrcFPXdyfGHVTr!k@jL@*dt!n|N7eQON|!Pp@9|D2N&bvD|lNg0;`OR22^g z_XKhJgP3_U=t7451lkFeqons1rQI<|WYpL4E!-*0oU`9IlpDvUbI&A5nT0`NvC8;l z*ZrW4&|A}!!c?gWp8TBnIZ+F(e#(-8r|SI-W7Td_)K}sn*cG!hOtHb zG-!gcKQ-G#Q*{xANH$~I1mnYkoa&BeQP!uu7~GW2h8cA=)hhu1x;KFAPZ#o#0mV|HUtFDvS!BA-i5}?VK&%h z92K@>41kSIBTEM}mA2A&G3)L_lk7r1?vYvEtS(n3Y7-oenD(hSmh4U6%44Fb$>X1U zU!XC-U=BAp>5GO%F5f0($dsz7Rvwdliz-JhkM<{Z^2RTgfuli}J28$FM`Kzb?pQQr zW3nG_;6|e;w<$GoCst6LA5mV8i)qptz#$?XzPLf@^SsTjOpaI5ZaAT^o0o;O@{k3GVJLjW-h9U4uh#%k(!h^?%=~ zn(t!frfc2oeNOGO&gm`B^INP8g!|l9x9U?6ML8POy-Ya<66N{PiF>xO4cn7%4&FwXUQq9@v#l0hTD1|gAsV^>(f$lyRDxsR^(MDkO);V(b&%ZDg<+5Vv zB1Cs^t9ly)r!6UftNL2k&10aZz^f>Un_>l@Nd(r~LQs^%uLadYhL(YEG-iq&L6IOC z$#rDITB;0nsok#KTNGG!ow-5bXp&->5$DAMuQEG5zCKAey=CL-6~blX$OBHz^6esvjrI+C$#g~ne=W**YaT1z4?P!hlyoYW~lo8a~5CM#^t+FX5J5O z7b8>Jp+-Bd-i_TxWnajA|{=>&dHY>OP2MGW;$)*c_}O&OOj%oLlel7ZuOjx>FW zlpFmi)0_D2_y+vSTi1N4xOq@=8=T}6v_Njo#P#d9(#*~goez`j5dzv!2RR~3f;dFj zb#xw-b@YL5E0jm*twt(NeVe+`-SmpfW<&rXXDLXl0^SAF8vu@)PG z+)&pY2V|@EPSXt^`tnH!{xai|l7}h}kWf?7ZeYrCcH~n`^1I``@9mN4&X-@q z@JBtv)1rja<;!SqP;F~$#IfYfr2=Ku6iKIk-8iLOVhQZO1LJpWr zydY}wS#o4{b|q@f%{sy1(4Nu?T{#@&OV;=y{3q}L#$G~;2dPAc`^5%1#tLk;@A77? zUE559sUDQUpd(Of5F6+U(NtkHbGR6$=CpFhR-j|26udnlc`34aLhsAXErF%E>J*if z_&BS~NC2m#Frr(8B|H1h@#Z$*M-&!qpN;NmbPIZq>+s%0bX7HVXy^fj^mcb;7#t{SadPbK}N#cbzBmn@E| zuD<8+_4+3!uOAcZa~z1BTpMf)dxwm1tvAbs3+dH_d1w}x$b=)Oew)8@%djf7DoAvG6RBgOhreqz*a zLWOLEyLpb<;ddh&Q!QFL)~5R*_3HSO3(Vlt&t-sF**eejghOQ-4b{0JbjGeAEJh*O1M2 z^Ha8_Iz|BwpDmrgQQZ4azi}$VIAI2V&HYnq`u-?0MYNAK!lon5iK{<%nkP#~vs_OT zvt%r#nb;XqEnRlIQ0Y?naDKd`geMtxnnPu&?a&_`9e&vZ17j>2@FvMx{6?3hxv-Jy z5jRv6?WdZZ2^KdMFGzq0DEf$>-SP|B2B_DoPL?n*c=9DHS~xn|G_r)4=57%vVRDC# zO9pW|r9o)&_nJ;g^eT5FP#QeCki`$q%~xTTogL7%?_kO#Uk)Jbu{o{H`jy z6BKsESDf7!I{8X{#t>WGdGm~zD{kY4(kG;z#7%2s2$+&;POWS<~AvC9!1HjMQ`~XoigVF`Y=kv_$}^HPdq#h}SHArDlMt z>Ir}GAZLXW+ph77{trXhx=CSiPSH1Jt@n!Qn=X*S1tJezfj1f*_dj?p?!1qtw8UJ&$}cRuqRMHz655s^uAV2HT5Q`X?SoS#;edgBc) zU`ssUifM6ZSqLWqRo*Xh3%{5Oo50#o)WH&M5}5AGq+yvVpTLUa`r`Y4{zA~Q@C_pRbug|Dj&%7xrP_SB485(zmH*CTR`D^c{L@l5xzcTQ7r0`+*p(FcCsP z_I)AaNWEonzO_F`ezG&er7iN}Q|A`4b=IzeP-WL4DaL&3g!s;K!s9mGi^lIl&tDMEw&Cnoi`kHPO@mMx&~iI5#3T^-=S)Z zGl;&e_7KxP;KPoyk~)rUR9dQZlwn_$kWd&JUGf;qbfQL*0mAI?=_bi#507@hKFN(J zhO?~~!}9?}1&|-Sv9#GbsUHUnW2PrVHK5oZHmDk0F>CW~+j9<~-?}nVrhWiiQzyQ? zIW-G2CYF`URp70r2;PdgVPi)V#CR(Wz>=wXr!2DxIG{FrC*?b~n_Bb)^m1qQ)9;VC zcN-bh(&;D<9f2RyTT)zEG+#&EHjE=T?4k%v&Bmy3rw>#j6!aAlY=cxa6TZ}Vj>XwY z#QMB_y0+C+rA}UYU*)$VBX(1fh+u@FlfZ3S=ZrEdE?K=D1^%gOng&`euNQplQycc^ z96H2IE=U7r;3>f31a04kzu9UN-?tP&Hf!fT^Bv*J6znC+s3G)^uO1>IEuD&k56Z z0VBl0N(HcYGU)^k1f&T1!-;koj7E@d=^0L(M7I@=C3!I{XH7Z_l)O(QUNKf3l9J*{ zDvZFUP4C5zO9XJ4%)Ys~xi7~uD~)$=%@`u<>{gm;BJ4d%#H34{3Dng4-A^KSKr_v8 zLzr$*F3$(i%KAOI*2KT#e)=$#S=Fg&355sK3{5kX982h4u~GQjb&;p3)@tgWC{pAL z0Ah@0Hlkzw5x8xzvFMMxo(j{%zU{ZlSv&?&UC^wR3?_tjbW zJS1fv%MG_@U=J)&%VBo7G+s5rGY)jV^?gVw(x~C8;Vb>|;Z{n~t&7vFi(6=!c454T0&xY+X&F7?U~%Ua348+Nc&o^L50yj}rs&52A_x08T#>P2E5{qk0DOog#nbG*c5!CTTM8Kn~&2 zp=pBc$r(?p@vi>>y3Hg$v}G$&#b-WCVi)0MBq^nG6VU#F=SsB)F@)E<hSx z(J6ZF!?qj~a`4{QaNe{~bJ z&0rjDSI3t#9~&Bm@pf*V?Y(MC6}cj^J4I-f<&Nd%JlF1<>Tmxy2Nl8ZKO9u<_W$1; z)aUUb?!Qu}t=F)x;xNinZmutrEGb#5B1mq7C09+ zBL>{~W5#&m)`nCtgx%T>JOoH)Vh_3xZ_1xK1#36iaeO~xGoV^Ew1E8+_}gld7Y9ki zmw^29p3>cvO=eht$va6KmgfZWbK7pDpK^Zp{%gs%-;}b$<8Qv+VyIs9RVDj0stGcu zOLd-@RQXW$oPKJhgq~D+p56TeXnw1`=5v^#d019wXBoGOO0@O$^z*Ze@hAm(*D{Jp zy^KMhnWF|wFq^-2eHYDk4|`eiyT}*7BtJKL+WH4@Gw7h3=$CeH`UjY6ZoYqy{mgot z<8_d8?tc>mMQdewotqR|{|7im?q1!43g4$h!-rN%W8?7^ql9F!vEzXS^@5))U8PpQ zzn$FZ86gI)CK#n6f!^IpIM!<~Pg>m?Ylt?|gPSrz8}z0?9Cmqx0xZ{-@sE^1d0vxL zgx+d*_*FP4pBQuY{sH#Up9Pz4FOp+JWOlb*$tzR1(e9}fb%-WO=3Ae?4m3BD2H5heb*a0J7+zoR4HK53 zr8=1>=d=#OOwWY^j2azLN}k*9Oe(3De|~aFY%AKn}r7?@EWxjUJ%Zp6D&K=;NL&%;xkQuT0X<)<{Lw zuAIicqt4%Znr~N>g(v}PjxR_l5P}Y>wTX{@m(i{oG0D8AA7gLbpI|0-g*B6R0s** z@i|PsQkw|BD$U)!b_cUWJUUwY7H)NqhV82!KMSA1?m`F_BhWR@?NA1U8@=7yee|-_ z9csRF2AYt?4>qIOf=p$cT{t0Cc}Zv>%9VhE%OQ)8@cksTHV$@%Iu9-1S9n^!n|rZ2 zwz6F=ayeGO%pF`HzATgxDlm&MmI}RZm$(+FStb^ZZLuZ$oG_c>GDpF_{DW**mN++- z#v9`lW}t)0>yTI6_E=XGo0qk_Dir8p7Tm#4*+y*?-GU}SgpklEZ z(Ew$p`0`txnqHFF7CPp1FO^i?_BYaTE;EXQgR27W+?5-< zSz*V+=|7aKi6 zyrX`IAdGyZ>~1=VyALdW^q&0(IOBS$Hdh?1funjN+^8QYZ@MT*xBeI;3hQi>pAilf z-u!h7;hwCt{|DenK@19svct6H1V$~$#IfCbqnDVp$hRq4;EHrM>=dVnCCN7~vXEQj zl}e8RJC6cdKH3TI1VYAX;$za8-pdTI#x*64)dHn2@VOZSHlpixB8ML>zN;es1N=3+ zM1`nv7RAX?)>~yLF@>9B(iC=Me_9z8b>QG&vP&SnAB-_8D3;>-pe$diol%n5Gf{9U z8x#lEW4w(?o!X7JQguSPcpX7TGi-N{sq*IM_dF36#&zRqo3|GEf_9IV>AKSNxOiC? zG+Kq^#}2)hH}dg~mzyrSzT;bYp7Xdi`RF1@1XpTd1g8568LH2fE77qcJ_cwJ5By3aNK74JBMOUq}bCMD;IZAWK zVn`oHq~i?CJE-u-wvP?t4C$yu-%-QEPP6&PKd6~U^~+?`xb&1gF!Ws%7r17V@@8mD zYY)v*_(oYKf>d~z;E#X(@iRr`;1Lo{-%ftUTJ!0)BCd48d}D^!iT(J(+(k-70zaF* zau795qPD8RG>x&0{s>jHTPUaBh7)cB8=9*%N>jFay1AzixM*7IhL-EQFqt9eR!+43hewG6S&%jZj+DgRG>`-vQ>2G0yQ>O@nE{o2H5P(vBl< za^J7~EXdT+<8}4ZsS=;;D!}4*r4(8CjTl#Hwbm5H&>fp@%V^V;h4 zbkLr9!LjgqK`(C}J9N_-BGUF3HuccsrHK z)#*-Sg>IT%dZC%y+r*i;>ZfkM~5_hFMa|JA6)l%9NsPvw!JVnRu+XR zblOySOUG=HGoQMDnrPS6!MObHa1>_C42+OWOLI?(psLk61rB$An^&~u>X6S}4zbq| z7jMT>8I3ey11s?FM1Uytxe_RKC)EUzfFD~B`kClbg&K~RXOvtdfc*o1aQfZ^iznl# zR3vmw6Dr1w;z)Y3U=M})W0DRy3b<7iS`+7adBA7&1O23HEic8`>__LHh!^;V@~cJs z{L#9+7~@+j5uRl(bQA?Vk_}jUu3%U~ty^ITW}!1=X=FgnZF2)s>Y2|we#mK)RdAQg zF2|x}i@W(~1n3j}Kui9PYgf`7S3%8q()#+XjbQD7X3m&U^kf0uTyt0Gvd7SHRl{na zknMPfzC~Y=NdKa-b7b;8-LNzJ%?3I1(p2{*@ON$$eiB47na|?cu}`4YW^&}{1QTl; z&hgJ-u*)VuKgMHuO<);I){Y#fk<@R(Cm@qW@!u8r63=9fZH#WOs8)UDsK*mG$29g~ z2z>B8Xxh1e{dz&S1L%s#BuA|7L znAQw5r|d{AKCo#jDG9d`;9p-5gm1@G9eOv|cCfv*Gz#~mO54WBR<+I`5P`hcH1-O$ z=<`)VN8zgFG7H#B?d{CreSCfkgJpOuI>#moQ=G6>xEOC0=+uW)*+b>|x)~P7bNl`Q zl8$$^8l|vxIsxfxJS1-z%t}9tdtU)hojB!EEizEv@go*VSOri=DXn9 z4_b35yibxI)=8$zvhUL&0v_xeY&8mm&ZTR%?1Jn^xsX4%X*#u2JLuvR9PG|=CFb=11K3}uEj1Q~r9)bem7TAw z2uBo+{hJ@EcFL9dy=U zKMIol(flk3ni#(=zt*5VFuKKGO8rT&N>;dDyXCQwc=Ppb^k*5rLpSo%$67m*0`_24 zHF|2)g2Y6MjEbnYz?z=AKgi62V>LsRn}Xa2KV{#T$O}GtcwU!p#;hH4A1GZ|R|^Z@ zCRVHWRo!?#L7{RKC;P5yV;QNy1g!j$19NHRhzi!ZXefF!We~?LGt1yocMjt1QOVyS z7|K&&fbih{7IlJSH3Ni3V|+;RTAk$X+LY2JasvJe>fb-V|%OU0ct3T{5I<` zQ@IE?nt8duRTUQ7F_a%!_ki~D1Hj#n?DFGG=qu`*KibRal6%k6 z7d#9dURybLi_e!$=R3`=Wq)BXoV&u#Az#6Jo{Nno)-t?!*o$uRzNyqRYDJ51eq5jM z*IqD+tKX0rFP^E7`TS}d{PXM~A<3xga@X9=S4-;UR>fyQWI59lBfxcat7q*WZ@JxV z%J~TTJ258-!}heU+W9`Is*~gxT{-3$)dTw;9UTWYHTL9rlgBXn30hbO>fc7QSyA40 zj@9?PW3waaug2{ttava1I^Tz^;-br#))kxa_nX2mK0zI@YwFc54Z|99)3lVf=;e$=vn}1KlArIe8s&609s1^Ka~XdFPgtv znO7fEWO-^WSJBB)aTYA^y8;`*J3z6PD}uOb0i$Lu5G9V7XV`h22D$f|vQhxAdI76` zs+uFU-klJWMN+J(U?hzav<6a@8obzpBbBJrhEs!-e~KFkwUSB4YknPc=ukw?txh5< zkGOI9J#m;RudrV;I@r>HO-F@#tQ(b$+8VtznmzL1&So}7MwH37om{u=g439&G9)5; zEB>%$8p_@JHw0UP7w9S?!na{G@%#&ngssB=v2$l*#QAr4!LW@bj7at^f73U4|U3*#iTk_c> zjRo;{Y{Q9mx30_L6LkYv{7g?#0ZcGkX3ypB_#+@Xn0uQ-T}OG8O~?dhF-Uv9Ia@r1 zuV^PV&E{*Z;gP;PzFo229SpT)tOmNv?uK^Q$Sq2I}|b@KD?#dk$zwEH=`qbQ__v2xh#+iBx^3Y1cEM;gDU z2Ip1eRZv{HK1_iQ&_oftbhL+@R*xEV5r(L_Eex+s?H3Le+K??tJ~LV{NsJwVH{AoLlqy&>%`(FFm(+f$*3LFunS2@>)UVW7apEdU zmTKeOh*u&=1ui#T;E!{q*&#}$QufsH85cu;%A+EW_~(ulao40GN{U#oAKtCP-2*pN zrQj$-0^v`?4yI#JHASfa*|6y?Y~Eo@d8LqqRKc%rhuF1#BBktAz0cm3nKPWdre7E| zx3Ii=R^)gE`~!H0MHlN|OQk*qyxtL{U-ncePH8d^*FWZu@PD&W0)ar*A0m@wSgwO; z({ny_upPjS!M?ShdG00ss=M5Lg!nfnfBUy~pB~xSU(DIB!a;D=u-V#9cUye7V#E0a z>Z-!qL|AwVUt1X-9_lR99QKKzCcPZy=Sv!`pVytym)xu48OkKh`Z_aIBDu^R60nv( z*48X2^@4RIeq*+voJJY3`V80ojbN}eD0!vSrB=V`L!=YS7oV@S@kdR)_Sb6Be1J6# zoH70)l+t~qh2J9?7*;ar)~DmNIXchpHa0c64My*6>Wu2sSeJ(5VbtP@{lv$tLRAS9 zYn?$ZZ=a93O;1V_xt)Kgj{lhFj{{UNWzS6N2}v*-klTn_Zg3_de8y|+Jgt(9`lNo7 z7ueYN^u65nEop0TYEeN(mC<0eh+s1zbyKnxlZ@f;Sd74+KYqSGd$#u!slgfI)2g|} z(A!#J3Bz`Z$)m8?55|6xy>1de=SWHOX>Iz-Jj=|>B4$)U4}}iZ>ABO=r+1l1K;{E| zsDe@MXK3RJ@XWox+^Y6dha?14wj5zqMuk6MBDPB(&g&|S2|!>~F< zn;W249JiR%MtOHSx;ORrLqpoB(;fdZ-!rEWwZu#39!d6|c2?I|fS|LK2Cj82nnIIR=YqtczUXs99I(YF zr>Q6Nvab5Gax5jZQxa|)ix z&#*i=evAdX3SL@HRFJts#d`rM>+GcBEXo-_Lo{sBOY z5Qy4xU5%c2+xyeaKTJNv%txJ&kRh^IT^1)9$5mpcGof|@y(CiVhYmKv;TKDnIT_iZ z`TRC?h0Znf4UwH=r8UH2{j;$1T*BXE&ez(L@Ky8~gMM|Vs}F6VH`xqd6N`<@`roZ= zgZ(uFq(92j?NyLZRu{O{i!QjCW4p0O(DK-yk!JnAor;*IX(2xuTXOj9<6*kuz49_Y zGaC9fRGfy)QK6J09R;Ec)F`y7*+hy7Y36R#Y}F3`?+a5+n+>Yodc933~68rRaQIiS{f*UUq9zun_&AD!k6sm_Ou%1{@SbuhMdU1LU2SRmSX4LMYoHcBUKws$Sv ztB|891u?mj;pONRZkRT~?edU|E2_Wz{@p@c1zW09HqE@E;b-sslfi=c2@{%Wj&R=a za9wxYvlu8je+y^#k=!%nzCQES;8S=x-VMcvmoj4Ct|1hK-_zRl>QN{F?zp#~pe z9!=AKc1C6!@%?zDPX>?pH5Bn9sys?r8zxW`;t~;)TfQKpnbFqsxS*mCF+i6T;yz{zxb!~0LtGz-qwXZT~PR6?^pQBp8lwg7t#sUx}Lm* z%5Z3;-`t1R_WLSijUNUQhTp&p-TYhiPrUdbaA<<_JbzTSbDqCg5+S?Ti~ z6TN|7izJG;dw=a#xFfPJiZ@&1@I&j-y_fGq$M_?&2gaG01Pd@~w+DV*?)W7G-t4H; z8ORZRii`>gQLu`LFbYmEH!seXHA__!H6&yPiZYB;SW&A;tJu+a63(s@3^Wu?I{84h ztl*pWGcY{Fi|~on*S>xA7aJ!KyY3DOe+YCeW-%*+s&7!NWH{MeqQY}4Am>%8X8%QW zc(us#$m*xdbTQSH2fcTsB$!K#6EZdv%0~dvihigCzL}nzH~A~MMIzvfEJGb&vguHiBN#f2n(_@owbQd|?-6yQPn0}YDEV)yhFEGrF zt(_7Bu{`h-gtB{R^#%LZ_0(9=>temS>&E9@?}@OSdhb8Ly|?gF>kt1~w}))%cmL^z zcr0}Pvu%;N-1siUgz`t4*gpU^7R+2$3YcQ*t4j4^gl9k^`bdJUxLQl{%4i0kKj_al zHX@M-e_tjT1Z`igE$&#%R0oT*b7xsa4Y%YidP^B6fpxy-l;z+%ttP;LQ$s{AKxk&m z9bazMx=k}2W)ve45+>!3au%@YYey*|BO7lXT2xeqZa9I=Ugvas*0SN5 zx4l53JQxxX5)@?omLSgxkD#FrCUZq+`yo(SkAf+4d+CTMZLO&+Th5C9CT)ZUJEB1} zZy&Ro+x$dMG%-0dN|1vCgrz5nJD-#;F;?;iXPRkznw?z(72~P(>Z~PNy|T#jr<_FK zm6!B6SX8I6Xc}iOml!2fM7jG7FnGseu0@Q7kN{qSNb*Sn{cbQt^IbGJyC z>Q0(-?I*8RcltbAE+LVK=kO$tCU>ribAgqHBu6{KipfTwe}F`GN#p=yKIj`i91nwqie3g3?*4uYTB`>siR;1y1k@KxA(EDGUnySHJw~0;Zvz=#Bj-@H6-vqfR*qs ziKn6OU18!gcR(rsu-IH*w20y}&Dehc{PSzYrG>@_p<}35*VEhuIs(!Qn-2UmU<+;< zKihxv51_QN?~;uEUtMW;UfOxOYqJknB#qjQo7RowBePr4hmJFUX_=?iA~1TPDtIvp zwExfZ=C^e(P`FV~Q0$+u64cs$<{=WyHksA&*e)6R*s6h}FXhiR-QScD&rrhf z=TF^kf+8oD6iNl7tnyk4(k2|3ebV#?9*+u;NL>qZlG_-0z+2L!Q zgPt8sMJlt}juGO$6I92pzakEeJ?ic%(0Zir@>{vTIG) zxhANPQ9lH{h3ilr4E_ew-W6WrXLQAqnjQvH}tdF#`zLuW4dIn0F2%_XKOeUwnabu5Y2$`L?6pO&^WlI&Y@tm~%*D_h=hPQzb7B6S-px zc}Hn7Y%Te>0pO-ncf5Vt4EEgku*@tFW|SV-l^Baui7TigR9j;&AlbkV{f3YQWAx)s zsq^Cb{*;?@Ncx|UP5RxSSJU{{v3dVHy*c=4MNUdYw z`un+yN~$h?wGFgrC-SV+f4wQSTX8q)ZD#46a(@q)r4ok*!ockH-VO1bFkWs!u8fhaMw zu^vcxqEIeGv@u4cSu?l~tN84Dc1TSZIrXhI6S9mFNeq`j28+7(`LhgiRuA#aNE$RlgmL6< zDHLqq&kM=0snv-R#7Z1Ok-G~w?7Ll-S70sy;hGFq9*i zHx1$dp=2(?YxwBmM-6sY9#PMeoBx%uDLv3HIZ&RXF~ENBU1vyvbmtra;*dEKE2mU; z(smvT)&y$TW-lz1)LWJ1M(~a_Ot(RVa4}55Ja~5el_r$R(e+B_X^#Rj6FEWUP^Wzo zHe6h;2J<$}@m4xtY)nkVKxF-$Hih#u`H0z&yW5w>ZcwctB84HBovj;r)Rw{^ZL!;N z=^tM*h5Z>MosBxJk1-RgU+`D=Q;8s@^U*wDidP+3*B$xi2OvQLeoc2whU#2{9)Bs- zdpRw!Id=S%OcbUQB4bAuS1TdCU};-Piw<#%8t;m8l={7+;VqMb_%p5O&yMwB>|^cv zMJ44U_*po=M+7I>@P@Eu*KH|f>LrVMO=JJ#)?lM8U>q--e4+H;BM;R*9CrV5_^6Dz zo1q_4RPg-_u6>h@25sqR%f+#?E6YX48SS#=`W|zX9y4m@6(w4JOe?YE6RYUh0W!@} zo3}VqC?_S5F?c&{EsD`e91%?h<@KTo{-ADQ!FfcbSjxxRQ^RuQSp7! z7=r`Hh~)IaGG88xK)wzqsu!N9jq_Mn$-DM(o}J-v$Z zEd{~Py5Y}zO`bB}#B=5QMMnw1v%nYz(1;yDLcw3kNuy}XKNNXiC(EDORi@Y%Bch8; zl$o*2Lo=1*(_Al)k`*cv3w}jUXU%Hbkl38cQ!7Z978o|v_lAD^Ei!ebI$fg+kk61` z%dPp~!rd(LmAsDdnVlv}4^7fOtIALgOBR=C=;PVG4Ab9* zxtQTL%~<;&c#r9FMduvCuZc=VF$X8({V_oDT{5R9IN%g1TmMw4^Y6 zL}R&TL?a`XBV$RGnXRf?P4C=p)6_1NHplk8KE%#`u#eUL87 z-+@y^^agZHFKUnHtOg2BmAU{o1_coUm02elVjO|$cFs&$vwitoSt=YGYu4rCIm$Uv zcQG!4U2#coD0*#`cgEn`1EJo^cgnguhKOJW-~jdkgx3V@lh|2XTltyUdD!~fyMmOA z7xY`~&m2{`w(87C_9H9e;%G-js1fN#x&C2wh_>Pp4_>huY zY6hhnEJ=$?q{es$bd@Em&_qc*)zMxR^#uU&a)kEUtw9zir%pvS-g*;#VyMK@D|)Cr zc5Xj|F@7k`P(U|{tt`RlPzO@GHvWpkwu@>`LnEI&qsj<9ehRk=!6jxNW}CFb?SAt4 z$;;(vi3q>FDC?h{$f*jCeb4mp`wf~qb_T0kh>C!?1_#|7iOL|)%^_wgbvu#%^G1kmu4u9azrWTCbfN%BY2XUX0o;+z zX$|*nU$!miB9Tza(A?Qp&it);Y1o}NY0XC+tVbgYL!rgCMa9V8b-IYO0+Uh7;%{y) z?LydPIv4GGfbD?(pRwmgIYIKBaG~T$*nh=wg-6Hq-U1TOrTkqx)f3zQ0PfdjOJU7G zvdn(~JOyvx^RuwNy2W=`egd7LUZ~u+a6Mlg>3_#nb*c3Y2BS%Eef{$p^9zBS(J2gZ z{~ur=DQCm`DfgnH>3@Iqu=0w+lhe;v1#q!_w?I_4q+Xi0Q}09frRhQQ`s<+&BhwEy z+MV`Ai(fPLHt=~M`G3d%&l^9VN;M~4t?{#e*5W(8>uw|a1T&0S&v>wGrG_A zuI-?4l$E<{Q$e9Ip@KLQ@@SH-98c7qP&en-jo7^A)s;xM4hSF;VU&8y@(@#U%<~XZ z3LB9AiujVM5Nj=8zeJKODyG25@1}#1?kuCimL#oCOpP5wkdSMKxvgmd5hFYCY$#@( z^#Xn~!D%K9-@RjTci7|XMh`F|-80{sm{iNh!Z9b44Lz*f^%OdN;B|UAJ)NqAi1>Ut z`I(L6UsGKm_&StGUv`p&5DCt`}( zdJU}m_3Y^Q=sOzzA-f|4+Cl$ZwOH$3(f*!hA&fpKejdkWU<{{{g7~ z?vqmO)`cyaZNQVv)%Din@n-w^f9}M+%qqH=9wFN}2g1Pwe&$hS*Tfo&!{Yc8fBf}7 zosqPOsm-{GDF`V{QYRH<^kh5f;LR!%aSTU*z#xkLdx=N4E#q%siI0$eG_m+SCR^K) zyZM^=)n2#5eAsw)F`6A3gU#uN$Rj#rt=ZR3s=Kj~dwMyCu?DSFb&7M`5{7X@RT+`V z3gfC<*^3~D)4Nj@g|?Q5^h&Ib;5!4UN8sx!@iEaD6akJXD@?SCrou-4g2ZHD=(+jc7nGCpc3Uaqz{%qrsMgP)JCp|n(_Ad3}#O|t?j|y z&Sm~vh^EhnvM(XN|;zn^aw zi62EXp(v7fU@6 z2tT(pcmGe1`KZhKr*FecPhR7VbIJ--QZsbz4rkj;&~X~9nP{{}z*g)-@1R&?9w)D3 zU(ARtXQBllIG1Nm`eA!4umRt-iN~j3>#NXQ(+Y@7K932BPGsEFdcotX4s zm5R)GTi@Ei-aR~;EQt3|%|HhG^iR(srCoUaa$0|gb_8{T%NVF!d|*Ytz764PS=nY| zG4{v#eJ9O8ndVj~FId}=np(1&LMt)KypMFl;=%JFid{*iwP1QidbF$=Z!If}868tN zAF>8SX0;KffaUzX#TLKMI^jXj5tPD;ulFLAgh-Cj?+Nx*C%I56IQN=uhZT_@wt>Vz zeOR9erC99VB-+%7kT)_(lu3ntfRXAzS2SnklwJCd@*`y!NR<#unw8BZB9$9x!ReUh zb;|;Db(tGFz|f#nm22_C*%PijK_?CJ-+2m$DVNZ}lx?ZITvAi-k8(buWyFlA5aWF@ zVvHs_*#;B+P4Z&!(FV}&$DbZjWNY4iN*Tz-r;K755-J?kilRd2@w`|Kgy|{PLz^ka zJo|UW01vv#jkY=BCgfgqTwq7m1qJ(;)eu970y%xNj+ zosQ5hfA=pxvnPKfc$&}p&)h!5_}TvvntUBMtFo`M_Ns;hh@*y(yST$&OZ|Gvn~+c* zbf~k_;qc>9a+ERHOPF};vkg)9HLtL1{kj+={&2NTkB2vP(u~{3;V-?esPV6jogzgi z&-bP&hTp*)J;~mCb0m>^k>=72rA4l8I65d7qnp$vtu{_vyXdpL@iVrbLz11V0VJSfOE=I4 zKXdi5zCYY0vS)@BPC)#QeaTrTn({-C{I*n?CYDP9-Z#_fu~-vUD9b+p;YFVA|2h5vTo13YM8&f+ zwEHvvD*+Z$iCq^w{v;nW!3EHQXs9}>=HBi@dXZCM&VyTdc$vKH%J{C}uL2g-)QtpW zSIk(LdG*FiiC!5ID|#WJFveW~?CS*@Pi@0{gE-+NJzwMO5rV5`jH-$_d{|6uUY=Ik zg6cdXLgz{k(f4@Nhy%*2zLQ}XB@q3`;J_PzESxIfQdzk$dy*2%l_GP5UqbiMNBWM= zZF(seKY=RlozjVn>-*QCwMAWp;-9=dSIAqb2oVF#Ys@kCGsHR$s1e}C9`5b8w?c!n z)wvbRjW~r>iLu2D%ESA*wUfoE-2GS6-vkQBsG9-H3m*Y*MM?+%Q@7y%DpByi|Lw-D zc?`Qm|8`eybc4Q48t}XH(flV|hRs)&d#v{l0NYcy_VZ`so4j*eD>Fu%BZI(kjK$7& z>*3hF-NI>E2Tv_$b8PR9;$XmkfSLbA>qi~+MT=XOba=Lq{Rg<5Z}EnAX3OV(0dM!J z<@gQ2&7DVhsZNA$hZv^ez0~71)6je|M6v$oNr-K~;Fy$mEA{+QYAfLw4>5=6{-AmD z=JIBMrNwsHb$)yK;?Jgl54=j_@aC4Ik;&wkw>R#(9`mtE=5MtbZGDB3JU=Z)xd9)W z<@rj9%U(m%;F62pph*;d6Y>waU0uR|KD(3*;|ziNWngIyrf^ z6ylXY-m5g4*&M;W5gE@c$DNq8a~pz~%PacrAtIh&mX}V8i_7~!Z|8B6IS+OJiozvz zU32neov^K{qH>PkoNcwg(Ip$2JTt$nL7?hCJR^wBXvSEDf)>p9wd&`AM{<2uNBtKF zY8cCIqe5sRkvtq-(Hl~_q+f7NNjZGI>-BBp5DD8?rOu<*418xdR^!|;y$6bEayX!U z+vs)3=Wu@bn@2Av@U);HGdb%P@6Fw-3HoE(+0|_>8P5W~#{be-R5%_VYaz}yJ2i#P z+&MeMcI)H8-_wKU_`i&#LZ~-z37~@gnMKsLWhnUCRZrd3E!|8CiAPmA)`B@SREoH% zX%a6d)S1bp7`wNA3HpC9_7<>hbnmuz+ECLlbJ94>%+xgKFf%hVQyXSZoH)$Pj14n0 zGdIlGyr2KyJ<@xwbfkN%k+p4)yhk(J^6dSr-&*Hdqo<=KtUZ-`kj$J5SQ7uM>D52R z@FjpO29}0!*~fpNQ1w4b(&m@pdWi$Rsw2S~%X@!9!=tuBgSRuK3A=s1bxwYVbqYpC-f~32LfyHg zjm9WK|6F*XF1>bFpY4;eii`XulQVqpBe4NdiQr2lzCx2IAEXSWpOU)|k&98HZa$rD zZIG$UG$ebsw|@t>N88!z+@-f6SxWGyp#j5O2oj7MP|P{$8&i`O0}IYVOOZO5Ku(wqhB#d3sqq67 z3OhlSw8v(NB=P_T7wscUyleUX|4={hxKtg5wn3!Iwm`LyRYKU2d{XX=KLI z@R13Kw{FigkwOq__{b4DBGv($syznkXQc!S@WpUhI2e>Nu4^Auk6SnrDQdrvxKau& z!ehzKNk=9j8L(5(n*|OxYAtFla2v$0AX@N(NQ9paE#d~aI5$!neg8HIBt)2JUNJc1 z*Fh|EN5uee*;IVIn`b&cvYX6*%ZV-^_x^_rQQ(tWq6VU9bfw#--CKtQhFFt=&j)Ka ztyVkwRKTTG@SYxHu;&~6`5XBIkD(_CZ_d^HIP0D!LHNz?xDXQC_z8)rm<~)`>~7#w zS5+CYUc1%$fhMXeg3oMmH|o(%%?uPaedL+F(j>M8NlvPb0CkC!m)@_BgKky;Y%0xB zWJ8?7cvCj!e4#*f&rfHAw1m={eEv84k$<4V>3)`UDSYf3tUa2(+o0ZCrW*ej14EMX zUr_Q?bxUNNnaN=^`bWfc=W?5dq^fLcu)mA#jL+XI>E*V=qIbwJ^_0*=fT) zU50I%DAsy}955XA7%6JUB`&+ph$>uQt@%Z&)oP+?)msB=>kmlztkg*Y*ehl>wi^oH zc)Nv@WjyQT&n-v%i-~n*Y08^|Rk?i~xyEJVijBH__kx{C*kK6{pJ`8i-qc};& z$6bNgtZgT%tUN~>Y=%qBp>3!E4>zxfB#MzUI5aU@WQ~*WH1e1#Yh?eKk4uSYz?HmO zbWmiV`Hf!WPgRMgW9E;MYj#RXD{=-zdy87lPrYkSM7#mJtGj1si|+QM0~n0{iOj~n zB+z}kb{n}i?f$d0tpt%-v5=%fRuE1qm?Irwm_RgAfv$j|>3YqVyn~_^c;>jD?fV(A zox-(CwzA!fs(xJ?%)}&JGPmvmUhs(s`;k96;+{dlb%USb*;4VC{}Fqgft;V0PE$YDz>Ty`5S$Okg$wLOA5G)*_E~Np)$T-O)iwj{L0ADMjkm`@XFy=d@U{jFV4TDh;l2T0FSq>y zuzV%7tAiRmsZxcCteE(PQ)Fl}j*bHyT^>o>b zTJ2hN+N?lEZ|@*GWu^#MT7;?&+KFSbj9n8>8{;`EwW?-;kN*ma*NrvDoxoqcALF%8 zp~#%vT``k`o!*FUr_0rvjiwv7N^TWjiz#L?jtI)uWVKDmGecEatJ%>}zb5AmRzP#$ zprGTxf^)u%4&fVWIU04ny_3((e=#fMm;=&4;5^&}07Zh?+(@_|bp5QM&aCkl0f|gh zLaXxA*Zodl+v$73^r%B01NV&(=5u?{jhJ{2+}xIcr?=1Z$Kip1#(~1p^N6}De5uvW z4ru8~NRYR!^Eu^nHqEc`e)T{GL~ip*dgliG7yuyXtUj26Ug3GHAnc#P>DQQ|19S;y%iuTH?ny0lBcd zN#K$RDdC@eYJ&HLJE z=t&Z1!5f%N{B;x-0T}LAb^|tYRg~}wi;EmF1Apk$1k+_EsWc586XIAPWJ&FeS(udF zP$NDJryOval2wjuX^&C`tB78{j$j$?7Bj#Q!i(#VA{(tqRw`2sI-sgb=ab=nRT*6r zypi=H6mhX+c!HKj06yEJXMDBoP^}ghymhZAVK6X>>(d2>RLH+c3i!cY5 zo3Aa4ey|F{;FGu>!_R-v4AqOSI7@;doVb}Q z(5N}N7_uf?_bqz-J__CYgKIvfW~ThVXcn#aKrC~!1cJIhxC*7LZa#igI96`F@9mQ6 zvXqLmm>8aGG%a8|bJ-Hio=i9RP-3NIT%?6C3>~Z_21kK9c~ZPs^<+j&HS9ZjYyW(Z zI;%2=^gNEVRT{-_na$Z!&GbBy{?Df%KQgx|_ltldqO}uW0mjLi5G_k94_{kU%xh0v z>zlVqOot!{aM-@<&%`?*;J*&j(>?F{q?o_!y!E!fa*D)His_=er>X5by_CXz4GH;D zU?LhvZaWZ0jA*N_6aGjl*4chx>=bmkcW9W$2|8F-f$&Pz@Q3>=yo*M)e=}NRO=kF7 zNr;aAis}xMWS_w@CbfG)l8Z+4Us!tuCNh@(akB%0T*bz5sR zQ1%&41lr5<3aG-^E44G4nxERe;R4t0?hRs7;nm15P};>9ZciF7tUhTBj~i+5M%pb& zvp(u@VtDpr0-Of$K@6la!4_hT4=V&Qn$xtm+YBaTem`G(B2)VA4OO`}Qx@21)ikib ziG>_AHr9Pf9qm{8kxgYC`V;k#^0y8vJ~z(+`=VTpvg% zs^;T<%48*cIt3NBxX24JS{wKC^;kMyesbhQ9$wUbh*ps!qRE$@6FP>pP#ySrs4vBh7= z9-F{>@a1MB1>|`|;lq+WMqxf6AXC|IA5wubhTMpr@Ke0`256{tkSLVfP+!iVxJykk z$YP1*G_825g~jN8`GO*NQ0?g=wWnj^=XUzUWyBk^YI-cYoL0fAAin~K4{PR9 zPF7rK(l0h;GnrTBTb0Po9TDfE;`Si#oHC4Ww}E{V9|B5{dVZ|YvXrvsVr;~GA!|*I zhgiW#$u?8c1DG{~=g9TNe6uM>d{tAyO60*eY>;3}-0KdrvL)Pa#+3(<_~;3IbqymQSdF;@1p73AN(^p4x1NOu#sKq5evG6xP+};bcItApFcKWN(yJ7< zHA?qdlm9KiS(4DYfOsc!d=~G@ZNTIEwY=F$v`70Me{SnPP#Ba=F2Cc(e|Gf`MA+$G z72IxLIT83#4++LqLn@=aspT7+CKHT)ub@f&zP*p5oP#qGPP=2aw9@DlQi6OoHa4D; ziRd_Ta&i}Fa)xMM35Z#eMMSo_MdNhvpmEJP-Av`2>cmlbN-+xTb6}`lpGsI%u_b^> zuMlUk#P{(W%hlETTWN7pVp*h=DY8uqrA_+vGGgOphvJvrh2Mg1#BMN08E7S?#icgd zcgQkCqtGNw%l6%R%g7=-YV!48jkPqEoxxa}U!CD-HTi-`%5v7zB23~U+d$#7(N%B5o}DCh6km^hS384{I#63k6w zf$?o^EwW?g9+2hd=6J~lz84< zCk|r0L<82$9lyofFNXUH)q8I2QjF^MMJ*dO^>hvnx;{G*@K}4;K3>`5>uzrHtjC!x z-agMPOC0-~T^2okzsakPnR*}Jl(`I?5%A(M_-)9KGwp;*B9D8OhBDZ&A)$DGY$`Oo zE3mC4viRhegDPLoy{O^5UE5}o@s0_6;`#>)qCS+I`g8SeX;a|R&Gw}HmfNO-(B>DV zx5vwlD45)VfCXAu<#~-5w62m?0@Z;ltmCY*XC*J)e1VgP)J}3d3&Oun0`}89)&gbO zlDme;Hjqu{zKp}oc-oL`rHx=6S)fv<$eKGbbBrspusT`mRQ$jU=HQP5`sIn1Y?Kru z>vc0s&*#;*=jTde7m~Ux`CApHu_Q`au zHQ3T*vbfEnOP@6HT8vc1s>IK58lvVS;qUFC&sLn38 z!}C^hqKUJZG@@)U`Dga5$5hS!Lhq zWC=gnqcFnJ>ljK+$N96j+Z{=H2k39eIMMb_xH1zq}IHMI0sEE+f;;lJ8>VKw5<)^KiFs6BRT`U(S77C`^+E(2BmwzcJ|rs! zjoTXZU1egOV@~^BP+~!4Mvmvro~JyiD- z9WhmIRo{)@$X9jxA}VFsddMPYKOFd_PHMQYP4hq? zb=O|5nm0LnCvlarxu?2{04uuyucZo1QRX$v-oWNEqCyYft(v)`%STs#seK{F4Q-%dP@m}d)^31Z zbwT1gceHT@jw|e23+^U{gZAEIQ{S0CntSThz+G*U&=W*&AaiW&wF1oXiP+5|mMn~s zE-EW5jKXA37#j(1m7T)<%vAb}OWx4DVCAeJo+sW!pE@#^|0fYl&TMEARNJm(ckZ^| zoQx86lhZQ12Oe%+N49HeNRH{2C$x{nttN3lokRF<{o%s9BVsh-o7K+OB_!YPh7u0z z4Vz)Y&E)JVTBI-aDQlr;TXa$x>~Lm!V~f3oif@GdCQuRK`lE)xScvxG1uH5tns{oi zFScfz+JYR`^2tBWI61jV^?{t2i3Q>Y^*faK24ZOG-#sOAQ+@0z ztjY-x{{HE=k&iy%Pl*iurLH)x^qTZYvmqKjr!WjFw>AL)P6~QrBBX>)4otwucSrzH zkX8B6V>RM8?N_;*z$(a-21ivG6B`{BVZ!S;H3SC(l!-*)LU1U&3Mc9Y>M-?1xRNO{ zC@@XMq$n_eFggQ?OsY{qNMS0G$usg|d( z*F8QP$BB893wU-|O+(R&GGommq_kuH1*6&<1&l?LmtGy})@xIvwC*{9hCJdDERMy7 zO;mYFU;PbIsghJVsMQ zD;Yq^f)t30q`MKGgnsgE)aid$Mq!^7eJL^KacOe)ugPK&~f~ zCTC%DNNc;fyOiBm?dXFB06_Z7LIFFE@0alKiHSjq=%Dal;m!oKMU8hdIyOIM3Tf%= zBtp=OOd;ntd<0VJ9k*OTR#Cc-P*M9lE2Cm+2FReLlTFl=kWfU2OQ94;OaMtpNY0bN zzV$WEbLFXVjmtF#Pah8?a|AaB0@4Q(&?#ZWAf_$oI51jh!>ex=H>N9=lyPWo76qj2 zGJ2@gZKGeBx@q1vM!eeE?|a{DS7NxvXj!aFSxfeQrvsITITwD1p?j0Y*TJV|`1pW? zP3*ROPDOj5Ot6WUxBn+1LyV5{=M-AbR_cJU^(&88QsvcK(glL$WCrTr+T{<%r2Smw zx7NGIi&%fMj8`>+fu%Hjjx8glK_ZxPGa_9#B+uTSK`{^>dp1L3XS)gXwy~QAKPS9V zvEVuNxTcmFsdl@A!p^sRkTp4bcyOri4O7Ob!1#wr-gA0o$qcWg@!{r#57KhWE3Y(fQ)9jr60%w`-vJMb;GATm;A4zoIb#ks*}3=uE?^+gA0E zC>tJ=P&jryUmVi#y4SL1e77fT${30~(9+(5r!7Tpa)D3+4xn~cT|-hac2H2hM?|EW zAyFZdgMxv#G|`IVj1U0`b`DAS2-qxPv&7#ZtYwE=cPCz;MHCGejo_#tAEYNIXR6jE zXFlAhU_wkm(f5-vj~`Z^(yQEb_;cmcySc@^x!qE|v}vtus+X}~#+X4A!}M*eEE@a9 zo3qZI?ICfJUV(ayU&1+;s&UTl>%~Fj$vrVO|O5Ts7P`D z+ZkIdzW}L1em&&L_+=6W!k-VC#jli~NQ@gFIPNl6Wp|NgrL}47x>_IGdtT{t zLSBc`YuYa+c_t&Y?i9G1GsPl_KNz%YbohVK5KL{5%x;k)%k47< zq=+z?WJiV|t(*+%qbNxMoZ`Tc$rOfV;H(JpYaH_lU9RqOyeL4IPRBjdbZ_=54c!UUUCaG*ljXw0 zXJJ_b!o8>x^&1$(+3pH~O8EHcX!#6MkFlMf+3KcD(jPN;V^OS5zHRuD*-X(IASI0B zZ~8jetaua6eR-BBx8jqN+0_Q_9oE4r!oGjfDKJ>k42<1>ljUl(z(FArsve4 zBh98orY{w};JN34ZKpmjy;6nASy>JrOBP`R2jSnox34GRC1c9-Ml-OvZTV1Lzv3--Lm5c9 zEF#?^Jn{9UvIi#GFiLaq_{Akx0j8$y>S4O3v6&sn+};SLeXUKFmf>sq)wac0l~gDD zN{;c;ToC&!9qmNBw)Q3*PYm?Lq=Y@jAAb2(sxft|f2~X|dcUjOZz>^jrnQi~ls$;B zG-X$qI^fVRa_mC#azW5MjT50Lsqy0!825ifq<5d!i19Gobf|Ia84v-J7PUHyCs*8( zo9&U|nbUh4)($Me5p-_FyYpDMkaz@u|I7u+c94mn^ ziT3i}ugUJ{zi&|gZITM#YmJtir5F4IH5Zo!nf%|Nx-N|oF*qTK1x+~aNOH60)a=m7 zLL$Zg>j8=8H5C)n`p>fte9?-gMzV}Iewcbgymde506up zAcP|6i;Lz+M3?Hf+Wr8_w0lny%U*U93v(jsY&z$D`r;txZ#&vY9Q`}O%sM7x<}aw{zSNw?}YtXIo-SgM&V()zihOE#6&6+%6)>sw~+Jn>NsK<;huU*B;yg0GZj-wwi%RC zFK_5c&>|@ng~@6L9sGWCt!cB#>=#b0vSe}$9H#aS;Ae|Mes56 zwnX2gHUCVM5C+B2RNGU_DUekZV=G2l0ZLuNl9((}wqihT_iZ?f=3{-087pSp%V_u5 z#7w2y83XkWc}g(^S_{+=3lCrWxKoDiqFPhCRNzsD8--~qhBQF1P_hrem=8$v7rMP2 ztqA}45@B+2mObelVLHyhA`I|^=rNqnejqebBCI4*q$)Ol<#I}MvYiYN#u$u-bC8fj z@(mVZjKt7}w3~6%vm?h)BHfin zVH3A;!iMuGQZeZbilvo{lJY5^{vqO(#Vx3F}N%f1u#E@j}VT3ivK)}eTyV1Hf1Ld#6ak^?Tb z<`JGY9n;E96qg#J)Q_?x>gB1ti@=aMl&pJ4kyewS4NjYkvYVDzH!XOIEDw-j^^hlR zw!xVwA8-MT$ts-g3%eV+SQ9_TElF|ahZP9;hjLx-zOLi{?MRg{p< z#nwrcLk6pL9!yVhmHxzxxb$g{?a;8yYOl;s%aPrsm^U5hk=_TSDGdvl%GZy9g4j0Q zZP1O`Dt0DvX0;qT@_b59AA@+3%frhf*nv*qkzxulrI{gfU;EDRhz(io464IVNQH(x z-vQL|;vC-t@oYs-aY!haD_7;m!9dlcgU;Gzu5=5|zQ8n`Hi#$~x$#?Qytmz4?y%?A z9~$4aIkvLm>B!1l$zvTt_EfNnqr1s#F#5LD&lhCyrPxDW|zVbh7h3H{jtUR$-# z8QM5WUguaL7>Pga_4|QfU%;vu(_q@j4c*DUjTRwYu?^lP!BSW}6!do}9PQ+ZI&p=# zeXRR)TSf73)nP29Q$ljvV9qM&?@IxOyz%auUw;>XI9q$=j?g9#w4;Z_8Z!}n)LN9Y zvwN3*xoSVvZpONx$^fly0&$09wT#^Fm4&z+w@jiGVhXW01z0LjJgGJlqAz!MLo{7_ zxz3|4Ja88a{+y}`o?4`+wm0}&jw|bP?f-;^Ou{8QFeR#7?2hVgEkb#s`#i^5yzZr| z&yy|ukpcotiPqCXWBs;yp^tt)e%oIZ?PRRa+Ny%R6Ba+=NWZ!B^H$!NWH&+ zKq_M87cI>4I*<7=J*4W8r?@1)&^IZV4y78o0`h+k1r>>|KO3RN)P%n^$s@YLBS)Oc=O5Bs6-KsBU=eGq&9h#z8%<3$K1ykH3T> zNn+pg6von~UCP%^oc#tYJ!J&Gf@1kJA1b@+kR$BKDUQJ%K@aS&KZ0cF|US=R1%mK}tEzhgDs1WR@^XDLTS7%?9FtspZiV7#%CD?-* zNgla@c{K)P@lrM(N47skOo*aGc}+zt88+PbN~-MyMoZfzEW+U6L0VIudiLy~I$3s< z&3iLd)_UX@UaBjE0r=m&F=+#&MQj5 z>+?{1y`w{aJ>(|C_=2}Xv5lr-*6UfbR{kA7dvaTBRa<@-6&;lL+X4G@o5!R5xlHjR@31Hff z40$+FUE!-=2}P)FCPrWN+O%}cdYGtV8mFY>t0*lJHfX`L?&T>F5~H2L)l+68iYCaT zr_$*t`bes`nB%Xb7M4PsKUo4n_|(buT~m&+R1O_(9f8Mg?TCNGQzr-Cvbj0}johBQ zTxuU@cNdbD7TOuCB}cxMM9fQTPKkF+Az6{N;PUAiPXBvoJY_`+f|+^9kmUE-a0#m9 z0dX+_@mMd+SekH0DAs~va8J|R$Whi8W+(VCGzCSamxmN*j(TbE*07UJkx#mhh!ZRn zJUIF!JRFz!D9biI?@Oca^g=TW4HFS4uDx2-ouY@RN0u? zGq&Iib+#q4a;@~;;%k%wwTGMFo;{Ovb}uWLaCUP5DHe{H*H1CC@3P3LW(q1RgmmTk z5W#7Z4#)2KCWs~+j>o{ye!lb4j)+4??$Twoq|`Qtge-h6&FS1PVNo5y z1q$KL(8UYq=3kekSPB-SBI1V@D-RELH@VyjtTU3fJRU5Dvr!TXO^fc-FH@dz66yE@ zdO{aT@`kdJOnQ8}qHtBgds^ufb^V0}q@q^N;cQv1LvM95lH|YkMCoZazMs`{8Thor z6*c;>4bg2Om~qNuD_(C=#_uINx1!V&d_U9btmmz)EcH?%8iR^X)Jzx>O-NnC+v0|m zxz<)Y$?V>&-JJO`rBcYZad6G}{YMv+Y`rEqk<&`@KTyg(qhu?G-lEL-JTbwkH_F-D12e#Q| z!?Z<8U6hUV?0oQz9A+iT*~(EE$I8}#BY8i24Q!Eq#Q5KJ$TCmO_jz4(< zysGg<^m8H(kmcHvqSp%PL?3sW=(vxtUqhs&>q4Jk=6e1}cb#mVY=|;3&56`Uac(Yo z(M6UQ$2{9pozfmA;-aH(G8t`BSoQ6^lMq^VMkaQ+HNlbrwbj%l(p8fvDaMs5M@A;1 z+f9vqP4wj?1*6N3lYs9%b50GGMS}zBzOjFH(Mj-ev~X^aL;Lq^h191tvMemg8dQxi z8cE3Nfia!XOP_G{MOz`Eldajy^d>Np8U`S`G*q;)$mnf)kuzjZ_$nwUDOm1!s84AB zyA5}*nN;zE?1bdORw(aXbcPRGSa$xA^q5ms(5Cyvw|vrJ`iPqMl|kL zvq0V(Z(^rkf)HINxb%8wm|ZAUChVz4hK-!D6TbJFgxth^X_>fl{(RJ$2BP z=EH;INw<7Xf)AFt&Xz%57XxJUl=4OBmDJFHk;%n=5M`x~Cw%fm+cN#( zS0H@@6}xD#@?gb5Wg1)GayQlHDRI$A14^z-O-qnjrU&aHTLw(Obsa+CLtQVr+m+E- z>=|^;#IfUrIz_b>ufvYXlBv1H0=WQp{j)O$O|C0osVvOMP4*TNow1w)>~=$O@JBEc!>-_?;4pL(o~P1}QJ{eO8@SN(KRU$WFZZea#$E+rK) zM0*J=Tl#?gW6el=25wJn@p&5san!FY4sQ1VM&<{z1hpU;Ko%#uNo_{Bhd?{{3g`2f zbp>1#pFHD<<{!FJEw&~yg?tfqDz$RW^u&TNj@_-}{CTDeQH#}fuF=#6edI{i zNffKlvPv$lrVO5l;qV#62L_$!1KZ8ijU(e{IPxDy9c~+iu=_s{aKlG<-0s}z_$z&> zZ+yQ)(xMV#rMYCdLEvH|hS)$Q{DfjU>?14*Eqr{QV6f2wk&zFv(xr*3axEWVxONS) ze0r2%Z^4mZZ-+`sa9i)3&{pZ`qvxl6y|Zh~n`Ps4Vo zE}2z{Wm~%JZf4!N-7W5*iUEh~z}epm=m|yi>R&@c8E!WQnPvDiH{=4&!Y`XI^C3@Fw>H!f_(gK$EUxe{>Bpdzr(LCI>gT(eC)aSM^AFVIp~$mY1ioY3 z?6XCHF@H%wH;S7yx}m1Y*~dHd4R9Fg(X}~%A^Ljy>0$VEAHo~J(R^y=YQx?2pPH)X zD`z@8Gvs^6-SK`+Y1gN_xQE@N@yeps1{#?c-xF4jZ$|YiV?SX>@COw6aHe#1pZE9x z<)glSoIeaax=D@#sFDK<)EDR|Sx!~ik@Ku|V$)-qy;Sq8I7#pls4Y;2-1fvHqidOi zc5vFfhAX+uEbiL;swQa<#?w>fuu6GOE6d@?2FuY#hZ2=WJ#dMDlr%st$Q^~D4=jqM zTMvvSa@%vz^4|N{8Htv?&kgR(qi=;OxR_0iU^N{V5g!&UOsP_nwq$pclHyh%ITcOv z3~6v}-9xi!9aY={@IE`|c!$&ZT$64eH zsa=&moWo!=?qfsYEP_DDEpC(}JW}e{N@w^uW!dnJLxK?Rdd<6j(v7Ik{i{Nyb$;{q z-}JXkz3%UrW!vb77<|4 z9^1)AVulfuffx#cg^ZUm`E+!DT;Ku4hfXe1&&w@1tHHLJ+L>$vi9k+tV^5IgZrUF) zG0olIp09i2={VFHqN&Shf0}?~+?rIjbA>KxFNM`#;n3$~$q3`HY`gk7aMxM;C_A5S zdsKYdk29aUxsP?*C+vE5pk@pXh{aCS{+=Yw9Ktj43f8P+Wn*wLJO9cCeltg=Yz3Q& z+BdI_L^)}!BNJAObwvt11-BluS@{O)PSmTRq-j!pNt~xyNluiiWr*^k?BuJ0SDMB2 zqWDa+I*@L{U>AIe02&sNphQZKPV}CM9-ePa&1BU z(8*$+YL|D(JWCpSBpto>MeK#o#yjj<9DnNZkt{(r5#VzDVBTIOEp8b19EVhjN1T^6 zZCqyjWmcW+92U(kNa$~=&wNb zOJu%(cK%Q!@1go9x6k?jwl34nQIpuito-}U7p}sUPbLtcWIsVUc@*9C9VTeNx~ZdW z-$qs56RgJZG>z73{GWYtLd-D48_t!%!-f8zMXp{~5S?^>RDiXBA-@!h5G!bz8fk0F*eKc3v;dYH1o&kf`2oH=XBgJ_lI+)nmN9d z+!u+;*ZI=Btq+T6EJDJ~mZqvXhZpQ#$4|KAI&mnV=WYN^usWsVO=6f9dkcfm*JnpyR&xTGb=hW zkLz!)*Rb1$4Ftq?5`llYHVJ%%v*dn8)G$A=&4=GH!{9UPs4M=^)Wp%evV9c(xe=`3 znSt~*y7BUJ8fR)1?f44DZ{_g$K&g?DHkBR0i<|Z6U$7T`oD>hPai|K0dRDGJJzW6= zQGQWCf_vR(zU4+3&&D7t>-3Gs8HgUvwmHuk7912GKi%7e74DV}AhsMu!N3Z^rOR}L z_)(I@V(ulRlTYcX;mT-J3ze+NexPg6tj9Ci4ezLDV2*o)L6`KQS{&WTp2PSwdRwIz zF`HQ0YMt9s>|vN50QP{V$s&0v=zPVaJOXpFi?Mh(%@e_ayIW#1$U>_Lc}H`5NYT+T z^Z-bu+tk$5M_ks^v-N0yA*7gm+lf3Z{GG&4e}^>fcE!O65=a$E@7slWW!YS*mfSf+_BIloz)z6GPth87 ztcLlQnxVX<#?IPvxx`6)Grmhk$6!dv277?ERF?}Iv##D|-{ljjM+Hu*(meOJJ0tom zdIe1&KwAwXQ90hbs#&)T44SBAm_~P3)61EC==d5^et?EKVn!gl8Y>eilKv$z6No6$ z$AAdELV1CrTUoXGfMWojET~9A49yn(#*EgTwCR3rU%Y&zBi-jrMH_W4iZF`pV2&Lz z2|Bf;b`#Yjw<@|9rn-I{@`yd<{ziC`&+WX<+O>$PH$tz&T0}K(rGirSL@`K=HBc=m zql^?w8M>-tBcyuGN%07dnyGfMvs?muz2Ov;OcJxRB`BciDFcgU<0uOvmXsLNKo5j6 z>4krswPozhYNg-^fEMm9UsL*IDCfSIe~FGIMoCl@Pj_6>enj`h3!hp0G&j9H6%kiL zz7nHq=X^G6K8sI)Wj>3;lVI1=Y|nLaOgN@~eP-zPpBrE1*8*mPOo1P%sOc zTZjG=V9LtL%Hh(%xz^ugL~WgH9Bcy9&+cbu%hPPvJ47EQBfwa)X=jIynjb7NR{B(E zXtQGK>YGMU|3s%ahY184#Y}K=3#i3Tu&sv|FT%WzkeMeSP3KXJgLAL_l+YM>F8Rio zv>=|j4-q;p!{}RiSXM=TA$C$Ll9^ng(x--GRUxg|6 z4-`sTNeU%L!Ade{a}S@8-+bg2ge$H^iB^p%M+9Kg z_R2?U&+8B_`s}TJCERdjZ_$eC%h|TJJJ6r7+^|pXm(R8do``|`Qy#%F5!w~El9Xgj zzLokPUwX&&&K5d5xE+4_<{cKL4Et2(t+TkkPl9luT-P{ZOORPi7-EkW-4uyk$PukT z#43#n-7i%9I6I*3B8{Qn>Rhp!+TN5q87mlO^^P8q@aHlt!EP8OZTKU~8|0&+dB4Qu z#~zU`mJhkxxK~arN}$>243D9e-&7uE+_g$Kvq^7GNSlF`Qz$qXcn7iCClk!X%v!nK zLXyA{2gd(D%HA?4uC@!;Bnd%+yF+ky_uw?{?%ue2AP`&{XrQ5ScL?qf+#P~Lkl^l~ z_w+YsX1;e$P1T&K>L0thtDn95`O|x^weIVB-(SX6?Cb^?ixP$XP+By=7#TP3Lt;o+LsP(9M;TySq%;mc3b&z$hhX>&Z&C|yn-gq8Wo?$Nx1ag4fBsps{k(n%Q<{9bA&FB9%Dp%^M9ER=G6O8pow&!*tfk~?&7a$SDm)7@RRI$_JdF~g4N!~w2R}0U+F8!=65DDa0647I1lB8h*v_@{I+L*b zB{Ei2R>FzHFf!7brgjP_R+M7vY|1a-!NRY=1S)v{$u8k4nQyS>GwLTwakYt}2WRjp zkA}`F%j$g~Myg{^YNqTR_%=rtP)@&r)!2?2p0>RL(vDJJRE_LKlm8|}r)KUPUqHv% zH|5z-`+g}>pvCn9EUzs)={)R=|C zdY{(vg~yG)`={j43W?bo-$a|@yWzUPYmQe{+r)UBA&0Ja6cp1-CY3V zGX}%*0~U9|#g$gMud*)ukG2TMFVor2g9X96K_;d7Rj|(~x}=6)yHut0VALUT|7bJc zDz@_J&e&DcXT(h1s`id4%90Zxc9t7Z5~oefV9X$zk!m<>BFf_#_s+kFwE6()4uA7{H@7SMs7zR9gSx`oRfby9E zK;`nro{2m(X>b(q6HP{3+-1)++3w~hS=y;T;Lwr(Pwoju(PWev7w-=nW}|xnMBdXt zbcc}UYS*w(^!D%53*E1x!%u9!D?EZ}L>Y|4WTbVIvX7hd4uT0zL=G8VbqK?m6-a!U z-jx>h2zpUJ%H^Td>I|B3aod3v-P=?OLK{T!{R=#=|qI8KFu z>a6TE8-w(Xbu0;NiSduUZR76?$6NPgiDWd6%gi0bwF1%)E(GH}zQ=y}@)^u(CezB` z(-fB({zqxsFwHgQiIdn~cF=DR%t(U~sNOZ<7anH^3tqFfqg59?o8|4$VYyy%l<`|w zY)YZ>8S0$G(B#ub2tuLwy$sp7K2nkS<-W|O<=ZAQ03K(yccWIC$VS3SDZ=H}e^})} zbtwjMwGw7Pma7$tj_Q$e{k;jP(ADPMZGFd#RdLANVmlur-E2}DoPsnh( zSQ>!a9w97AJsoMTKLc6`rF?X|CTh8%7*1^vY#QNNa2s?*m}&$o-`{4%49x1zR8(xl2o>{`nhMg+74 zilEj0`z55@d$ogdY48bUznL2Ufh$%Erb)_j-?xe6)UoJGGy#R0E90CarB2X@>8yP> zb~E$BKhY$iJVQtmwScCZH+vI&*Nzj*Fp~;bN)lWzmO|Pl4Vgp(E;t|OW&4xc2^*Y@ z**=YscFp(|p9a)42L2`$h@H8SSY0yF6rcLCcm92n-EzaLaQ|@|qwuY1_?6NH2H_0- z6$rcW2#&-G{_9ua28p_hpFZr_Qq-yLms3&S*H6b0IXcSc5_3E`_&@0+gl@~r zH@xU*$?+g>?BFI4FW1F0+D+Yn&*COWqSLIG)T=0KLV*)-wc#t30~i?=&U-U>}aa3O0iwj=fu26 z43Bh?QE3F?FY5U=PqeuE=a!%87PE5`&ij9^C^xU3YL}>C&f+KOb@$(ei_A}Sh=L5A z8~@DVF*^bIl~TfsCYb;b1X(MKWMBQo?ojCfhG!Xx`T&6{Xyb{P-zbZup?zJckwM&i zs9JOtQ;Ka)9~C#&UyzaEtY=FaW=p~6u0Lf>ZSs#NeFJ{sh_z#JlSdGWE_IOevrw}C zjV@Nl_;A3+eG{l-@2-4Y$ZxQ0v1wL?)n0w4m{Eh8mr>RaCJKf^&$u!5I(0L$ zb(i4(fjh8E60!vY8`3lidgi68>5LFGsHxfYMkH*mOzgc(jd1>f%Px@hS_^+;8-LjC z(hS;I)#mP~{c(h^@RRKM6*8*s!dloHkP}$xuu^4ZGBU)T!0IHjKk{|?A2?S$A0=Ce{EwmSZaP_bL_@Iy zmgz{FI9YHcVMR$v^p+fMV9tr`)eFPu7Tm(6DZi7j-YWUKMiC#>-Wyp;DG62H{E{%u zYq$8_yx-yHZzDT9I#!*24!{FGsq^8NZ@$-y^HYwI8wn5ZB4)_>Z@)~LOv4~lFXaEz zX=af-+i$MR#>+J!*9kMheFs zbt*(f-W4sattTRGd69rAdf&nR1QO2%1{L>av6LH+;~6woSu_;5sJU1>hHuRaQloYuMYF9lK8;?I5u1tEAkY2~+Hv5%huMRnTo1q28N#s}Y*2{}L=nvl(pUeKr0+X7(sdk{s zBvd>Nm@feCxBwiw4GpAe1df4`1`6?i?KYu5G+1ExuQ1;AIYyKmP9y4`2P|K-cqQKD znecyD-oBKc_1mwV{{z>ZURnc-Zl@>Q1h=7ZnTRws-egifSibdmXK*Xt)u|pc23Ald zCN(c8Ofnfzlk;L>Sw>^kMGpRAEkp{w?)+YvSj%SBo#| zG$Zk*n)4g^$T$P7#Ysb9RsMI@l^o|C2j?UeWXhq)QeJ%Xb<0od$}y-Swz_I3rNS~p z3QH4esqVtFl93qx0~@xt)Li4=!UTB!zx5fBjv8V{*=fZ|gVW#|m?PuL<9Fo9fxsOY zpi$ah0<`y52Q$(6fq_>dd_XI{jz7sCvoHLb!q*S59R*S?;XW+StB9Q_H6|PW5QxZ> zaMA=ZB!;CaD{xUAM@39Ym9^4oZ^ber7BDc$0NQF@-++Fk%`{1GE@zV_;9ANWZjb2=>gH^P@-NqqgCgdAeFLG zt)MK;@l8=_E}%&=3xhqtj$Ci{MA%n14YpX{S*)oS1JjbgvB0lwb@(qxKY;CQcfUjy zt23L}A};;$2BpQLAqAuX`f?SrzVyMYf6HzIqz7|Vb-$Ur1W@Pys0LPZ3Gjj?$8(g= z-Qc+Ws(rA^cKbGOoSz^DsB*N{D^?LK)I@`Y-fT7=`nb2VX-TM4erS%8@+*`=_AJVc z`uA6GdcQX@jbkF7r3T(v2K!2QGm#wO(ZjxS9?kW0B;Zc!zlU-Kw`_7pJx|@OrN=J^ zVmaJ%T}#E8q(`IczfEVqPCpH+UEPH%cYeX=e+VP6$nQ@4@8U9mE4z)30;M0<KQ0vWzROSt%DOEj^nsY zp8u+);JGi%jnnUmhsT37c9K3-OFP>sz{UZZ_-sxeR656 zIC15c7IC-?Xs(gAIZlme{(b0(%}LljYiu*??PKntueA!lU4o`HOQYcP*stg;^LZLp z+~i^{PB4~aK=b>ozgDhCpMMQLPVQe zO7uBLtNP+JR%zj@$kjYn|5OePIqwHi8!g56lNOO{36M#==TLt1DAWHPRQB?@MPZS| zYeNL3Y~S_KA*0DvpPZ1qkJTCN%9asOHp}m^>8#3;zlWUsB9~>7s@DlKB0=2|uNklKeJh-k+rN zjFdl9tc%!l`T(3tD)kC75m}dResZBS(8yOkUIcfjkNP(LpruaFUhJt^LOkAD+Ao2`OuvykEkA~7h zf5r((_G*(;Nq8yR+BuLfudy?HX17C+Gp=#{^|f$6{;wRtBaAXeQ@3chx)1$fJ*`|0 zEacWhpfdXIb}v855M`~P7@tEU7o(L-eT+Uy@(N8Hmfzgi7X_g^ zWXOisz=sO;>UT44mxnaWkCR@GO+M~LpMeF5U2HkeXloFQuyK(u==U$|MZJdpT2e>U z9Sb#8S28Mr!`;o+@40wOKBuyN9imd84EnNWDD9vSb=foifu;GvgFpGkr-{6MH<&ZY z#53qdLaob9A}Hh|KEK4)-3BJd%9pII4K&r`2?R)s_a zJc#COUsej1Cu`#-Vxy-SD#ibNt1$N>$ouvMWvvdbv z^#zbSlknkQlkCCAcHQe^ZSLG)a#!sE#@EP+r}aAn#!br1H-B2-*Q|`cdA<=YcZaFP z_wEkQp*o)_^2rfTON7tQr(2JapY`f}nn|}WYM*k2b1G$o2e^ZONLRBrB%3Z^U{3z+ z!fx!IQVv#A82E5Y-Sd_*{B>jHflNYN5ntuLKTGtUg8RVZmtE<317q}ZK^7I~riBw6oBA$dtg0%|(5~CX*%q2{e1i>R_L&7^6Pr^k;8Jwa(&!&dH;jyzL(&ay_AI}fm znoG0t;LyQO%tEWUoz1KCe|xVuXl_4;`(zF;_yi_o%4wdl4$~E_2$$8XkU(i-?Pn8` zj^g^)_g`*=J%0RB)zvnVA)hw{?~Q596{Jg-T`KXxtCP!L55sTw(U?p$Y~n<23j~>@ z{@|T1ORZ)Lu!y;qKWM%dLE!HaIVTWun^k2ysBW;%LSfm`$1etV5M?wM$FU_PYPx7? zDRT3drWVlofXLf+&M#z(K2V#HS``qf)w1xpeTt!WYAW7)qAgY~8kweA)jwq|tTBKm z9pZzg)9GTKiWqWS4DdB8McZpCRRbj~Qt>~jW4V}v?&lKO6YJ^a35^W;-g;o|s|Se% zQ>gNjji={Dmh?ee5>ybs)kPrWYtNa?G@LKq#y1(0CC|{cc!*9zhW%H%git;@P5dpi z1H&OYY;r~?z9+LMGewnxS}wr#8j>akndCzEUG)8ePtTx-(|6YSNg5m(UD7&{x>HzY zHDl|`=kH|0B=`0_>h%rnnV)B1Msi(P+e%ZJIX{DuGUJSokepz z&7ueIrHB;`JI~O1x~hNRrSSPQ1>yjmtGqwR8LZl4&WdVFp-}BnbajxR6xzIWEV(#? zNz8*NwXqVE>5Rtki;t*&^7bY+jKn=6;NLcGlB+A|H_nYArTa5ABz2TE5uI0;BNUm% zkpgV1p~PCgfdmar*06cJp`!Anx_SkoEpzd9h~4_gGNPcz2sz%`>N&GinBxhbs;RIU zD3G{4hU#KtL3@4_9t$MYt=m-CB%=fePh{X?S|n>Dtq+A_5h&fG&L4KPO-#*Hq%$j3 z(3}{PZjw3?-yjE3B$y|jN?Cyo05kh!V)0S%_re)IkU6K?^h z;SUS@b%_1mLju(_XolWc^GxoN+$6IF$R*7uc*G2QnXmO1;D2Zs>9r}@{$G>3Ji?y zX2uC1refgAQ@?1Air|J@LTCb{`!?gllP-9Rd!m-*KlT=?&3FkH#V6h+=8A&xCGvw6qJ1^R9QRZn8z> zzQ*0eJZfVxr>mnht%LcQg@~bsvUC+1eF)UT zP{Dr5pcB60lFydDatlUUqC!?1kFdp|63{WA{efec4y%~tvbOkIoW;-XWsFv!X_3|l zs%*1}MX?0RewGV{_l8Z1Mn&`BaYkvsnMI)$v&s*?Ak0O&b+iMj0 z2^6D>g?`I?-rxP*X{Q7K~9-iRcyFU5eV7$vaulCL_Yq05JTsM@n7 z$JtUiHYPjHTVmBKmFWRqabWL@V9Z}K^{a4%!FM&Cj%q|FX1Py4{(+PH2X0eq;hgaw zIHKTFmsg!{a5R$HQLx#I|Gii2l_5r1Fy<|W|Nk6aC;OCJ0(`-^$*3T2`u*CiZPW6v z+4KMnay**X%VFg8rIrHt%OC%pX1^}J9#u0x{LlLW?j)(tr1y7NS?s6T?4oU@&0Up- zZ_7WM1G^r{0L^jpR0<)O!&7lR7KnuaHn@u$btyMYOJtD;8%quVoDaKN)Ewog7c9X@$D9>A z$4cnoL+53c8&0_$7Q3V*lSyZA8+q|(p8X^wE8#kGH$1+UJ_Y^2?@XKuCF@A}2ru6@ zd#{}#yi2t-z>=TV6Fep}Iu0zUzfu?KmX4LDh`eK0OQVt#vA5La88WB19hwcNg5nFrKAD09tgiQDO)2b zw*?l7mMvnf6)ofo)$XKqh&YLHh_|||)ZdLt)XdmE@f3?+^JV~?yxOJxZ zLaoL}ZKP`;dYFskAM1h+#g3k5vphtVZUwYGHfVWu*hOY!@VK-14I^e1&1uk_P7P^e z!v||h{?a$bgB``Ptk&JayBtVQ@4!E(r1Vlopy!gI=y@5peyh2 zr}TozzVT+V14Vm*jhKUr-u8wUf8B#tqzeimv|-1d;3-@i%n=wfa3>ZmnMANph+-(@ zlC6>J=;^iv5hX#-#L};zg@+#d&kRMG%=>}D1OXD9^V+iOBJBg1s1bgTAw4ZGqI8HG zk!cl0R=)elx)F`7h>9w^`esfZt<+I^4%0iDhVJh_QRDcdqunw;kJuPf-z|I}E`{D9 z0xBHqqbj!vKJq6i#+PCiF)DwN$e+M#yo&~l`1?XHQHhpKGMJq0$^;a3Vr)!gfl`s| z-@^5ep`|#39GB}%)1=LjA?_26KB9-IzPAxGapbyUM(yM9aXC6i$jK+rQ>cCC`@s1MP1&Mwhc8229 ziOnM1g#8Xy(Dv;+=P>Q%2r!w-0l_j#tcP87#4k^yjj>sE9L(1Oi>L?eokU0J{D>B9 zqOy9x=i1@Yh0T5foxyw!*D(tV$CZ){pg?tfT)g#Q1`hO3+0X>+(FSQw|ISrVpar}C zkAnGP761b8REioG^F>>8_DHa>ZZ{mXmjP|&5tUa zRp}yttW*fbA5noYeg?M%8JdNE8_^%Xov)gt^|bCoIlGX(8MFb%jafwWw76EZg=R&r zBL|F*Wwv}Qf?9oy_~!FNrL`8OPPV|IWyZA#jcZO#jrU_gI$vf*zgVBn)9teHe&!oo z{ZZJ!nrueGUQ!eJanIVz^R*~hi|nY4FL_kzr$ge#&bwOTWb^5lB&^*A>?7Bx$D{Br zc##Yl=7zB#(NBT{-C_v#^UldJiqY=8G;(c8=YH5CNf149-yQBXEnz+zMchA0%^T@S z_*-iw(&6NYAUdGF^;`09%=VvMptV=+Qf)k1Yi2`mxbkj6aYX->x>dR+^{{rm8FMmch85-KhUKl3zC|DtQxLTgY?3h(8tgX_r`R}f zO-xK&-G6oY?UH!k_L1mQ6CD*kWir4lppuQh_W>w>hj!`0yIR*fSz8B$cO~6bO|oAV zj_~RE?lFK>lQp!O%LE6Ryrc-qUjQT7|`H->`Q}MWykh=1omb3mK{+5c0>k~TJwQTvh ztO8767Bx+Z@iA9x=mYE2oA-;$4PkoQo}757k|L;VyXdB^kOeAaubu}DW6-kSsR9UP zBGpqa{oXjZM04pkop!iqt_~ksTckkV5qXiVFw^aypS0338(7S3NIxiG68JhtRyx`= zERnffscvxA%h;fT%rd$zI`Zub+3Tw+?%zbmDMl+8XR=xBxBr3?=YB! z|Fy#i7X`c`EpjeK3N9wS*TvxEa-H#ovI$Y~%2YIwmtUB{w3F7!M_OQYns8@qeb%(` z{8gvsxdl{Q9%?Ij08RH2`YH~H$jX$kIw_Xq*ePI5qUY-Bw<=Z9*p~*sk+uU7_Jg3D z)M}Fl1A5l$Gc5I_It^VLcSsE7eT*i;>EJ-^cm2E+SC>JeAL_!Wb=;ejad_NX>Nlu5 z6UP7&beOM-a6Pcis-8ua%)%NVdXC*+#J8ip=q0CfiJ^EbJ+tY~1v3@R8&+UXP8JAQ$32u>A*E65PXN_4dx>4G}8SePCe5j_5rC)k^XhvCB~Z z9uXd^q=_*!NQ$FCTd6+GZ|!hG)6fq~*sju+dw%6Uw>?Y^=yFWB8>htJRmJyfmM{l#P>j- z`lHGat$%Ym&?1A$6o_vtWW?B}KC+ufrjX)_F=?izAemx1#N`Nq2Z~^r2fR-_s2_U% z8r|H9h%TOK(gBJGlQbU7Ve)+Fby9WVSB9)+*mo9HjL;QYrJ{mGTj~~+XjTyzeX#-h z$rxq#6bNLTYfaz)T$p3SR@ZcH)Hk+Gx~IQ)l8T-KbD8fa;yx$mL0j1uAd~Egx;0EdR*UEhhNHGd~c7R5%Djlz|W4 zw4`si^cwgh=}Y1NBO3C*Bt`UnaQ=o|*W3oxb;VeA!Zatp{!h&bVA)vmF-+Vy6XT#F zxoSv^f1oG1wmtj`eO%Nsc-AG6ttzK$qw>}_BdU2v6kpsyjJ$Ndn>WRe>NgwOF7?U_s)GI7 zs>>g~CmT*rUNS5UY!5x8qd-4V_AqOC8`>tCc)D~=QAgL2lKsi)6b63rkCz8m-mAj}%^T~rO&Rpq?5w!^f#OF|O4F-Mz88(hv(&==`a3l05u=4T>HPBExZ~;^(-MD`##KCMMS0eQj zBTlllM*)|7rqWH=*>dQ~C93a5!?#$7Y@;pY`gne zyZyzTLHG(mvcFrZ{#vd?KC+9lN z@-~PZLGgb3=nHIEF??hVKFaxRk>B&{FOLhml2iQCNLhjEsaOYT)QXPs< z+kXp-kT7xOJ1AT9j3t*{_LtJf9YZdoLayZR0Dl|-9YpNUd9F=}xK7$rMVe5B?V{BN zL9HPZUqv%)U)kO+R9}h^=>XDIS^ZNkQlf|=lfFg#c|()u+smc&+furd)pbPvT*#Q{ z(w+Fnx0c z!8}Li)PkgchemV#RWU@Zofy(dh>@)bdPug6Fg+X%K1>PvTid<#4WSc`)cz196;RQV+mDNG zBWpwQGgL_dvROzC192mNDQOh9fR%BbZ&`!t9<73sqiX7L9CoQa4*700aWjqM85(#o zC?Bz}SQ02n4q%992O8*!K+|>zM1hwA!BB>c#ci{Vf2rb);E-?TXnF>3`5|K*t4!#_ z>_Ok4$$r9%MbHrYI~A>J=`2p^!Ex&`^>TnpmGo%DL|iP3o8HQmRTGP-rmbh#UL;^A zuGH$HwTJ;?aPg(F$wn^3#&&)n&R)8NIwy63i{XCZMB#guqQ#^=$XNC1LTDUn^kkKEveZjuHqT*+?6STdV+84z3zjl0o|4eEnZSkWbs*kHpTFPM)ZE#u#XLDg(-+II>j# zz$Ld~3|){{wox!w0XEm>aYfv@pefP?mMEOz`pvJ*nS~CjV8C&P8@sLVum#v={+Fi8 zJ)f+UI%-XP4}MqO$Wj{!VJi~OKw_V{D?*zq7CWyBOs7gl>%^**IP#$|HBn`hjAT^; z-Ewtqi6;~VfGAl?WS!>N(SQv!mXlYjrz7!W@W*FED4EGg+C;j-d|5G+-Y5O8beZdC13>3aY@NHk%C2U?q2k&t$wAb6`RnD^f*xKLE{fg zM_4^e9YpcUc2=`%qO_>Epsx$}u#l^tB~g(~rqIm;C5&dH-N?QaM^5+FI&U0Du;7@{ zOO9DH)|zu}N$UjR#5QzBK?Bo&RJ1rka>z4eli1Ik&xt!rzI7Wb-Wlk0=!4c&>KW!X z5eLbR>3J^Bxr*V>U!FK0X62rk%FBS}DoyHvO8=`!2~g7HSkyVadwl(@uD!4wU;dsz zu#cdd>x6UaB0k~0m%a;^ZJ;LJvg68P3je2pE7bONnd;(zoK=0BQqRmfF^O&|w5r|T zK(COD{nxbcDvKT5N{O60xa-s~ssbYo0AdpL;~@UW6AYQTW8^M5e-ys-DNAEeTu_1e zl8NV)#=2(w3B$zAz$Jbd8+h+^&fEOxR(y<)s+%HuhcJRati8Fur0m&NI#?$I07qBC zyev3?-UD}tVyK62Hq6<%4atqQSdRFtV%C@Q(b(vwsm9BbfW<1o!*F>9ZeKGf;=1hT zp!QXf6pH*XuUGy*aIl&12|7ujJD*`xQh)uiSEgH+c4=6>h}b)OzHnERYJ+%9j;a$w zfzZqaZW#yJVS$op=bXdc^qfYn>CyIvNx6(Tg|B&gEK>aDJUqUE3$>&0R}&A~Lb8pu z())>6QWN3A-}d4QgOX%b>v@VZtD4ESN$wmfuTfM#(olY zcKC>fD-yQ>+rcUQFl5&B7>zQ)Pi`F8E=1d>=nAJ6B%9h$%Xx~%P-sGD~UcSylgs9bl4QIv3^TZm7HoUQmP7C21k zxI8W(4wJGxC=cJHWr81Xx`ASn>H$+siP2l{ZYB$WUg|^xyx!r?z6< z&W_r0O{TEQ)^ExG&E4dze9rZbYR|ET99cC3#T_`vs3_skxG!rj;@WRF;Txeoz;uo4 zXChc`Xtew}YT`hi@u46~VYic-z3zQ~=kCy$j%6mt(3NPML_?YV<-R4BhWeLdD1|^C zdr1{eXJj)D-;r4ZAmU{e%Sj96n=&SCg+!$Im)FVrzgRHEeEIP| zaQr7?Y)!bqfc=@b%(2bG0r5kTQ~w_*9M~9hg&q#w8-M$co-4)~d<~rah%{T?VG)jH z^0MKse*-l8$MN_QiR{mdcEATB@K3C`H!xfL=yNCzwU3ZO-Mc*xDA>p@o`ma)^XkDD zJ!?nS!?5#1!CUFJN@KC)#nslX)6mcnGC&-A_8_xF*|qbWm3+I8NW5xuxTO6!XWV{# z|J_%i-H*vO zztZWojWx${($E8Qde7a-CypEFDWi8Va396)?=ns%wH8lWXFg^O=iE)PTlTcsZ8eY& zcI0xBz8#7Tg2q-!tH+Q(=v~^^A;?O#P@}bi7?D_#roe)Fa|b*|D07CD8wimdlbnbs zh-@K2{;fJV92q=g2Hs4x1rpBVy~rX;iH80rP5U@e8u5(k#IZp9Il`T8>$kFi?s+$G zw3hxPQ(F{my$Sg&euD8v!Z<F9gozL4gwG%w=d=6wk@AX6D1v26H1XMeb=-<`clm{3`jwva zxV~V`5PUi-i&HIutolLB(kdVfQcrqli}vx{LBegF&yEJ$Yre%~kPjpM*dBP4DHF^2 z3uo|y$+N-CP`f?}p~p0x<02R(KK>hh$v<#t8T!gCt684a6&l%PCG|&fnk*I8A5kOq z%u~yvUCJhbqB?W_L;j@@Uo#qhFES!l_2aaK=43vLVp^{8n3UnZVrJ`KyzTfctMz>A z`uOubvxy^vYgJ;?r`}O%lCujtG=|A4Ep4!hN2Ue|%x6GJA|Kvjvj2o90~Y2eW<(LI zDrqQ)@KT#E7p6O9GV;LB5YrZTs}5{~G+WWwASSx96iSfurytY&DBp-bi{jG%9HTLF zt|G9!Hs0we(!lEWLny~j+ycsP{m3KOFQ%(ysof_)3rd&K6r~lFNC-{}C4_cq!XOPy zm@@`!G9$X?g4L()7hv9T8=N*YssUl7z&wi_EkTyiLJeH$i0Q`(_uqpuwNYj<55#&l z$zfAKVKy5oWz2Bt-o6E{F*%wat)J?=>Qt_i9Q5jDKgY_PXhW*z-1(P6Xms(vH%%AI8GyvGWDt3Afb`~*Pg4b9`ms% zH^jC(Jher^Dd9O~5f5yY(2JzArF5g5a6IO6&e2?6Z)!kHw_Ntq@d@Mcc$RX+ZG+Mz zV8(dr*x1CFf`ADW2K^#Z<~u?dQIKycu~m|5E#18Sp9n!J77=RN1W%j+s_|-Zv+}S9 zMLnd@Voa<=pqQl2eHr}SZVQs^GvdrD_B)A1<0ws&@S8B9H+Qr-Yo+x^t(3FsQZL>w z=Cy&&tTZ7#BF-y6@I53xVf+ z7+aGcN<(Nx#B{;l=VTi)oM>mgBi@Yh-7zuf1aAb1mKv$wE;JG4Dh;e0{x`ydjFRlv zG8$aJf?)uTg61woT7w^BzF6LqKyy69HD$ zXF^`e-~ZlJ(^(Rn6*9hom|-&9ej+z{)gSd=>&hoX8Li}1$qKMmpV-bm)+O~Qb>ywOnF>82r#rb;A7gQ{x0#E0CVo+2tm_` zT4+VRh`89aDYMCAnTKO4n2Q570hCF|En0>CnV_wTGB1%os_lbzZ3G=rdaIAQ1*Qte zGwxcMXpCe%msnB^J#U9o+|;g7y3!%kNXxKDdUuLzrCg5)YGLzTv_kYM!6Bt1uu?5w z*L3l|dt%j4eQZ>N&{jV%J0x05$cP@lShkWB?T_PsTmgiy-NySr_I#KDnWMTuP1Cy8 zAbx3<4nMVX#x<0XY$)wDhI`!EI~+C-ar#NrdKBqwhX#nwublz5Jgi1AD<- z93%eSq^+r~Mfuszr4M;`i|s2B)~lPQ`D1!EE)zsJ9Mj*I1WPca%^$V3Qcjaf2X$zDjP#V>VDIw-GkQVp$!xH;TZxrF=3pT=Si zl-U8fRH(_cjkS1gF9gI;XGX092!{#y%3Adof8`}vI=5NZeH!2qR;$X(G*7{CYBt0U zgTRB2Fbk4nTl6NLZHWXjX1QA1;(B+ZVx!$4lP*G50N%1m1REOw)mkSLFE0fVmfUCw z4x;kNL2>Q*K)dfwOA5$XuJK0X;mr;AWekYlm5t?mpACRHO*qmP0wZe&l;q)Ikq+U+a`OpQ6h1Oy~Xbcj=;c>R==aRkgoUt}bOSm{^6RzE$hmb`@ za@qjo0|fOmv!%KJ)zvXUekrAz|a8zMuJ&>s9Ek4qg_D3 zU&&)V*hhoA`-jE56J*-b{`~xHNr6`V$4r7Ks0zyhDL=23YLWWR*#WpLq|n>n9$=~b zxrN5!ODGaGVy^_ebD{*EE<7gMupG$x7qy*DYA(+TwxNA)245ItARl{a4$PKB6BUMe zfwy0(eb+1gv`S+nqLLi2HzXx3DQz$@>iC}&<_K5t$NCq0;6UzWb&O<+No(D6Xnv+P zj(qvRF{8Q%(sJZZ0fml0^W?DmS8~q})be zvYiKXsKJCopj8idceip*mZ!0dX!v9LF1p(8*w(c@JEsLCRCV?bT*F=gp64~%=t9%S zCUr)t*Hnr_9JATWx%BqE_p6;r+_|l^gU<*q%dX@(J8aE`7`{Jc_QPJ8%zemeNp};( z);R#g7*5KRO`Rx&LOQ3;3r+~Z*mro+s`j!VCNk+i&1C3BqrxEim@HYDkT|+W@DJJ< z_l5@)<4bz)+dky*Oc&|K)p2{RD%9?G$CoCC4<{69F9?zo!nFO|2&|eh({aD%0UBoq zQlvcRmT053?5;k7y9*5vzjMp+mET-DM4%sh7Abgm*Dl?VPX#ROKzW+M0(^hB8#iBU-J!0tf@1J_FKbOVm4+*}%nE!YXWxwkP9O{<3 z&9qi^AzW&${e5zmK%5X1MMB)f%wOh2c6=O}Gmj=)_g)R8OgS@V$|DYEPdCZNjzc9G zH_jTtjqHDfyOUQRlVM7mHZW0Wnmoie!NY~@+`0_`C@78Nh@K9PHjp4=+bD^xm1IpM z`fmRk30T~9N-7`3#+HfBsHb8p8(k*XF6njO9-q}wRDTEZom5;Qv1+^sSobkd6rQ_A z=tQWH+C$5nv1W;I=VfEmG?X>3j-5v?2v1(E2UrKR35>>eawX1w{X)QmG>=kZBH?yb zsSH}QNgW(0r&D7!18R_kN|r8)m`l+AYn@HUo#U36 z&?;I^PH!1Kj(%r`b*~ZpXe4SCLTK_qh<~3;H_CX>o8>hOSN_IW)g~7r%VFE2@D|$I zO!0k?#vQfSNXf;ahvzmAMhpMZReT!w)nKFaTx6{Are9#{aXgM|m;qSO|IN)ZV+$FB z=KU99&k9YSQLDh5VLO219Nr;hhdfi!hdY)G$FQQ^k`$LnwspCMdxe>F zT}w=Dv?QUHIYkO~aKR2-Yi}eOujCw+j98K6^H^wV9LKkcV&3!H^{V#M-&Rsp{~<(a zLGqm&w78(rP?M9{CkBf0xjejxN&5I1-+*tHN))Qqh`kYk-Qx0${CoiSWh z1r+6z-|WZ*0W;uk4Gq1$UW~(Z>c~ViUu+c)vckY>#qKqb)=@@g4R7!l$)V*0;L2dc znUj57`Medf&@$`@S-5_mjH=FyN@lr;@^^vcQcP1t;wf3C;|83GxA)Z~4(bz-h<} zHjq2Z26CkzHM{iFa}!JMVN4c6D(5zq-<4O?az2(jU%X%2lU@y%iO6+r-P~h);`E9A zz4i~m{tpRFLeO!;E6lC?J4)!1rsS8C)5|Bt$Sf9X8y+Qes%wM<1T@AU6n^aIZmRA> zlUH5&5Z9@;Ke1d1U)2r&=^g%}1An6+&>@4*k!siy z`&(Kbs_Y;){t=BZDM8JAhQiP7JXzcW;eksezR~f~acV5g2VDircB1b1-+O9#CaUhb z@vk{hMU$ME849Fg0lMki-nba#&1|ipgDef~qW(32%e~rR3jA%$a49VrntHvP+4ZNfIsi7yjm(lfibHf?~73P;cK%Zwe&`7x5iAu zqGF-(fx?IyPOu=xtp3UTC~_g~uZ~43fuIhfSzrP|}F%$7LPv?u7b>UIT zcD&+c4FQ1WEERH3yC>_nrx~%~Od7Tddc~7^XCJLI(ZLyM3?7JgEhP#&c#V7rt+kHF`X67z4 zMfjF-#E*B4n$0uNPi>9*dv3D7h2EXsPo>#hgJ6x6KxE`8NdbJhRhPxIQ&-fY;J1q# zE%pEx_h?U>#WArt+vqvlWQVa2^QDDf4bIEuqhjr0uqk}#RE5yx8#FWydgwYB$QTJ& zPg>Q^+dLAR^o!*1i_TKTJHi8sS%7sM3s_dda5Y9xf$lXe&lRTF6xpNt73%p*RWkCC za59v4%#@D)XT}A>t@5aE8o2oHw4lm~Z}=i*^e355{EoxITwB#T{=5??)c^^Z6cZsL zhx|?r6#DckjDCGg9f%A|YeB=b=#6;^3ZA!+NrM{5&T3~sJwf7c@5*Sw%SE*Gki*n;31mtMZyK3D&l zX$oH>5i_%rmlp<`Z{+1AMf;CADQ<(re=^}`T48g9g`(geim$s<&tT}pSZG#b2!6Sc z2OtNm@6@=iHA#jhLBUISs*Fba2Ie|HbsxCollMeIwvuu`IaZmW!7u$g-MnOodO|3X0a?Zf zZ#u9%n<;;sndRE(S&>mld9S5&MXabA;AbJ87T8OhRoXC|^PIPhkRj@N$u{d|&-%E% zTP5V=X|}`CcXj_m(Y3RdFus%U+o5kbsiWf>W7dEWbKLD@!m`zu!`(+_OqwSqS!IVR zD6Ln#&AUy0uHqLq9j4WyjFn8$u5KdfPTWl0$>QuUdq+$7y#S1dCd|1xt*ENFUSN)n2@-1^jvXZe=+n2GD zDxGT~wdJSR-JnBJo{0JwulA1Mh_qTEM1Q76F+c=r%f`iqG0w|2qEN8=#9iLOU9Oe4 z3T-eD%b+QiW{rJhusBczw`16Adoob5LXPj8ey7Xut1wzDt*`_c*$OW zvCVl|q<`PXX1on-6N%Kaz)qy;a?>7-i&Od`y+6Nggui7~8>ScouCDN(kZ|BVz@{Y~ zux;X5a}0upgv9Fan4(Ae-o>5&YPz_he?5#c&jb|>`sbg?;8 zg*(NUU+S)~&g(gnfch(zPDwzugPLwbJY6a)J+$y2+q&Ph`wQ}lHZ1tA!d2DiGfs@j zkdhRgO}pgoYOOZ=9Odcvf1_9n+vOq;Akq{Sgo@X+n2hX~r&m!lYe`>NrM3~DUpVo4 zgMPd(_KI$`#SB`3?KWpJM}+m-38WEI3P8FyO6OC+5p(-04X=rgC#YJRJZlx1&P~D# z(qB}}tZ*D*dvS{6=j4&W!9H{9Bo-5j2Y3cT-=e2ysRPOfI~T5+s@W+?QKSc2+DJp2 z4>DurWc!%e80g>AN!l?*?tNzB?X!^c#?XzJXr{P0jmEic3AUzS2|Bl7r?0BWdAS7* zU6^b*ZM%@y*nThsd!B8OHecxI9u<+$YivL+ZK)=XM=f;2OuPccLD&7$%TTjVg2uzb z)wY5k5JHv7ehp4JAkWg{w+ZfIy=CCQLZ&a-6iArE#XiRtX~qNlM%dml%ck2E zU2T6+8<00v0h(5D%2#bY`x%{N= zY3PZHv2Ey2JG!_IzS-_JGH4suwWh+}q1D0rb?$y3#k|HGp5n))tOf#QpL30CGL3+X z4>oS1do43|^=HxE?k8nSQnCwfO|;mbWaiTI;<4k-&ILTLS^Z3Jzt-SR6sY{GI2bq+ z@}!I|>IDo?Xq0#&2%IZV_CnTZa^5_(HG>4b`#fdEAqJG?ap3|l6%fp`x;DP!AjK+z z7h(IYGUa-S3kYHqhQiXZN=~n&JB5&N5f&1z3ucr4z?g6$-e`LW7K}u5Dyk&-n}W2Vv{j4{ z@!$tCvA8<=ns-G(E-j=$hJ>4Prw?i9R7i(T*!BA-a%PC{ zhy?N6N&n=R8|@tIly!6Wf8MoJ{ok(76IG>*RR6ihcQ&| zpVR@M0`boUXoyOMNgi$qunhyhk6+Miv6?36VNN|COnV~Qp?a_pe-bQI4!!slbcjE$h>6nLR# zbxiXsk8Wv&*-Qfm;0u=xU2xmE%N?CN@L7Y$iG2b zhQ2g$ksXT%MUjkZd$H?Hr{jzWIn8w#{p*1QVB~koaB@dawQtB_TK(eh@G*kazsb)@ zbPYOG>Zh;Gr`Q>0(AMaC{@kGWNCWYrm!Oa*I9tNk42e~D0#*nXzSo&C%hIk z72%|G{LOIR@W9;sB!#2r<*tV6x5V0Kqus!6>z(0Wo?gT#jRI%-*U9{VzsS!3zglM7 z_1PV>waYfQC^n2}!|~A2N@qWZOTn+5eF_JY+$h2!C8Lq{4E|21^8=hYNHzyaK|6Kz znC;j4<<2DDBH*#*r18qBJimgBD}2&nelmYIC7VxW%edo+>sLF zh*pZEW7i_uubQIl^onVH2%lVA!0=N(uUI*h9Hi{|VVb5XlsxY&7-!eU!fKfe$qZ(Q zBiZ%d{j|$xbe6Qx1NhA-csNGW9<8G@DorUZA4q{Wpg81iNU}w@IqSFa%lIjb%3it2 zH+c3my;@!@O;%QznrL59|2zHCn#KC63Ow+Yim@)5Le-|!e2~FsSJ&b0{;037@pxdw zAq2Cac;ML9#wIT=2LdM94kpQ1l&5fQt~MuI{DFY*X3n*og=%4bN>7bnOSv|~XWye? zl!n7^^QP+v&u3IDn@sP!i5`Sp75@~@BkHHl`#4@}I{gCyJsK-$7kx2IXfg#7iFKpL&LdQkgW8Ryf5RS4MUp3ZSb7eJ+lBi$dY%pxV=6M)7G|;*HP2_4o=)Zp ztrNRWXHV7Z0>PM>J-KN@!b3xY>B(^VHIu=RHCw&y06rp7I%TmnA#ErZn^P|O$fE;6 z`sj6sgNvzq{jxtUvq%5gcc^j^ zeR*^@#5~7rMk0*P^qTQ8hcu)umudW^jPgisNdu45tbA?U4Maksf5K6kKdB!)z|A{vX9@P69x= zQW*hgu8nkx;Hr^v|JHa!JSD4*ML+YEEt+@Y=HGe4q;!$VqnoC%wl^*e=!^*V6ZkjN zGJlonT8lWKSnCZyAP$smj{bSM@}^K(hSwi>!ze?@d3yChdHT2Pc;^E3R=C*pIvU(O z112!Y=U=GiLof$JZenNo5IwM_QTZtTw6YIp)*SuaMU@t;Ho~kOx^>*z&NcVtRYW0|LaZ zK3)^g;EgVam=sTWV;ZA<*&P~>Q2RJTpyL_j5)_-0hv0cPG@#<4rosO}ZKWs(6xSKt zhUVG0#(|4aD-_6!^Jm)zaRn$QP{O4^5zjos{^MeMFE23>R!_^fBCGtguFf+|*;)Wa zS4WzXnV{>ErlOebl`S##DO2A)ij=|0+IOGYaXjDUeEwjXzN9Algc`9Xxl^5pd*^nK zq3mDS>X>rmt;g{u>k^p#;a&0q|NO0%MW$XsMv1}!!^50QPBBFz)>z}AehNH{!V5n( zG3Uv~_OPrJ0Zw`$Ll*xScwk`5>TV?u7Hp8~L@0Bo80J4?=by!q&QLN$-Tu^)7fUdGE*J#s<&~zO7#1Xo5Uy!+ zSF$Z6ViyT)|azu=sJ&r0v3cb@!Qb|7#^L8y7EoPoCV@&#}vAIhSy&0yVMjjP1WFjcu2CV^Fo2Ug5b6UOl_ zwM{2;8TRuBvXH%t;G-|o#u>MzRaA!?9a`X_n?Bg3TKLfFRrSS)pbc3~) zwVtDi`)~ZPTsRk&22?~Z99pzIl&~5iEeMbxKZ-WKV>U=xy-)bWPtZt9OJ5Fcv0EGu z=fHJKNWgKyq>o^-GS!nb0i{V9NGVw%B`4xK(A*X!>+Z$fljMlfjeNC1Ku7oV`Lp7= z;TH||p!}LtIXY8@fWkEAg}#2Z>)Z8;6)Sx?5^wW@preB*Tzs+`7ACCU%1|!xEV=KE2ijXwfjF>-^41J+I1kS{*p7$y#7sbN*E_>M(T^JIK0s6~5elB~ehBq<0F zM@~j2J5;x9iso+HNW$VZ(KWC2f#E0%cUJW7+OYC74U{~nO!OoB!A-rI?A)6|smq7b zT3g^oh8jNbnWA|#c-JtDQ8|-wGe*Pvl;?2P^P{(dX_!8Wb8}r)PGCCKt(;hy{H4pK zi2!ptpl%S!Z+WlvVSDo}!<3!EPfiO1HZ0mBqj$}hu9V+7h;=eq*G%(m4(S?JA77;k z2lCx^zb$yAC!hRPFWNiVmz{GMUlZz{gG9*vstR7RZCqqG8+N*@XmbLvJMro@py)>)@wk(buaZ*lYO@zTQD&6j=rNu2L^S7xb; z>~QIc%xGKad0bf}v})F(;B!5x8Ni(*$jac&JI-(*eHxR3ja(#sh0HoHlO+kDffkTg zN4ruN0I;m`fsn7095i~j-aN_I8JfJkKc(V`tM)k6-skW^%3O98$BGL?3G=RM1{drA zQyb)@Fo8MmOZ?3vVaUyacdwu}Iy^1hKBd+E_oMS-ja$R!Q-aXfxRyP?SNmH+Vh*{QfhU?p zsvY~E1BsP&=MkRa@LqpC(?IX|sOcQtOW`o~^U=UxY0r>P)ABYal#E}`T7|VDEk4*g zRbq#Ku4Pj5+_(Gvv4GO_oT&4+cV%Q{-7`0m?3>|CS+J2y;N{w48I{Bto};Ku)r$}*}NtCr*K9`e;${oj!VU7y4~o0K4G z#Ww~25dJhyo#4en+mu!?l$_|pv1r<2xXlO?mi{98dC;`a z^G~lHv4wY&2+nqX-afA~2ygTY2AAkc;aUkZ1O(Qy|6OVdJX|H($QuFEs~SHK;q3>6 zx6F3Oo`+@--$4GydAPe3n+L7uKHpEWZ}nE>hFeKYBIDVPQbQRf9ck&8~dX#f5B_W3>kFoZ=PW(-OkiY1CXh8!=`)GdMt$3WJ2`e(s=z#M$df+?~d>V$9&Zu2oZA8!n zXmNf<@u_X~4|B1{XLlds>{)$D+HG=5J_Gdgd|2A6{;2mm?Kja&JA`<<$yZAJ?_`p% z#d(1rqbZKzA(1fK`q^!k{JrL{C^@5E?S((2E^&d(3Jvh#)Yu1F1U`9vf@$nUa5P6@-D*rOsDUt!RXxPqDqeE zhx}Js7W#1b_YCQmy!9{JLS9cPaESrWpnDKpOLRX|wP! z;F&y%@sT}}L(VjNqlmq<6f0Ka*f0sbV-=NHYcbuxkiOe>}+%}Uru}38poH-)s-9{YAkI|t>U=!kkS%@7l<%9rn*R< z0MsCi;Fjepom#nE$&T*l8szMFBFn@J)ES z8zSX#a{EbPX~u;E3cTW`OD#cdp1Vx!DIgtTJ86K4M}yL1JH`i#$m z%soJ*-EgW*^J}1h6Ijpq1OSG}i(Sx9x@WVZxkt`}RYp(ru-nZFe5=beHRs0xHxr;K zK%?UBA3)*)PO8|sAcuP-AgP?S(6;l?tFYsjS4+{`Ek5AjG)(>SKz*XT4F%IxD0$bE zHPo2Ab6-!cBV<{|2jb(59x~?zyO8%>yl_-NGB9C5yDbN#8=gC}1I>d?7}V-)*}iRm zxe(C1xQuVialL}HWHT_G$}L9JtrA^h1u{@}qpLi$QrkPdMDBK5t?)K}3*5jKF#k@n zuB%}}!uLJIfBnbz7a_p|VPQwdsrn<0)yvO=e@+_DC+Ea2snC{t!~_CXR;_;`VSS%s zjq^Y4@z?nNjNLf4mn%}cMX=R_;(Y5GzX}!IGLD1ij(ht23M_tdHTj3Ib0G0^56+8z zF*XL5#%^av-^^KWWS97D2jDcae$bR=4lOSeq*bv{Zh@X>8H~H!(>Dp?*sI5TC+M%g zMV7Em85Z~a`jffm`}=Cs=5Cw2TD@PYT6fab!s@;BLmRmhS&p{+tOV8Xqxs4ie=5?^ zZ4;N@uTjkPVV9?6j!h64Y{sB?1^l+U>&C2ZTYVm=d8wfKwaoI%=0rmJnC@0ZOHBM9 zLdiD7ZMH$|uP?$^FW>vN?&<)=oR5rH4!Z-f%vmtVY=Ywj>GdeDs`AYi<$FJ_M(sk) z1<5b!IIhqvP3Wv602B$>^~qF=FP>#{h0V%FVrNVlx{e`J4z@Mdy7{H*&lm3}n~syF zA1vU0nhn&}QeT^x*ePCMmwbbjZg2JFQX@Tv72xlQo6ZMSa!kA(rDL*Y+gz^>o-+%_ zc62F&kU+7LWk|>PI{vO_p6m0qTu8`)WX{a(Fjgit25!hN<;>r$k=Ebc z%!lnkiNcugi!_H%x9$edYn4+5LsN6nC~(9&^UDMEKZM%T>)RAjXQba>b27z$pYd)X zVv!k|9iv9^fLZL^m4-W1sQ936^33*R40ULJ)` z!hmWj;A9o+x$+DgIiO6xEhSlU;u)ZX{sA@OO4NlG>hCbn++v<4W<|jBtXWbcQ1_W7 z1m;(3UfX&6ZSybWZa{i1kTJ)vG=Ea~E8%$TDA&#~US#6?p2@|ZL-}K-huZee zU&DBQ-d_+%jAV+vQWl)W7WC*4{eaI;ZFd z&X!4l6_O0FUZSBrs8n**pa;s=#jAe^1H*|G|1JKPO80R&&p(VuA=hqDzUjUHo@nGO zJ%M6xiOJi>2LKQiZRf^LX3_pzg)gI^@hGsfJEnw0nj^+b17U@2{0!^r&Xt*KCcwuX zx8)pGEFcv!RyS{_`7&-WE;Xv4RNZ99?vaD!0})E5v?XhBmsLGT!HDCb#S_sXf!Z5{ zN>|YjlV~^KogWs^7gCn1YwA+$bs;1W13CYdP49s#L&157C3lyIgfx7f7-EUQ%vh%GVx#JFoCdZbMeC2*{bqC! zqO$A_lxBN91{{32#iHhS`c?kR7Bg)Oh>?m3`9MPJ9N^NwW3MOwdi|i$WYDgi^xn4s z0+sD|iXW7M(O;^HamtVhF`2lao(0p?7qE5Ly$56mBKWBWiQmINo_2+Gp%UyObU;7UM0lKd|3Cy2DI(f zRKE*e8)XE^_Oe7?I5y!KSERvOTRP|cCW^qquILQS!&A2)HRjCiFRKuN9pK^6xq~$ z5>iT%3``T%1ifpRiOp#9Plcb;ofJP)+@TZThgvz&%M?*D=$gj$VIG&I7Sd8hMd)Yy z+-0o0+VL|hilP%T-SCdv9*P^UU42v11DVuAgqspG+R;@uC~6OA_p^jT+B?n}rHHf6 z`(Rg^X6=5=8fnHb0sP3x<8}0%vXn;kC?5pM6C9Aj8&L|(=C48s7#R8R0-6>+E+D2X z!W)5#W9lJ#!z$z^39^xuL>t;9&VMLmc4`V0Iil)C^mAN`dCC|r1?ICgIJfH}u0L)K z?m+&ael@asGxE1r&s-Mk*Y9i%ELA(6QuXAkCSZE476Xtyz49$|C{bHRSo zTLGuxeVW?hoSYwc>`%!}yT#`{pSZDVScKtqbET6uxA&h7QW;g6?V^O~FXv4I5mEej zi^&-=6J;eyO;b;_eg5v~GdELcXRaHsVo%DI<(7GyP6at*IgI(AN!#4?$goo_M&C~$ zTQ-Z)ZT6ban;R}tj^M~@OWH5` zl9?W61+!ukPCN6nDJ+39SYVXm&R`nX}{%2Sd zX(KPPC0id0CVK%5Lzu`do~D(vj9Axc-2ev6QvHTM<}|WV1ms2Q!zSN1R!~6VDpLq( z3qDXqVt(J-dZ}jK&&8k5I?iAA%E@sS=`yi#^*qed1El*-!_Xib;P`oR!$3_-biwTX z-f<+r{h*T}nePIuvWkFc{KkRPLU)lp!hvSF`Wu~&PNXkBsaK(O`nBeTtcE(BXl115 zGTHQ800M%GnseN&o-a|MIhm{~D$t3ArU`OH3I1|AYd}}GEF=DvqW{+arr*!dD=-@E zzfd4@<{6FjQ!lNNt`bH{bFZm7*<(wM_bIs#+5Zsy;Sqp_f&E&P5+`@qIC_Zxbpy{e zu@cu{6Q|{dNR~>dZC>kYLSQFBd|Eb_gTk1fh$Lf#$m3m|qdnbU52J6}OSwBrkh7fe zK8%xmSWuKCpO}t43zPsFRY};A{<)iX_~tykzNGbOiEo!5i6~tcmCo;r97Lm~ZYp3&k_}cJjL0x!~;b8I`)iqFb9}EAYFu2lokN1BLaeQu^eILGm z2(}WWXr4A%H?$f55PnN!J;K(gE6dAab;F|9N|fwK2^#h191dKuN2tqKu{Ip82p;9; z>&;QSLZIp6@?Z8WEG7dk`cWbz#fejKko2nTGY}D2nuMBe!*p`bGGW~HhP|?zlM~_~ zxw!SbbegM7cpZl}Xb_+7XmsM^-)M$?zu&*>Sdnjv#?QV|Qvh#oG0Qm#!>vFt*duBq zRjQNJ9tvV4Ct|;X9!e(xF-FAKH*2pYaWaUhC`9HJ8+#<6CD^+9EsBrnjSQ zZD?$(++jHkKwqMFM;U5h<#?oOBp*^L0|mX;SZ|c#R)xl8`Be=L0ayKr>i1I7L?$i8 zGK%b(`yATqR^rGj-I^!qL|wt&o8H7=$WQq1?<{~crt^nTU(#hNp8oNrh=%L81Ovqh zp9sOra%r&fsTkxS6@0vEwi>cqS&N zCo$!ai3pe?9+lfIxef2$E-YP2i9*bj3iL9b(D|c*%OELKh`2_DBuJbV_2y`k2!yLu7aUyd9gf;?|a;l6ak3(UTitQUXaof zAY)}&#LHANq?}$s0=kH zNO=r%kX%SG)xzmx9bu2G+AKpB$TeWy+?cqOWdGPAsMllXCp1o4iZN8buASas*5u>V z0*NZnLE%YHa9-k{9@^Q|6qj@JuQYNSCeq!I+U(u7o@r^6Dv`t{de-n1O}EqJ`*@Kg zqgH)deFklp8ySJkH`5E@?s}UsI$KvwkrZ31%yZDXtr=-bYi_>Wv4@8p`gAiTF(aFw6QGa$-8dA(Tp_6&B?z3sI zTI#R6<9pO~@`_}XKqA**xUX)rxw zrYw28<&X5{_#0s@KynJb4BRkWG%^ws6H~{-BN`JEk4QH%Vp6O4GDA~|MqpX5(E!Sb zD?NbqJE=c9LUUY)=8LO`O!2^;Rt||7$*c3;yVmJ(hf7>!&*q#0zRbA}{1;_qMK&Ls zx%G;=mQPJE+%p7KMrT*yK6451RnTIFrAr^;{AW=-G7Y*HpdWOc~DQVy8Y#R%08fmdh|@V1&RGf zux_;{NwsEw`pMrdKh$sZPv>g9k!w%d$iz^vSj*Dkn+=fV69<7rM zm)ZluG6b`hsKL<=kvR1;UruQE+Pa$cJ&|O8p;71X0#*#(ePcvo&)&6?9ql@g782UL z_d@qzK5N1FhoIFMQ}R3@FHh+(Q4yCVP4_@<-F(jI=lS%|jV>Y1=J(;&O>ZTQI!{#h zUh;Uqv5`ySQ^?VZn9>x+O~cH~CAGyJrzr2_xcozJe@|f?^KV1ymzf(yz-yMnz?oC@ z27F;U&v;($Q z{`CDU3B6VzwB#W%{#@$ep&`4`4-=wZ1kdpN%qrXrFKgnUGddp98`3T2J@rG1_wj@o z3co|%52^RV<2ngQ%VF?I6^ep<3Op1^~Q8Z>c^_WLgxXB7-XtQaSw=Qu zSc}zKE5MX5EJYEJLYwC7rozi034+ zrQ|e;k<&AIw5y(mWt!7WA3h?kd{9JP? zcH}B+D@&mP3u*$TG?NqYd<>(}A^1Aj0TxY~vt~HM@62~?%Rs`yx+{!A_78epSmBG& z#_QvbkAUUk&$yBTfx*)1H1kKA;HULRS#Te%Mjqv9VRP2&rJy z@~BXpbC3M3PP>H0Kgp+TG}IJE20jke%wJnLW4oyY2=AXu~D7QF*8APa!+$LyAgGY z>WXUV5HwL4eUGpc)U4J0bL&sjyu|rs-d>AgJcW^rS_DHFB268JPGJI#N+4YUcpE1; z-UbG*hJK5zRyRZ|2TxG01Iu28^;$^@QJd@JX4+CJNFo)1V2oxJ_>$gxr<>@bZKqb% z^7=i4p5Ey0Rt!D!FlDHj2sdL*fi}b8w$*p#7}%8UUO$)d68G~k!RP+tGP{$yQe;)`74I7j|};m#>rA-rc5RTFsT`N_8owsM}edsNQ7YP$oR{nl@{4DR7=q8+$$5-FFD;tyD#*iil| zPYwfkBRQ2$pYI6`BtuqRK{?xuzEr%3V3F}+f6=)N9BdoDm1-=bD=zu_r)465*L}al zOtwHo-?=B#VQEfKT+xbmb0N@HxAuuE5E!JAbHZ6pWDN%b#6NlR#BC#>+BJ(-bjRvX z$eU|HYZ^*+J^^W3x3V^Xn^kAp5qO}*QAW=5#yR9XAp zT-ea}Rrge*cj;(HYOVsV#q-KbIAw=nW=2sFJf1Hj8{SuX#aJST?|OAFFXJXmzB{yd zE&&)1MVL`57ymD%q3~d49I%{C(a=4s@N{bZe|F_#egoRFfsE=p8U3e>l`s+`S>;(( z(Y9_3@HlJq=0isV?UC>#0KDs@Dy&h`K+UB7^<3jxId0U@N2&5@sZ889n$l^+KOY#_ zt~$!|k>2%yqxP3^-k%aSRiPepy+@MAlny)9WfBR()+e4|`u|qfwru{F@b-f-<6j!R zN12{UR>eOd_wIzxB87YJF{2QTyqEKM7yBe`zP`er>RsjK>l&{-{}7h99;*=$6v95@ zAiVis4&vSa7u`U0=OCW{EIlnkD4{%ePkqF%DQ4gE$G>92`9GY7r$RWV!PkrbkpVmR z7{9MaA}#CaZ`=6-H{xo-Wx4ecNaCcuWoozpdH*&1%jU=m)MHn(OX9U-3Huvqi|u%6 z0mOaxR#;DbhS89prkfp&G1`-@e^7#GFOJex?TyE5KU`D13zJz5 zNN+a)=1;PZ5){x3C1Qv8<>zL?3}z6|BucWyJ>^iFn4U8Km_-iIf!3$D5_% z6w?FgJ4VauB@p?BgWMIXp_ujUbFc~g#W3tGD++@!P=YkLA4r~ldUT@h;*UsI) z6Xx6pWD1x^Y6`Hl7eiVS+J1b3keEl*84|mxLr*B)h#)TKsc{8GrVREVlFjbynnD~q z=89yRn1yh`1N`h{}VWihurfshV-_;p1t3|>$C=+lz7x*KG~`OPn>{Mk~;RxX9W0Y8Qmj%{W&-Idcd?_&Hsdf$^I zPzfpH?m{Fk@V|i$=!J_H2vr=PDo|8$fTXC-hEWg>QG(fPm5rw0RMUMnr&{zumsQXp z{>HIyAO41_8bZr{bz-W?ren<#j^xh_`#BXL`}O1Nhb2|)-oQ_H<;|t^fLY5{yzR9s z((n7CT)aHJ*W0}@Q@1f4WV4*zuCu7EvF10TKh~0tT7?*Y?0nziuI*TlsqWN97v4;(DIxh}FT4K9FT?QDp$#BY7eD`ET5VT1 zYi4fxi{_#VT?i?qDBhUThRM5S)VD{G9}v8cwU9$YBVq#DY~)gLZpId*9U-i05FuP5 z-P}6kNjl~S`k5nrg8 zG6vq&I7XruFIPvZ-Lonxl~>s5AtJjdC$UC^NKL2WsN^H*vPE37YYfn`VJ}y|??dC| z1>(8#inE7Zu!hNjRX1H_QETY0gdo!j06{F=rBkCv=M^h5%s{y7&w zKo0iRvHKZ&b%Op=&7DqW2v49u!+AiE-Hs_U#`zmaP2dV|K6E=wD2c;>!etyoM(m8? zPM}_Q70Jk9&_F0O){X^`XS9)_5hKlhtxqNu$-=H#j0QB1Jctv*Lf*PS(Ko0z;wodY zExaoGPV+LzS$@C_S6JHt$>TWjlx(Hkw%H=WewIy9pd*f(?zBqeIWx8ov{!Qej%O#{ zolo{2vK=g6=C;d-@;-_p63c!e{AgvLIr{df`N*{S;1b-SxVt+9m*OtPTihw7Ex(gfwCH__g8IjmA+OTY$IyW(7SXxk2l}b{q+6<9nEoZPtl#1jHV+_ zk|?JAMh9J%pRE%4s=UkG-!>H?%1CUPrBYKlQCRS`)JJ+y5=_v{s;MSHktB*e?*!5) zM>(9{ASMO!Anj0_CT@t^OD(PXOxlk}Ycg+y6GXGMb0%fxYATR#O+FRdi^R2j+}o-? zyIvAm^#M#%0Sy8wkuQP}a@&M?I2aBe``tw;q_mZF9GLu+ZE1HHN~$XEVn`E3df|0a z4da~kOq^7YMmVYdPyf%Bc^@LNF(SApe z5C6FOLt3KLkxaEm%j0Kv*O!U>y7P+)YsaP0{<*GejEKhi?M>Rjqbuh8i9WI3AZ5 z_ttk>UPnt!*q0|Q&Bzi_OVQvG>qSfW#Nr(vs3RjIVuPp0j}&&JyJd@)u<=-sTL~rn zLdUntqu7D0lRqtn-`ysngKO%Gk(Sktlmq}#z7bUxW8=ul|Z;#D6fda?nQvvkI?`YC~ z2?Tj_ABJ!V7))kvEB#P_wugn`AG;P`>;si2E8i)_H#o%4k39uze6M`x$s~k?T7T?E zpZ3srN64U?20L1OafKiBs!oL0izD9IIIq(N`h4wdd%Js2E^;y8lB%1`}_9_;a856 z=(-q}Jb2k*?UcEz$|5Uc2_qW_1xhA0a)`2uXbNA&7hSgCZ$9?PX3K)Bx(qtwa>J|@>R-N&2jcQkL?;yt8Pk`8mQP3 zJb7qDCeaO+44IYao*9^{;}K(QZ4Il7>(#UL4J_TBbe@z= znI-aGs9R65KYJK zvDRGb^LBIY#I3`5H`y&3Io6k9yPX2*0wY|LXo#(*KfQIMb2?q8R;(+h4SeypD*X){ z6i7(;y;A=6>C;nRaRBZU&G(E1`Y*mP{T$_%@TVXOUC&J(Yph|Hqrzs1B1}?Djlmp9 zb;a~pS`sTgRtpb?;za&kB6PT;rMpoy&UUxU)Xj;8%EH{p?GR5s`)GnQtw(Im9Y81}&%qB!l^#ZmS z3pTT1%bQr;67BvSsXw#m`AW`%KLD{G1O5b(jm-^X8a^#5RH_rj(3Ocg^Vy5{zJRp~ zm4;rn774-ARgb*?aUDQvM8iST%2UfHu~AfvE3sE&^-q{_5dVA{k%Tni-$D$K1hHt< z-GUAsLEucv?u^iwRXUg;>Ooe8(jIb3A*Ix*P4Wy_ANryW6LClOOW}9_GjoIUNNZ1OBl}e$JiPn++GC zMBD8gj9sXPn4AT19@bk63d($aGoq!7=`bNz_FXR%gE&N9b-~5Uy!#tjzY0 z7AQ;Eht|^{NC@;?L(Zd7k{51mKmBTW)n=Yu+ohvRW(vmwb*e4GGK(YEJsLzD@_t(ifkU{V9{*m|Kgp*h?En?e zXT=SD-b565bJ1-le?-sEH?K{=e@cgQ?x_DFc((gT{OH64OiDhXcvsLXaMq8SZAa87 zC=^Ztg&q|Z#Bn#hyzs?+yr6qK6+L&aOw1q7e(N*U>6F-~bxx}+$>?ig1$pc(;FFS5 zElOI*fsre6>O5GsfmtzQh=TwZN*!;LquKQ4#36M~p%Ca#WeOV`hOdPxjAPaTBiSmZ zf+k;#I`fa|=cla2)VHQGT1CjmY5(s`sGwI3y}eO%nT#~_ zSDi$B?gCxsty9$#CDFd*Vf+i27VDuxgKw@L?Ve7cQ zeRs+2+qV*LVG2qM{cQT47ac!mkDZ;${_fW_hl}sBa>!Dr6s;!llm@utfzA6MJgHkB zX4xo$1wW^&mp0zQw`e#+0sfDNqcrLqCTF|ZPTMo+V-|`BJRg+o^(Bn;2~@wD>>E2l zDbcQbmD$a$lC*J3h;Jr_!ANxGDR}!I_41RhtM61l_+v-ZX>-(BTog-MH)FIJX)=dc zM`@RZ1YNRWAe4ijI5R9~_f%PO)$!FqAOAvCg-1V**be41(L1hHh&N{~7Id zF&dh}|Jk8f+l_|RwH!5z_JR_@Xm6NAW;X~H;>5KMm|6?1*naU$1ET}Ka>|`CL9_n+r~ME_kSXyE8oN3 zDTcq=9L|TGNf8V~?T|f~Q981EWO>u8k@Xo&t z?#-q1UdNef4V>(uu~*Xgtcd+)?_ho`b23uTQ5i?mz6Z?MmbLr5g*0ak0d*b0RSDZx z+WQH5oSNZeua~S66;U@6f$nwa8_Pr|twAA$*Q;v(xp zo~L%-#g>069%|`G?sM&MxPBo0Cy6N@U_$Gq-a7Kh)j@}+BQqEs_gCVaAFeA!i`M$< zy|TDU&)w=dyi^+2zigZr2Iu3?U19dr+yav_$gYlZ}CprB%g&>GJ0v5(T-V?;y#} zt1!d<>rBhuf90rrZL`fl>e)Grjheayr?*-|d}CElT+GjX#eAou@9NzGi%~I{zJ#>T z105I1fq`_Z{%>@;*#6iM{?hr-d)YL)QcDJ)?8qQeG{+f2QTrW-m)!rFH(XUkb;^9t z?%E=ygtQ)*L`A|P@U=c_P^kU;;%sr>E&f{UBP3hsgK`$^hj~WRjxg?3$q0)>lw=$E zWN<_G?;yzxfO~w)e*UVM%)Gn1P1mdVPnMg%z&$;JnEy~MvTuPwHR2dVm--ZEdchmkiIrT4+#9TMtH-A^bx zvd_Cov;Q(u%JlyECBJLE9vRLfd4 z^qzWs&lI9L_Q{z0@tfh~zY@EA>=Xqgc&z0 z7=uclzRNq}s~$(EhDvTm?zZ9})1rJvjfnB6&Q?*?b(K=p=l3z~X)PBEwd>q+XfGnj zv}JjDNT01!z89BV%SXmX!5s5%$x8pR@~u<9gw74bNLAeQ3yMM(;mWAFCcC_EZU(j`YmT7`~% z4=7chbmQgW0Lu8_HO@Zqo*K`mB6RDWGHWuYTB$ALzR@j!*%&bj`+rH}^?ds5FU|gP zSYULL9-#76*1z1VIq6s9)n=>#H8cSpY>wuzRz~nyHSP({H6-Z@a+`}P?=6de&uAy! zSy7CVH2{*o_FMxVVgq$63(dhy-(~FZN+yLB^{=(Ara&^HaJbJPq%KDYu2zPA7#r0S zzQkMJ8$&#MtD;HHDqyB$Knz3N_&-7slNRA#2Hp`uGBc$8O{3CE4FeC(*_GVT;=ATy zG7%y$_feYoFT-)e9~2Sol!+ouZjH5i7a!NdeR*UB`tf;Wc!Ft{1ebINunx3z6jKtaJw7I%v&H7Bd1TlECS9OEX6_tk%O%W)jMWgH!Z!nCVQ zB>?fRd2RsCu2|xNBX3k}-8r~+@m%}8HfV57cQ!UZEBDb@=&=XZ&|$KDyE2tn5Sl|L zEjrleeQ~3Np<#32tQO_0))q4 zJTu&#$?feN7iY;EL0t*Sa@N64d-cQU2 z2ROP@ls73Vy~}U&(oCV#EaQjEeP+Xv-4sb-?K`z=rPmcT5Rjjk;$Ji~5Oe=mxYg;8Z_#@-gh2fy%>=(a0TD-k-OkmYwWFI)3j{i&Q0Y0$ov zPK1iwi+INrCd9OiBo+KV1ST20b1}kC9FUirW;oQ#uKy|Le+1jz8E|7#1{8mF5;lTNnva*Xp`?>`o)?Th;93~r@=V!v9jUhT7CJV zXK^w9rM*N+>4;Y!fL0c@RVI`~pcZ5Lj>ZLRqXobnDKmcR9hJ@cdU>&Hj(pWS{V&Z< zIF7G!Xt*qVKfEkziV+JfJIToSnOPJVx@8(T8GMjsHJ@5!hFo4!i5zP{+CL055;E0nOE@qU;ob*?NfwJx0{qR=k{?f?#@gz;9{DSmgai zY0@8~=2L|)m9|Fx^(J?=TooGzBA+9&m`=Xg$wAYlX*P#5X)H+0k$wXUZ!I zIUo|zJAZR=t+PZW4NCnOx?%A{<1L;JFe%nt$qRAAs>x9;sVT(wfSR`8z(DKQ!-m(B zfFEfNOH`_D!317WSe4bTr0Y40Zdnu3i*xKR^?$&t5QbT?$?@V=QRib``pl))!8;{F z;AQU|GM0jDdlDPXA;s1*qO^Iic!WqCpbENYS8w+e-WR@cYHyc#r60j*x+lV+vSadr zb}?ePh{>HJ7KTJ$>pS}!VAiDi%#vpWEv);v|3-`ZACBQ0dn3dX!^OBWe5;|I?!!u2 z#V4BRQl`LyEp&XKy!DSHh-2ZSoDF z#!mlPZ}3-=@EA{CnJ!4&7db7W=Yvh^aTW!LM@$$7f|!uTtYKl$nB=z8uawK=3yuaD{D2i3*TJ!QNrw zl49x?Tre%Pl50OgB4o+hci{%s(TFazNxj@M#aepdL5Zo<8B0oBI%4*@m!gl<)rLa? z+tzkqNh8qO#U)AbNb*Kp^qj@~R49wS_F+p2Wt_}4;RegeBE{ZlDDouvna%H$B_%m8 zE{=~v$g&a~XHpNGp)!=VD4OcBaKRElRo!YQ6+vC7P7IYL&PonB<-stt4%mldNaoH1 zRS1TvKO#!?FcwH7ag43l1ZWU#Bv0cC{@o5C<-c_=DZV9+U}fO;%S}Q#UcZzV5&far zBo1dwtd>lXR2Ba#1X3pkROybFL9AQ^hZ;zFldye1HI38pTUOoC6sJfI+$=7}+$hAj zQ++g*-PUDIXj;AUHn_*~AgI@yfD@9uC=j1I71S^!M*SX! zrG(}R^B}_*Un3NB_^a*04b)aNG9mNSeaq=&S@M#Nh<4}q_DHs=DSEIz;jmUihpEf< zY%xDSUd3a2p0SCX@~w>as37xN6b`2U2$_bWQ9}DBrHEfHg}$Ga4-3A+-F0WhBjxnb z9357-7fV_NAk)&ccCf#R{t|DE-rdKCuke_$w2TyVY=5UqLcuRlG9-||%eHbAo{6Hd zdp;~$#9I9zLqhqVu=L(PW!0%Vp5Va*K^+H*cqJE%1?&AMJl1t17gt&&rvMbSaYM9_ z@gSCQdB#Z>?d>&pJTOZ4ktn z?vZN8#2JHX?q1GXvwWM#!y z*z(WW_ZfL>Nb_uUEdE8@<`a`EC2Kq+Uni#PN6iRw);%MC&&2jLH!WBEw)Nk#i zA@+YxB7~(?WC2MjO@czwx(-eIfI0~~Kof{3 z68zfS)xz#x3N*F$F2z6Q)u4l`IV(dTMxBdx&skKg&p6@7olhTRtvuQ#W8%J+cc{Hk zm(?LrAYq-A+=vD@y2KbJDNV4dFpXo@52qhfw6s>I4ce5w_9^C)8H+L}$g~XdO=FC~ z@A3hP}^ht`}dj8zP=&xI(Aca`pYu)GtyY`p=?h( zzeJ~a9K|+m6l2=O-m8BNrfYM+d&lVVgUm&H6l`P!^5~|>lQCV(+ghEpeiev_s@d{t zc6OUpZa1tcQco>+6^gF{B+ringC5u{4@@P&&g|A~K_2VMDf^0*HM6%Xz_wU*IFc<% z{15PJX5vVS3mKgNyH%O$Ty5zB_L`_OON~D#7^vDHje$;5!U#52oi8p=Nu>a(fcHR3 zgCGT4!3b|U7Lmj6mfx~-T8Q-^7SVPi`I#dubLa#UY8(+zZl-}ol}4ZkkM;)KpVaR6 z48bJ%eZwB&LN>A`PsoU3Xhuy!&+)ycjfvvg}B^O4_i)YdJ1RU zT9fR}34&SS%K6M|v<=POz3gw*f5GB_tiu;f%gOhY*a*G7M$L^Lzl1O%^jmWxHK4GRg{JE*d$|0#Q=Emwi1-Xsz( zx|^lL(q=G0ozJ|;+#ehBTF6>d3re}$%#jUl&d99JN=#KFF=3=eZ$2g|i|u!2WP4q@+p$L`A?!@aBQd~__p zX;#S}lTcolbP{hjnxsX1+SROw%ZBWRbhqZ*qijIE`_nb;~6|_mPo$`%1hXaMO#|qUhBT(2;doF}$g$A7GPtwr; z@H)a#WU6%LII~7kG}0Abz`#_vv89_*GA!ThMvb>45RiC+F|#?yt<$SZ7Ho zpNEWn!jb(#B#_UlszQ^?FnpFp<0IE1(owt^H>&t=LEm)O*D^vkR2jc z$dsjiR?IOL2W73on_(6Zq>-s9@ww;YEVoN&y~5?6*IWT8{JVFr1~7#U^g~!jd_J_u1U)+SIultFpa01g4O-y8$}M zRV7Mh8ty4e6OVnD382RUflQPq(fJHV`nyz{qJ0-Qqf*5*-wzJUPgyPDl?=6XUO4Kr z`BSi_y(_by!|%FZEg`jOEfN1*ToyN4@w=-=5n}9;?PgNBQL0wllJJse9AIfNf+y4h zjG)JqYN!?;nR;7mvBWuyd8Km645U4O$?ucg7@vX-|ZK|{lq@rkn4m-v%kCOj|Y5{ z1y&>fTcfW9dbh&-ADUX7d57N((^bne zY4wfm{f9>J=^%~WT<2f4WnWCeGt?w~?bG5V$1`)uvvUg0CHv8(lZ?;EvkkKtHTJ`X zg*N(rDjxH;#`N~$hts&fBOo_n;`7$t;#Z?w#4!$ix|J5l28-xQc@~35&J?N2B&Js;2bT*@0gEFJD}mE(DT@-`1qt)3$v+%0h?R z14XmRkW+Cf3wrK1rbV*&0SDh{YF{v~m}u9J?lW)w%8y2_ze8oF(+kRc4|uGWDf$oX z1}XTAGw>gpu|*#$oAiI5NYDHXK=jmEq15ynRhL^%(pouj1tX@mg!%kIDW^m8c4j8*0*jGh0`YWTjd5dOa>v$xEF=BSL;e{BZe zI|o08Y|uX-LT*2vR8{>wE%#3_Zmz1`{1)2T7MgF>RMEUKU~ZAs3hpU)S5r%^w%f#Pp^T3X=>&E3N9`@0rU|ZX~l1XZ{ zjUb%RU5QWlWrOvS9Q=PpGo)tkQvPhF$X@XIUi`^BHwBBq7R$dK$KFg*J}&b8hc-w> z47gYT9H#MIms|XY_JyB`ab&*FjjHZx;O~zb9l!VgberBh{fG7+8tH803=>e}bGTgr zkYM3l0IJBSA;qtq0#=u*#GblBqO%!9c@Afkku6Tp>xjYQqv1{ha1HYM-`4AsM(m*t zNdMR#FH)DzI8xgt8rlK}K^3`tYdc~_=;M#CyCmsqx4{RQHMUK|#>JtdVK2NG4%)rq z>`X~kqCs=Rv~`xQhlsk5Km3(Z&B-l&OQ3ZiYw3C|XXM_|aYzaZ zEuF*=4ISX*eaU!1LW#Ww(i%LoEB?sN{z3jUzuWL(^^#wK3C+~}8^K=LTZ0Se8r9QO17_q@fuLGgO9cfZ6zlCmD@of) zs6Pp0AB3S8m0!;>Tx^at;gUx@wti9(hCsF!%H>3wfSHWzmo#`!a7l$2FC&px?P3XE z9ijV?2c#)lWEMG_@avX%GabtwnO$pduL^m=tzG5FAj)Q}UeAG=2uG9pACj zJ8NZoG5RJ$jBLUWJ85%X&9ll&XvOH9k0HQ?inrDI&;+wqoefdDM7pNXYKKxsCO6PK zeQ|Ar;14B%Z#b9*!8U!Tc+Q!kZRuBT`gtLvV@dhcI{&uDWwqK~1fBj= z98CEAA6lm$^P#+!d}z;FGDY}h_}n~=*5JR9PKjU&+0at%&TmBH!PxD4tjP-BM=n~H zj7XKnPCCu_?OpTix`WjA+wjFdt`=)5~#kZbY%i# z-3KirJrY1!m|)cA;7f-t(jPPgzrWu4u!aCvLT-kPh<6jmx7LM=jLqUZ@Odf#(bcHT z!zr3MFaLw;-MMPxYYYh3bI9=W$9#W4Y)5Nnz#+dqwf%g=m>*Y#@h{K_>2|B~uVTbE zN=gp~lMJVZ2l-vKzQczTdLyONMjL)VaWpHG0opH_ zDP;m2FuJzq;H9LN8L=ZW?Umx^vdSB1*=a%=wRN=(29HDzYrMVOBGBF=(tY=XD-GM5yGL^?c9{U9fjtDuIBy+ z4{Ux?iISz8DwYSR5K+SD*c2l+iNdjY1=CUm8*+VQA;sbWVoq(%HVdjb@KrrUs-aeV zJuOKq+1@r~=%}!NMu=%wkfid(p+H>bAZk=3M7X&+g{;&;l1%YQ&tQ(DE;aZoPaml@nv0 zG11-FUy7u))nhRzW(U}nm)JR(6F9F$a>f!wb0$5WWy&giRH+&}_S*(bVTd0}8cm&; zUjoh5xmimxd*(09*g~qF| zP>4iF6|` zOrGjc6)^^u@H5;&QwgH>>(({v$^OT<>QIb=ck}m8qHA@fZb2zi4n396^9>evme0vA zvt{Njw1G3v;cxCv?CAQ@h?blJJV{WWD)vO8g3wKxb>$;ni*4YI%Y||ft2`$`VC3)? z#EmeZqPv&C0bQ@d+uE9 zL2({T%69DD{B%6S3K}E7dicb-e#!Uz3lNEcTx6k2 zVQNwiOAZ(IR2+0{Ikzkyqy6njF@3n~AA@t+FD$*UF=D?mW<{`4V5yZEkZgqfm}gAq zc;F1t(H+oydisq)GRkim^j>1Frw$)>5DevMXo;e1z}Qrw0-L zT{=9egEjWZ>QZBa@^D-j{@{OwCdNZwcn&0+}CLaEl^0kFJ11?R;kFAu4ZOyP!4xpH!p;S1IMD=X$yggq08D{+9^p) z%%jq9%lzcfBr|!Y_*XH>_AND5FAr|!6J$w``E1{ef5XDL|dOk7ftHZk>MBlzBvD(q5S=Ke5iIXZ!iBk z{dwd+v|&fImkOM#pV6@Y505_b`lpC%!uP+b{ud>Ft{f^tWN6->{I{SI1FQ3ByY2rE zi03k`R0&(?sGaINy?%+J!)uX8p;&F}Zc>Dvmw%XEwQ$;K>tdM4O$UBtaMSteWrVWa zS!f;SiaZJ5$u0kf<}0$1CHOBQh~ozXL7)5@3|okK8JtOM>5%82#%5?~0eYMSC2&8e z1L;e{ODh2>kd&zjUOEAwXape^HH?bgTRZKGrHa8F|5_9P4??1Ac-S5Ik2moas@_}( zD>H@KHKN1p)n_-txEL!Ht-D`Z?AfOk_RNmemCWh~E zDTieD7LvZ&XT9leIE-?YDSRX5+DBJqh%rGY7=Wyu)W0?L+%)+%lw<_uWMZ4WmQFeP zf)cly_-4jFuc~J_1Iu>`3aTD6?!KA1as;RfBVCe5tMb^=uJ~Bv#cg^*@FmXQbU@r_ zXh%+9aT$yI;-v&DJ$EgJ7)wOfnsTNrc;(TrVz6E~NKg31$TC={MIYjKpN%^Dqe2pW zBJjTsL8#WFUCcRHi_$dFA-h3w4C&juUq6fKUqb6-41Rjn8~(~MlTl6KA}bP3zGWkP zsdZo^-}ZznL`O|1kD1o`q({ycZlX{)lq_Hwd%Mjubv0RWW-A!1XudwiotEWkBok)G z`;|+BUeyvHO{Umpbe9RR$*4(8{YOl(Cb^}jjNx&8AKL9r#Dodw+t~iwE->O;58r99~Yyv-;>V zw8wbDAe@$qhA&nXSBi@Y*6igY!D{rz{WLT#C-6}S#%Ht_d_k}Xddcj2Cvl4?Mto+n z68x{MaD^0>m~um6%7MtTrQGs4Z(t{{jdUKwY5{wGONT%S*?7|;`jx}DCC-cq2ysJy zsef7OtG%F==xahulHQ^Vj~7Tw$@OHV_S)1-!!jYXvdViV<(YV*=yOHP5onZY@$jG4 zil^-q=0|{&zZ93p0WZKyhY2r{cnUFV1|G``Ua`$fnFG}mhO$8KnhFA6wj-i>n>)sX zGgCUt3&V@-Y-laRjM*Z9olj91;E{uj^qY2IkaslR9oTIDzT?xzUKeh^{X}iNQ!+ix zvB4f2AC^I4ZS^Kb$2l?_#%-JpI%n6lyD z(yKl(9(b*d2y^xs1mZi5lFFQC5QG!mDab9J$zLh}XGmc`^iSbIY-MC6fIWviHk-u{ z6FlKf%#)v1{?VyoEw^ga$A&fH@k#=l;PO9zjEpSrlM|1i9OFB}?VSZpskV0g5)JO% z!dRbOW(&-N)=S;j=>kt0Cf3xrZQ0TZLN4v-q}1c^qyJ_Xqy3t{cqMs|h_iC7G8EbN zYi9Y_bpzRrGxPwkX_M(V7n}^jc~w72kSFn+Zv*sKI?*l^6ynKMFTFzfyuIl_VGv?B zH|M-KYJyzJY7a=R+udo!yYXE&+Le}=TFPSph2)6wCW}&2S)y~9{R5p$H(Ajly=3&xBjlLeQ=lh1 ziRelev$g?BP4K%cfq+&-H?zcfWM8?ZdPkh5c~f$4$kce*0A?dL-zG&8`Q;BuW&1jD zYIADq9~iNUC7*|^(&Xz3lv}VLO>2QMQ z6C>(c`QVC}1dP4!x4ct{l_n;reYU*%udc_}#9Xpv#|0JmtDP#1#V22t+&4n>!0kX~ zTkUtAg6Eh>WfSb`&RYsAC+(m9$1G1~1TbtU*qX}@TVroe_14umdYH`+UR`bGE2 zqq3@7)#W-Derge)HaFL>N7>p!QMUbUBxCK-Oikk~a9biX{GCkZ*Hs^q#0Yz0`(+6G zyBM8lSp>B*O6ZC=8Dw{INo`q!mFkIQ;;2>eL47_Gx?okh8R+54k~{#hp>s(fU4Bb@ zMSZxQj{?6=uL8=4d;_B8GaR#fAFS?WXAJ~Ghm^1hGQQmiW2Bi@BqOA1Jn&Rym2x=j z2D!{S0M%to#s<=9p}%p6J>^Xj#hN=h(+2FW{<25nzUaD0G@))&c>f-3Q%Ect%;7qu zC`GW`HNjGqB3r@rRu4Ls9KWgfr;R8=69R(jBZvAx@A|Mq0`l4IRnsHi;Z8lu_~J*7 zs2!hL3CIl8Zhf~D+qQb!{9RKnwVmFk|CWcw`AS+PoutGkf*ZnssDYtfNQLL|mG9xN zbiWD#Cg3#*A%Cq(k7nEa$~oFT>{gOph>tlBgTeYwh|n;X2L2XJP<}PhsQg6r=s?QG za#P+>tTG?z&nD)OQpAE_h-0yLl2(o(r+Bcr)S_=l$JsM)Z=(5Qe8-9~t6XA_iBSax z3J2+`5^iX&PcQH7&YNU%jH|q3F=UCIiYc~UP;9F!Xh{(547mNvoxI3be)D@xE=Kjd zQ`L3(e&H0DHp+uS3c}cAUqKJP1WZ5JLaTqxD8$A@D$Fh zb$4Bmh-j=!97NpTo+Y7(0?e}ip^WJGl+)fQZwk+3Y2B7IaLodwVe}Rf4{7nH9h6Z| zjt{QVThOX{lAx&=HLTwyjqAN%t2kLd79i6h@~E;-Nt`JoiY?)>jMzvPY%Wg>8@vAs z5u9PPt05p@`!&CnP95g#?^+jU;T0oKGq@S3)=NBiO8!?v@kl+;AyHpMB!hE2h1PUl zc-=TQGEr@qlXa3hfmaN*WS5yp>qOZrWxl}yP}qv}{_JiY4`1c`awfgbIVLV%kv#9a zu036P9h;%bkZ6*<%KTOwY^}J!v)d4zm?QG8gc$$%>2E12G~CLV_QY&l8;G5^_WgRph$6aX} zmwYMwNS^j#Zuh2c7LEK`>1ko-rr>`XM<{Ee9Ol=7Wy)^^OPbz1hpF~b8qw0pwzgp{ z{{X$D$DuYVLY9rSteDYcU4)(vYTR7n7Ygzn0mMp3F6M2WE;_|TwqC7#$v@ntQD9+@ zg=?gZt9Ey`%Qi|PZXe%q^>Hrx5;FXLeb`rqdd4TE3&8&3qrj8W?!kxACcL-APYxm0 zfylOnkBLF=KWgelnD2yqWFEf(1|GjX5^p6`PW>GpNoZ=cyx!OIvW+5zQDpsEJ2pwd z{1r!okWhcj3hB=L2U|a}R&>7is7vEq=L2Oct0%TBsyUAGK73-!=jAouz>^}{%iFhh z$7oz|t8u6-k|qhKpK2R5hq$-we9!I=y1&9){S50P+1j3dl^^2jP{wvsm@K=`A2!}N z6K~w#$kW}1j7P^ac5$`-R!kWv;WBT<8=nxZuudN7@853l2KtK>>kH?|SdI}zV+QY zxgIgea`!O$zq#qZNIxe;i7*my(u61|wc9#@Fhdv;O4=A3J}R%TCrwa$jkj^9xAvVE z5*JtPGEoy@w3NX+uVnw{m<6s^o9UJ+W zR9qaz0#ZO_9{%4yATHkUSX>C!;L(1WdGfp@DvFEG_crRNp7Mw2UXY}rms8K@ci3Z- zBxFyE+!a2#T3(f{_Qyi6IIJ|Jo3u&5Dw-{M&Vo!guQCr4J5AC0^hS+aecG>o2i$4l z?M2mr&VmNRn<}lX8$~IFQ@`zIYjxBb-(r?vr7aql+AH5ERP%3i3-noMNf}s}3H-7D zsHx7`sm|oNF`E3P^c!tUY#f{YCztKrW2&~QdHrPP+3yps8l{Y5zje3gtQlFsA{9sT zlV`n+OpC)9<`Cgb*Ifbest&UW0~J#e>PhpkFPvW#2}!wp*fu__f1`bi0jg`Y4$PBM z{?$mQzjfh9!V~;Kv6tp?>6c%u4JiFG;eAi1q@={78A#|o>yb5ZZ5>{({S4wDg{ z4%y8S5mkL!{Tp?kextY#mOR>4hz((+6D+Kcj;r7e~`wAqo}>+wY? z$U{Ox!?ox4o&PxVyRZ%lxdVNAf)vN%#`}nPHjul=ucN}$A{V9n!u$86d)0?M4AaEj zGp>y&s4mlH3O;gN8NGoVqYs$2ekehtq0}tBCVRVY+hKph)cidt`$9~v0*-&|=pHSd zU1&K8(>_J!$}@3Uy!#?<2sbEKXa*p5tDDP{^8h#m{eq6Tn?i1|tx#i!Fzd(m ziC|aJqe?B@*QjO?Q67QaVsHSKxTJWVAh$`!0(i&xcXl($NP1luV7ffK*H7pA9HF3> z2eEI#8@_8*ldL8t8s~&KYc78p)Cs9G;WNS2pqZ|xZ?9 zEG&(Fwc7suq*ciC_NdiC4SaMBsbZ@hk<|qmAGx;>P4%$FjlX6snEIuCm{RkcQAw+@ zHBJz${}`k{pE9gmdgC}^cW{Ek$7F>Ukq3$1N<30%FTEPTu=huBfcDNG0>xS;jS7Aa z2KlU(DOT%*>aIgFJP^ALFTl74_buJ zL*7b8gnH}_APp2_ofP2^s%?Uc7cnnm3vxPaYdQvacUtt$ozcOwlU%P*MC1_zL#Wk{ z<&R`&FSHN;4+GtDg$Y_wM#5lEOKvOOV3FQ!zg3_KNX<8C-YWFE0Io-BM6M+v_4YJc0P& zc*pHb)tl^c%bkBaNF9b=T|FJ*`U|?|^}1xBzB-_OR!eDoVdRNRB4-3@f0H!$Baz3- zj|Sbc>D1)7DWQV3!NW6947J$5MNW&5ZPWmo+h~MY2bpuavUEQjM&n&?Z&TT}N?BL) zR91bgtY$-ai4XJKA-VXxRwBY-(9N%tUO*9JXlpi5%}CTJ^N5p!5D|BDHjt4qcI_gk zl9A!}MYcLx@WMe-JZrf<-ddLFXwx8b`j6%e;DlpmYISqzN@3@re|4|)bGPxgAmOuk z3EB;_l5-fe1H-hS{ZEMotMJwi@We|x-rj^eG?)L()CJVLhqT?pTkcV)F(f8F1820M zF$+pVm>I7*PEe9?i2ia!XIddOykQ95F*~+~ZVDx zk1LNeQvhRcN1!v zOg>5G$r_qlcjoH|DMN?yc+RYfcJb|z!=nqBdtosADtx_yTd-{*MPOIgFNdpO^hJAn z|2%t}ZTo+P%STVIonGfirlE$cqW0q$O)}qjtSq4)NlHq12rP*vlG%9{7DP?|>3cM)V@uor>0BZSo6B}@m5^N{3pFuV zxsky05)6f|IxfVp6CL4smUYN=8Xg4VJy6B$+(KexEmHxMSic5k-s()<12jm*b47q6 zo>aM%tWw(}h8?v%`{@ZP15~m1M(5tdpeSti`x-ZNrr{^UaL3fKb3<~ zt)KaN1v@mf4Z_mgg;Qcj#_GdXQL1^*ozU}&PrS&dRh><_5N6UX#JMz3M#u`diAWou z-aRU#XdF-x;xoA;d;xNvN=5zvl+x}u6Z2eajs-$10Y?((9A|yz7Fx!?~ z!X8Ox7gl17Xz5vRPT~w((yC*oLY4)31yS3$Vf}hib+!?L{@V-kS<1#**CEeTHAQv$ zv0@)p*J#jW@H{mbO3_=87rwF9x^Vq}vG*20ac%3mXhV=BK(OG@Bxum!F2NmwyIUG} zcXxujySqD$1`X~SAh^5T-fQi%);jy`TX&yZ_r2Qpom6#=nq58T=pp|c;~&3#-$>%@ z%QJ$+(IjKxg?f1)fX>b( zAH*LU|M`bBB?EP|N~2HDGoV%-h7I5vQ(rp32b~;-#>9QvpbeWuxNMt|I?LQ>@wS@} zYVDhZ3_YN}Zy8>Qh_e^u?2|e<=^~eqhZ!dV7W|ajhclIIPsmqq!eC=y9PfFdj(A2- zh_kf9;K~@5)YsgQ5gO!vE_X5`#&xz#vXwwpZdiMl&z6b(44^kE)n^>TpDPog8VF>; zUYMzh3RJs7g8ngQV&P^AZ`_t^RF`n%@B<#f-n1N9znua9S<8{df#;i z`jBn!GXOqS>(%dTnkMPE@tKLmoFO{JkFH=d1dv$*I*KXTq@M&Ompxj|oUkiQCrDyW za{`zgRry#tao9RskI{f9w|V)swl-Q$<|Q$;=ouGc4;EV9yUS=Jk#2$A4>#3BM9!+1 zz|Mgr)-U!+9O>D~8OZsi=7OnNb`#?LOuLzg@6@I3)2?J2G~^9c+#Lu7yw`7Xs0z@V z#hdo@Y>{19)!x5D)g7ydGSKsD#qv+PG!buB<{;n2PQGH{c(=f~DSBhb`zDvYv}|NV zUR*KoE7zD#OltOBgJ)>&yFKiEk^D8{>@26XEel#!d;ZHyR$3*3p3P#l)xIRp+IO?% zW#;bsGyMeS51yXti1o;MH$MyG$0tXNzF3lwT-QI6A0&3fv!sM<#c$Aq#blH*>?P~W zL!3!XL0fT)qd$i1X`t6$WNio?Dcc&Sjn9V~f7h>+TaR^0>_X9?TSI0UfoTew@A>*VX-e=zxN_?jH815?NOg-M zu+MVo9xWEc4nw9^gE+LT*>W;hRrL`kvSI~i$jj&VIkBRnT?&TGuos}l`>rCBtt)S~ zD%@!}gKOW`huQ%x6uqk(J##nOX)PDGzt^}L`V`W|+4TVnnV6!N(E8DBIi- z)UFyxU8c!=FhCf*lH9!G7$+A!BGk|EG29>6?DNF^#k%*(UOfev#f!v~mTGD?t}3R2 ztSX8y=Y;qulcqvIAH=8j!!UPCYR6t)v0TF8e{!MbW!dJUS)6jJ)0d7%le}G^0k9Tv>%|y~?v0D+ax_=6wPGA;W0SD8v3O)#~H+o@nq1NGEs}*?$cfdWQB6&ue3e)m>Y^ST)v2c;qy1N0{JGM`6S%v?2!ViS+08Bh&3RZFIFM=^h=e~B7PjILUP)C zGKqfbP68Vn8)x{yoBDG*ThVvaj6Oyo2gr=_+d;%W+0E%~mk((YcuWkUw}=s@e&HTz zr$|nC!z{Khtze`>99&Agk z{-bY98`SXaK+rz{FYrrWLp)#A>^XN=Hbdo7`!9FH(ijcKk|2N~CQKfyV6OeIDYA(LKh*Fa!Jxtlp?28#%Wdw;?8YpBkg%!uO7!vR|u<+5hB$~ zHd2z)dcS%lOzgxRi{TyiO{dxxxy{k)QK`Ge#Nw?6VHP>sC^jp$L z+3)Ok%_4-F1rY@YObY^I%itmbhChZ*=ClV_Q#`6u@4 zy1E~KRyBy9vlDV}w($0)MXaG!Q_fC|h;9<&5hKdSV_ip@rnpwBENmu;m-PE(v(E)y z^*-ux%j^baC!0%1(Y&dl2`0zNs9_LuBcl4m-SM+422_A@ zV0)v|F<13vyjlMaZ9c~yEsnB25+M@vIS^U+*2WH5nrQFnGX}of%t4?|`L*(Wi`NK|1msKEyr@0#3Ko zrW;(sKH;xEKblLvXO8U?uXcbQ-4r8yVfTtAc2=|i;#vaQ zLXZJ|Y&d6+flSS5H?X}f|_P!)G9FqiEs(3R0>SeaRY zkB9hO9T!aqTh0XC+DtHMU7$O~7i)Z6JB!fnLu61>42XFuuJK|7IwYRM36w?h2{=Pv zqhK+g6Pq@SZ1uuE_v<1I0BRePQ&pi+>cRMm_;dG!qJe_sXlil~Sb*h$KSh!$AET}z z7?@L9p-hUiwpakk1YRaLpTbZUC~x*HB>ff(?xN&idH>pN-ak-0m~1n^yhttAM0!Mj zxEcio<1C|fxlZoFuG=SCDe6R_b^=yzZdcvNHT1+(P9a}Gtw$|CH}^_6*bK*#)LguV zW@0dK19ebacy9Hl^bO9t=zeRzrV%otV@(@Ti*Q_6@_LbFf)E2l7B_T!pB&uo4Ig>` z`St0yHAgXTrR^eh?dfA?qp!J3tr0Oz`3EDSB_8`02qc)Q?^%-ArhH_8S9JokvXp4n zFP~~m4N2}pY!xQvfmS0x1nN_2gx8^R@p&{xCXkdKxkylvu#u5F1k4{uW@H?^ZS;b0 z^XAb*zo($5>J>t6Tu(m=d9)AjQZM#6TwNxs%i?GyEy-S`hr?*&ihF4SwMk4s=n zQ~|QJPYA+Oft2*54i4T6)wX6rvY)nt4kd$iWqDbBQy_Iy@$u}1xXeK@Svv>{c(X4X zF7wB83_+Q#ctsF8MiW_*P+5|1hNDPnwO{m*oKLnuQdMIc)03^3 zR60d|o-+dNN7O5|iBxgY&pjp#d_cU=EuT;$qK|cTwz9M5b9+AdNrIBw^v9_J$2}&d zWndb4xjMAieH{G=*Z}>~o<70eWa;-{t8rnmepl49$ea|$2#S;vSRwr;TnD(I5819^ zs46CFZ^~^`H4b+)LXUiPuvQl=rq6+sr?ToHt#aetGxd?L@}ssR65+yk0Q)#3wnIw> zG0tn8R-9IV7kfTx>fwIYB0jPhZ|ZOkNb;sWK(L;L^|zpYbX7qZhX~R7kT}at12Mn4 z3Gc}@K(*yX&QAw|MNP!J#i$d>*lF>()UpRBq}Rmy;TB|dBV}f=nlL;O02)mE=wF!T zizK*aRzeW39jUQpYI10uJ>0rsAyx64>Fov6iqLviTI!_>33G?JNd+ zCn;E4(~Z>y*Y8V67{ukM1f6ipF9VC_;7e%barqwBGzNW%Uxf3QqVT@gq z2ZJIOB&4XVFkndg!*PF+lhnMEwnp%1nWf!l&xnVeAl!wWqDz@lHij;V)FNk7!g^}dwkoshbDc;D~+hr4JjoX5=j=C#C7MFtc!-CfAS#9*- z+hz@Q=a&4wyU+{jwAA~Yns%G+H>iwy-HAqKDlrj~Is=-M>z1zDdU8okIVNq)T6QgW$M?%aG@&Vpk#3yzfHjUfb!|&zL_W5o z;}!_CRB3H0y*YXU3$AlnjxI1zDS)Xjc3{@`ZB0!Q(HPN z>TUBb?4_9Q{b#+PQFcBy_?3VyiG0g1dH8<7@Z|D{dYJ3Z4P98)SDDx#E{ZQE%M~Lx= z#&E`Y4@Y0JXkRBGA#k8%?>FlB`n>OG{jFKFM0_voRsDopk&aN(!2$&eqD-ifnLI(#Sx-8nvq9kxDAB!me?Higj~oqhW@HwD;VQrwdn*g2R6OXa<7Pfhxjv%A|1 zzyp0M3Sn7|kC7p(eb6IAbDGuB$73o&t|=*x5!;BNF(|C&xnJpOQ0LF>^hYOlYAC^L6mg(z3~`C7Mj zuFbyrx@OV7jgVx0(85Vcr=iyJCMwd*OI~3JU)olxD;l#^ob80mb1&C>Nq!)?uH!bV7HlP6+2hr?=!xawbCgR*Pu zHx2FV>1jepct1vln$RO+ts1Fb=R{} zm`!TGNluA=tjAPI$|(O}n71gDvvA=&d_}w`-|}X!i)P`qlNt$5Ye)t5qo}acfj)6-vNsXw$B2# z-;8V*UNEb^^Mxp5?uB{U9g>eGzu`$^-6RfeTB)LZnB_*R-5}4R5zAev&q6p{Y zV(e8LS@oXLa>D6#{xEQYFuH>Ae&`!~F%)2Dr=6`EVYO5a{_6>bUM5%W22EnLTaNmh zq506L1a`yHlx&IiTVZlUY0}4(Dof0f9E?nE7Uo*F{z%=)^|-U1JrG#XyNbS?GeW;N z=nGGiZ^pe1(0p;*ebfoVNUP7JXbZgWr)O0CQssP5bWq)xfvnN-dunh=B*;; z{+ad&b=)#(O|n;@*|@8z)qnFD@G@Sr)6&%7^9(OCl)CbnDvVnb%2#v#VGNAsqIxwZ zQ&h$`cUE1bb%M?ZD<9&JO@Q{*4E!SyRG%o_hFM}@!v~|i)+}vOa~dv1jZ$G&Fk^Zj z!JGXGLU)IyIZ#h&M)h)`o-0kC3B4PKPYT+F6njB(bh)ZtFj#XoL16Wmt}#Az;X&cJ zRhiZNXN!b~0=QM6*VbVrbgE%XlCy^oJz|5mOu6dKULaiaeQ;)Rw=db=bqvzTdF6FCSlQS>`B)n9iXOYx1_|8yP0fY_gBJ^^YI?i_~Jd z`}{0wLtLR41;qkTSU)E;3C$Q1N}qzfJw%X^ftwN1x=Jx73>YrqjeQ7V?rJ3hCdBvR zHd-r)G!!PP8+kbEH3Y}%I;TKO`a@$n{fo$~2ue5FbR+B?bE@=f$q7rnTRvAdYhCzt zEqI=5sU5RJ{}ErXgiu0Zakd?EI5;<1l~UgtrgrEv;@6W+gaz}lqK>LrrSo#Gy>JVT zjb&?*Itgpxy23l797dkPOD{x~97rO(SQAIIQ_RHYzems#vHTf9D?R$Z9YNcw_(SG; z6&OtncDs>*I?|5fRo{HSE4GpP@|5No;8nA_M!-IRE@WK<0-WD%@7^lv&j43rwkT&R zJf(XSSh%_U1Nq}OQ5f0cNU8>r_-Krb4BLF@`(2@+?#klml@v5=vi;|W$P~o;loVb|^7}BX5i(i7 zu2E2%ENSBYSuTRKZe8rHIX7>UcQm95VHDZ>vdm4Y5zkr0-IvH`+i5v}HPg31#RY(> zBZX6rynryxdWv2%W1+sTR^S}1tsah@gakuf)X7+=i)0RAm@{lSR<8odax<3ogaSC9 z0oe5?vl^Iz2qw#mtNz~GtOt$w7|`oKLPOP+qF-{DTJdRC<2ILOPDJ|_?~MBiMbR^d zS|TOt7N1#l+JNdzB~3|Y<3N}Og7Ui|qNhVf#~l*{FDn@aNdq`HL+t{mKPqi& zt`AApDqjZgtrS^>h29KKb-7A#SHzEIu4V731+bk&q)ToxN51$FG`rld4oYtc=?7-K zTnl%l>uIzmddw7KWROiV|L8lji%_|q=*D8FV*eIi0=tMP%y+u6Q>YcFuI_GbmQg;V z(3aYDK5#mnlWIpbB26P~qSZV+hRzHmkGS3RdgvTJJtMC{q~ASWQy z{jP7mJaY=&ACY`}?xg>woAMhF3)D@=!Z5xq6zR-_zIAD=-QZMyOK-c^r%D;hv4M z^F`pB$f3!TOaS!X9jEZ6q3Ei|QAr69{8b=n03`&qi8nBx!l8`EZ7%^0wqH5c`cT`y zG`sVZc%5NEB;rcoBo?$K8aCW8G{1Wi3GvbQ^arp3+fRRJ@CskQ%(X-lW0@4lPvv=o zwY|%w`0iNkflI(u8a|Tu#mTugO_w}xL@N^X5~7{U`xqXQ_DNLa_j%;u3QjbyWJ!gR zZIsxfu+xNiCcjQJ8m0G2h|?+6lewY?7&j24y~iLxX7z|H+MD+`CjhAXMQ}GZDl4R! zea_cG5f(O3>*%LKv|fx~%8M|FwJ8!q)e#E7V>!6#i*0E?HzJHMm-B_ov_p2#>`oC= zCE-k-lHQ&MY>d*PeuHWvQCm=#ioYf^yleePq_|vg}Jk#C!d-=O7&fvx3=-7NxX1HIGI`Ta2Mr8 zW?-O&y5mJWA?ATvV5#arFlp4PJ>)^_hu&Rt^|V3dgG7Ny+Vye^&M$M)^G9U*CX4Tw zkuJ;AC__TxnR3+ek>byka4v$xU5W}bAqh@)S9-gQuVChz?~92T%t_)tT&=f?bhJ(4 zE-}R|OdXxEwikZ6B6Q(+t*zGoNleZXcl?Vra%u1@FpQpr>JQ_j0|LhsmSysw^|E$6 zXg1JdaT7{Qh3TAjiome_PleapN{i+V7KKD5p|m+Vlpm6OL9&#lfCB*t<_Z_)U@D?2 zY7$A4L6o_Yb6A}Mu8E!ZR5VT+H-TYoa%O(@&n5$rJ7x&ByHI7LBNFKvs?9>EY`kGQ z&T%mGm-@!(xB-hAqZ-N;uL82kx!w0~O=HC5Wk04gm!1vTI~S=$9TM?m4uUj+$3|L) zZ>8NBM9m~#JPoW@HF~igS{Kd+1XhfJE%2|f(NBCLs%CzmSI@A^yWEBs8Hb53P};n<0*f z2#QKh47Mcrs2~D1o~O#XRl03!Id*uVGC0;|WH7cH#IU5{s4|ck5h<(VI|lus8WI7C z*a$1j3K=a63pOvfG-54_*A4ThmH^Hb=w$)^H*EyC2t~<&Q~v1MJP?;$HZk!!F;Jkg zS zUx&;a-MotR4j{)B?XZZ;8pzt*#jZg{e1TCfvRcWRq<1Fhn&gM6nCG}a{B20F1)Xuk z!3ufj22T|9f_BKudT|qpSLA^?nV3tIVidCdwZcyCU(NS59thti9$KZ!V$^h?zaIP^ zeYTv9^JOe@aUj+H1Mgiq4(dJLTu77f&q*7*&B=m{PNz&CDbZv5HCK3g`6427Eg^&Q z>}XGvbCM_^iShj%7@vcsLhQ3vd7oZMvyawPGksF^yWsdVaybw~2$z_kpN=Pp=2)Xo zBp8C>WMn)&ps)x;S~qvo&NweIz`WbBx5D=TwmeCE?1?9G5xGhjz`rN?UVgo{PH zNproHU*MsO>>~d~9WHL0MHo1psu)!*Ur^C46~YX5>=BWEEo%Py>ob5(tc}9!P}sll z(X{n;q1Y3(?Ebs$nnv|Q@ZBm7bTxx)x;oun)HcEy`M#S0FY+L&rEUZPSMRmfo%>kq zlRA~;We#|YiV#OoqjT?#5`(umi@Jw5k!>6xQDEX}cZaHUm{RKCf}JAN2tOi*{nG*qyTkY+_u zq<0CIgXe(iSJjbY`<)lwfD2pgTDOGFD$_`1Ja63s8RVfZGpqaqvOZ;UU$xS9U%7A? zmv4DnaK^!yx7`>0b_uFNiGyhp)y;2W5;%N`CBE9=m~l)PCgD&N8YDq*)qy0Oq;x7` zIz!&oA9X44H^Sj-&uJ^hKdRP04sd)qhR=x1EdjJfzap)lczTnyGuI|n4@QbHV+j}+ z@_zq{gp@?c84KF(EvlnzMH1B1g7NKnmjVlkLK6dVfhlS4A3XN;D%A z{gJpM078@+N|tCnY)z77!nigqmUOsAw2C4=`3!JwFo&Kruv3U!NO40s=FVmkGRex_kCrMGFq4wM}B} zf|~=}-=#Kih!ek03)QtISx6>nHAF@Yk)qvj8RR;lPn{!R!R0eNn-X6?D31OhJZ>Ii zNNpEY(p4yjPd8-52`0LGWx*;;G*XPa@V#)C>$bR9l_oL{e_Jc4wmxQ)z`WnCUm;S~ z$VlaoyD=F4CaV0#$S8#(o3;An4I%WEXy}`)*DqdLy6WtoTTd*U$Ly>%?$l~nz~h~# zXMr2wQ(9+YTHnTFU(dJm+XURPf@4LgypXO3Z#5ND4CW|JLM4RLr2U?cyAf~C z-Li;|z?+rJ0E$g#FlP>Nk*Bf1nGEpv^Y?@;YaM}+qCNo!`t{h?lCHcV0w0SP;cqh! zI8z0pQ-Koj??v!?I2nDVk$^Db%#A+%_|{-A?=o8gkEkLZq>rOqH(tfGXo8M*OKWUM zu#NV>EW^qz2zOb$p|?A4u5+@LH1;9GjbxCuT+sG*w6owy4zYzkl~<(MkZv{uMxkGl zz1%wX)|hd5MwtINvZuRL<5lEvbI;F3+o%nyE@zU^q7&3m$_d~CmaSk31^$82?O89P1qWLuYTm~$`fpD_z+nxWLKNcuUy?>9TQcUp*x-LoLT-k%xIfY$)PmcqZ7Bl!Dmb+cZ8S(on|zjKTK-(LQm_=`mN zPvWon|83$g6elz~u1Mca;>Q=mXApI7f0;uY`2dqtUt^og+rebAtP8$(Y-}cBbGFxm zEt-LWX+xZt7{aH}6ITE9Gypz|L5Qs~uPyynS@8blo{Eb3U@m|6Q4}R8Hp`^TXfX-6 zlkWN`n<$uG&lUwF>^Q#PJnQ3cz#RH|`jTAL8i9Yp&>L4NMm*?bofv%006aEUg;*Eo z^G&T+wS9TVCkmNa)uZO?=oJ1yfA}=p*Z-3p#s-N11rsbtw z+4!9{@&s9m>j-WwX;WAK@a}-BJ1>`g4vEm(ZnGr?6?185_$o1T$&2}kP7$qzS`&5u zR1x89F{v@icpUqw`XBA6R06?#I8gNWuxE8XA%GpIRMQ}Wrfv_>-)jb)N?DDrIiH`{4 ze``+8MftjgNcHfZr*%$qguCLFwwV)h`vrma4uO^szH|qSNN3U#W4a&N&Uj1YQf$}v=+xq_5dGW_`H`tTM_rH}ywP{P{J@xZ> zGDnaKZy{Yqe+C>)6kHP_Y}(oGRZzMbbaG#V?>a^~x!hf*tR%tabZ%;Q*5G1Dc*K;O z2e3})a?GopFqiqaQppoNtr2sPsR)8SU?5@-6mmqc;f^>D4##(75hC1B?~zSdY0}+_+{H)HQAp*6##NtmjHK zPudBh>@hihK4n)A_PjQhzYpi0;#S;}F>``%zwuOTZ+v({YhokQ+wQ8;2SWyKg1rfu z+vWK0J#~s64!hEGKHNJtyc05|f{5EQ;2I?F8bvT=ith zgqnn!aXJ@;NoG7j{8lWb+Rw}`+Q_W6kIs^Pw9o3w3pNs6j-%DxG|I~e#ELzPj^(!Xg6?Lr2cqz&^22PSiT$6qZsux<-z+eMeO+*kk(zGF(StusBJRe&BE=MGceOURW=-Zvz!=MB$vX>Bv zt@uJf;vVJPEIbFM@F!Q+1y+rnx?K1#0*$r}k}XT|od@4CqWHjc!5Q9&RZKw=oH3`U zFCEdNe*Z;A8{4_#+lBjj~&1nI>l3h(zBOe zQj~N=l0@d3`st^sK!eJ6of$6xCW4WZFsgu$Zf&9x!3)sOpP3=)*oo9Hh;+V?_0MuF zj;v^Bf1fxt{#$! zbL6O^ItU5(prE=0BW-3~LOH#?Q*zK=W9Zu~twIc}{^Dd>jniIAl7WF0=F=|JiWdz1 z%5GN(jZo72E?iw5dfPv&NNCZ7WW*_oG^pc+ULaG)brH*9zQ%wHz!ughMl&)JN_cfC z!UR#Dt&qp@y`UO#i_LF&kQA9~Q;2F>G@>6P7YHcGi?{HyIII{0-ahdBjAO~x%GMB} z7G6Nc_sr%`n&0|Pdv3@$Q>@NYUCbYsR-J&d)F%(UiTXjJpmd$o#MwZw&Zx8oiyD9n z4`_NwGwppvLJ}<~C`SD9Aj~gF zGBqqf$-vCAAv!QZW}vEH8>GfHx`rj3D$Gg9P?^FT8s@AvCdf_YEX|&jLG5OvvSDN# zfoF>q|H21qDw2mXtKg00KxsykI8XqtBw>@iN{HrC74^%Sx_Y& z?G%-8l9uZPbUMJQgwh@7;$z^}+~lF8Q&ZG9oGKlG4fZL>C_! zy;>%i4U7vxdO~DcdwL|U`J}9#4;zTVVvLN$;4dvK$pSPiLm-m+MUeR`nqYo8F>#4p zNS4wr$`v4&KKlya=>dMdVbDN3KqV^SC5}D>8fW$W9drpYPdS1YV4Su_apLWzC2@EG zWs(BPkrchzLRdooyQP32vw+#4^_&@vIzRj&B>I|h8 zX;5fHm?O+&ujJz2SXkNVFJNWOKx=c&kXd`onFFu^-ay&vj<+g77@ozVa6W`Vh_4|y zl96vnoI{mMkCYu;`I6f>N~v8!GbC5-En9Ht5}Nn-?Z?RKC_ZL}O~==(uF)0(YSC>V zDLyZo7151r?b8O=e<+ywXv%!c!V%=+dRvzR3P=*hE#z0o!y#qEgpIhCbR-a<2?5VQ z8UWSI!KLPmHuLb~R#~%%LKR7q+CxTm=)E!8&ww<;pQ2NEVU3GFmzMdX#i_-<^ip;X z3`c?xKwpdOaa!5>BfRhdzWpYxq;u(85yR5`|{sgF&GIJa4rU!RDdp#b+Tz&R(VB|GZ zR1#`@*O(XNUu~f_8V0Z^Cw5IEH622e!O}%3*jYc$MMV~a^jKbN>|55Ji-ekrN4ysl z=iBs70)BTus*fL};6sDpnuw8B20@P3yE;N%R{%KgPTSR*B&=&kB8Um4$6&H zKts%rPXO3&|0TtLRtxY#b6@Z$01)*5gAdCGB>PQ0uP8hiNS?Om9oExXfw8sB&CoMI z-*clD07dln;1dAmU;GGAiw^l!0?P!bhlh}!0jp4lK#t(G8=2j=joSB8%^dAAUpvqP zjMO1W0uXG1&iXai)m&#Z(R!>t-nVIHkp-rydcPO}1rRtb=3QtQz9w zLi}N#&SqJF)*l$VvWlS(4XM!gZ$;pg1w|tE3)L_^L>&NgS!p73rbQ@#1bU{;zp43h z7oQc;n%09*^cvk}6GkwNZw3O3^9*38jJc7Tzs@vw{qXpS3a{oMvXdorR+{t~0RFw| z!0lou9{RET+c34c8Pb03Ntqb;?+$-z%ax(!VIR z85<&sX3}bQO)OscZFrFcPu$2aLLwNGkP(g1a3d>Q*s zS=*ZqHagG1zTl!dD8Z2M%K=ycc-J zfl|D1A9e%%mNQ)7W~(Eo{xWyIlV-gKqogC32RjEIw~Lb}d%q1!c!;AW2vIMLi+X3o4})D38!}6Fu0FNG?vm;R33P|%B&P4 z6&CG4Zpv7RM0X2dW-%sSZi`xEHUI5B}k*(_g)NOxZz4{kv$p5Wx z`#j6vptOz2-+X3DRWB|}Ts)K@K+jS^aq?&rLwG_~7L!+m6BS)@K-+z~i_6r0C+~9v z$3|H8%eweF3h~ZR2;&&hPu`DjjWz9#M^E%TnXqEjK9+IVZadLu)Dwt^DcQnj7lDc$ zVc~YN--VbDC8r#ng*zM`d^FYSet5fd#MNEdD!P*)X|;eT5RLtj^ydPHOSy#8?6Hko ztBr-FilxQE6;_*1E|A2v?gB4|yZhP=J{WlD4)=4+s%;f|qf-=F>?BgJa@A_$VfOPW zMcbY-B;BsleFyvu*qv^6iaMGdw+OpNSU&kn4G5uti;S07R7lrIA4lww(Olw&fU|Uj z&L_`+J9~@t|Jh%0lXr86fZf3o=b8dN>3KH&b;Iy0ZoE%v>IHu`32H;6MVqggap|LD zXJh4mY8-iyM%AG$)O7{~^`$^*_b)g8rJ1zUFDBfG=So?Zm^zrJxWs<-=hyuFlDFSp z?qBcEul3;9di`tv`H#*1*Lv`4J@~aA{FC)SRj5W&?dWWXyp}zzePH*c${eM*Jt_j) z6nf7-avj`8ihT{6FOl3^K?4XR;!E)nl=y91%<*V(yvQ(qGQwa$fNkSP7EsC`el(Tt?PFmEumL4Qn zh%=E-`hbfO32aUMb&2y$7I=~74V|Gm1}XQ4*!t`srh#`6bZ6tDAo~HBg;}Zy0F?I> z-5)2%|Mq9Jx^WM!52MYyt7&UJPhUQMsMS`p+ZjI5156PngfNyjJMK8q^ClyFqrsX< zV?XD@{(29;nRrk444@HDbMIZU-7$jS>cKLD7~mBS{}|PO+Y5#4Ww*XV#?ry#FU{{h zvOPH@yXfOB(gt6sS0pay+b3}!VhO_T5ROjDNb0*9e#g5yy;#wF0CsFrOu-zDKgJGZ zcNlUf|d zeQ4v(=rHn75bYcQTCiy0k3s#ny(kiDz71b6R*hNtZud#c`r(l2qK~y+6a8m{Hhqia zK7;E5Z4kmJZ(4qOV&BzJHtXT$Zfna8w`ZSx;j87Wdx|JtKwn4h=W;dxjOXXz-?5}1 zC0x(QWZubBSNX8no0E~6Cs%`~mG*5Co-U9zZiS*p!o;+~k&Do`JKS`!Yt{(*!Q(SC zhoh@~u%-Dv$4c#j?KS4q#N<=3R&Zee#HS^@m|9yJ>ghPGbaiweaCNxoYPEv3f#vaA zbR5!ee>CpKX!Z<9pXY6;XbKE4&p2Nszq-7pf8RzqtktWRx~igJ@4jE^H0EP_XXtLb&1&UH<$G&>r0>UcUdW`>cN( z33$H0Jcd*6IcAozIJ*R%DD6E^q8PdK7g1hm?hm^GCh2+%$hsC2?%yt5s(1X>eYoF7 z;wR6aPk~v+ZVzMbUG5WI6cgJ*dfD463-|74RZcTrOj3WGfBn&3;L(#ay~OeGZ$i-d zn>-M}|M`^DUnW$%2CGV?fOQ6gK-*;>$hhY6OAda?!7n-ZwI2Lh4}R?nzxIV+`oS;# z;Fq2VQT%`DiPyj6;Flcy?fCpl4*vb+pza2eO&R??3cwSDBw%vdpN_~@XplXZNVzsd~J006>i`O znP`HT6hu1wez(Z?y9GbVHP_oy_BVqhkq)N188I?1n?C)s09wKjSyHk*;43lQurXa! zNG9CWJE1%1X>*GQR$irkbOoD)WIS{wZX6Gp-!oWVU|kuQj!Uerdu6Y^Z6e^OJZ zb;MayZmN2aA$kT#L0-3}d;C_U(3Ll0SaK?5Ir0vXMBc${qD^_sZ+|FIbBW;w&0AYA z3`P%3WHXSYgJBf?{{G%0)D4ZO5cu*JbIg^=#n#LT;)=;);OkeG<<8{hkr)LKEaZ`d z(&Y0mJ=oI_ton~cURjX0@?m}g=syGg(+Fv8y;qTEeqsT8;pEnc{dn2(4v=4;VWy<3cP3mcp-^UE#}vGyVOW%U_1@~F z#6CAm`aP9^MS3;b2I8$|$U7l9FO}D|gk-se>Gsxy$;}jhj z=#TsdQF=|THyc?w)cZ|;r=AcrRhKVLYK;$~OO!{A5CV4#J_F>=QVnCo&*uc)W!0fj z;Nj(_s&P5^n2RZcb4jApqq;3bm@C=#77)= zZ};D`qOZIQeFyl5cMtgA^yiNp-nEpJQ$?zp*2Zxp)n&N_X8A<&Jh2=FTc-y_6lxlQ z_M+zEVtF80oZMS$K|z*fmC<#9 zwC)b)1`h*aLYDL_z*dAK|EWFhIsO!$7gF$bD`LvoLL$zzfn8dd=5f)|#th!8?uMRP z{>{ooeS2|W{PI>C64%$W)}%)nPiwGi%<9+r>-uxA%U+Gu(AUdNknG|B#tz?Je~Tpu z${84EwR@f!!S4w<^Y_vcVG1aIRp#wFFE)MM!TU=2QEofZ7-D^|Fuu=d*>32XDYyLd z*{+T51`8L@^|0f0vt<8nPxx`%-%4QSnR1;O!pb-4iniMuahJRi;26XYqBVBS>o{WR zTlOzCg`4k3g~=RNTWp%P>-kCSr9?7!I>ZRymT}~9oV*IJ*3|Lm(82%NHUDZ8tXB_& zpMEc0d80I$Bq9_U^}H-SX44U#?ssE}1LOru%kNHv*IG2Nk8mF_{PYvKP#yZZI;P~G=KdMW;O zUf-Wczm>?Jov9Y;VUG>Tl~*1fNV$JW$1mylB^|%kj$doXubt)B&hks|_zxxKm)-$U z=znRYzqHa{XO=$?lfTX^zfQEjPPBiTPyVy%<$q=GDA57%BAaIaLo{!T=0EqTyhGx< zb;{w`FYs{mMZe8#&HnBVn#^GA3P!HjAsE0)` zj2g4$_YqI048_-xTN5;bn)Y|>702j%S+Wn!LWMpQm8baWrdPMS2E03yV1ve)?>#oo z6^lE05HREn8Kmg7e}V+WVD)zJ?#zQ{w{dK#nfQcoB?y$G)35XEJ@&R}Y8Azd85H=;fjNT(_hL5#W+xjQO~EwE(>P#u=Cn@MsjZJ#kt>&aSQmU@cG&}r^HitK3*8+_Tp z>tl*Nhh3?d^2mGW6OOR@V~qas0xy{f&UyM;bDsx!d-uyEEi2O(#PgD)mKis~k%@7k zB*1@Q9sR$Q(clvkQc1zK(myW$44|;wFnuy9`5)B11yEeuwl>-X2oQn?hbF-xNN{T) zxI=JvcL?qf2=1;81b26*(E!2S-KBBQWAAvV%_KbnzDl7y~Z34jYxtouvPh(SUNT(~2Z|@0PrhM`&Mt?98xt<()g#jScNzYlp<3SFW}d%XwB2 zUsJsYgrYnKe-C^*R`A#kKCRpmrsFuZh+Cx-^9mUNkox@EmbrAfr4i z-j=nb=-S`(e3+ z#VBe0c&VJw@|}{h=5v>A9SmGJ?e@{u4tZjiNnKt6lwA(K9nDHPg?qW3KGAT?|3+)W zslNXgWsJ0r2!xtHtCZK>PU#NJbcX4O?-X^=Vd~1f_b{&Nj^ z1$|$MycGF*X}wm@8E@k$l01r;r;2J?_(OTVw~`;W>{iS1%oH-HaJ zNYV92p%rzN=)=B|@-#U-gi7$?`9JMbrCL`+EOogy+;e@)AFPtiM2K z!ZCQE&00uVPBIBaX6U`4IyH@u-N%_w4+j>7F^I_zh`y;`Vpj=BYBdCZ2V4(qAa85b z3p2e(Q%7Q1m6V$&W!gCB5Y4bXS=8XCq0F4%*LF;3soZ_OS;ei)TczChY1cQ~2|L5hCwps*vwh549@ztq2~G1r5iZmQm=-)Y!E(=Mw??)xb?X}bxeG~gWEK$CM zbhEWSq|cYs-_M?uok&!yZ<f-YY{8PcF_hXSQ@Olch)KC`+xMA=m6QZ9mpP3Iro#o!`*PM+ z(60a@oaIvO%Y1hQUdK!;{vGNkaR)=PM(ZwmwJz_q<0J@$_iKOV?ZtOA%P18pZ#>8_ z=TWJ^a9J9soCXtyP}nm)E@D$@e&t(DeMN&x7D8BgdzsJmWg1v(p@>sTEB=k%ES4(j z)n;iJ_Le4O=}vz^m;Pmh>G zj<*x8dA*J6xz&)jQiUvVfd5B(jNdV~nxhamfo;iLj9Dn`zHS)D%J%Nv*R_O4qzOSg z4I--{vh^oe#8<|i5~i$AEKi|v^$Lj99{+1<@&CLYR@q5Lflai|dG0Ef`jU^I_Jdja z>+2&{3;XS!m$>^*xK(?I8Ll)jPWsJeW~to*5YoBA7&TD+9LLNeeB;HWIi`UjHc zA9nno-})c*Ic+5X_6*#D_#XlMzZUFa|NFCa<QynFara?{!;t(0a7>d94@pw*&60i()&d!!U?}$q z^3AW+lj<8WomQTsxmh;{&{MUVzZY5dHUHi~%-}AvH8X8_9%6i8&5o)`TSxdgacG?& zHCE%hpI-^(SY`AvmBU~?o_T$==AZ<6-U^5^R=4}-lm~|Mf(Fv)i2Fk*-XvdV8r0=ctlE2IMM3 z-tj%5@LH=SdAQv-faL8F>jFHMx8e zX`!7~ zM(yEq08d4Vq9#Z8 zu^h>9_;+DnY6;t-WOYpb1}L`I-F~ztCE0Kc4ndbtdG@P;x>^oV=hJo?%w842_EPLQShetI(=T*MTo} zwS7g;*RAs?KFWGkdDTR548ak`Oh%h2c*XdprJ%@ZMQi&1$F2( z`wwABW>T6eJz=pJ+=XlO$G=INUYN5Q3MKe&()xF4BVA5}RRD(a(s10=F2Con$}TAx z(x8x#RATGEmo=)vPvJozL0L0$NDJFr8dB%p6RhkvM_+VB{FhxNhzLZeo;V>G-sVpL zZ7e#x(^)v?XsvNqft0mZ*ED8`9>e)%bNOk z9{+z&c#6y4T?hg^d{hT{U~__s59Wva!v^%vvKRKDUtcw=etSzV&Gc?l)O?#oaNb&E zQUWRT_SZeT58NT+k;Khsk=&(!l?66zbAcZ;mh2NS?x{Gzae|6d87vlxNLHazfQVnH z+OI;as(OSVIat%yAMGtj`z>BNqwB@0Vv&qgDL6Hd9p7a|6c%5L+29oEW5d?T#Hl#A zQ+hwhR3813eqP6{PgR&%cvp%>Ueuf7W7dUpN27Y7)c{50o3--Vl!#^RGAFY}5@gi3 zKoZ1^|3JY`hZ!G3LBm*gL`q5u)cM;S{-JR(f#egH^>^;b^@}0`wm3=h8qzy*n#HJ^ zBwu=`Tf7OyVO;kP`TL{`d;+d6 zbm@u^x}D5?pDG3CpTcZ#KW}4ynctf}U{hJ;Vpxs5?5<#nJfwcbf4rO5i5?mlbA;bI zMorEwI#}U*BS)S%JXlDLXv7EokVrVis}zHQfx`nKX#Xz+|L-ypO<}3#h7-6dE5)7r zsiBuD32ZTP^z11~GR9Skf?6P}chVMLE_nuD7`6e^mAat|XY&)WN@$2TLrQ|MaB~6J z8I#zCv!+*4A$vhSB@-zn<$km76?MG5%43i7_vwNbSv@velw6Q<2NQ9&lljSHGKywr z@W1$Y#`Cpo%*OC{RhL~#Z~4>mvci}FfPV{8G+5HmGzYc3m|Xv+@4 zne24M$fS=n(foAv8{mzx9#ZmZ@yNRiBH?svUePX)+jX(jPO5e&)B?r=Fiev#%Vi+2v}b2JB&D)jar&9h#^P2HJaIa#7%)d?)ALf z{r-=`hrQL&mkyv$ofrMCVe63nr)$)g4dEFPH`ndOg|n+`aX{_`@*mY5Ye8#HS9Y@n zt06#04?=E;NDa|I%@D}h35_or<0H%PO%&|t<db01Q zBh!o1XJ;LM5&8$UK_%}FjzIQTPwDLLtKtS?ewYqJd?dbY_Ft^;J>1F)Oi`3;csm^O zGxD!@po?82#n&5J6i3mPxJVvkV@5`XdbVP(5Rt@OIXcU|x&m+pjz(nj4DuI+!CE8jy`G`p?C&~zfWF)<&h*E@-44XGLbiD1zImmF zf8J5yLWU5rS0iSv*D59s^hksErnLC7hoUH$i0ltg*J#E<_UI6SZu2` zWXt0>;I$9>BWnRs+!>A!4C-fFo>u>K)VRsT>B+7{DPJ-IzaH>cetx+yUGHjFsrk23 z0d29sSW>zu%z?ATTJKot-vF-+ZD`jr&S}MLfht7|(kqb)Q*$qFPd>fX z#SpusYJt+18H$qFG7;9M-vqgf`QbgzHvqFSHlZXvTqtll_pW@J&aT|5L{$Vhg!^-@ zcHEaSi^iva433aG=;f=TFHN1H&o4cx&m|1OglGYca(RB6wL_Q-oX(q?Uk~l}b{npt z4P6x|DZkj?b`Z{i4Y)t=^O9cA7X0=8KZp?O9H@f84mSs=*%`Sy-nTJr7^&&$ND&P@ zeO>fJU&Dz;y{b5KIIQ5{$5y3Yx2&FJ--HDH^k6-EuqT@{@@{+r#_LD*KDve z{SINuDhlGFfWMrC@|NG*WDbp-E&K+&x;dl@Xp6Zkja_}>N58~hhaBNQ3S9=r8%K5P zR;o55U=@frsH%e)eGmdy8BSony%Z*y^S3E)?|5@#SrD|wpT#x_IU^YZxscm=!e74L zibV5m_v?4N7E3$#?8uaAGWYQSvP?g>pSEn8Lt6_yG8g0cGPB5djB)sjbJEfhH!v z%jbzLXv#ffQXtE%D@(cDfq;Gbr~bILkg!eahoVV%Kk?;@odv>q0^5BsynRna^A;TU zt*vc5E)ORHRTo8(_ebZwEido+O+{`$^#IKoO zo%PQQL~Y)}llCBUVpuk%PcIS_SJHO8=DM_wz2#)K9 z7N@6fE*-tc;dp*V^V#I!+&9a_Fnc>&;D|TY==e|>JT7nMymWl|bGny)LXEx%zJk`kIa;Tp}_RMjD7+(Fgd z$P6>=8m0@rztHX4JihtUvOJM+-XwM(pmS=>a3Ey9WW{7^Y)7p&PHbu;@qOX1^7aMf zY5lSN03!Flf&_GkQx7q-@CF!(w7XqK<#JLk_3V3bLP;1pk~9^xE%&=u2rHOwO@v+X zlTM*%L{JE?6*I^g7Y2-HcM3ES>Jsrgn$vXN3^``$Y&gI2%jJw@=S_EUY@ZGR6gAYZ~=fGuFcK&qq^Ot>|Q4*9r{NH#C*tC zmVXNJhkIT)k2#F(!0!HyevBjD#zfOVe0<|+IKTl>Wte;XgU6pL8#;V>U_!*;I^BeyG?fo&Xnv%`Ch z%xbVURDlh^591C6yXXI;c%MAA-WH8si2leuPy`x{*|&1CZVe)W zUvo9aaxQ|GO-G}~OXF4T*Jq;)Q?2;;dK4Utsi8OdH`kr083w=|2UEW}}4ymX} zyO^3cvWJbs*`2y_a#~zJ{)^B*sl6h28%7iqlTDG5^88$hGFj;Kh){A)`1q#ggLU}| zFYdve=Rnmp04j@T9Ek^Be*6va(Z$%}RE23o$bIDtK#u<_c&!2ecw^1#|K}?EuM_8H zw4q-7S#6$+R=ms+_-&l9L)r8@@Y~M>{^w9pr&-y@)7MlN0&XHd?k5ZQO#LxQ^d22Z zOh~qi6e}8AB0Y~f9~-|N`vS-%GYbE7D2DP8Deh*V*sLTEbwKLOrs&u&p>kkHwib6o zhTj0x>6|Z>q$p+S(r8S|DOcdkVLyW0zL{T?2+766_oH$io@KN^( zq7=;fm&?y#B5doRReH#@_rz~NUtG30ylyL1+IFLR#e(kbgd+{$C4T(J-`f)?JD(@Y zbo08d&Cfo>Ko{3E628|5%XSqF#(H6PFNNUfwI7vT*tD%@<2q>1f*X^>u(d~2HJ!Fj zf3}h`AhvjAx_STLKFx1;|3>)B#%s7i51eie`U{8`6P=7M_V@k4J*eo1m{zgxS80t{Z#Vtx6kmEu zS=);-gl4FQTYq;xiI$i?{zGmI8U?tateJfD&KyiKzKTmS7`Q~0o$=$LoaZqSvD&s5 z)op^K@{m`T;vMVaOGomA$q*M}7H1AMv%QvMDkX*MDpxbI{37*b@kgNvSL!+nvt=^E z;OKz`1tu>pTGO}cB#d1Fk$?L&pF}Xas#il;FEFC7N`C_e3iT?YuR9uqOSo_7(C&t% z5d_-9KN^j%nkxKMnJzfznzABKnD>a3STL_2nPxX9Bek$(rek7$PPr0z_xgJ?AL-~raNrrMYf=ScRFa~!zY{7{_&t4#QsR)r& zn9F>%`tXD6$zmzJg5AkI$!?VV_k^+B7nbJYN`=Eq?8YoYAlJcRCPDT@Hzen;`VB~X zre^JjFGiQ*8;zBWPwI|tu&8s3zoIHO{;prwRjOCj8wyk6UjHRp(l<;2>Ulq6GrtEL zQ`+0lVWyj#k?~*ARriXt3!-Y6Rt%Zk+_#b8^qVlJ7%*`#{isNzGUu{FM&km^nIvJh+cmKs~QoYD+fZp=WS=l0umkr}O z$;sbaUH}O$Qa3(VY%@4D`On0eT3EpMh;mB=_|34d$IH>hJvV_(;_-3Bz|in(b=!Bn z4u_HR+aDY)#j-z|*SWaN)6u6Xv(RWsYfy~WxZ%?nmBuLPt(M8`iEKkRwdi4yOPkv4!rzMk=r-RkIvV;`Fk6{iz5l8a>0?q7jXpymUeLjK2m0}ky7XLo+iB;-Bq$XlEb zHckmXg8h>!9?GsvYyp0O{?dwLkA}Et#Xn<|d#Mx3&*d|1w$CmcflXN(~iC@SfHo6^LJ;e?vj7i5T8X zx_vuUJ>XY(HY5|{Tw%&BNM^Y5&beaTVP$) z%EfXGWAv=r2|aFACyNJl64&=II8Y6QpXq5(YMU7&7mUe5656k}J=rblF-rpPBsojG z4R{0(CYK975i|r&0BKi~BgdL+Z_I~Zm#qo^&p=K^&^*{FU361 zpgI$bt2YDQmN@13n@RnVt6>{Nyt%dLY#rg+IbAkt7eo=Xu3$Y*1A$n{^&lhv=( zN#lAk8yECHS>T_O@mh}<<$%yIN9k%9lH+*;%)(kkveZih3o`^|5}2a|Bepr-ohz8g zF#qTbrEZvU-O{uh9uQ^!IU;7}7)eoYj}}NW@8H4v$lVySyUf;V#TUo>y{Sas*5=ck z6BEJl$@PM$=llsqoXNml63$SZipn6d=2>&WWV7?@5tE;4sAuqHdv(4FzX45Bl*U@i zn#noCb3l^tei=B~0&6cG6DwIto@7Xbe=y}W!OEtHo;P#ZG}?0>7vodW#c#k}H(uz3 zi2Vb3%RBC+EW8MF5wth^L{jC9iOxXcUN?>2pV-j1l6fu^v-OFL9(@hB`L ze0#U@;u#468r-zh&>&M~GE!^oiNFLAY*p`6M$D__mXHRjYfsitjW9lvoL z!5~ukI&{Pw1F^0_Mpn~_fj~w=(ndkCjc0B39V!?yMvoLPgCwD&Ny=My6Jn zhUbw~5X~bYZWk8Tlpfx+W7PFEzDmSGogfs@3rM0BR>QzWfbkw5qnCA0wfRB=W?s2TGk)u;6X?eJ;VnFqG0@;zVpOWr56)uq8)L zhXCPIi9Jfi9uAEiAOvGY$4u&K{)uhY@%3768E&DI0pxkay z{-b{+1=ok2CWp>lm{WT6(F^RH3jXYOGB-++vFD>IJV+Rmxj`4^$yufHm)DUq+& zZRjf4GpmDXIO{fR+$aq>(F@8U3>XGd)^84C3NUYPg6)*8%9@5FnPH}4>hCaU$c0VR zFkTv;k9vSu_|;x=(N7WO?@=IpI%6 zR}CR<<*^Ryl<3H=YTx#0x(wQ5q29FHm^WlJz*O!fpKfHpSNs@Wy6RXXFF+pY<0OlDDGPv6>2loIZ%Qphjd+ zv%zlwnlOBzHRt{b{PUgYSmrcC}FEnJj-yIuY6D9nP;VpN5qa33m)U1g@s@9MCeTs=F&!=C!}563w!nkOGL zil}ojaFFKxoZtr=e!PJ!vX(K`94V#%iHJ$Vhucvx;!0?1)MXMTFfAmd8woUm3jGJoV4?UvzsC@L5lA{>iM2VLKPdbLsk@6v3rTC_uRpD>rdo@_shZkHDtBAX`anz*;3Ye@&? zD|l-*ALJxD^C=waYrr*XHs66Y#F{XYg#9B4Gchl2@~aJM#2L=brfW^>losr8jjY3* zs6Y>MAEQXpR}<~*J_{PDPxp;`n;}qHU3@gm)i$2&g)rzxUH>x-dhP>xWK7{8A_=d& z$$@wywT-wrVO}C@{F_>_TE;85UgaOJAS!ib@-@rGMUsP*>V;Eo`gm>|##6Ua{e9k* zqaCIlvEKdXtBaF8R-ve;%b|@rCYvuSZOU86fR#?d7I5D+Z>thZT+>H$8UCUcn4tUhdZjlrNyYbgzZH-)zCvf!E)kMA=q97+>n&+9>b9J>m+B#J1w-E ztAgJEx0V_O)x^BKsa~}s!!HW^p*tuYZY@VJjCXBeLJ=&%MlZzS|H!va8Lu=1n$J!Weq%vo8NnAW_>Rsm(O0)GU0naF+}U}gp({s!c#;Q(v1 z$nS9((jVK22lnvCd&&?w*bIIkai(IHhDAxyN#BGOiZYdD|LVi#E!|0AbtFwdT_Pva zVhM~eI;3b&4Z&X%*$UH7PACzlTo9BZC6CeXDvo8;vw&?;Z6@J2Ue51IsK&ADt-fMF z`@AZh7BJJCQiqL=@_lU>|1g8Zb0ykw!)eaPL1lnBkujDe%A~a^$lwYuL7vsNhbG`x zAY$0OnSUd~a=~ZUSCvn=*z!%?XyclC5Ptt0(#D%a4qrP(wwV#<z-+(R>hntg}jiWE}L3yUXda4(;;tVLtXh6nQDL7OizX4c5rQ}jyBk*vr ztgl(5W|VuHzb@Td!nX7#wn}r^q@_thzO0(Qo$?uDcw31dCemxAjx708VTJ}I^#pvu zf#EU<%wNWil1InlBf|~9#qvm_mZC8W;lhm(C0ED55qfLg&;oAZ+HTh3Fy+fMTGFB2 zQIZLsnC9aclAg;oEE-CC>vageUA2VjvF{BMGM{MV4!MqqnAqE3r+m7jA%3UiFv)gg zv<>B|_BC=vwbZ!wxAFEj4o+Tvb7M`)$NDW5hjTq#@qyd5H__F5Sj2xdPSiMk4m-AQ zrdF%nXsavv*35{4HY7x)q%pO9CP}-e{>2TyhMB8?BJ3fB<`0bCWA`_iddd?|k5-Z< zC57q#au8h~y-$!fLRDBp3gYg_6+4Prwyg(Yv8_4XMRD)YS;FL$fAf?>0oSXBE{L|} zs}W70RoGm7rgy3^c=Pivt?4(wlrs@NR6*}f_cg>`BUOU*M_Fh>sS}$}irEev4)}6z zW#itWZiPpBbkV8D6^XqISwZ{}HDXTGNcR#iapW1ioHOCL{MqLY$4YI>XK&!8h}A8y zk8s0N*)6t0QGOp8Zod468#S_$DBbKcmfO1*}0=w;s` zq8zvCB8xI&*!mx)8&DW$b+{cWGDB`iP3ZX1N_)tM-^m&iv(_;f8UUIqg^k|xByl&g zo)P6JPyEbiDTP02`4Kl%W!9`sm4eQslNshej;{?&z56OKT`~r*bMBY4l{QW?J?iRn(XHd#uT2d#jr$RD_`#n17?p8 zXCGCu(@49(^=&{ZFj4m>A(ImowEL=JB^5Nv0#e4Gij?YRok*OvS_3dXh&AKvMJUA_ zp;8QR}ax43Z*sVc!1NQC&MflS6 zu}y5$CJBUVlgWJfV>Y>o$^Oh#pcouZBe9@LmLD%2r$j0PlXyyaikyo?YL6UfjENxH z31{JL3is^%C>c{%$}FG0?Hk49;>8HPSve)^cLR?#BHU2{ABVL7)R7&?@Fj} zJu6K4?KKExZd1R*6J^k=x9imccCZ}2${xS#DDO)g#0Md~#F3=c6uj@#5vVgFAz_e* zfnm+UO!^XVzFm(xoWEMOYG*@iU)i_W!_{=LNEuwBw-Pn{H9j)Ohn*hTdo8=dg+(7p zWJY>$_o_$ipAYlzQ*K6EVHtJoScNbw*`qyq@GV5mpmGL1w`E$39U=!ci#5MP&M4gd z1bF?NJkn|NB0EvNa(gV*I>79&tBqtk4FjN`J#zp4iHzn7N@{r$@^-lcL-Tav-eFYD zrnZ|xbyjPrsYJ5!<4^Ku#eKc?@*~mbyN#qTkHUHXXsns_vHklbH;)sd7kurw<+qdeDGxDC!UycIRPWY){VrCAV=g> zO>!lImZ%N!ajW0!K6YtWBdxlTs{n14bNJx6u`)-@-+;nVUe~0d-+051HpQ z^XpyM7^@vPu#5rb>cFDd;PamF@OFTtll>@>nEKNsp$~)E6ZS=t8eVA`flY)+2=BL{ z%rRA?jh-#KdTUFpp#A~?8$u8~j?4#c9xH;AdKcCrYCQ8W2SiZ<`l3fEupr5^!u2Yp z2NQqT9%1YW!^m9$_faUFF8iiyAb%*4hHHc~#m8dWw=&-nM)YH5D6*P<5yOGK33g6m zhvrb#7qBWHVNr6r&D!AKeM^jp2*mghtG#Q3!VwI>%4SFIL8!-1B3%{cL1Js(2%(lk z0&DXJYYB%QT=&ZleK475w(np2G2YC)k2OcbnPM0x)~;sU5gmWq&i_sCZKSj%c6N78 zN^cBbb3V7pz#0<0e!|Gg`&U+6exM=5^;=o0Fy12wwMEG)p-Zkc9b?L{b!Uq|Ol1?1 zyK)nt*%o7@>7snM^2Q$R#oS72&Wg97 z2}j-Z5LI-X8NcyL+ZU++8(^+TY{S|>v%63>80Vm~SFh9ie3oayUR{X)h1|*fi&r z+M*;MU8AxiVZkPBkJem!_$g5aC`sdSC=XOm#5)ZkvoVGwopwCD=D!S-cQ}|C&`A{6 zm!+kiPmXzC7j@fHDREAoGpck(#}RH>Vw5rNVOF-lu9(|@ot;Yi$vs>H?{K4{cjZ8A zGTJ3zy^~ce3l7MRqlm?SZUuiFO%=5(!0kYGf9=f+tkM|!^C2%ZJWD-wda``X)08fLO>2lR z!@WdDCh2ySs=KWziwCxfF^)nkr_bIpPw(qZ`-D$S=C6hyqR83y>qB-~ZEEZWd=QsX z2enBsB>fQYj-6ZB{<;XOYO+~;KLB=vA1 zWBLn?6i(!lAQ@=h+BvxkZAc_8eWDu}WqHXg{K~%ybLbKfj>*&oZOf_~nL>9Fe;>(# z(7Uc=u(7JX}rZ?!_4O!E+Y78qopJn*eIIvMj=d@81Tvm_H` zz3$2S8&G_XsVg`SA;ve~KqAP%7Vsada{Mk-(~pi-<<54LbUk%x8-i%ld5t zZ-SH|C1cmG=wUKiw_YO6LGo-$VbjnY@vs*gS1eG#II^^?+`*nFd>_5WlA`&(_aaqLht?fRa7$){4LTVi1(7oWhq{k4wc-`g_A8O z$a8(%7&UBLy)I#1yJ&PDnPoE*HZLa3oUo;(h|tsS!uVUrEYtQE-3i{KTdPCz%$g%$ zMOUqhhj1yGWpS~gf*8GQj~GvR-ODm#t*+!1%VO#WR*K;nuS(3gF8!^(DVQX9z-mfhXY?z#(LntLDAVhC9 zA+MlVDfX7NPiUYj+$I9%`wvJq3Z(@Z9k0(F8q)ztdSH}9t&(|dagsmlrQUOOg`T?! zY$q?WB?UbXV$lm(AKL#DX0 zEo+!9iu=9w`S(~9po?+MP@hU15{37$RP>h<_Qap~mV%Y4gog&^PBjY~^_d8O=ns1; z&G=wDmSG=)kd=Mt3Eo=)GY9!wlV9RP^z-3pD9O-7LYGmWjkTop#ClGQH85&A z`3J*=cBzGBQH=PSK7-Cree0JK>|rRSv8ga**}hHd5smP@zsMKCJ(wyz4{7YS(KW!) z>>j4aDu09NUnME|#q|ks!)o(Dg5_O+%S-xWS<^}7kfND!vvhezA!YQK!;j!33CgOm z+g?87mhR7d4{9$Jb3t{BvJ`&X6Bx?%_ssHwvy&R`(h2cziG&rcu|nl5lnWE;V_Dcf z8Yrmk)}F5tzW(SuT-e+={2TDV$j_VRGtOk%{r;mnsLaHt78)7F8|ZV@k8I-!OM3I_ zSjg<|#SZ)$Gxc1J+)?>5ImQ=Br_yvq`UI?0c7#R6lF%k6fObb*nETA*1c^1Bae=0RBgwmMHJ(;a&BEI6dH0(fg38RQ zrdEA7M@F3xq&k$%;9^fTVA=*N0We+?I7j$5|il$~LOV2e063Y+} z1zfp{AvI+~rH)C{9qSg8uTEg(W*8IqTK9qh<9!71p3NwsCsbQkb-2F{jTm+Kr;bE# zpN_RhoN4KI?gb}%DrQ!&5sN=sB0M@fu^LvIrUP}5*F!Vf}hy>dDLJ>#|oH%$c%6t1=8offM9#3Ukut`=n zJiN(yfb_MGHN2U7jWR8(=O6A>1*2eUENWT_-I43_hpyR5DLU`Xe4bo@bM?9-7&oqmEwgTO8-Olwx{Sa7*-{Qmq1xb;`|4vIoSy-ItM6D`*{GZXN8=>niaCC2?1+N| z@OxcnUDxyN0q>8cLmU_Pabjnw&(#N_g+<$w^*a}C?}!}jZN}-=(V-u;>QHHFWJdyH zA->=3=-YY#MjLCt?0_N76`uk8^8S&@PR&$K4&0?f(ru| zMo%b-w6hW&i{#|TVuTG-i1K=x%*YEPE7xI7$oGf-oKaMi`j~;uBYIjE%E6Xpp4Eu6 zPWNdf$f_?5?MHsuAeVD-@f$M(aQ5X}2C#`}7x~NHeFDVQvvlBE2sS4ihZ?CmK!D6RzEc)OrM_^Bf3Ilr4=OxFX|TCj`o^NE~4lLjep!YS+UpHcyfca2z@_y!ub>>#Wc$QYTf1fG-?$SB??S+%}YOId(VKo(SPaKr^GMp zL5ohb6cdcIN3^avZhczXPV(l=|7FU7Ei4l&zX2AjGTasd`?v29pL-6hI;Qt$rJk^f z5A`33yq`jpdVd4vUqGYt@-HXne{lQ9zqm{;7xXd!K?(aNdFE)b0>)>pDz?FpUuQy{A*mtGtcla$xU!4C^cF}`NnU;nP!9i zLXA0bCVTs$)r=c3x>HplQ5BaVrsf}8rZePKwATVc72#3P73Q{M=l%5kX9TsGd&NhI z!azMzqi^MiT+Y_}3xZQT;1}s%FP_IY6}*K|c4vncPH=873;HP2!&-}x>;J9btwi`2~O?L80`)H3>!SXquv2&7!rjB zObIn*BXHOWeBFaI004$Be`0R1)c`QJa@qlZ0%!gxBk~u5W?}E&H^&87{Cn7^xR*b4 z*els5F;BLA_T%`JMXK{=c9(7bko9+{R{(_rqHrc~l|$M7@X8Y3r>xNP7%;g7q&-u{?5ixz2wPjZL4d%(kU{)J{(Bw4X<( z6OAjgb{H1a8&Ola=77|^H>?FmUh3o{6pw8ly?%(#Cy_pC9Y0kk$YFcm->tFOG)ylZ zVm!d9S8TYy%iFhXc2~-yp;F6=pk-lZUj9(c%<_Wuw-H&=crNM~kQ-xNvInhr7*94s z#eNE*4C;l=Hr72U`b1}Dxltg>#YieX#m9IGgM#t~lAWUvbd77)?5Ey8eW&)rZTuTj zGG@sB5_dJaeb4f$U$=xTtG(C4c0IaXb(jAtunqOa&1{8Xw%Q@a_O#)pM9ZHfUWeiI ze-ZcA!EH2+x~F4iieqMs6UodN$IR@Q9dl%6h?y;8%*@Qp%p@~2+p%M2&g$HIzI)!c zYX8~Vty+~znkh|{W~O_ld%B(%6RAfZLr0FCUBQSl6m z6clB92ub{XcpLsw;6>B@jv(_t%l#0@B|E#&djZ8|)(4nSw#RIz(3`S#(umOEQ$z|} zw*Kf-nH33EM7HN_$H{N4!lmfKBOh^WT>o>-B;f}0+>aZT3KZr9RwLMu{>((b)wn?!$MG%e4~eO8G@>SMq5 zxA>sV0h?VHg0x>{K-xt1(#j+eTObt`6BCa?2@~XUS0~4(fj5=Tm{9?C4?(X;@~Z`(7vpE9C7pD_-gb%ai#k+2?%u zQOqA$Oe#%cUApz5rUY5}!IYU@Mh+VKoq6#q!DeUiR{rg)w;$daZQ>`QGGC1n7pma- z?fANRor>&>b%vI$0vxdV<$nschoC+6M>MW=E!&bwU`$e#?==ORF%`Z^{D3H`H_Tmqdfk&?Y5N_taEx**Kz_GSJs_A-le6xens?MCfO z|KCMQ)yn${)eJBiNL|2)w;hUuQhuMcvZkb@EWO0N7l3vw1BYzG|H2U7P3sXMXOP`X z%H-z6=GHt?5vx6mnRq&q#l#dxM3+KGr2kP^+2n!ZqC9Tg*nPn|(pX%1%vzt=$uGpW z4liwd3=L9^H4X6T#@kH2i;y3A-qlS{?ySA_c5w_=cLHS7Tt;6NaIWlN!YI1oZW&b~ zVq-Z!UQtUErDVOsG5a2Vfiyd)ob^-eS+uK|^grd|8)pA+p`t{~8*OqF{`_}L+9=W{ z#wgpw9fJ|$`?Yzh8l8XaXHI^S>|~~nr;i3o(zr@Yo9O@fjU)BQB^c}~t$wL%Lv~N1 zR|Sbg6IB4BGQ$?|7D!7Mh|kin!E3I*ySa=v--r>KIzPrj=o918o?y8KZR^NNdwi0{ zroQoopiF zLyzXL5_q|Hl-A3K&nUy_NdM_U?gL?cu!Tte(9`y)KY-J?pvL$Y;suoSZ($@g#P>gN zl~2kxoyIOH3nusVde{W%KK$~6tdXZlVo$(Dh|Me?B=asj7xp^(5L8si+EM#E^4aal zmgx=4;4=Og*7b+?sEJ}XYt<3n=O~zW6m!)7Wl{QHZxQJMO}unl>O#{cCsetr z-oo2190LPmYpC;oHq$RSWhy#ib-dTDmZ&&u2q+{A`}u*D9iKANDkins8NQCKM_NGk zH-2|VKGf{8OC&aJe=yDPCm5??*m%6cxH(aKdBS4IuH+TVAb6XT6R*w}B}{YKrOnA7 zqoQ}HwYimn!Lk-0>N7E*SF;jKG7&SKcWi?gt z^j6m9+^?xlVC_H?Y4-K5m7#)@h=*l5+;D*$I*w9O)dFUP5=Qrrj~a2+5JPSJJnj2(Z_Qvs@@1v($5CA&$BPPp?VGd|8L1Uc5-#bN z$Oyg=3cYruIGaaiGhRu`)?BNmU@pJgnwkVm%Z)cB4zBKV!9Mxv-VOD=Jn1bn3Af#l zqfM$Pk~7^};v4HUTREfb;iVAUQ)HFsQ@Pq@_YXx+?H5Ne5z+g8mKI4!NEM+M-OW&S z@G|hN(9BC%(>*;c{c;T)t#n}3pm7Y)4sn~Et7jb)-08I%3W1fjRHzU@Qh!A>9&^*T z=(VVpGs|e;an|^qh(y34>_pB4!mQrls@ZkM8?&B9Kr(ZJ->EcmX9NG#4B)8URlxml zmy|&*peMj?iEc;qeLBN+q1-nOz%vR65#={)pPX0KvR88tVRt#!UBf?}_3^>RqaA z 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 z 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�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 e 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 diff --git a/imgs/sub.svg b/imgs/sub.svg deleted file mode 100644 index 907fce8..0000000 --- a/imgs/sub.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file diff --git a/imgs/tebietuijian.svg b/imgs/tebietuijian.svg deleted file mode 100644 index 4623fa6..0000000 --- a/imgs/tebietuijian.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/imgs/topic.svg b/imgs/topic.svg deleted file mode 100644 index b26e7a0..0000000 --- a/imgs/topic.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/imgs/toview.png b/imgs/toview.png deleted file mode 100644 index cd1e0aebdeb644ad1b2ddff47df4ed27416446f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 724 zcmV;_0xSKAP)P000>X1^@s6#OZ}&0007;NklKu}sJmHJbCIB(=G60Ed8A+o2f?~%=>1NdTN6iW5qsnMOzSA zMk0Y(=G-3viU4;?ke_`o`SJW7%KY!7p02Q*+^RE##s-;wc8l=05dgGn3lVzbC%Jgr zQQ+~4kQwKlMe7=)8FSTXe6FVihFq9zHAn|b0SI{p@V>Y&hrfR5G})?41>jo=w3rMP z`w5Q^5g2-prM4Nl#LD=MW`tIUTw=vi+f4BD2d%%i>zV-Gt_GqjD#zF3#AK^RNODqN zNHV5f)dU9L*#&TQH4q^i2~Un76_hSLk%BUQO^xXU(IfM6x{ye4cG3E1djq5G4bg!L zP!uJ;@E3vCz&T(ipkE0x=k7ymDJ0|>KrXQYi9aB~+( \ No newline at end of file diff --git a/imgs/up_face.jpg b/imgs/up_face.jpg deleted file mode 100644 index 26b579c30d31dd52c5529225be3d199c81b8d95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51444 zcmbrl^;=ud6E+;&i}!x2f!zIQcIEl|1NMaaPYAI=iy0Bj)lz%pb)^3 z$EAG2_Y{0WKgOeCSE%Wl09&t}PzwPS@i~=j{w)BApX{H^$pNx}97bAMy33xJmbL`0nT zsY=%+49``BzA6dLef+pPIUHAn@jka4>!vS3Y1MC7choY(M}qO$M|nLOT!E}dI%uEF z{l;0&63MfVinRX#znI7JC#d~t?jGN*{R4OwO{ijFC6|*Y24d~0y7)hkGPcV}!*zS4 zgEt?u$4pyhn~CKP;$=T-z5sl>VqR21i%ueOfet5h^W!@{5(g@dPris_9j3M)E+0Z) zwwhDC3%Iv=6qaBND074DyS&o(tSriVk81*7_=K{?N=BTuImhCPV;>jYGH_1yNE5K) z^1Uf3UCbV)-dpCT8TH3TiFKJ#?#MIVn)A7VUhet8TTZ??weoII{8zuzNdN_6_R~_x zZtsze-1#!F#-iwTWWG z&Zkpr{fIF1e%74zkiz*y90K{c%aL);F9Mar(|J7zsC8S%XWOAaTDJ5$2HmKpeOx2Y zp3jc1S*KPXUm0}xQtirgDpvI>^zlo zw*`j-^*%xSU=n?o`;e)sy%|lDXZuRs|GCD_lPMqw0IQvU->Fn?rTtMfZk~jJA+DAP ze6+QH^ryc5nAi5OexFpus)BHS>0b}3j2(Fleqv(hV)tW!@rT!+=l%g?MCgW&6m}yp zrH3j|NgqMaB{Dc;cvrbG@_E~^ViPZ%-Z;xr)PLabGN$INZ>Zvdr22AuD6s&lv`!(a z#uPYfyPJVu#9~s1k|zKAUiY%fEgxy7U#ZSt6zF|`P|IzDYb1PjLCee*>I=%V9Dcff z&tlJl2-Xb_`8-#B{k~JSL@4)-{C>pltSyW$mFLvXO>7(Cq1F!|w!Au8p$_mq_*!_u zo~fLuONk~6hfw>dU?UfoE;RQTDa(8c8*e8oXwofTvknaS0vWotnSJ(5 z7LmVJ1{*6A_QH$)hIA6UNa{9WN-|{oQ@LW$l8uQx!Gvq`p%roh$+XA6dQE^eGZu|&1Or!xETFFI&1;XkC(rH2u)B~_|AIw ztZ|KA3`-1;h4^ew?BSNlXnWmFCgLApE_bSO(iC4z>S|;0;wpF_hBxr8yF3ycjB(Mq z?~o>Y>i!R~{bW`imS>sxuGB3wj1fQn_8{(vIq>=)0PFbHQH8&w{UIcP(Q00ehW0{S ztpD_UH1NKqTQq?2d#*|Pv0UFf7aha{IT<$apJLk_G}Qbt+TOp+gq9Tx|_?<&<+XCjs72E0DtDa(g)d>5e&&Y_=j>* ztDdpBzt3fw`_(1hlmC7cMpM}9GBf=HT-@wWJpS%^|JZI@!|upnrv^Oh+_b?aPi(&N z@*sWdBeBV%brt`6N@q=tG9B1&BQUmBP8^FB|NFTh|2w(2-=%zWJ}MRp;dlLvU-^Ae zC`Bfk&L-*5^zMZD?T(M^_oK_FIgnyViNfaS_RjGxrJN#w^5@3M<*aun^Q((}#%E#o zC*vPEOqy@`aZe^9K~;Z1H4Z_S|y-v&WEncHmIAr??SYMbD(~Cj$Bu8Yg*Lq zf><~2g-bC(tfWFQ8z~P0!rsiDzg`vHtqvY`slzZv+K1`b7_jqoq&8U>SkYi>azl-5 z><#Jfw^gEPO`0!6)_gH7WG35nMN2DC;Tkkr+PwY>BYH1Id}rKQGkm z_Bzg1cH7)?SJ?@b6S7wd*2)eovTU=Ta!bOtmp=UaBb!!}@>}iVqekb^e%BkSOA|WD zka~4f|5g|WA2HVk5?x+qUB-h3Kn>T(Q7mlf`NROOO7~Bhgk{|ova;9FC}&@sJqgFn zgi+)6QH`Cq^95g@X^iP^VUrJd{18dTF=ccy*Sva`VV}Zxz&D9_VUE(4!|qJ3=eD;Q z6z3P>((7PE&b8}1HB8aBr0kgsLA(|nr&xpzfM`GnAqLj!fP_=kqv-S-cdvzAV4X4d zVTzL`$K;HvzPyJ}eI#jXi}s&~X*h(yaF{|Yu?UrD<5p2QcR5_4lb?@hIgqEe%F8RO zOmg1m$Sdt}*O!(CdUOKQjADnt*@|p=iGaWPhtru%zdahGv3VGwd_TUt9b#8+G@P8I znbo0A5A59l^OIH6>!?5;=@&sSQ=tnGw8)Qn!VwjtPa{x4#PfjIe8s`~JYQAb$)fN0 z_iX=_PMQ|`X(%Kv>73Ir+vBRUyp*FnzodA4)c{`w@4fs&#g-pLL9Jf}hsAKCHk>%&5(~zKFYEM&-f&U?1U8Py@m2KpAXUDM#bxl0=_zVj zG>j7+qe{s5jJ(Mf_sj0K+NuY8TJB8o44v9yrKToGTb_3YD&l970#j-<-^c(qn`ZQ} z$1fTmL&1FqWX4Pt)SEwC4|iksH)X7$iU!)|as#PQvM35AJF%$B|2+0Zq!nInFVz0f zAL1XK&SB$OmuQ<=k#v@*4pTL3K@%5^~DEF4Ol!~#YlWc|-{ zn;P3*gHw6fCzSa}`jTi2$4A#6gg)H$Ra~x$MxLLEA29v$kqIoo zp)*rBjiuliK*sjv{kj^RD2%W-nU_@U|sz~bIIhSeT`LL84>^G>Vrc1vDJ)8V^d z1c|b62`$I3*Y)+jF3%u zaa<%v@pL>L%r1PVyjhX#Vly96K#1!!TA=0F*{Pw_}x!vm$p zR;nO_0s`$ZF~CM}BtS_c$m&O3zF!vQtEU)bDjmNne|a}1-2l&FxKk3*5GWF8#Os02{O+O<5BY2Dg1pOkts6xlNvYeK26 z>55xLM&if>e?kEet6iQZb{pa?%gamA$E0<@;tNA0BOP15yP2g{I&U5gC`7S(8%BTi z)@6VvOrQ^vpueMt6+cfSc0(gc`emxa^Wt_}wnREe_m?kDuKr?v%lu0+Lw#K`9|RXM z^b-&`aeShIzhLdFN=!o@Ch<4=nTo21uC<_yjZDU2&`)!wueB0XcHKPqET3qZWq-r| z_#pEqBG?JA$>i_)Lp?uT&aSJAKmG%}teJo|ImFs*$v>LYoZ{b{Ytwjf#osd8V6ogL zY}{Og<@s^lJxIKk119KEiaqE=S>CGO?v!`QaZRtjb7-<~VtyyqM?^Xm8(L+`W!2>F zov3!Pk#w(maWt2nh48!>+g=I{)%mC@AAQt+{=XE1{g(OXyN$}p%$fg5I;HO4@0>J3 z9*>TyR2B2bccrENcbd_!^-0*dBmEi5ygTPefR#;Ii0y9Xe;bjoasO!ULWnDq3zn6A zV-Yv!#OZX+cs9^=D9|tQ0!qU!#dLEqcI#su62K5d`UQ29Q$5lphDFnV_YgE~{Hgzh z7Vl41#N+&~vH??p;d;P5SHk-u|5q6DoRT(oy5~0&!zW2Qaw~wJs+Ws*XY?C|m zq*;Y4?*57*jELBm$1~alRt6G(JhgQcq&|q6uE`ZOv-s zOOT2s{IzRkAdf!bLz`64$Z7>t_Yl@=QpYdb`yj6MnSjq5E%UPhHoXGc%31RY*sr|MDlQKAlRQ*X97%=yTb~7Lw4onq z$H0nJVlij;ZB|p?l$UkiLAiN_T!2l_)G{T8$C{)E$p?HFobQlYn0j9v8Loerezio0l4`?Dj61J~|AIO4a9BpsbW6?B+wnb5MVFHW&PbHBbF*(8 zF-2vnqjrtRH1YSquaRSghn+PJ?(1X(5oZiqYJFcHSRJagO>t|{(GXVCr_ zD*iQO;Lqxz3u2G^dd}W5-A3f96ah#(S0pRZILih z74(VdZeyY(&P3W0TA^!4?WPb34y2Ff+EDu%#~;bfUEJfjM<-AxCZ3sLbINEOy;zg) zk~;jBXGbvL0B1^fr987T5~HeNgdv$_4USCR_zz@RXz4ma*d|xoxY>10fFob!RGgr( zQ&yz$!vxr@MTn_(r5Pzz70Y17ZI4db0Pw!O2T7PtPl|-Zcbj7?sePt8V^uJ2U&Tvf zqr%xdBo+l2%dvBP#>vi>RHhmoPbDbPVs0Rmzgz~AXT9%%zefAQn`U+nB`4P>XkxP) zxPPQ>x0J`80!OpVjZ09ksAgS_-HU@hzbp#Rgr@*p!UJL4uBkXi&l7ygS<$XNNbKsf z*NEtU07A98Oi0uVo*jguL+VmFG=-8MUS?;t@S8BZAV>S_Mv|3F`p=j#{}0f_e&-fP zXLR|Ap4JR3ng2~k-BNm+@S4$o-trQf&lSJn5A-{~HgQI+=XH$1kw&@8wtUJmYb_?m zVLeJmD|J)hHPqtvgz=-apLV~bEtXAidCIBrlNOPAykk*XC+^x5UHTfLMV$hw;kORp zWWx#rUb*}nE$qvidZnqWVMW5xQKHUKlEb$v!eK{WHi(tVirnAfAT;5$kFAEq{fW*{ zX)Y+8hE2J&y}XMQd=Et8?rsp5QBMlR_H)vS?X#F2APw{)h7(_bMT32)g=S3A?0O&; z17j`BgnCx?p!(deA8g_)dDoaG~a}8@j&#n|ZJ3`TJ$X2{U7lS_;A_j4NN8Oc>`V;96=rKsWH{=zM${iYBa=i%i52!ea6AQp(|CapEgV zql*UBw;v5>LNIo=EU89x>1rrd?gj%3)vmM(;bK_uL}SB2&%*MF*Q9=g6)wNG|Jnrt z;ubm8sud5cl7R5ezU>j^)$+_kb*P~y)k!(*LES#XR{OLVr19xbq?Xsv1iQh2jaO{< z7hD#aW{XsTrQL?!OpU-;{w2rX!zl_UqueEm)ew0$!KlLY+RE!b+)Kh|LeqcfhL~+= zRRR1`mG_~$trsEFN%7@{NSy6S+ z%epR?K<6E&k`!*?KDy}LMH#4)WBC~I$xE|N4$yu(0Y$kBhq5F*X7(Zp&Rw*q83sXx z{jkB-+Bh4{uRN6Xsed@}NZDtTcl7b*rTMh#YH1z#>C^O&IsI49L8~ZZ z_tZ4eXC0<(zEs}jHEq;-gS;*k4MSQ9bQ51bUc8>0g)MVw>XR^`C|)#b8|qD89vCZ~ zcGATYh(0V&(%42Re_+2`vex)yTZ)VY%{LTiw0w@_6I$Ztm0{c6`{aar<(Xa_xuO!U z)M$}I7Hw|TrYr^V9fv4$m!NVok90nR%T;(bLW%T>V2AVmla{^N-r!Hz7#&<8ygj39 z>@*R@0bYlDdp*85C69`9@&mx}m&0*&Or~wRw~7=2>&~U(2e(hb!qlI$qb%}?TladE z#ssM18)Z{K{oZF1)o*Z9Y($x^JBoy@*MQQR+o8b>!EOkzI4z|1iLGdO6NIy4-!;%B z9mcYHx&3Fie=NS1aM~hH<>_T&!HA8x)VM>@k^oe+7)^IuX7oCvISF&?E22qG3AQ5! zlFB91PY~i<9fJIV0LFwlncU`aJMZ7jO{PEPCtI{ z&!=JEubc>aD%7fd`xzV>Fp0#+&N*SO`fl+AQyvM7fA&n8RB5X2I>a|V9+i~bd4BU4 z(i&fw9WFai^BhqnwsoIO$RCA5YR*x5TpiRwVKne?v zQrg5Rh0%lmvWPGdxqJ-hDD9E@!|0FNDs|=BJcSf7*(2grkmBDBhJytqVK>RCoop`# zor+o9c<7J$Rn-niEnY2TUIiNPqIC7@sZKTMR9U%q?TF1YqK!lLgE5V6#w51sRh3Ra zYmY3gi+??ue>ubES@8THB(l)U96(E)9Cc-OHK7j~(UzSUyB*0Bjy}PrrXV%U3Avdp zK!=?IfVUGv=tt+eHx|v6{!<7i5ouDco2mjsP#9CG)_iiq=og@yFXTfko);@G(CM;m zyhUmR`$}3B8SOFAX;`)wT5OK_zz_Lr^9U4@X;m|2Ktzj#Porx>N_b)$p5L&8D7BGjptASTSNhqAQ3g;hqSS?4@iR zi+xtYjrXlFXnMf1;W6V6b<%@Z=g@Dt(Y!B+rymWge*k7ztxvOO3z`B-X{# z4XjGb)NoaIVS$+3R|Ur&at$;iOA~Jb?|L+{iy!n>-%t8O;Y5)(1{O*E9peK>Ko4wv zLv?;#84+R?b3b5pxN6T=42+@kAi4>cDEbO>4u@Z_?+kkNju`r0tUU$enY9FJjzp&W z&s7qin|BO%NZ1-TGkEw7pp=D&oLo_itsz(!k=MMgmLiud(= zaJ(ZCj1u*Q@^?Sej0}|#@`4VWoZbwqGZ?}sSg9V;lDjQE)1y_BA#rFWAzVD%=g;&C z98}?9K8q;Gxp6FwDhH1+Bx)NfOF4nptW&sc%ZvF$Sk1U?=<~NLku4@iqA@(*a-XBW zbC+ZUq(vb~KI_d7MngMG%2aT$l34X#578XhY&4cuO{ZCvjbM+tOr^!qI-wd(T+<3> zrKNRwpQp7nbRbg9UkXeNGLU$eot42iB3#bYxVv$;y4MvJ8?>j?mpFM!FZhv__0`;) z`m=)NGgPe^5rN);UPI(WIO=mm4Vt)Lmib~TJka^^>(os+14+$QWsTxlUJlx>K^1hq z6f1Q}dKIz|<~PNfsfo5=KbGV)LK88%cT$>lD(B4Z6A*=#&$_J00s$>x_?3$}LR(`9 zE7~4GvGrUV&B+r^eO1QjGVN1;MJKIplOod5)<*3!a-E;utqRp-tHbQD4x12Sze=s#-dQb&9u68)O#i=4_n>?jn?z}PO zAB5sP1DTehV$dc^i8SFF%%1a65LSeCWgcTU;9g4tAISKzSwACh3uIxAE?x%%m%y{w>+0*GQvn#k(4Z`VqnS?afhgyg~taIS7(+ASMFMn0)w6b~BzOG&gs5l-&bnR1N8A3E}^EyMz=c4j(?@k}K z#xJJ!$TzXPj zftKcJ5h1jsF!@@3z+@~33D?R|o3)#{w+MP|Q8f`XiM`7RTS(Q(_SN|+MA(B|<3 z7=4aD4(%z6i#j15GZmbg9Ub;A%~1)Np?DGFWV^KX0l`X}NPhfh?j|WN^RN;9*)l5MmoE*W#gc$E?HT61&eJXm&e<3Iu7=sWa`9Ym11T!fL=ol}g9ew+2L!FhFz<47@uQ*Ar zR#W-Ma&be2v@~ktDJu*}#rU=uvZB_D^SmHFy+SKx(O(7U5JQ_ao|{SpuFj@1CYg5H z|G5S0e1D-{R5+BPqOMbrECTl4F(ScSW@EaJoW4nEFXhNFW)+G2tnNl;ndw3eZl;VX z8EN=52qsu{I%NDPzUqrM>Y`71Ytel1AQSrK?b&P(F&c{@XFKa^`}*4G0|{%c$N-|7UfRu<;-ro*xCZ9cZSJk9YPtG5|*vS1dSH7ClnLAa1ZVi<^ijOVO3fWe+Cpz`f zXSUXL^Lz;0zT9_E%%9A|=tBT=bUs>eF_SZ!y$jf=ayJ>mv-6N!4EK^2lssDsdS{L$ z|A|fhYT)j>*!8`#me#S-yNK(I8jS`!FwEfJ4%Zcd)|V-skfR zUu#PzHfm8xfS#5%hff)aw!*!#)Gy=@Awe9LX)3-%s?m{PFB5u3Ewa{b5oHlqrO86q zAZI&lQm99|*dVUjgyR~^=9nSvn@CgYH|wsaCKc+|HNDA+j9szw2Z&;{vWKbVHP}^^MXMDfXH7EakRXHsvz?V_#|0zv5s(`Z3uM z>x{R8)fv?M7&et+od&Xx118z#dm8KpA~DY`V#j&y6lb67glQwSX*;z}(- z(x(Ce7gTdD_5GZnNPt$jZe5tG9kCW8i)$41Og-S?Gt^D$>tF&l;b`vcW{l#0fC27T zU*aD{`^$X7I$+?bMY|ltAiSh$VgMNZ;;(4>3)JNEU$NE0BEn#o#jw-VrA^9dqY2S@ zB(D#`P?C41gz6drG0k(pPrJlwuE1h%{Bq9+6C0^;W1>lOX*5fE$1z#v?vNP^D zMR>ifp#Vm9u^dR%TE34;N?@sZQj1eU0T4FXbaO5#+OPr@s@Nty+@9$7oag1qPb z=JGFkW3EVsK0@JGu82O%prFQ_IfYbr&#Pp8=$0yP<%)|d9kxBx(Di2ledPsHs>58% z8+kvt{}%|QC4MhSuO5iso^Vl4nZ+~XkmXB3@t=n(*!QB6Z*^yt8a$wp;-P&jeWIuxBmFYk4HR zA&xgFoG4X<`dLiOq7SMnGbTu_^tE3re%b`ie{EDn!jH!neNJ?WT2^sOr*92UO0*qH z`DXVdwHXnaIbG`TY)2;TtIu&E!BLgymHf6pQEPmHeX%w8`Cw$Z=ajKLapDr6-e>~- z-2o>4FlLF6@H-r1tEYUC*!gF7`6YTIRRunY!+l*2nDb zGX2IcbuQAAnp8G0BxaNF$pZFa8(ACOH|U`SRrPS|XMY}|Zz6sRrjm^%pnYMlDofRV9xf_$Sa+xjfpC+mr zerBpljOIt-`~WEjNpIXAL8J!6?_F$E255Itdoc6YCG!)Q*;EzK*wDw=%}DIkLqYGQ zo-DZG4_Nz~UXfR?;L@5c^)J9M9DkR_LY-_DDo!;GcvuqNRP!J(HS~IY|7FT^xa3Ud z?)%{QE9xAH+mgCL14Es}eyB*jM!gs01|#n(0zX}8i|tNLZ*l2xrp0eV)29Gq$GL{? zh?gSM=S@qouNk&>hl|`A5l9ZLzSs&8t}{_KZ@8*xK~@{m3QY0-98n&{0(I$WX^EY# zFPH*+mm3!j<|O%)Yin768L__9#O9k<&7beu!8V(A>+hB(9fX4jJs;5Jq)2QqoTatIMx45#X!=+uA1ZKqSF z#;ANw4GE1&*g8(jq~uFVEMZ333|K(8@lYAsO;u0-D^Vx<`#gJ9lj`AIE3jIV5aq%C zZSiai_|4bz$O`0CLQ8w5fhmcHD?ztN4Y9bUC*YZq;Vv1oF>T6$PHwxPuufW2A!?IU4Rf1o-u*YRvVLB9YAchom8q^mPhFE}0g)b}JNjscHwd_kxoR0&FLCMH&5 zBoP3-n4cV{;W^A?vV%5RV9y0(rQ(8!>OqK^@$TzbX9EUT=rd8a=1l(Ygz;q>+9E{t zX@=YodkBK{Jxdrqee4qf?jM!88hY; z2RfNw3HX3u1^+?8Bgfr9jUwjHgO>PzIVIjeo9mJk3JYez4HJwhkVQ-y?nBc44fM9@ zPFjdc1E|4ucLr2afrrw9P=Rg2 zc~r85L=4HLi`^(V9~7}*%Yi~D@_ozo@7J=Gagkf)7OtgMC<{m1Sfgn$tTO2iM1FT~ zO+KDZOwaF|92KI6Lyz~?G9|9^UiEnLQTq@WYtjf{5%*EySOPm+GS&HJQfn3PzS@<= zZ@pJ%@p+0i6v`h{I^28(j-B7 zBM?K82!#VT{b|L3$?Mn_U!LJNQfxIPU?gCenDsmfVU<@!3{BL#Y& zZSVHGZ{G#^ZaphjymDSRhfovgere~U!qsDmM z=VKj~b@uR7tIXjmdgAd(_q)7P%-TMq`5Sa`4m1C?O|u(KfqyksjratB(YKz_#q1lI`W)Kfs%+ zxFEmWq=yzU-Q0tx1>)b^v!gXhXUyMK7V@?au^&t2+Y{~`0eEh;YK*s>>#BeU(){~7 z57ncyeT-*bztfpz-wZSQ9b!fwNPh@@bGt2%mv%p@OS5H9`rtTk4**?_iQh2YJ2brw zx|FtcnBIIe>K~7fm1lfV3Dv2&c$AfYkRZd~96P`JzJGj(9nqOkse6^syi;x(R(MGZ z-24YtelMXYwvajLoC%l=u>@WSZJID6$hNE`M)RgWcD*n~W z7}0-#Q$xr=wO&s!u{sop-@j>^@Ui&CxC0XT;Sf0#vHg}HQ4Bz_WU2Hi8>^)l6#EOm zHT`UtRyGW8<9A1*! zrxRyb(`dG=w&>d+32^2!tj9Bf-_Jr>(HsqwaEH#x{P+9qFa39z7+>%=u)W`Nc0$~) z(>LgKEfOA5efB&pc8l_C8VV;V5C>-42h=1_RX*EoW4r^*i^VJU4)0IjOrdC`j zdmOp2dp@jQ7`3>Z6R`oO#Y`^$biu z)L-$q;xJa?&;(L6Ps+CUbP~%f#=V`W<+mKBA#NT@%T>~UXjo^;Zp5?z1qla2uUtrs zO}M)+uQht=Y~QjRf~D1be3ej!<>jNAtx^~MLs7tpZ4q$dqTxi2eHUIb0_!cWpS~k# z!N3S>q(U2CcC>i>6CQR}xL8;~MEPXoNtv&HbdpZ82){RuUhN^*jV1S{?fVndm$lI7 zxdf~o;g#B{#Kq!fuo-)j;}KPrzFTE!e2!5jVLCe^dqG^uYP?_AbqmL(_9HCnafV4~ z?}$c9?oQXh+`05>XlKvKRokNq)nuHHRE&`{mxd}$Oms2mt=W9ET*|Aq%m&@7&tB9n z{7u_wYjNbBg`E~+KhXtysf?F;C~G!>S%^2xe+EDOCoz8*v?OhoW7Dt9r!$L>>Eeix zBFl3)vSlFY=MpEH{!efB`R7?(aD}_l%8{_sERP697>FEZOROT7$gc$t8b(hSPB@+K ziR=-IIK|AM^7KFu*u_oU<)@`hc~+x%$=zVg2G@P9MVd5|))|IcRxTNBa$<#u#Q%Jf z8dWe;S#F=@w9Yhw=no1UPf=34@40$UepqYevrqZqV|8fSG-(?~o&Rdn%%3c{mcWOCtQ;OV{nXX zeec_hTZTjdcp0OjjMTEHjGqRJg_veLPU@6yeew^PJMsnag?Ue0euB%OOFZ^HW56pP zZ(Vtx=#&hnKlw$mJdv(fulQolx=z;-|FNv%r1)K{T0HQrxxy;)+m>PRMT;iwtMK09 zz}?+_6n8-o=pzcCNL)R`Ex+aRQXb+l;PG9Qx&DP+#=8CM;Fy`7{jj&lpB6hqAKr== z7srb(8R30yLN(-G+Xv|D>#y3)ZkO?m&yMf&te}eWN|F?@oEzbi%lSD_5G`GSni^m0 zF&lM%Rr)^woJqLCYMiMU^>TN5cVS9l)y>Y%AFf5f?gTFC(~2ifu>J?QzFCb4d4)V5 zyYHoNT0Rf@LY;(hZV)m(4l#tneybETPJMczG%&+7Um{d%5dW^hN-J3rz-j{&1!Bnz{{Jq$9|j@f7Tp*V{`sM{R4i>ds8fYE~3 zomlu-MTGZ`SRkn*!t7*IA()_(4Hb9AyPa2l;A-r zfie|Nqc6PRWB&uWC6n33uzhxd_e{m}WWc&14%1IUp@C3@fC;S80iHf{( zZlE@>;q!EuK7cfk4ZY^$DdKk&A}ED0?wHV6i(opJ3wJ*z2gsQDGW+A0ouCIb*}0Wo zu@2DFl5<)Q)pb5PE*vv71yw0(`qs=k%`Z)w^PL*Zn3O@~=k-6KF+U5F#s2iOw@kDrkcgri z?dLn4P%ZMgy5bh;tZXVg**cW9E^l(l&>dr88y)LCV>c8NS2W`n0)DyN$y z#Md*^?C2p{v9=$MD0u$na3Q$te3vOx`C_p|e4l+O%xgAWgr~yd&$JDQC(AI2Q)@Cc z(yUIXEl;NgXxwnByTv@G=+WoLA9am=g-?0i*fi~igu$avsk^2|12JK4tJ6AJL?U7O z0KNR)peD+6g{q}g-(=-9RU&2zQ;tyQ8NMT~J-bkxfqM|nOoPNMbVqRc{4S>cCHea# z-O2OKew48ZRk(b_U!Slz$5-&vHY+Edy@H?}dFInpX!r6&wG1W@!#PN>SuRJ?Jw%)Chs^;zDS2`eT z_F(~)NeQwxRS>r?`#Q%AYi>>F(@vD_B6Hnb=T_50!t(Pg2)YK=2LD+G>?CxeCraUm zfa~o#*S@i2T`W&tXv}K9-xOhVN%={D_h?Z?tcGz zMYqZ&B6h0MDCtTglD`vlE?>kYqu+eQe%Z!|#Ib5L+e|aCFKcmHs5Osh@2J4ihgARN zh|dhLE2XicoI(h%~Mj%kMp>KJn8OE92sM6zeY0 z+3E^N#Zi{bKFr?Z3Nnm?Nn744_XN}6CHxUU;Fc$JML$e}?NEaKKE;SMzMeH_N1))1 z4XjO=R-(zO@I)G>p_W zxFZN&2>4@Gf;%ZRJsNI{jLETe-IXHO`M_XBOFhTFhriMMSM^=n{Q4a%e>x|hB_<40 z?)@%={33&y!)Q~b@mVDFZA^+%c)40~cF|8&9KRHq&h%KD|HD8;!M!b<46+i^)NT+u zy4$ny?bmqCc<1{{NkMsl?L@q>xrg?5A=DpYmF{0) zJ;lu5{sH79Ug*h8JH&@p3Rhdt>n}#czxxN6^&Q`*VP?Ja-Q`y+OvE1;CCwWRkvtWc zEudmxoPQua9ej{H&!gmGrjQc=Ts_!qC}HQ;hGN}bPsj}(B~%$Nj^fE$0RHNZ?Iw&B zx|lhv-?uXVioHmrvfNC_zwa;_t5U(Yr6fN{@XWYno)sojWj7gM|2`~jQ&_Xq?JkbR z++T=q7JDr7;p`q`rv&>BYwY()<%B9rEM=e2Zs)+ks62E3cWL$`#Gqm5)N{w<@!%2d zt#v`dnBX^Q)0W7AMGo)2LUxRNuV=@2ny+{x>M?cc<1v^%kg452F(>+m_a{N!FTTM^ zY=XFaAW*6nSnMN4od$S?|hGBoVl{y+pvd5`B6scg91m%-%@! zC4P;xem8rAB&DJ&!rLNSP%QJ!9jK3ATf*hFU(%rnNqfm5TX5v5(R|a?#N7wJQA|}u z0YB`dg!ru?FUjhm%`l$VM!kobDwQ%nPo{pV@DrptYEoc`WBFs(#wH;G_PW}O?d*(g z@x13|EH(j{UMK^XqR%uyfP$rMjda~25~s@Hsw=3W^J`jsueO*`p8_|^x;UEH`$`_q zL*O<6@@|w5WqM9H7Aa#c!7aTsMgOrzkoY8_q&jo~XKH2-!d;O4S+5mepnisGt^+fi z_^n@GQU|H-pFMNqcRa0sTR^|^R&<0^OIM2dL-8@o6ZrwpyoVWb-AdabVDp`_d|Oh9 zMda!JcUR#$iJ>k{l8-)b$vm4e1KH{C*&1(5xD3ty@QxVrJ*0lITB?Jo$}?kl3=J%b zh6`n3WnKK4n@*s*94D(Td5-*ppFa>7r_f4<#^5wI1cdwN{1W?5;)}cH6&>6d>NJU7 zlDFZsVV}BD7dtYnFV;b<%<%AzI)cH1*i)s6c;iWk2`-6)<-Nkz#q&QN3ZHpr>NhE9 zlOlx=v8b;VlC?(x!v~DVn#!*AA%*1)uQ}cgRZk3I&>*nlG>_OT4K=B9;#dPT#8G}`F6BxA12BZYlu5Bpa@UW1@Xo3a;?f7 z6ps&r%0URG6<895ZDu(GMmRebV}IK&^zU|&>A}LXE)S2AE2$=7E!jl5`&RbmA))_} zMwpy9o|`69Znl3Z`Up1G;2QV*fnC`!Fxx!-N(t_-`^vi7NvdbLKJ}%JKPJI`)ha9@ zqrP~^XhR?`6}gdoTqii$c_t`ep`f)W4@mg1$b*Oj;h8Ebw#9}5Y5-nTi3C!QbaQVhS8toz zwb6pgafHGqn{{NySxCa#qW70r&(=NvCdd5x1DZDicf<3eQndCMl%?ux`YF-jm^a#x zZ<}NW?8JV)e$2<)1vY<+*Ia#m9@^)1;AeVYo$|JH>p^LYdGUB_%Y-np|I~C1mJ$_e zYP!Y$rj|;ceZv#-Lku%55Qr{1D@}G1XN!UV5EO(=CJM#+2E7}~R6#S_e}BdYTg*jXpw@PM#6L_CX+xbAGC?npAVwf;R9H&5cmE*bHa3!XoaV( z98Y%&Bt$DNc)=y!nJiG{9^e(nB&gD=Sc*WcdwON3Gyn@18c<4Jyrj6S>xZjCaZ}R#sEL~NZORL;+p_;&~T*7 zl)6{P%KiX-S*1T{*P+=ED!@^UL}tAA`YF&Bo;}CJ?G(bHXlxqL+)YKLpNU557m#S` z07&#b%Cgt<8as(lu<{&Aeh~Nl>~&C{f$)UE&@(qHW0S9fGsJ|qr~}EAWAPky@fj5N zvb4&tNY`x9BnW21b2-+es2}aCQ39MQY!z*W{{SCNW~LezyZQ7kLloutlz&XQw{=VY zT1O?OnfgjAOI=Xc!)_CCq_u^&Du5r5hS4cQJg>~J%>zqX&3(42YaqMYp02%oeJPVa zQ?5u~#G1PbQGHrE@C_hU_b4@J4dLZkFC71p(Y{8VF^5ErvG!o5Mc{WA>EEItek1uoY6gqWIVelkdIVfya+yrLSI_D^w3c zjd3!UMQjsP%p}Z-Jqeymh?O`hPHVDF@u{n|t+7J)rtWPg9!bm{C(FA20cgrQfKz5H zfk?+VGv6;U8qaNs=S(tr%sJW?ttr9Cs^*54;>|NQfoVv+r;q{1UGHzAdtmXGA0yxe zg^%F5UVT)B->@&A))&Hk+XPk2Wv9(Xv%F>_cB-{q%S1VDXS>V*EVbT^Wr_ddcFfO% z+3OeowxR6rQYL~pk%pyPU=Pu7#rV$j1+9Iu{SKlk#fp`82VP(L*1KN4NH!cRHFo`^ zG0?DsU<_{;%sT*KaAJ-otq=#0SKPB-x}Frj)vTFuDtkniPE$1w5!EED>~SAR1l9g_ zt%y%zoVRLSI&{DE&uBDBg+icK(|D6~7AGRBPW$ZzyKboOQ#Z5MFR6Tmy*@{C(l8I9 zV+9pWrn}g^u%v2uRNL)Tp7Xd|em(I38%&zlUuMK?2y1bCYY_3#8%dQ*^)QfDI`^j7 z{JCcV#7QZaxYWzGApJUV1uhjY%uV(K9r`kkp=bBQL-T6UNRKEx#r!fF(Nm!mNec0O)#Xj!y z4n`-+Gd!Abg?Xo?xuBvbxXl$hnsA(^oSzk&!k;!aS<80?d*A7;%uGvssn&{P1x#B% zgkq(*apwO6oj_v0M{QZ9teWby@zwc0UMUSynZp#@N<@Kx80tJ|Y9*|?*Vy8Hrt@f) ztxGOQsil&7NvYXGV8{TB7G1~g!8v6;eJyCCXM*Re{4>-uFs9Xop03kVP7vPSSEt;QE|J`vMV~eR?^edGp_&@_k@@xK>#QRl1X~* zH4(&RSn}R-*lwVKkVQ4Znv$`Q95HC<)-w1cf!~9M+-cM;Xo=2PAD~nNk%HSsV=zgb zdEVy2n$&vKhbEf{lM2;GXq+0$xXAk?;DM|)1G=Ar}9ESI1@>#eY^B*H1fsFixclcXelUyzi(yqmV zw%Z_Ff#udxJ49Ot3`G7@+Tf(LF1J^s=6)`!tST8gB4jR;|%dBu+KTqq0c}tEwu1Q zINQcMk=x~uU*nF6xAW)!0JDEyfEdZ{dE}l?=6V=kbNCPQqxQu0TGn0(^=bz#EbJo=a;2sa}{=YA;TU7`-&!#bq zf3MH!^ymRI2LK!yFo`#5CeD*yp-}qa=0&k`Gdp50_y~fC0O{ zRWLvvUAogCU{Bhr)7X^&%ubkBJMZbQ0^ZT;$6{-;ATz*a6q|r>=O#>6{{XcFf|0b% zD*#W~RrRtG2gSOw8Q7J>0=bWIEC@Zz9>%;GJ*`;BsBIAgmWxO*13Uvf@KdoQ9sv^W1JJK0ZhC;JNVcC4D(eY5zQwgM z9*GoABYc6kB!c57Bq;64W9feiT$^rz(!gQ1wZodZ#cX3Gs2DtMWaLQbx!2%;}5_`xoit$Hn)AZMhLdtVJuFr5oR}-DD zHNN7iD(I)!M6gVOwn@ELcZPa)3FKF;fn=wswZ#nR=L*5vWhXhv+RDrc-N{@M6b`j% zjVhGdi^O>8P13Tuo~pr3WvsVUEiKB9j;%f3YH6N9EgfY7tdOfgT^xXriX(IqBIjLV z@herVL&MSmo4id?0b{cOK?DOFNgCU{H`8icSlRETyi}~PSdk#nLo7^=PBZC@;Oc+q zt85y3Nzu?ikw{)R=937a+IqB&*_*p%i3^?=44{#a2bWvco0a=WKr!ytOZ7DMQ32VS zig^?dERxtN0;HjENh%u|DZMcsritwF-|sYa!hb2!ktszSQN>G5HD{YT(}gvaN@(Ma z+(}DIwnf=T6M-pmwC+uNlh7OmS%$8JFK&@XAsdvQ6VzRAxNQ# z6wM<8@nb$9zoxaB?idk5*0ohTfb~^%%N!50pH~N7gz%?L^153!3VT}W>fVb26c$P- zNmaouEwV5RW-=pO3qF~zzH8kzYKj?N^JSnlKI0ubPU81*H5Vjf2E~z~q!jeD^+(EM z9lokbjC&NLeFo?o4Ni{mvq$NwRK(UDCuO#X<6Vj;q_;y9gq^#vB~n?41cJ=q5O+|C5hA3r`%qtb93pFIsyE8*1)d)y3xLZ$k zjS-?b3IR=ok??>(T!2Uz&Ic#za1UN_@h4JVqtx!HQFUrmkr+4HQ&G`aL7at15CyM?g>F)$|ee=W}cU|vO z(o9`!JJs&O^>EWAUH-P;Pfc*PS{r1N!%;5rT_L7PBVEfBe@A}WUJLk- z;}(XwX>SXxmUu4rSQgV!sc&~F8mfklb0dR z)LNy@bOClK0aB6?o#!%%>IzFUVh_oWhdu##*>R`U5G)oC2B}`_aIs$O+VTsQpw$#N z7%Cz)lhj+%(@jqt@y60bDd)P!9Mhqrs!06F9b~_Ue#4c%AZq(fw&CO5<4V~DJQS7b zPp4^g&xR9TD50KXsB3LCCiMxcsg5+FkW}!8yP=I{wVt`*cKgC;x*$@>CG!> zsA@aS!iw!i*9q!1CBC9L7UL995UER8rU+}rbHxF8%%V)n;TS6wipgAQCD$|QO)|*U z6tovhrM9?JTrI{b;cjZ0OFeuBvU;0@RFsydq>347z2+lW_0Yw#ZQsK-z8LD=GVbrF zRk){f(=Ca1TES9|{jcWBEY;f#N)kv5+C==!{kQ(oKWqLL@im`^`aP{XioPi8w5fEE zwt;Bg(x+8vtp^kYThy$tN{Uvfi3RE%#X}ucr~E%XmTK!Y{{XaIM~t@Hz1E|{`;BEE zhc&k=ZTc!3ybB%fqRVxprHX>tW~R0Uq)LcqYB3F3OB#{^F^iJ+MY3sKP2oHGLJP^8u$yxSgq$C9SF`V;7G-U;>Y6@a z0Em?*@tl%Qz5U@24t1+emHR%e)@`XTSxHt4SJDiS%!8TA z!^N*1d*$mPL|kNMx26Q{1J3pa63eF(4@zAfg3Or7-pg zyg$*pFTp!XQ@s^6J;zaMdg>LP3L4vb*0TyywThJnYpv?x1I-;v#LY==mMM3^BSzCr zsvFSc;go}d8*+@~?c1ENBY-|*vWVm3ew@?Sx@$$I1e|L}tBPxNO&x6Xl{D6bs7AW1 z=}ytDO)Xqx(HJUnqDqvMa*9T2)UWTa?Wv_(y48}B>_w?n+h}c|s0E;w0|y^o+TVHw zm9>q_58dfg^E}FpRVg7T>VPF$jkRHEtdI$f&m>3@3O%W8En&OquNka1Sdi(f?Uu7s z(OTS9n!80TOBC|RX_4vSdT17UbqLaevOrpOF>Dos?Ym&M-Mm?f^;kvwlpvQ}l4w#Wj7$jH9CmW{MgX}wJPl7>5Wj-|9uPf>4`kCRYR znyxzKX&Odw5}Ec$if|`zqz6;i&7X*r)k)%ZlDE^|CAw)kJDk+^Xk{_UQAKO7sjHF& znq(?vh=|21Ge)kX7$HF&Z~p+W&p)blTPpPt)~`UNT7^rZu4&e@y8zLk?;A}@RYCIA zpzPd6*o|O6w{)S>d^y&Q8lt7Ah*H!GP(XC*HWd=1U80gs%9ifSaLO@PZsNs`x!MLX zPiv)T-R7l+;YU#>-KCzMaZk2TKq1tnL`}O6cc5dI9XQ&iH=s>Ba|wuPVy}j&91ya> zJtD|sWgIZYHt^hhN~{M2beD>qDJpeMEUc*&KBu5Gc_K2@mxxxjrZqVQlus;s%8cV2 zgODCwYeP#>W3$qgLbVdx*-T`WcpAEvo~JBGB^H{ZM=m_Qi=Ig2dm`SqqLMRh-%_CV zGv%lR50i{wb^yk_I*aF3sYXP8>_kT;$RGnB%Ap86=bTQsJ`-M*b*`bbBR7>!zVLnx zsucM~BrSqTSjkn$1gesKO4}x#o+_Iyws>%3dRPQ`AdrG20PgN{kIdsgK~4S>sj1eU zAl`#*id|PpWTiX>kWtZ8i4`|4;^o4-0r)`yfdeAlJU=Y@M$47>;(;SM;DZ_}wtMnQ zgU&fUfaK)Av?L6c^(WMoSzA2rP$%vxemL(sxY$z^t{wpOAW0$&D5eSSWU`;HStN#bUGb&yF;PS=ylrdb;t+5^z_H4_v_!HDr50;{rxf5s3QEc z`}K{3oM+b@@%{e*9=lA{{mA`(TGi0#bUN)Qt=t_BfdGsiM@C#{k(}}R`W~|23}e)j z{J)1lW(bIUhc93UgS@wAH#b+?7|=l*y7n8EZ}0CpbA7&=Oe2U_KTxihlu(@X91y;NYuz<8%b{>s@n1ZO9PnW zn7KLs04wJ_;sa`XL~kXwuo+UO(3*5&@U}&Td6Qftxw6RO-as3SUmHu2ZJ?5Dl8P$ z#hMy#clV9VNo1n9+@O(82xcZI*-0#SE>*C(&sutEsI`?<6+sGVZxq(q*BB;RadL#^ zfo;PoLX{+A9miZ>43ad~)V7u-MAHO-6(BlRNgc*hk@sYQbCEzCowzwX70#ui&Gwq| zjP37|>1(5ve>KFf4P_N>_fk&zDrsJ(P3mMusg0xrxMs6e&9xFqBg+djCva76!`abq0j)eeWzW#;lbhKQZJ`yGjxV zdlK*iN7Y?#cL`>-ia2X-7JWA?l~qe$JeIe&(^uRgX$PFJxrhEmVTxwo?^6U}9AWyV zeI@M`Yts78_i{FS&Z9qNL296yiA^q@qQ72dkiwT+r143dN@!W!4a&ljp;wbSWwrZntLCaa%RR?|{kA*(W1)Cei;bu`z&^UVb~N?EFApk<|z z1P>6(vGbqpHuj;mu9RIVt5r)yDIuAfsB`KCXKJWjut3Pj*P(m^V@8WnT8wHq0{w#! z>j^+8D6&F_sZ=bHGMlqHwv8L6sA#Sb)T}7A6!mu*$w-wzl66XUVl&QGl~g_f#xa4k z2TE4n=Oi5ZV1dVcX9p+0KhLCH6~5u8DQc^vnd_Dr1coFMGc76q0Jy2Y?>58LflB#dC=81Ilq2tALd0C2;QLEGqas+Y>7 zmF2?aw+3UDKZvoyka77hbAmE(2clp>3`RpXNmHC;f$P{0mpH&5mySjoNgQWzI6QO5 za5Ij3`hnQ=;+ErAjX8>G;#-W-ERrmjO7D59fgD9nGZ2-e1wyL1BW^HG7bJiV zM$icvJoubx4T2*eX+yns8s_4d$^o*$)gU-1Iog)lc zBUQ>Bi@2&X`Y!e>$8ncpI}8kB68JYq_D8gbine4@i9NcmpbpAbE437n?NT%U0BWF- z+X4CRdY;Kn&Ttd)5Z{Q9Fi9nsf_@x&fyn?2^9}UP38VJ8*SJyzMxWh-!6Hjun5rNF zkU^28#(xtoKpS(=bTZYcb=qWlU#8S@4|kEwM+!g9^4b&*cY5PHv4Pcf_=D{c ztLM}g+b)o>(`sWS$Xjg!jccCgLL(8wJxbA1$2Zz(9KaB*Ewxcx$u(x!);DcuXHw;o zjVeZ^RvVQ`07C7SJBola_K5&{>T0E3^s8Mxz_hia6zg2H>>g<_qyY^fSnN<)fDkjT zAGa@wbh>*=+O#FI@L@N)nufT{Sj8q%>q*f;o#P!}@Hts@Hk+%d)9~i1NuB4w<)oNp3U8|vj zu1|EYq^qT`p;|E%(a{=N13kSUX%STzAPQDRS6MeRH*3)qn%hk3xN4cBp}VWYH@vRb zim7d|v=c_{yLyU)8U|DhrE`=Zu=mgG$HToV!d?KOLalp7@dr@4r__3vl~HQ7I&7d@ z(F~=I%2b$l+qsAmb>d&z--xd~SK>i!XHMXB9-nVpru6!iX}vREunqgw$wvd#TA-8! zZ}OEeNjm1ewvOkjE?B1wf5McvA2m_@nQFc6N?}nTV6ktCo+u)L(6YEzJQ&vwh@uif zpwgjBLoE&37c4TY=|Gc5-1G533Il)}&~cAPgql*@9fwlVSN*YaGj`L$gsvGVIJUNo;Oxt>xmkEDYC27t}IQ(AzsDir6qJMse`$Y9m^&`Bp8+V)?sVm z9;0t*Y1JCmy4&7UAXccXR8~-+C}J}zr)d8GVZno@M?>i5v;P2tQP9Ob{{UWU-9d3? zB}}o3s-a4bqkeyUU^OU2#0Z<_uNLDfn1IF#duW}UQxb6ZEZi=cw^zDv6KVFTu9f=wA;~esMAoo1= zjic0)`JSj+Pk6-4yM^BUYYv$=dH{M7#~0D(Q&kVT#WV~Kc09#ow_Luc#pnk z8TS7GIx?{zBiQMy@kw1Rwi@X3nhjBHsA4-5YI^80K4)~x^*x763#+WQ>10A#S~!R} zBZn%$`s0jb5;*USbWLArYsH4)Nf9yBY>J|o<8kw;W{zbF4&TS+vT#n|%t`DzPgyI) z&q_@BEj0uyPcjBOhr1%ONOQvPkGO1rz@7(t6%Z?Q+XqrZ*xs^K0Q!PgsE&+D>`vh$ zu+wU8DRodx?7X+66#oD!)V3#ZGI=V%&uAFnY8Lp%PwyJq5U>xAj97lw?7Xsds;LMD%Q4TUDN*nwv($b zw_^k9IV8nX#8s+MyXo}4%hI}9`|xDDGC*!eq$nUvM=^mBv@~rU%S!4<+$k}~O(O%( znw0gMoT{qsKXDSPHrx~gD~_KF!mVWb;@wRT!KW^EtBoKaEWcr1Yb#QksiYqpq8O-y z@loFegfCy6LR9i-kHP zFt^;KkrFYvg1s`P4mkjTGQ?{7TfJr4?@e!#X=S!jcXQ+;UdX-=vLbV*PCIdv`Hw!1~X{jlENxM*7OmTTq+S)~st{=~{T4h3^lw-^w zx{^6VmE@Kjbeh{})LtsyRUnp{%|#8|f{@5x?43U{tWfS>h2?tIMA$>C#xTo`r!es? z$)#;blySP(&nzZb$QwYMZipc8PG=FR_;;qIYrC2cSS>carE3@^0YF&o_EjX0aVMQR zUdMjH6}tZ4cJ_hQw}>jOcW5N2(fUr6sw1P0^=7_Drem72nyQn?Sg1@_7?ybCmTB5) z3~Z3gBFprR;9iEO@c#fw+BE+FyG0M!wi{)fi1zGPh9D*iQDbHbA&xRit{OQujzKYd z*(#pNU*NZebQ*pfLt~;{GpMLuIHNIKXfKpHntAG=r41TOTOCx>Ie&^lFyNnwr)(91 zX=u&nL+8VnOe1!R=N&q3bNGTp(K^3u>cA^Aj|=scP@4G_N!%e z%BEG0nu>;^uBK*Jb&d*nS>%zGRI?~i@hDud3^003>8UBBuuuwms#?UUQ*aYeGrcnl zl+ssX0_z)y;}srSsf}^700Dwj>rWMB9Q4%@iD0OS;FcFqQb?sk9Fe+_f{c#J%E0ai z2R{xFdTT*8kb0_1ZG6vYc^XPuDffTV;*v&Xr-ndOJv>UqB2cPT6<3|PHHwC)t4gIR zVUVFhWNxIygSZLxDfSrzdmUP6rIOlLqgJye!q!TuNUYPXO+bkthEE9OD2UG1HKxg!h3Y{{S(>ksplr)MHjvskjg} zM+3GF2R`4|jV3B7n<~r?Z1y{SIQ2L=9lbJ7Bob)poro+l2vSMlWcsKC_X7iuPo7Cq zyh>L)FmsG&fCxFya6!leC%!oE){zo|cP}|mHh{SRe9m*p=eNWT2Lq-REDc7UWcQ3_ za5(3Vdk!a3^tzx#AdH9@BRqQ(IqW|E+VIB)2v7*l3FP5G&N5GP+;-0+j!#hLh89n3 zZC4Yf=>Gt~*4mH*VBzg{=tE?WSBL}O9CC5g)MXp6G7d63k^nuq^yFjIXSn02g*TT6 zwa%fbRvV)5cFQ!F$i&j#DrwW=?g@ebuu#*1e}?PM6yM0Lt{!x04^dDz~OdCK!DG0C#W1I`6aemFBKF)}BbIW@eboNou!ws%K(i zib|UHYO1zbCrBcOFS+W-y_&VPv&HWQ=%t!Onj4+1mZcI@d1>U4=BBQOG6C5&zP=f@ zuo;d~9Gd|d>1A%V-7BfC_TBIuTczU=k1ml*Mp~wi3b8p5l@aBt>O= zKS=Q>TIm(4{^@^QEm{h%LFzfAN)&aGxWbL16c8ZCz|1o$ zt&(YjyaE`qmRTTxLXsk8qy2|zrLWZfB=~o6Fr^{ZHXTn{3;E`z8(mE$FqX=}krif& zv&o~C6+)zGGki|UNwuz%pwWKSH;o+}bH{9^ne{C)6smaI*;izNt#uK|>E)}cwN<2)<{8y-(D7+4XQsSs(zdwbvRo&t)4m{CDd{7Ivcp?ba-o`Ql)gy#;3Y(^29Wgb`)zv99;FhK=lxWy*CYTH=j34`w zoXIC~yp;rl#;lC5r^GS!$ph)~J^AcUt~~`o%XeTf03){qfsal&2l@4vi5r|@fWn_a zp7|eKcklW7Y5SDK&nJ>#OcUH-oc{oCe=Of$*XmbKd2mBiaG(hEqAG<{Q9orzAC9&3 z2?LYS3~s%$PtYFUn9hGLh7fq8y!~{lQ;-iF{JV9Yv5X7>j(?fS{r>>h&~>#`_iTL! zeExsa=g?{~Oo95J*Y%ODeGa#6Q|bPn%dJO(e>2x;!HDBS2b1#e`t(K{h6kbN_WuBW zjx)|P^~d`3Fh`*ur$9u+5+LU|BlY#sgP!sF@2yNoWgus3u16#`Rj>~r0h7q}$3IrS zvX!*O{-9u`hg74|`Q(EgzUIp+M;xtyu|+hK#*oOxi6q9~g+X;NG7bmSW4Rf@KbB50 z{{X%Qr=pJGY?6`VSwro}Yy*`mhDJbHBuoh-agrnmbF`3O^xMHktE+-&SJ_Ug^TR1u z1Az3148NJqMZ(nqfg9;CYHVN?b%GRp69K))F&eJFX-YWiAzCW1S|?g~q%pZx0vg5g z-C0N|@keTe(Sm>(zWpq2Mt8~zgP1sL8o`zvTa6qAf6%$76Hll={ z8Db-JXQKG?Nmb;EdBYi~6;c07@L(#)#m`12J@WQiFVV62QXdQa6>S5sRp^)c`F zi#%wQeo<5Jw%KD=YkY{rq@MK<-ALJTwZa5Lws}upfa%IV@x3;sH%4*m3@{tgxgZGa z3l7|w?^E$*txKA8>!QVK6;h;d3KmjSz$OU<4{67JMtwhIxl&l{OMavBr@7hv<~Z3% z4q&LMr!q!g1bNZIB-%gA<+mI9)vByc_PS~4L;Kd6sixId&@;M7Xz8Y>ywL)3Br{NX zGKDy26imUlABs!Y>9)LR8Eb9vin{G5Sl5es!keb6({(P!vWXRbGc^>I6#*k)KuUN~ zn||g9db>OoT6T{A07Bk;RMNm(YcUT+Iuh}=-pb<B(slJ!hDW!UzZWLTq zwXBOU7OV<*JS&MH_8`v~y3oMX)KuLgt+tnwZmrb% zcAlcC7jna9w^!XKy2^PZZl<(~R~+S~+sR|Kt%Fic;r-WITQ@DjlEo})w9|zGs?S|4 zGbBpJ;;*OC@tqUPdX57CVmlHAmVd+d+6rwQ;~CJJg6LaJ>r2&Un0aL8DqT+_M^mQj zI3c1+)sgIy$XS4SC>Lo}F26za^d(t{ILXLf4$yIuc|07El6Pk(;XDtHn;*Vd^@ZAN zbxhQCboFa|x75>?S*dO|o06<`QGOD#K`a#WsUER{anD~;p2z+r~+BT}x`+w64ax|XNQMJ+SH#7hYS#~-&(+2{Tbu3Gi$Dn)vK zRHH=K*rR0|vVq9~L@21RMqm{`1bTz^4f|0Yd!pR?4w4Db|Z91QSqc=XN&2kX}Gs{O`K z8%V(e2N=l%)Mo&WaB#gEH~==_G0qR?pPwfjq^f`n97Ify<&(gUJ%>4+ zYxUilrtC`$^8gMz@G-9paj;#@wNZ;5?AZ8#||v<5^H0-dun(ou_i=IRs<_jCTNW=wgF7 z3aW|`RRSugj0`HMQMZLBCjgctoU<|LTX~SXQ~)5vw_%Uv_c>GBNh?!D-s)ZCYy|CG zALfj-!30Q=iPs{ETb%DXxY5zk!U`o4MOh_HQ^q$ly<+>VJPvnGU~_@csAURCC**;WAoh>Ej%4T_rsgaHqMfH|%t(&Jp7GqC-L=Q48y6!O@4)96 z&N4ta7{KG4oSfsT@zt8%hfH|?0OJm+xHCx&r%CATEk_D3-&NeEw$a}sp@K5X9o248 z%{C5WfJo;7N$P&;o3$N|+gEX{sEV4Fj+RMkCY8~4BxB;hByKq14hbv(IV;sXTW6QV z&lr44)zvRi4W74ESN)Z0sXLxDvuXV$r;@Ix;@Rg(EiF(|8T_?hBywcPSGa0c9bnTS z)_V^n0WcKStxWD?*lkA(_h(j*4s^;_eM6(yy#;Kk^_yCi$Pj9+3Uw=aDoFlni%W46 zwOAfz8SPI~U0Yjus?>h-RdCjG*4!=zIQOFo@hV?O}*y1KgZ=!auW@P%e83o_0x4}3e) zUKMGYJvF5*)b{#Xa9XCLm#eO*ahIvCsg>TMrdK?JE4WD2QFfw%)4vSd(&(KArHUZ0 zb#}s~!K+L)E#*rZkZ|s$!hmE#%<60Qi{dK%cdpQTK=#XLzJ;lv!5)tz`8mnzs(-y-;_SBMZ8HUhGa}_cM+(uGAKrW%kjmtu!eeJ;L*9k{X(%CuFrU zQ@k{;>a5G><^BEepmh|zr7W?>N#UJbCZIe5_e)U}v4oVP(b1~SA`-=7St*N0 z&f;7i{YrZsRUM+1wdRZwP!-wabGWka+6iov-wFV1afRn5A9&@esc-kHN@%BPEnTZoFsJO&ru)m7JPpQsNrDXG zq2gMW_WcX3{`}&df^_@ZYf+%JO7}M2O*C9dXK;`+kWU;(!i<^54t+pAqvhZD{{Rj; z!BfE?j(GkfuTI7vGwaC&{{U0`Pem$m$T<9uTUa;}0r$inXWZm*&b($E@F0P~jz$Rl zvG~q)=j#|BA@lzL-_O5W_Akr$pX<=rzc1o?8CW6+`Wc_7BxpmK&PVGy^Lc20%0Fy> zF0tiD{{WBiKi98GLFvcw>mFa%_js zpPyO=@}uC+4nuAuoa7(F&wt4DX-M30k;;xUg19}1$iU~n=y zLcnnc>F7fKVI4c9;4KA^7;Pbpg=pg z{J$)ZOnzUtMIG4kJ76DA$mE0l=c8xm$i@oca7P}v&UpFp{J4`GOmXk@(TjoZb>{00 z8cLxYfC(*tJ7naZbHN~E*SDrI=|xgl6$BH;eFq)0&+|FsIOr5orIkXFoE&ma20cbO zJ&$a5$4G{T2id3d&W@}*aBzQK`TA-*dqC(qT}z@aa?;bEwCJJpV3HsUvO-)k6(vIe zj$4zJRKYoKh9cW-^51+ru~n?9R_AA$%TYW#jFdMTIKolNN%(|@Lg>DM=*|zsM^abN)?>mUM*HZ@A5B~rjMR53U=22cGY+H@M;`j%cpYC`ZPAps`SS*&(GD`O5NeUudB7%ZVh$tuf&QuZ@NP0R4UsZvQ3vQGgXYV z7b_gILAn{1Gc7FeOt7fj5y`YzHGm6|(AUbsTd`3J?~!#}u}k@3rZ0WIPxUhZBQUFj+4AgH{<6n7UfjeonDzem`TPsq9X<*VY!AZ!}t(8hvw$&}#m;oyq zl%pn#w$ciWO**O#I;uusFaYOON#p&D*zUT5rGZ+>t?=7t0EJn^Rd7^Nu*N~mF|b$0 zFc^$*I+NZX#rAiG-WFUXXr-gOTy!3ls-&nJpi64f8vBh@YzUDhinXbhNuw$w2`frW zTgOp@+E-9VS!ag&$twwJZT9-rkw>2tk_U!1b;Brl=8bt(B3R}^q=&~-6T(I-B{_~aFt9I-#?AL_C_D|+y2r!owJy2v`sUU>L#E}5*>#5H z8rIQWwC!}_qB;xo3XnY10$O*csH>)0da7ckYGVO;5TIkx*9fmIKqVCwHrvfDT2?;D zrgWNTnig@A8P*mNOjmcBf!_hi3m~n!E~?#fz0`S2_D-wQ@=oFs+vAm$CnZ2-A!43t zsN@6&K*h6wahv%1?#HZjpWH6eol0iP-)MCN7E%RFncGv!a>{Y`InJ!Vvfh<(W#WXs zp}v?mmozIf?nqLGkN-TBQThAQY=fmZc^Hf*BnPA?zR- z$;5*lJ)njskU1cF06`x8! zFfy8`*b(Kh3NH{VBhy+6^t6bHU0*=fJ0uH`^4#vqw)!Br&eeiSg`Rc_L{P;e9>5uE z;0}Yf_+{aRn%79HElkh}XR8p1WS%&dI$BjwShO&TdURn5l^G{@CYM<0+M*_K4&AYKF!WM1pu*O zpUr_JdH8~2*Ty<$tdF$_x+GbRRqEfHfb z3j@vu8-jC^0Qm*r@so|X?mF8PXgA3_A}Rn~*sN%Xxi0MIAO(#}Hd~BvMh8cEBc_So zMvWB_aQc=m@Jgka7jrcRZT0=`aS1Vxm#;1cduELVL=MA$|cx{ z0!YVvz&dHvx{V8adbc-~g}tRDCF(Oo70$|Y_MM{uNbX={NS_k?RBD-OEP7U2h zOP99At!W-hKAEJcNc#fR z&OLnxsr9WHNmuMsdbJzrWp>GZ0Q7lQ4ata3q-d{O4Kd5(jbz=hiYl zewqC~f0x&{S?M4eazT!9p4|I?&&Yt@eh=&Q_~^d}{{Ua%)^NWe`wp|#az|oEL!WPM z{_*kk{TvUO@%SJ5?VV$+V0?${I>{uA5`TV&L6gY&=eUFYXYl#ZhaK_x>#rc%po5Uv z^dR7#KXb-DSow^R4st$N#~(cBpXb)ohEfhm;~yc;dw+hNvC%*Su;^pHGx+`bWvt`3 z*SAMtR|-Z6!N=;~FPT5Deu_^3e6##dMrYi?v5aHaz6n34?th0OKGOY1^#(t&{{WqK ziO?VI`|;5J{{X+wqlnqNW9l>8KR$rqNx=90eRbNv_)k8W&N=>H`~7;_c^UkV=ni_y z#qkouzH!f?@1M~Agi(=M;MtTje7njX`A&uwoPxO?dHDgYqia6)tYi8^Al3(myF9(B|LHEr?}Ah zZ9NJiPSp|1QB148Wp$D_eLHN_6qDPpRB+rVYGU%`f_UR_Sz9qkg@M^DM6)EThepFG z1OwM5)u$TBW2U0G*40zN1az^}TxME~!wCwY)jE5`l59|<$vcgwzIisvULqt~R)Duw zgcnVt$*!a+U;_Pu$8?B*&_^0oDg|=oL+^l9j~jT2#0m6{M02Vn_K@&CuTgk8Cy07N zpx4`GzCl5Gq@;-+rp*gg2d0v-mR-#OsP}YQmWD5O6Zvj`?ge{2mUP{1cCn$Ss*48C z;kDi|G+~4dRFc~03Kk)OpESN{0gJOczag@13bVqUAw3?Wq@=P^(^+*r1e98XPQes( z_Uf9JW}Z8OQbHCeYm#8B@61v6xmS%7`dx z>Zhc0GlIEsR+iF0K#r{;_|Z3=Dwm5Juk?PbgBLc`gVWu#H;~Ey0IaHmz3DJy^8$d& zv>0QigF^yh0 zO)V83*c}EkCX%F(*#{BG2VzUdLe!?;NgZ1xZDqgREjI+04v3d}IB%;A%5pq{E|WtD zA)|OBRsoZN=CWzcmn-#sN`p}wK|@I?ZOHWWsSQLdi^x*W;wNnHDxht~4_=x}M3*b> zq-wSDEs|Vx^~oX#H&@os*`Ah1oU;a4k~t~kL@1@yABB)c24{cNKYT2e8* zPy|Wu@WVQ~lB&ef?{K9v@T&qB@b&K2o+4>Y4kD84BUWEzf}`AQ)Jq*j&ZaXO35F$j z;isk{M3PNgJP@b^qZc3;p;zM{irS*ONNAGVptRzZir-Cc5!UJ|sCT?D$y-}l4OI;^ zA~74s9UVGK3jp&nC>=%`*H^Tt+No4jQiaX|M%qezffyWvCUY9Q^yTU|^lEi$Zk#Ap zuKU`haLaBgD{iM+ij`+_Cm<{ge8M_B8}jVLa0OeiZH~k)(ngaG8|;9h6Ezy z0gQO<7rX9_r>KWY>x<@&p{bC`J-XLlL+*u+_LJP;xYJd&1Ip*jmOELej(I?7qIm!- z3GDVwX{oPtH1(SIR@2f|+#{!|xYufnr5(PVrF1e01+>#fINXuMkp*M56pWl$29fZ? zN9ek0TKXDyz25wxzfj&QYi{*y&beu5MaH74Iz^CU4-O{SaMBT-(f6Jaw!HGvwWYmq z{-aTWCZ0rs;BKCMA%reC1ZrZ|^TgISZF1f#zP6|WMJrED7E!keN~tu?*#~!&Ou;R{ z45c2AwnO3#n_WR>y`j2RO#s3`J-=<$H@!l&er4^iWzvq|jdupP)Io5PB5H(51n|^( zXcVHck(cdXp}aqimK*ik+~<}gcqpjtw=2bOlmlXCq_ff1)g&z8qZKp6k?#QvfPw;7 z#JjyUvqs$R)pHRQs%u5!NgRXlTdx##vTY1DD&ON`-ZzLeN$K z)^bpRGDsi>Vq`#Kdu!Kz82zFfZvt8MZnxELZ>#kG0N!odwe59!)hN&u>V|g0?N2eO zB838WARHY?i)V|v7sY>QEi0z38k&yJWw*l#wTq%uTj?6-TP(5EOI0n-8c3*XY17D- zC8_dSSEPoXA2Mb_ZQ@#$SmJ`2<7yO%5|UU7m`o9ks3UaDWDp4jPFn<#kVjuJx@#8; zgw1xRr>>V!z}Fh(sD&kp8hN9ZNUicLh2vI*n3>U$fg}#fxRSbW#cv$66*LRs_lS1` zNkWa}Y28=m>b))Q$_$cH$xB&KE>utjPr7Sm!kE)!d2u{tp?hCf@My8Kvgv&$p=(~7 zO_8^Pe|frM8tS(3Bh>zdI0aNjGpx$fuhr{aTJywRP}8Mz)lDNx*qqu}(Lk1z6fyL( zB-N@3Bs+H+y#<}4V~!N#7+?l?Il_=R#twUqI}Q_?hgMlMy$rW2y>&e-F#_2nyslV< zNZ_Z18ls{{Ic0(f<&lQtw_-66bHg8Q3nrn7ZGI`~ip>S7lWZ+nYn0z~jmB>-CdCbM znC|q?Ch;(Ww$`l#PO9|}C}ruR*PblNcX{<@slLZcV56lqk<`mMN(wq@WspZsu_A|A zmNOJ`K^#VTr31{|Kmx7Pyf@S?uj$!68k7qkQ?fH7Cge~lm5@o@gO7br)#^4hEUr3( z*F#3#Owtah&gBaz^)LxYZ6TZ)5+DL}`s?oyF5V==C6voiYtwawqMn8c%yV3*B_v^=NKZ_Y4hBl4LZV z@RPH{QyGZ3VH}CEBtWuKuiGekrEnWQTu`$D z!{G#sv6_p;W|chsJ!rVxH?hOiK`kMd6+ z*Sn2OtZApLnr0I^$n6wK6osafaBf7dVNOEEtG5ekY6vM(DD4(&JpzXTXKG0P4WMAi z0Fp@`JSw7=-HhxQJzqubdhY-#ARvV}>BxfK&{B@ZQi%!~^sc?6KH!U`31B}2q z2a+*ASkyLu6)!VSOHZi$J-ACi^$?GJj+Uu~BeSalJjznB%%}d`ipar+;;Z!Ed(eIvrD~t#KMi3^(+-RbD8lkCOpv8^p@FD35j2 zvemLvS6!g24ThS6Na(5I!5{uOo)T4$J6qmXMI}x_>vFYSmNhJ<<7Q+gqK>Sj^|X)x z12r>~vZ|a$zZ?$oNC3)tn}$+;oojTh`^Z;f(j59o1`JAo4j@RM^B-E)i?X;t00tC0 zVq+i~fdt}l^OLJQ)BfH51m0$jI*R+nw|P+}?K`Mynj%5Tm{D5l50@W1+%rbJ5_W^s zxYK%Y^#Q@1HA-_k~}Wr83HgZ45B$x1Ud#%1rJbKbj{Tg z<7=N_oi7aGdlD^XsRTB}P{ z%F z>8)E$$XeY=Wf@aGpdw0~`k-NBGH^9`9s3{K`~1B-e+=~8_*LR=obhi+&}z*!P#P+c z)1k2Z$MOE1C85_>q1H;AF&G<82xIH( z^3Un();~VGP4sjbIr(~g^PY-E8^0c$cll)h08d|^TM==Ran3L~?a$D2jAxu=anYCp z56~0(CMrhV9aY(&WR`U-RKrQUlN>TAEF>|c&I*+)!7I?D z^=c}q5X1u9fD9kk8kgxE7W=JN6s;+pibtDS!4&9%2^*LL4T%Gj`RU}=ekN&+4@*3? zl?J-9CRAHh14BJ@j^r*R-tp7I6+mV+62?^y0cRNMxx8W3mn}i7Ch;!EK@3$XO&z}D zr|7F5sp=@HquaWAgo-F5xw6ItQXLsHHZ#!;PEjDkUK zaQm=JuqBDe%Mv4Qrm2x@s>~rN>BP>eA|Vj2{{TXaemrCXK;-gAV`i|T)`i-W6{^6~ zYK=Qt3`p7`NXK~~%tp12i{UPp(v3RTVBS_J3vW9W9OX(52~*jD<_zg=;pdJ1C&fcm zYByWGk5EldEmb8(rZL^=0?fz(skezBEi4Gp`DTv3kVy+iBRPG`)8|oqxz*`7-&JeP zL0@xtWT=+9(R#aSnLO4;kP2umH*jgAj1Y*cAO&KJ%-&VYL+PsLxKKqsD#=w@Y~5JK zIJeBSa6>4ocOg#b(g`Jb0SpxoKHyUwaqc?8>u;m0rAmpKDzrlr?2Y$BEG?8Jl;d$> zw5A9lw&&NX*(F%0NDNP}XfcT5On^cBesilb9+N@$Qt6hP!ZGtIQKynf-H0IVIR}Fv z_nj}aoh%JN2>kkMG`)2#rYmKNQq6HH^>y(8#HB@9dY0VeZ9Z6# zDODwvRY4!-JuB7bIyQNjj0f_eToaiYh*dekz}j*$co`gHF6i5$vVgl%lKGNG4+FfP zwZ=|o<4~7Z)f$^9Xf+6?t4st{4eEtefFMA?m>G=3rqEXi?~*N^MUq=pzKvS0npbah ztEjk%V~EQVkc}i!Q_9F3Ge*v=gs?1KYp1k5i@?1(6_Zm|&v2obygEwHM<>5(>dJ#E zlVzczlBCO7PZ^ng+GPXW;E2OBGI=CJD(z=kr@S#+tsHgKRr=FZ&}my$#@#I`n#~;b z6qb0drW)vKqpCEO4_#WYnD)3}KJ7@tddH1IPdo&UGD4E$S4l zcwVmN27;l;q^xN%E?5wykb(|L;Hk)Xd_(b5#9tR}u)(Wosr)_BF40v>rfu`dSAV+4 z6v}C5 z4;&LtWm&!2+eZ-*TWAAGv_vXeY}6Q&+p9GtBvo_9Zg$2)6E4%JZ|dH3W(aCMukyvC_{$w-a{iH^#nFHo}uimzj8G%YSi=k zozj|KX$p&PZrLkBoCCdqgHV#lq=ku*Eq!)xMIN3ahfA|$sx6g?Yntf5hOXIPC>V-M zxH%J0k_NhPX-l)s=G%3R`WXfbM?BF?91X;R@tSun^CU3mIXM8Sscl;NjUFg9l=8ATSsiBooO10s-|Mum@q&b74)}EOwK*mS%Vv$>+X3xXe0ky7bP%LD~nZ6hJTp zV=)j9#A90ZzO%S4n69(xD?yeel3MY2vdb!0P{|szM^^OG4YNlE$je6@s7z?0J**YP zCZ*PTn^Dlt^}2%Pa!kT54EIrAb_k%4hU0&v;a8_2aoD8r3#X_| za#U2JG;oBaN0Q@QSc4~*3^IG2FX7)%#ey>J>UyO{FSx?14j2F=K>CghM{axSyKI)$ z)@4G56p(Eu2I68D2buf380SjreOpt1nr%x_9`80;X>{$iLp&7GM#T+dqYN~g<5iE! zRWeLue2Bzhy42Nm*7bQODOWt7eJPr{IANzCFxb*I{I?{y8$unb03#+TT=nJNvX&|x z6-<=&>R1+@E1cm(A{38en2D6g?7(jP1&((XJGqV;lFNL$QdLKH)K@B`6Fh+yqut|; z-^*g0O|!>bQN_`B6_LnDGmp`J|i1Qz*lAkq$)BC zCgMo#*mSFsBtVmCW=T|Lgg2otPq(|JIE7CMS)qK-fa;TkQ>8BW$hM(H%Dt^#?g z#~YBS1PlmR62lWFJ^7tSRHXzEBod?Di~%u$1~~7D@2SsKs4FeCYpC?Z2_%n(y4nPc zDe9vtFwjRE557kpU@MHAq1?F!UFbbmL9evLHBm?K%7UJ@nxko&3HB;Y1hKZ@2xcn5 zmmFZKk}+L+OHjjdw^CQpO&hC5t5X7Gm}g)6u?^rlm2gJaAOJYY!Rkr)Nv)x>>Q%ST zD2kHpP&S5K`E^@PMstDYDOJhf5TF%2k*`8&FcKLhf`K?7PXvBh9>+RKS7W7Ifg~|l zmIfe@Oa@pyK{=8mPX?6n2T}Vnc#vMt2F6&BUvjcO4L&p1goyeBc7etX%7^zODthXz$_b$x#>mhG2t4qCe}AW5uPuJR!}@isj1%9F<(~a2M3^8(NQnoL^P&|apY8p$MfgD^ z=N-m#jE)DV>HB2kBq}?)06ua0cI$54++#f*RTsIz2RI}QW7nR3T<0IhD7jT)KOyuV zhd<**ECdBGSwgV_F@ z_v1Yie*Bzc2OpoW`uvBe^y$BEoc{o5{`wjUM93r3I~@*+VpDwk_B0!Qz>=7eIcXsTEtGK>L%Y&2HW1hQCKw?!wl30KM1oMD+&UpU- zy)fR=SK(*y!sAGjG*y@C+kLJ-Dou|SIjBmy+1RTqh}N2w<6;V_GOCgR!G!QsQ%yjz zyDdrB8fe}8*NBxYQbi;2sW|6=++cbyJah3P&pMLfBW55Z z8<@z%f@F0Zg-#q>*v!wkwm;FIYioCuI|B=L;K_2Ek~(fUOyRbLAd&oUyZ=UB-4c5z4l$RP*REY|Qr>KDBn5M}@P(zno z;0Xfb2N{oAnQ08~Sq%f)?@2R?`XJt96-1o9RWV_OGCJ>Yg@)-l8OatpY>I(flHJBh z#C-Pba|45?H=b*-dT+H?h%lr`GD99mvE~LdI(95NrK6eFo}yZHuBEA^ogkdXN>xPA zOoihrOjAVf6v>~xhEk3gWltiu^-mNujXNx|+3VRJoVX^UD5R0$0Z7im5+#0edF_n! z%GW9N-M}uBe#};&V`-#XUW~;R>UEB&vsN3=n(G zPd8(b8;oFX3T%P4JODv4gAi~Bd5#Rp=bbjJ?rAFwunZbvT47AaV3;xp`gSriLPJ$i zNmqTYQq`5N%pI~epdmp3{{ZEHGO98Z=Quq#J|}ACqO6MDOvUB%mH`@&S?a1r7Y7VW zE>%bQl;jL&1#s8M?D|GKlBkL!PF@(dWpJP*XrlxW2qcoZ&OyOEMCi2*ZS%#A6G;SB zHPwx%X>XM@v~Vp<=|M?f1l1CGFBHg3vKZ;9m7{EzkPvXI(Qay`8V#JWTx1Xwucm#m z$GjOl>L##wdWsl@rRb7CYLy^v1GECF2PBX{jZE(t>)zL@{h$0PqmZjvtaX}}`lwYF zN})jw1r(AZg2q8rPhC@&;ae<8Y_RQA)GSeXYIgY}Y>W;D)CF5{$pqw+^WcMkNa{A) z_03O+{?MA6SJ$_hO=vUei)_JT+9|0GZ8Uf>sz%K7G}5yqVKXBTHWeK_H~R39RifpZ zLe9Yk_F{yxuGIjI++YF8C(|RQ7Bxw?t94ajtJG$UlY#;$!QdzYIQfY#YEa#Dwv^sh z+J&_V?pmERHAx=tRoY;l;(O^H^G{u_=&R%osi>`~mQO58Q*f%DuC}3;J-&TR)e<{Aj-Ub+wy46d z!hrPGX!x$S+nV01(JLxr!MDWgh$B;y`=e4xGGqlAC3bD#k~&*oZq+wx=__lN3V8^P zF%k%)RZyxw6BD~FwTWU*2v9NrEee0U-8EJ&%F;9Zt12)sSd-k(w|y&ijcrV*RRoYp z2h`+5f;}*x3=D#P{c2jGvMYRNYa)Q8<(QGQVLO&BjtM6i=OlD{wy?F?^(7XUtf}&A zYiT2xO4}9)YbD(x+a;1lT-7WJvg`_@FR_O3#PFWBu9hErq+Qd~`EtMtf;{M-cx*5@ zY_4zt$r<>EJx8AsoL|}*qlx0KjRci5Gr5{uft}@P12^IF#>9*tL?^od&(eW6ROyG? zOp*)NfcQ07FlH(-w&5D+q^DTW41+2v$mZ(Ag|T*vxF&H*{ns`sxVg4!)QE}9tt7_zqL_`%eO(B{#X6=Sh$*`BtLwJ2>()PP` zB^)gxP(;rPvlibxj$TRTEuGS{yE_&qIpB|lQ7RUNu3hUfDMok1g)AZ!M+7e{VhG1N zPU7dxwxw@ES8^>w2PhdpA;{*XNn;Qpascn*g2Pcg64Sv7(bM^RVrdld8N#W8omEG| zp$fFGk}yEzl8HJJe|%`9ncV{dyQ#ogGw}dhaLZ!=Wm_ce!0aFTse+bf!hyqc-vb~5 zbAmYpC?!X(Mo$(Pjbyvou^2ot1n{{bl}-*+jtR#;nd#+PuT`M20w4v%2_Db@G3+#w z(+Nxh05~x`7!m>R$If%}t_=r%qbVuv^;EPG2qB)4qNt1)K4kGH+|EIE#$*JLc*}es1i^4&SfN4# zGZ2IlOR*#&#z@G+f`(x)Tyd;#W$Sc>#0-St8&U*OHQF#*bYL9Pd!CcjI#0xnGdtR@7JIBtm6Y4#mYSjGj!H?3FCI$N;U!iKB!XFDaLD)! z&xBqj4IQbded2hcwp>~1YgSGKY*ZL(OKr-K>adnMU5p4n2_}7O8+9hR(lyq%2`p8# zZq)A)8S}~sVRUW49gG(wcjpbjJvL+eo!T)_X*fP$2hz&;Ac*%qz>Yn%6w1}3Qr4^x z^xby8cLo9v9f*!W_~%pG+3&^b9~k^PwrUsvrMlBI+b_1(nI)QnjC?`Iags4dtwrr$%c(KBg*R{JRWSt49b|3>3=lvwr6*W8 z$3Ne%*X8IB&+FED9YvpSk=ULHIgj|#uwxPW_>gty>o`0gpKsHnvfuzQ-xCsvCkN_o*5s2WNB0{Pl%Vo8wpKu8F`utCA zC=p{S3GW~uZ}F`mSPT$yI5-C%KbOm(PSKOVAJ66a@;caeF(UwAV<7zSdC2*J+tWU{ zAf_$HEOUSW2a$z2AH)OP{{0}~1Z^af^T!_pog79zzCFG*s{s5#T<6pd51}8J9nNur z26A~|e0|p+;hi@2N*a$U?|r4J*zr0?Jv|H(Q^P9-;z8#;ra0L^1yXXSDb$Bm3OjmZ z0N{Ob-?{F8Yz{hx9@jn@Y75Sro5cMcQ6!p|L|E&VYXhmCmj3`}j(>c8gL=tNakhh3 zQ3R2>j;<-Drk*yJ-6y76#c93O6sp@1nl~N;e=Ph@I+E#4MQ>>u(st&Yk4dT+d1`r% zc{rbqLaTkz;by2s`Tk7ei zh^PHJ=SxzKE%i~B+9W7d>E1)PXT(-wzFXj`gA=u^Si{Q7 z!^#RJWkrB8C_v{sLvY)$o=qurxx)1=J4YO$NQPMVZ_1ovQzB#ndlhW$&I#|RTJ+00 zR9Tv`v(s=K2r7<3ou*GC1cBS`I@i|nv9v^{jHbG&XK%HTyf0{u045?&w5ssa#A}V_ zzB(JVW15V*F`qzLZUXKGB*v4Mikj59 zQpYt(F%pwTSOkx2s0G5W7*@(LQOI6KSY^kRC#$K`^20PT8p~B32q;Es6vR zBUF{S1m_tTJapV#spYG+QB(ouPf1j0-IakM9!J^>Zs%cW`3HfV^T2W~`i|A4?X&7z z(!{jZOKenDXk=^~jo3x!NFu@#SshG8f)xcz7GR`w+M1b`Vgit3>DcCT@%T=hHB|*b z8;c_C6tz4yn_Z_)tCIff=E~*LHA-mLb2N%n9N}Hqu^B2s z2Wx<{@Mpv7UkW@4@fX^sS5o=7Fr6!i9 zsIG!Lt;2H}<1HGnXCy!W0Fe4_BW?gv0LjVV^%*=nwM~AyQlSzp4IHZ_T!Bu-R0ZRU zgWgt*CmGs@B#(!wrD}m<#tqW^=dpb&`l@+Q# z`-lw?0RVz{?ynX;&( z3L{=VEO#;xPCguDbM-+~%=1WGfXk7c?S&+kCQNO8$2=;q05IL%RE1^!rdg-j5z?MD zAQnZ`@Q9ZuF8Y_RKF9nmhgiZyt>)#0^6JEZ>rc+s-cRW#rYsrPbjQM)QwhTUDL zuNt0ZGgq1l*}(@BNYwPwN{#>_nUzATHs8n-jC9ZI7_}aSxYFx=D+Nqa#}ixbG&6bW zMNvUj9JJLH6G)E>C|M+hJhEHxtA!~Okl@#Hh#6S8+VtEEs0B*59`H_mu^7`aZW^I_ zEH=TXRU#GB0q{%*+DTGG$sPSp}TwDHL!mMa?w zqsPDqh~#a;td^^u3w18`VG@ss?qvnC2`qU5LZ~~Lj&QjHxeaEESTyFBrSYDUJ=g|m=aNkS07K4^ppoi`C5Ql?LXZTUVh1AwJ@KIRRhOxV zrr!-B%5hTacFoQSq>m~jjDo?c9EHdRB$-^5Q&L7L;}PRH$ZmYhjNk%&3C|-OdgOvS z^wQF-amVoO!u%lM?e!pF01inUV}LRTLRq4XTapMZ&PET*oO=3W2kVS<*;i;VyNLrl z!7wm;508JHJ7K(y#3%zBLF9oVJ4Ai_>s0j~Qm#t|0D=_Y0083vjDkCjzbs@N1GQ>Y zQpO2T@vZ@X#eslE1_8jvGlEV#;~jA-rt=yy*g45K&IthEbA#CNoc8rN>y~OT#1eP~ zvysToagcC342%z#9X+>JXk5XD_S+k0F`V%c+C9r!%&Mjd>?TJdA~HVz0Pu9(_>V{L zRP~W>0trenP)^LS0bHg)ETkSz3hpYo408@N#;Ko6YkF0Yf?KZ>Ew;R~`EjL8Qc5Ui za{Y_%cuC`N5TM*L7Hw+hS*Z$wcRFoTgSki{!OjLa9A`Kf$m#@Z`(cjZUV)ie(4y+%-e;Nx=X(|h~ORRFyQd?>z ze=U&A@WizBPG1a*A#f!<@{HSw7&Q@WzfE${cKXSV=SysGNrpSO!zhHQ2Lu%(2kYGW zbt`SRAs&sSaQrEqh&Sx8EkP(#ITTCWOsyrD-W?YMCT8B)shm#zzjS z@&|Q|0mo4NX3UBnLjT<{qvvi_vkBkAamFgjy`zq z4tr;+0s5IeqzQ{&}0K{bDU=xJbb>n`SaF058_Gw{zI&m z?UVUr{{VkJi}w}KR2eI@&FRw%)k%zd0{y2j; z#(y0MXF?vC0o9e1o+U_OKX}*4{{WAk0qU=2-xTX~zPP7ZtyiHv+e+$+b0qfL<-TcM z%rQ*BG!@h&NexXD$sDR8S))lQ<%(8A-SvefpGQk_jnS&+m94gjkwcfNFi7huP)6A4 z!kHv&f&!=*cLd+>xBc@)fBaD%h}7D4y5O<)#Lb*J~1u$m|)tD5~s<*1Qr>6$Z5 z2#RP7jX6hlM`+*Xe^t=dNpOOOT6LkJw8114RK2+!g8rKZ&uU?=Yqq!PFmZ|X=0z{mi+SmF|QLogj?Q7MyN^Gh_5Psg(P^_R~ zRoihO=LDaRMT&-|_eyG>b1h{-D@?#FQR5a6NN17X_p$Z#qJxwcarjlxk zWOY0^Nts?iR{^r<$_U_gMELg`e^E+sESDChD87}5XxMJ465j?b}=o6 z3cwA#xUF+er7CpD*a8DjZ~CQ4Er}bm$nWhsEgO2?dtB3~&rnsa;+{5~!7`0aC=UQ~?fh%*rN!> z=8LA9<6U&UQR%HEY>bG~y7hFDDrK6biz>w$J2bTwQsH5MJdNv=4~N>WOLmpK*lFs_ zRCYR>ojlMytt_!BPVz&#P2(~7QpOfA6d()$01mB}{umz3mn)styV^@zTV5zG6w}&# zEVo=BMpU(}b4PI1=#zso&2_1xiYr8@u(+U(dX#A)sfF34&3&kZ8C`+T-WCBp;NX5R zFf-)WZ-io4vSgQTSDQXr~nLhW=mK}}{mkkKSYOC-&yG`Bm z)FldaE-xt}ktLhjr=Wqr|KMx@O5HZFAusO@~P9Q+hw$uYS z3{H0KCm90-WOI|oM{JIe8cLoRe&9+WFrtNxNKqzLfp;N(9!GKqJlUz+jEKPVwA+tJwvPSPC~}AEM{HBN`_qS2Y?SJ*CX%9B!lpr0szhq zbHbm+!5{rjM@I$-KHBFCQD6`VBhn)|P)YiHnLlvBmJI?I*8=GhxcqBoXgJBI%NiFX`r1mpwrVU?Om2p}At*xUd)>9wHLG*(*_zWGxeanjFP?7797jsDalVoTH z_htcdNgZ<1?OpG7`^9}cUim7!TkSP-#}qcoR@{qUF_i6^<0%_ZF5h;in2*LCiRv{q zRf+Q&kU%6680{YXM}FrcOcCmqs1ZUTsMQ&WIWr(ABw|P{9LC(v9UT>?C8oAgR@`wN zOvw{c+GA|RLdv2uQ7U{u)=7p6%Gr%D!BwSY4>i8f?*W{y7${YXAhy&8cVmD^><4pz z7b86&H2qZtHci^+ZKJDXg`tK!jSW&uo?MBbsgq=Y?E)7~+>xB;4)u~%sVpIqDN2~# z(m55146g($d>;wO$xzGNf;udgRS^U(W(4t*`F>h*hyVnVSofWyvEu*;<39#YxD`Z0 z3lIow?7<9h068Nd9^mJW{A6^IsHwvR4VGYV4o?F(&pxA(&OqY>w@(G`&rj}+P^?3_ zkh*}GATQzs704X&bMpu0!dzyKidm&%N=6%NG5Cna2Xozz004N$V~mRJkq3w@B;)`& z&O7Jiog4{>BR=dtGI$?7wdrbtKm?JonB?cU131S#9tY?^`Elf^3X>2?_=&+h4Cii7 z$l&pk20GJCb)~9MR#fv2;9`(~>fMiX@%K5v8TIUO!m67J>QBPJ2RXHaD$zLm3WTTmxicxHo;O#9O9#d@W+e;xMjNpzrz-Tm8ghyw!q>(99p^irqs3gef zq!!#k+^2;H;v8@~cCEDRQl=zUAkxZ62XHuC5s*d+?l?K*oE(mtB-Exsz$l|9z7Nys z9{l8KCU~f zSwiGwXQ-v@y=|(iyk3pInx<81xaa0F#wp>ZNc{8}7+^jhGd+o1jxqEH;1`3|dk2S9 zA8b;?S$4fvRB8*1v(v#OiBofim5dvm8Hk1`qKpP&RH;+QBdF{9s&=$!El6#yc7nU2 zLi?X(G4=V>MdwqkV$Lmr^WLi}mE}-3nC&KDF)AQ&96`*s$oY@lbONu)e?GI&>o$6& z;}IUj>6Wkn9e^K@>pf&CK8N)k8)5m6n=cY3Be;g_Ut`=zMW(Jhws4Yab5zAqW}(h zfCTa0K5~B)O=vN+&)5Dwzj*us8UFG7y452DQpK>KF=9!^0+M+r1GX}AjP}kt+x_++ zkIy|cUN`DVboYnXgrS^4cD^9f)|U&;)OW~pf` z_7fhL(-CkXj@?X=J#9juBkyZ&CU;pIF7djc3a9|A%cYjLR$d~vP=^(FN0ZK~18Uo? zs_K=MkCiG}7IaE<8=6{%Qn^^=Dvy4Ml-X>pRMV$LX``@MfKeo5M&i5~Fmh%Lvm;L1tO6Tl1S+&v z_>veS$R_}{WO6_(#n_ziHxfwCJ#z1LVv65iRV!_V7%F9vhb3Z2+2n3A3EB%O>;W0) zvYx!jB(gum#hfr=xESORNXLBoeR@G^t8M1{KA+Nd8Wy=;HHM|L>6>l37LfbP*VZD; z93s4)L5@EnrPUkDigwRD7Rbcx1NlPo2O=gXJY*g}p)GYwN>$vSE}E$^nObNE-T)ri z>;Wcp`}-z)DxV$oBr)Hu(m|%#=`X$@)l$5aaJ{s|7T>2X*)fx(Pg2A-EFg5sV%n33U$OZlynd+H6=WGKn4e$tB|ZRri+)*-J5Eh*By#Rcr`pDJh~*p>Q8) zSVpxqlLlH!3TZ0lF`+UDDb&1*s;--ys^JDyvk(`aI%8I&Re23;;Ql`_LibQGGaRiY*l zV5P6dpN-^Qz(%!{bv2C{Q~vCICN2|5PUy6F8UwD^ThB>t^tEjcupm2g(8wQ?&3k|lDF{wbipscBo zA!TXm=XNa8F+Tb_A91&;0HK6IorfP8RxD3!usQU{J+s;MjTNSXp^#j`AY=m&Vq^e0 z;B(C7eyLb1Ed?Qh0YpLc{{RX90EkZ9OH~JH07`&0jD@%Eag3f6 zHckdP7|+adbDZO1aWqTi%1Xv0FXf>H+!E0=a)Mm0WJeANCnMBFcfDAu zVWDy^w1O3AsV0>kv&tFRC~MfN)FOZYrmbbDSk&y^fmrqGBO`QbR6ZO=LFcvx(VlaW z{#*>MJqb=%(tFJ;t5T(rHt#q$R9zb?1aYACv?cc?J@>L z3={Z(BV7GYd84{OmDDnB*bH;WA~aJ|O&fyI%@l!MWKGNpjq1!Wg@`>ye-gz_&rDnv zpPH&O9nO$tMkk|v<;cznSWKB2#ygDh(~GMb;YCj*uOrT5;Vx0AH4wxw8Y;NJ+gS-+ zqzQ?W@w9HID$ToGqq!uJ5E5O4yh`3=a>tcT@U{qeTpSz%%EZRX2q&e~O)|IymL>T7saw zsaGgM6#IlI!9%!JmQ|3e?FXeD+S@}43^ zt0*C(Xv#8xy@?$yZn{dMSOr={e78?AwyT!d>AQYG4wXQZEgBVh z0=Z%lS$Bm5V{uXc0GFaxzKD z1apwXzYGUs*S6^$x?5TZaqg8cG$SrN*koABO02+=BnO`82pkM?(=lkgPh+f_#a}y5 zO8d<$nGUF~10YiP;jxXof}{K(;P7Urwf4a{1egQ1IPahHpjImr7*z-0kRgZE_WZLN zSwd*yAh=X*&A9Dhi3S-!E6EB0IqW?#&su6KB6@kpnYBnHm&pVi^Vr~bIN*_vK7LAx zQc<`tF_7oeByr9M0FZP0?e*zDU0DZ|%jO;xh7JM2UN+>D&#B`W&pn9KViK_fvIvfH z35;_&z{Gv}Yg`tqZliGl$tETxM3!<$Y=H^iS5g#mIb!OE1;z#$!0&;$9(r+V_W7j?WMGr9?*I^344u53f_r10 z20BMNtxmSm)Bv$Q@bxc{Pr(~4L+}p^ww#Z`2X5IXqJ?KdA;H}w zPX_Gsms}it$OMo`192zf2OS8YR-}tKB{yvuAd|ElF9$d$2LnG)M@maAJMAk4ER}Wh zkxxNS0+xB|CtofI;tIJZ%yrMgNF;a2#Fa3r0=WvRdBGq6ApG{{-&N*fv7fxL009zx zhx`p#U$9+{gHzpg2Ar|bt4&Vv(p6mKO|iy+!CP>Yxdb!p@+sr^at`gF3^Bdx8Z@?1 zQqVyWc&VUBkmYlP8*q5J1 zXrYoxSIlT0 zgN{C*^}U~&NO&!>N;VE+KM zp0}pcjF&2@LtAt`inioo7-3a^zATiKbjq9l`k`qlecl+5qxrX`U>QbIbSeVO2{;2I zw;u`mbw{4udYh04L;boO=!j6RXF7ttr*&m9DBm7Ix*rz$KcYL|6-= z+l}`2=BH6=8rg1FC-{hJs*S3s3aBcOQ!G^IxFL2kh9%hasnt%j)KJ^e)UYgPVUk3< zcHo@%K->mU20rFokwWp)E zQC2Y6;49RtvJ$FNEzbgMa56sjB_D+2A)hO`P7YOh9)ljItAqalhn}3YTKp59`$K*%dUF%}@f7HH9h<@1ARCaprEEV%D($v*bH7cFNtbXqd zaRnrRsyIDYF6*_mTUs>0CcR-umL>w9Q8@32AC9N`J*c_3sO&&nIyJ5%{Y^~^00$q- z-g{0&>ahGdwa-naY_#=3yy|*?d6gNr6|Aj!D{8v|lG9GWo&fY4x#_{U&hgWPOpi2$ z2aFN4h68tO5PNb!&jj_V%^F2R5sg(o=+Kfb^s5{j@ScD)<*J^w_)k?C%4P# zj2^AQb`)HCR{(Jf_++2Z)h=4KU`rkW&T>xTPst}Z`bLu58C;dl1B~_=DtW;>xZvmT z=OY8H;5@}f+yT4d7|S*Q#s*J*Gmk;(*SpA#MnLYl`SZZ;c|Ff^dJ%v#$70z10mn;* zEC=O3hxXK_&_L!)dv;(C=f;v38*(EnI3V+|^OYp$Cye?G<2cW5LFqYF07B!kGKFpf z43!=Iamg9RPta!yYWW?dlXEfTj1oxvY&&Ne$FE#jPrxz(-f-C&&O342`{NxQT!9^= zpP3{62AePeh)^O=*C2m^@j7Mi_PJuHnj*XDBnPEQyy(^T1O zH1$uvQJDq3rD+0f-!&AnVPBHF-j+Z>k$DGpNmmMbnD=;+ST{O?R}4KcL2f@T26La! zJu-UTfVR}Hmm6-KBFiq~5VPe*P5?ey9^KR){XC?^kgz1tOHKJ;@^Hdh{ zi@FsXiELn~J(z7Es2}IaB#xV!ifAbHWCETwj8!>~PzQ9BOk6MiIcOtpINS;KJxL!9 zsUVs_n<;~J`t8%hZZ;ZCuNaC0goXHY|U{@LBfO~QdR{->!zFA|n)w-l&G?5jM z4#Ax7VetaF&tORB1Otv-Z65?w)i+vr6h{nU9T9j?#NeEE$=%->$QVB~)~{nU(kz6K zsFDsyA(Sx~Bhx>x1D>8zs&}H1i30`?-Gd)^I%QaY1FZB5&<9s-yJtPqJgG@I>^HrDT^^Gpye5XCyeB0BmsgCY>ql{Z$JYZ z0fOw|ut>;IG3)7{%cSa`ItKGF+jjxL>~g&Ejz@ku<2mY0>4wQUkUtUt@7RCP)M2d5 zf%pqgAaYEopKgAdOxvs8qJ}k*jz(0BfJ&m_i5U&QjGPPtPaO5*sb_qz8&!6w$jNLT z4t_+8{EzNW*{BMf$j0}@%f*9B(8-iqiIP2*o9KVJo4$s${!+5V`*Q)dq>8j??a-s1P zU0Y;m=;Vf?(@!`miz7hNEbkuBPSWVgu1Ez*BP0%?H?#hT)7rDd`!yBvk*euaFXWdB zj8ksV!)e^0v2CY<*e4_meJkjzHMYg4E!1|pSm|lwr>8}Y2LVJ%fFD8vjAI!3bqCh^ zgWFLQP&Vs;M(K^awt_(f8Hwz9I;(X%g1cy}fC8F~ATbz~5MycfF&R2k#~LCmYBt8I zsGtS>13PiSAc5bIdF{tW0{{Wo06%WBPjWyc4CIWGKt0dv>5O1w01k&#rC9ZMAa^Gp Ue;+?OY=jjXL=MC5AJbp|+3&~1%>V!Z diff --git a/imgs/video_up.svg b/imgs/video_up.svg deleted file mode 100644 index e8987f5..0000000 --- a/imgs/video_up.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - diff --git a/imgs/zone/ad.svg b/imgs/zone/ad.svg deleted file mode 100644 index 3004bbf..0000000 --- a/imgs/zone/ad.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/imgs/zone/animal.svg b/imgs/zone/animal.svg deleted file mode 100644 index 4f7708d..0000000 --- a/imgs/zone/animal.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/imgs/zone/anime.svg b/imgs/zone/anime.svg deleted file mode 100644 index fd797d3..0000000 --- a/imgs/zone/anime.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/car.svg b/imgs/zone/car.svg deleted file mode 100644 index 6d30f0a..0000000 --- a/imgs/zone/car.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/cinephile.svg b/imgs/zone/cinephile.svg deleted file mode 100644 index cad39f4..0000000 --- a/imgs/zone/cinephile.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/imgs/zone/comic.svg b/imgs/zone/comic.svg deleted file mode 100644 index bb78da2..0000000 --- a/imgs/zone/comic.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/dance.svg b/imgs/zone/dance.svg deleted file mode 100644 index 87a5ad1..0000000 --- a/imgs/zone/dance.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/imgs/zone/digital.svg b/imgs/zone/digital.svg deleted file mode 100644 index 56ea8f9..0000000 --- a/imgs/zone/digital.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/documentary.svg b/imgs/zone/documentary.svg deleted file mode 100644 index fcaf707..0000000 --- a/imgs/zone/documentary.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/douga.svg b/imgs/zone/douga.svg deleted file mode 100644 index 5cf324c..0000000 --- a/imgs/zone/douga.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/imgs/zone/ent.svg b/imgs/zone/ent.svg deleted file mode 100644 index d938420..0000000 --- a/imgs/zone/ent.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/imgs/zone/fashion.svg b/imgs/zone/fashion.svg deleted file mode 100644 index cfb6621..0000000 --- a/imgs/zone/fashion.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/imgs/zone/food.svg b/imgs/zone/food.svg deleted file mode 100644 index e554eb5..0000000 --- a/imgs/zone/food.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/game.svg b/imgs/zone/game.svg deleted file mode 100644 index 59a2188..0000000 --- a/imgs/zone/game.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - \ No newline at end of file diff --git a/imgs/zone/guochuang.svg b/imgs/zone/guochuang.svg deleted file mode 100644 index a10c3e9..0000000 --- a/imgs/zone/guochuang.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/imgs/zone/information.svg b/imgs/zone/information.svg deleted file mode 100644 index c33d838..0000000 --- a/imgs/zone/information.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/imgs/zone/kichiku.svg b/imgs/zone/kichiku.svg deleted file mode 100644 index 2d74f85..0000000 --- a/imgs/zone/kichiku.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/knowledge.svg b/imgs/zone/knowledge.svg deleted file mode 100644 index 8ede0d7..0000000 --- a/imgs/zone/knowledge.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/imgs/zone/life.svg b/imgs/zone/life.svg deleted file mode 100644 index ad03a79..0000000 --- a/imgs/zone/life.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/imgs/zone/movie.svg b/imgs/zone/movie.svg deleted file mode 100644 index 5f691a4..0000000 --- a/imgs/zone/movie.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/imgs/zone/music.svg b/imgs/zone/music.svg deleted file mode 100644 index 408c93c..0000000 --- a/imgs/zone/music.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/imgs/zone/sports.svg b/imgs/zone/sports.svg deleted file mode 100644 index bd4c97e..0000000 --- a/imgs/zone/sports.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/imgs/zone/tech.svg b/imgs/zone/tech.svg deleted file mode 100644 index 4c3795b..0000000 --- a/imgs/zone/tech.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/imgs/zone/teleplay.svg b/imgs/zone/teleplay.svg deleted file mode 100644 index a6a39af..0000000 --- a/imgs/zone/teleplay.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - \ No newline at end of file diff --git a/live/info.md b/live/info.md deleted file mode 100644 index 5eeef0a..0000000 --- a/live/info.md +++ /dev/null @@ -1,971 +0,0 @@ -# 直播间基本信息 - -- [直播间基本信息](#直播间基本信息) - - [获取直播间信息](#获取直播间信息) - - [获取用户对应的直播间状态](#获取用户对应的直播间状态) - - [获取房间页初始化信息](#获取房间页初始化信息) - - [获取主播信息](#获取主播信息) - - [批量查询直播间状态](#批量查询直播间状态) - - [获取直播间信息](#获取直播间信息) - ---- - -## 获取直播间信息 - -> https://api.live.bilibili.com/room/v1/Room/get_info - -*请求方式: GET* - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|---------|-----|------|-----|-------| -| room_id | num | 直播间号 | 必要 | 可以为短号 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|-----------------| -| code | num | 返回值 | 0:成功
1:不存在 | -| message | str | 错误信息 | | -| msg | str | 错误信息 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------------------|-----------|--------|-----------------------------| -| uid | num | 主播mid | | -| room_id | num | 直播间长号 | | -| short_id | num | 直播间短号 | 为0是无短号 | -| attention | num | 关注数量 | | -| online | num | 观看人数 | | -| is_portrait | bool | 是否竖屏 | | -| description | str | 描述 | | -| live_status | num | 直播状态 | 0:未开播
1:直播中
2:轮播中 | -| area_id | num | 分区id | | -| parent_area_id | num | 父分区id | | -| parent_area_name | str | 父分区名称 | | -| old_area_id | num | 旧版分区id | | -| background | str | 背景图片链接 | | -| title | str | 标题 | | -| user_cover | str | 封面 | | -| keyframe | str | 关键帧 | 用于网页端悬浮展示 | -| is_strict_room | bool | 未知 | 未知 | -| live_time | str | 直播开始时间 | YYYY-MM-DD HH:mm:ss | -| tags | str | 标签 | ','分隔 | -| is_anchor | num | 未知 | 未知 | -| room_silent_type | str | 禁言状态 | | -| room_silent_level | num | 禁言等级 | | -| room_silent_second | num | 禁言时间 | 单位是秒 | -| area_name | str | 分区名称 | | -| pardants | str | 未知 | 未知 | -| area_pardants | str | 未知 | 未知 | -| hot_words | list(str) | 热词 | | -| hot_words_status | num | 热词状态 | | -| verify | str | 未知 | 未知 | -| new_pendants | obj | 头像框\大v | | -| up_session | str | 未知 | | -| pk_status | num | pk状态 | | -| pk_id | num | pk id | | -| battle_id | num | 未知 | | -| allow_change_area_time | num | | | -| allow_upload_cover_time | num | | | -| studio_info | obj | | | - -`new_pendants`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|-----|-----|-------------------| -| frame | obj | 头像框 | | -| mobile_frame | obj | 同上 | 手机版, 结构一致, 可能null | -| badge | obj | 大v | | -| mobile_badge | obj | 同上 | 手机版, 结构一致, 可能null | - -`frame`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|------|--------|-----| -| name | str | 名称 | | -| value | str | 值 | | -| position | num | 位置 | | -| desc | str | 描述 | | -| area | num | 分区 | | -| area_old | num | 旧分区 | | -| bg_color | str | 背景色 | | -| bg_pic | str | 背景图 | | -| use_old_area | bool | 是否旧分区号 | | - -`badge`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-----|-----|-------------------------------------------| -| name | str | 类型 | v_person: 个人认证(黄)
v_company: 企业认证(蓝) | -| position | num | 位置 | | -| value | str | 值 | | -| desc | str | 描述 | | - -`studio_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-------|-----|-----| -| status | num | | | -| master_list | array | | | - -**示例:** - -查询直播间`room_id=1`信息 - -```shell -curl -G 'https://api.live.bilibili.com/room/v1/Room/get_info' \ ---data-urlencode 'room_id=1' -``` - -

-查看响应示例: - -```json -{ - "code": 0, - "msg": "ok", - "message": "ok", - "data": { - "uid": 9617619, - "room_id": 5440, - "short_id": 1, - "attention": 11919499, - "online": 0, - "is_portrait": false, - "description": "欢迎加入bilibili《快乐运动研究社》,和B站UP主们一起探讨有关运动的经历感受,解决身体和情绪的“疑难杂症”,寻找适合自己的运动,一起跟练!本期我们一起探讨:运动健身能缓解社交恐惧吗?", - "live_status": 2, - "area_id": 145, - "parent_area_id": 1, - "parent_area_name": "娱乐", - "old_area_id": 6, - "background": "", - "title": "快乐运动研究社", - "user_cover": "https://i0.hdslb.com/bfs/live/new_room_cover/96943b8d106a777a34cf796421bb4254163b30e1.jpg", - "keyframe": "https://i0.hdslb.com/bfs/live-key-frame/keyframe08121926000000005440np0q7a.jpg", - "is_strict_room": false, - "live_time": "0000-00-00 00:00:00", - "tags": "", - "is_anchor": 0, - "room_silent_type": "", - "room_silent_level": 1, - "room_silent_second": 0, - "area_name": "视频聊天", - "pendants": "", - "area_pendants": "", - "hot_words": [ - "2333333", - "喂,妖妖零吗", - "红红火火恍恍惚惚", - "FFFFFFFFFF", - "Yooooooo", - "啪啪啪啪啪", - "666666666", - "老司机带带我", - "你为什么这么熟练啊", - "gg", - "prprpr", - "向大佬低头", - "请大家注意弹幕礼仪哦!", - "还有这种操作!", - "囍", - "打call", - "你气不气?", - "队友呢?" - ], - "hot_words_status": 0, - "verify": "", - "new_pendants": { - "frame": { - "name": "", - "value": "", - "position": 0, - "desc": "", - "area": 0, - "area_old": 0, - "bg_color": "", - "bg_pic": "", - "use_old_area": false - }, - "badge": { - "name": "v_company", - "position": 3, - "value": "", - "desc": "哔哩哔哩直播官方账号" - }, - "mobile_frame": { - "name": "", - "value": "", - "position": 0, - "desc": "", - "area": 0, - "area_old": 0, - "bg_color": "", - "bg_pic": "", - "use_old_area": false - }, - "mobile_badge": null - }, - "up_session": "", - "pk_status": 0, - "pk_id": 0, - "battle_id": 0, - "allow_change_area_time": 0, - "allow_upload_cover_time": 0, - "studio_info": { - "status": 0, - "master_list": [] - } - } -} -``` - -
- -## 获取用户对应的直播间状态 - -> https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------|-----|-----------|------------------| -| roomStatus | num | 直播间状态 | 0:无房间
1:有房间 | -| roundStatus | num | 轮播状态 | 0:未轮播
1:轮播 | -| live_status | num | 直播状态 | 0:未开播
1:直播中 | -| url | str | 直播间网页url | | -| title | str | 直播间标题 | | -| cover | str | 直播间封面url | | -| online | num | 直播间人气 | 值为上次直播时刷新 | -| roomid | num | 直播间id(短号) | | -| broadcast_type | num | 0 | | -| online_hidden | num | 0 | | - -**示例:** - -查询用户`mid=322892`的直播间信息 - -```shell -curl -G 'https://api.live.bilibili.com/room/v1/Room/getRoomInfoOld' \ ---data-urlencode 'mid=322892' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "roomStatus": 1, - "roundStatus": 0, - "live_status": 1, - "url": "https://live.bilibili.com/5441", - "title": "好久没当黑铁主播了", - "cover": "http://i0.hdslb.com/bfs/live/room_cover/833f7ff506bac17c06010e8834922993657505b2.jpg", - "online": 268602, - "roomid": 5441, - "broadcast_type": 0, - "online_hidden": 0 - } -} -``` - -
- -## 获取房间页初始化信息 - -> https://api.live.bilibili.com/room/v1/Room/room_init - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|------------|-----|-----| -| id | num | 目标直播间号(短号) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------| -| code | num | 返回值 | 0:成功
60004:直播间不存在 | -| msg | str | 错误信息 | 默认为ok | -| message | str | 错误信息 | 默认为ok | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|------|--------------|------------------------------------| -| room_id | num | 直播间真实id | | -| short_id | num | 直播间id(短号) | | -| uid | num | 主播用户mid | | -| need_p2p | num | 是否p2p | | -| is_hidden | bool | 是否隐藏 | | -| is_locked | bool | 是否锁定 | | -| is_portrait | bool | 是否竖屏 | | -| live_status | num | 直播状态 | 0:未开播
1:直播中
2:轮播中 | -| hidden_till | num | 隐藏时间戳 | | -| lock_till | num | 锁定时间戳 | | -| encrypted | bool | 是否加密 | | -| pwd_verified | bool | 加密房间是否通过密码验证 | `encrypted`=true时才有意义 | -| live_time | num | 开播时间 | 未开播时为`-62170012800` | -| room_shield | num | 未知 | | -| is_sp | num | 是否为特殊直播间 | 0:普通直播间
1:付费直播间 | -| special_type | num | 特殊直播间标志 | 0:普通直播间
1:付费直播间
2:拜年祭直播间 | - -**示例:** - -查询直播间`id=76`的直播间信息 - -```shell -curl -G 'https://api.live.bilibili.com/room/v1/Room/room_init' \ ---data-urlencode 'id=76' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "ok", - "message": "ok", - "data": { - "room_id": 14073662, - "short_id": 76, - "uid": 50333369, - "need_p2p": 0, - "is_hidden": false, - "is_locked": false, - "is_portrait": false, - "live_status": 1, - "hidden_till": 0, - "lock_till": 0, - "encrypted": false, - "pwd_verified": false, - "live_time": 1602151186, - "room_shield": 1, - "is_sp": 0, - "special_type": 0 - } -} -``` - -
- -## 获取主播信息 - -> https://api.live.bilibili.com/live_user/v1/Master/info - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| uid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------| -| code | num | 返回值 | 0:成功
1:参数错误 | -| msg | str | 错误信息 | 默认为空 | -| message | str | 错误信息 | 默认为空 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------|-----|-----------|------------| -| info | obj | 主播信息 | | -| exp | obj | 经验等级 | | -| follower_num | num | 主播粉丝数 | | -| room_id | num | 直播间id(短号) | | -| medal_name | str | 粉丝勋章名 | | -| glory_count | num | 主播荣誉数 | | -| pendant | str | 直播间头像框url | | -| link_group_num | num | 0 | **作用尚不明确** | -| room_news | obj | 主播公告 | | - -`info`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------------|-----|---------|-------------------------| -| uid | num | 主播mid | | -| uname | str | 主播用户名 | | -| face | str | 主播头像url | | -| official_verify | obj | 认证信息 | | -| gender | num | 主播性别 | -1:保密
0:女
1:男 | - -`info`中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|------------------------------| -| type | num | 主播认证类型 | -1:无
0:个人认证
1:机构认证 | -| desc | str | 主播认证信息 | | - -`exp`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|-----|------|-----| -| master_level | obj | 主播等级 | | - -`exp`中的`master_level`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------|--------|-----| -| level | num | 当前等级 | | -| color | num | 等级框颜色 | | -| current | array | 当前等级信息 | | -| next | array | 下一等级信息 | | - -`master_level`中的`current`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|------|-----| -| 0 | num | 升级积分 | | -| 1 | num | 总积分 | | - -`master_level`中的`next`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|------|-----| -| 0 | num | 升级积分 | | -| 1 | num | 总积分 | | - -`room_news`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|------|-----| -| content | str | 公告内容 | | -| ctime | str | 公告时间 | | -| ctime_text | str | 公告日期 | | - -**示例:** - -查询直播间`mid=76`的主播信息 - -```shell -curl -G 'https://api.live.bilibili.com/live_user/v1/Master/info' \ ---data-urlencode 'uid=2' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "info": { - "uid": 2, - "uname": "碧诗", - "face": "https://i0.hdslb.com/bfs/face/ef0457addb24141e15dfac6fbf45293ccf1e32ab.jpg", - "official_verify": { - "type": 0, - "desc": "bilibili个人认证:bilibili创始人(站长)" - }, - "gender": 1 - }, - "exp": { - "master_level": { - "level": 30, - "color": 10512625, - "current": [ - 2870000, - 11883810 - ], - "next": [ - 3730000, - 15613810 - ] - } - }, - "follower_num": 926624, - "room_id": 1024, - "medal_name": "逸国", - "glory_count": 0, - "pendant": "", - "link_group_num": 0, - "room_news": { - "content": "", - "ctime": "", - "ctime_text": "" - } - } -} -``` - -
- -## 批量查询直播间状态 - -> https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids - -*请求方式:GET/POST* - -认证方式:无 (无需添加Cookie) - -**url参数 (GET方式):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-------|------------|-----|-----| -| uids[] | array | 要查询的主播 mid | 必要 | | - -**正文参数 (POST方式):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|------|------------|-----|-----| -| uids | nums | 要查询的主播 mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|-------------------------| -| code | num | 返回值 | 0:成功
-111:csrf校验失败 | -| message | str | 错误信息 | 默认为success | -| msg | str | 错误信息 | 默认为success | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----|-----|-------|------------| -| uid | str | 直播间信息 | 实际字段为主播mid | - -`uid`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------------|-----|-----------|------------------------------| -| title | str | 直播间标题 | | -| room_id | num | 直播间房间号 | 直播间实际房间号 | -| uid | num | 主播mid | | -| online | num | 直播间在线人数 | | -| live_time | num | 直播持续时长 | | -| live_status | num | 直播间开播状态 | 0:未开播
1:正在直播
2:轮播中 | -| short_id | num | 直播间房间号 | 直播间短房间号,常见于签约主播 | -| area | num | 直播间分区id | | -| area_name | str | 直播间分区名 | | -| area_v2_id | num | 直播间新版分区id | | -| area_v2_name | str | 直播间新版分区名 | | -| area_v2_parent_id | num | 直播间父分区id | | -| area_v2_parent_name | str | 直播间父分区名 | | -| uname | str | 主播用户名 | | -| face | str | 主播头像url | | -| tag_name | str | 直播间标签 | | -| tags | str | 直播间自定标签 | | -| cover_from_user | str | 直播间封面url | | -| keyframe | str | 直播间关键帧url | | -| lock_till | str | 直播间封禁信息 | | -| hidden_till | str | 直播间隐藏信息 | | -| broadcast_type | num | 直播类型 | 0:普通直播
1:手机直播 | - -**示例:** - -查询用户`mid=672328094的直播间信息 - -```shell -# GET方式 -curl -G 'https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids' ---data-urlencode 'uids[]=672328094' - -# POST方式 -curl 'https://api.live.bilibili.com/room/v1/Room/get_status_info_by_uids' \ --H "Content-Type: application/json" \ --d "{\"uids\": [672328094]}" -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "672328094": { - "title": "【B限】玩个毛线", - "room_id": 22637261, - "uid": 672328094, - "online": 4087370, - "live_time": 0, - "live_status": 2, - "short_id": 0, - "area": 6, - "area_name": "生活娱乐", - "area_v2_id": 371, - "area_v2_name": "虚拟主播", - "area_v2_parent_name": "虚拟主播", - "area_v2_parent_id": 9, - "uname": "嘉然今天吃什么", - "face": "http://i2.hdslb.com/bfs/face/d399d6f5cf7943a996ae96999ba3e6ae2a2988de.jpg", - "tag_name": "日常,学习,萌宠,厨艺,手机直播", - "tags": "", - "cover_from_user": "http://i0.hdslb.com/bfs/live/new_room_cover/f3ed7a782c13086e536ec8bc6e9593bb4918f905.jpg", - "keyframe": "http://i0.hdslb.com/bfs/live-key-frame/keyframe041722000000226372619dr3m8.jpg", - "lock_till": "0000-00-00 00:00:00", - "hidden_till": "0000-00-00 00:00:00", - "broadcast_type": 0 - } - } -} -``` - -
- -## 清晰度代码 - -| 代码 | 说明 | -|-------|-----| -| 30000 | 杜比 | -| 20000 | 4K | -| 10000 | 原画 | -| 400 | 蓝光 | -| 250 | 超清 | -| 150 | 高清 | -| 80 | 流畅 | - -## 获取直播间信息 - -> https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo - -*请求方式:GET* - -认证方式:无 (无需添加Cookie) - -**url参数 (GET方式):** - -| 参数名 | 类型 | 内容 | 必填 | 备注 | -|----------|-----|-------|-----|------------------------------------------------| -| room_id | num | 直播间id | 必要 | | -| protocol | str | 直播协议 | 必要 | 0:http_stream
1:http_hls
可多选, 使用英文逗号分隔 | -| format | str | 格式 | 必要 | 0:flv
1:ts
2:fmp4
可多选, 使用英文逗号分隔 | -| codec | str | 编码格式 | 必要 | 0:AVC
1:HEVC
可多选, 使用英文逗号分隔 | -| qn | num | 清晰度编码 | | 默认`150`
[清晰度代码](#清晰度代码) | -| platform | str | `web` | | | -| ptype | num | `8` | | | -| dolby | num | `5` | | | -| panorama | num | `1` | | | - -**json回复:** - -根对象: - -| 字段名 | 类型 | 内容 | 备注 | -|---------|-----|------|-----------------------| -| code | num | 响应码 | 0:成功
1002002:参数错误 | -| message | str | 0 | | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段名 | 类型 | 内容 | 备注 | -|-------------------|-------|-----------|---------------------------| -| room_id | num | 直播间id | | -| short_id | num | 直播间短id | | -| uid | num | 主播uid | | -| is_hidden | bool | 直播间是否被隐藏 | | -| is_locked | bool | 直播间是否被锁定 | | -| is_portrait | bool | 是否竖屏 | | -| live_status | num | 直播状态 | 0:未开播
1:直播中
2:轮播中 | -| hidden_till | num | 隐藏结束时间 | | -| lock_till | num | 封禁结束时间 | 秒级时间戳 | -| encrypted | bool | 直播间为加密直播间 | | -| pwd_verified | bool | 是否通过密码验证 | 当`encrypted`为`true`时才有意义 | -| live_time | num | 本次开播时间 | 秒级时间戳 | -| room_shield | num | | | -| all_special_types | array | | | -| playurl_info | obj | 直播流信息 | | - -`playurl_info`对象 - -| 字段名 | 类型 | 内容 | 备注 | -|-----------|-----|-----|-----| -| conf_json | str | | | -| playurl | obj | | | - -`playurl`对象 - -| 字段名 | 类型 | 内容 | 备注 | -|-----------|-------|-------|-----| -| cid | num | 直播间id | | -| g_qn_desc | array | 清晰度列表 | | -| stream | array | 直播流信息 | | -| p2p_data | obj | | | -| dolby_qn | | | | - -`g_qn_desc`数组中的对象 - -| 字段名 | 类型 | 内容 | 备注 | -|-----------|-----|-------|-----------------| -| qn | num | 清晰度代码 | [清晰度代码](#清晰度代码) | -| desc | str | 清晰度描述 | | -| hdr_desc | str | | | -| attr_desc | | | | - -`stream`数组中的对象 - -| 字段名 | 类型 | 内容 | 备注 | -|---------------|-------|------|-----| -| protocol_name | str | 协议名 | | -| format | array | 格式列表 | | - -`format`数组中的对象 - -| 字段名 | 类型 | 内容 | 备注 | -|-------------|-------|------|-----| -| format_name | str | 格式名 | | -| codec | array | 编码列表 | | - -`codec`数组中的对象 - -| 字段名 | 类型 | 内容 | 备注 | -|------------|-------|-----------|-----------------| -| codec_name | str | 编码名 | | -| current_qn | num | 当前清晰度编码 | [清晰度代码](#清晰度代码) | -| accept_qn | array | 可用清晰度编码列表 | [清晰度代码](#清晰度代码) | -| base_url | str | 播放源路径 | | -| url_info | array | 域名信息列表 | | -| hdr_qn | null | | | -| dolby_type | num | | | -| attr_name | str | | | - -`url_info`数组中的对象 - -| 字段名 | 类型 | 内容 | 备注 | -|------------|-----|-------|-----| -| host | str | 域名 | | -| extra | str | URL参数 | | -| stream_ttl | num | | | - -`p2p_data`对象 - -| 字段名 | 类型 | 内容 | 备注 | -|-----------|------|-----|-----| -| p2p | bool | | | -| p2p_type | num | | | -| m_p2p | bool | | | -| m_servers | null | | | - -**示例:** - -查询room_id=3的直播间信息 - -```shell -curl -L -X GET 'https://api.live.bilibili.com/xlive/web-room/v2/index/getRoomPlayInfo?room_id=3&protocol=0,1&format=0,1,2&codec=0,1&qn=10000' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "room_id": 23058, - "short_id": 3, - "uid": 11153765, - "is_hidden": false, - "is_locked": false, - "is_portrait": false, - "live_status": 1, - "hidden_till": 0, - "lock_till": 0, - "encrypted": false, - "pwd_verified": true, - "live_time": 1671425336, - "room_shield": 1, - "all_special_types": [], - "playurl_info": { - "conf_json": "{\"cdn_rate\":10000,\"report_interval_sec\":150}", - "playurl": { - "cid": 23058, - "g_qn_desc": [ - { - "qn": 30000, - "desc": "杜比", - "hdr_desc": "", - "attr_desc": null - }, - { - "qn": 20000, - "desc": "4K", - "hdr_desc": "", - "attr_desc": null - }, - { - "qn": 10000, - "desc": "原画", - "hdr_desc": "", - "attr_desc": null - }, - { - "qn": 400, - "desc": "蓝光", - "hdr_desc": "HDR", - "attr_desc": null - }, - { - "qn": 250, - "desc": "超清", - "hdr_desc": "HDR", - "attr_desc": null - }, - { - "qn": 150, - "desc": "高清", - "hdr_desc": "", - "attr_desc": null - }, - { - "qn": 80, - "desc": "流畅", - "hdr_desc": "", - "attr_desc": null - } - ], - "stream": [ - { - "protocol_name": "http_stream", - "format": [ - { - "format_name": "flv", - "codec": [ - { - "codec_name": "avc", - "current_qn": 10000, - "accept_qn": [ - 10000, - 150 - ], - "base_url": "/live-bvc/462997/live_11153765_9369560.flv?", - "url_info": [ - { - "host": "https://cn-hbcd-cu-02-20.bilivideo.com", - "extra": "expires=1674103815&pt=web&deadline=1674103815&len=0&oi=1963941079&platform=web&qn=10000&trid=1000061f434c07ac4f4184820bfb141e75e8&uipk=100&uipv=100&nbs=1&uparams=cdn,deadline,len,oi,platform,qn,trid,uipk,uipv,nbs&cdn=cn-gotcha01&upsig=f494aa9e92e24943061fe5082494ec44&sk=33541455720f64c7671bc1480acfb176&p2p_type=1&src=57345&sl=1&free_type=0&sid=cn-hbcd-cu-02-20&chash=1&sche=ban&score=12&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=1", - "stream_ttl": 3600 - } - ], - "hdr_qn": null, - "dolby_type": 0, - "attr_name": "" - } - ] - } - ] - }, - { - "protocol_name": "http_hls", - "format": [ - { - "format_name": "ts", - "codec": [ - { - "codec_name": "avc", - "current_qn": 10000, - "accept_qn": [ - 10000, - 150 - ], - "base_url": "/live-bvc/462997/live_11153765_9369560.m3u8?", - "url_info": [ - { - "host": "https://cn-hbcd-cu-02-20.bilivideo.com", - "extra": "expires=1674103815&len=0&oi=1963941079&pt=web&qn=10000&trid=1003061f434c07ac4f4184820bfb141e75e8&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha01&sign=4f9bcec18e3afdca04b31ffb285ec915&sk=33541455720f64c7671bc1480acfb176&p2p_type=1&src=57345&sl=1&free_type=0&sid=cn-hbcd-cu-02-20&chash=1&sche=ban&score=12&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=1", - "stream_ttl": 3600 - } - ], - "hdr_qn": null, - "dolby_type": 0, - "attr_name": "" - } - ] - }, - { - "format_name": "fmp4", - "codec": [ - { - "codec_name": "avc", - "current_qn": 10000, - "accept_qn": [ - 10000, - 150 - ], - "base_url": "/live-bvc/462997/live_11153765_9369560/index.m3u8?", - "url_info": [ - { - "host": "https://cn-hbcd-cu-02-20.bilivideo.com", - "extra": "expires=1674103815&len=0&oi=1963941079&pt=web&qn=10000&trid=1007061f434c07ac4f4184820bfb141e75e8&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha01&sign=cc57dce528316d8389f2f34e7bd15f5c&sk=a99391b8b4d5779b2e32e41dbc989d2d&flvsk=33541455720f64c7671bc1480acfb176&p2p_type=1&src=57345&sl=1&free_type=0&sid=cn-hbcd-cu-02-20&chash=1&sche=ban&bvchls=1&score=12&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=1", - "stream_ttl": 3600 - }, - { - "host": "https://c1--cn-gotcha208.bilivideo.com", - "extra": "expires=1674103815&len=0&oi=1963941079&pt=web&qn=10000&trid=1007061f434c07ac4f4184820bfb141e75e8&sigparams=cdn,expires,len,oi,pt,qn,trid&cdn=cn-gotcha208&sign=2ff96adf5056c8dbee546955260fc2df&sk=a99391b8b4d5779b2e32e41dbc989d2d&p2p_type=1&src=57345&sl=1&free_type=0&pp=rtmp&machinezone=jd&source=onetier&trace=0&site=92e80b6f3ebfd393e7d1c1e2e648d9c1&order=2", - "stream_ttl": 3600 - } - ], - "hdr_qn": null, - "dolby_type": 0, - "attr_name": "" - } - ] - } - ] - } - ], - "p2p_data": { - "p2p": true, - "p2p_type": 1, - "m_p2p": false, - "m_servers": null - }, - "dolby_qn": null - } - } - } -} -``` - -
\ No newline at end of file diff --git a/live/live_area.md b/live/live_area.md deleted file mode 100644 index 5eeedf0..0000000 --- a/live/live_area.md +++ /dev/null @@ -1,214 +0,0 @@ -# 直播间分区 - -- [获取全部直播间分区列表](#获取全部直播间分区列表) - ---- - -## 获取全部直播间分区列表 - -> https://api.live.bilibili.com/room/v1/Area/getList - -*请求方式:GET* - -直播分区共有两级,分别是父分区和子分区 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | ---------- | ------------- | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | array | 父分区列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| 0 | obj | 父分区1 | | -| n | obj | 父分区(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------- | ---- | -| id | num | 父分区id | | -| name | name | 父分区名 | | -| list | list | 子分区列表 | | - -`data`数组中的对象中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| 0 | obj | 子分区1 | | -| n | obj | 子分区(n+1) | | -| …… | obj | …… | …… | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ----------------- | ---------------- | -| id | str | 子分区id | | -| parent_id | str | 父分区id | | -| old_area_id | str | 旧分区id | | -| name | str | 子分区名 | | -| act_id | str | 0 | **作用尚不明确** | -| pk_status | str | ??? | **作用尚不明确** | -| hot_status | num | 是否为热门分区 | 0:否
1:是 | -| lock_status | str | 0 | **作用尚不明确** | -| pic | str | 子分区标志图片url | | -| parent_name | str | 父分区名 | | -| area_type | num | | | - -**示例:** - -如想在`网游`父分区下的`英雄联盟`分区开播,则查到子分区id为`86` - -```shell -curl 'https://api.live.bilibili.com/room/v1/Area/getList' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": [ - { - "id": 2, - "name": "网游", - "list": [ - { - "id": "86", - "parent_id": "2", - "old_area_id": "4", - "name": "英雄联盟", - "act_id": "0", - "pk_status": "0", - "hot_status": 1, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/dcfb14f14ec83e503147a262e7607858b05d7ac0.png", - "parent_name": "网游", - "area_type": 0 - }, - { - "id": "252", - "parent_id": "2", - "old_area_id": "3", - "name": "逃离塔科夫", - "act_id": "0", - "pk_status": "0", - "hot_status": 1, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/762a7de3dd5fe8165d1d55b232484a017941592f.png", - "parent_name": "网游", - "area_type": 0 - }, - { - "id": "80", - "parent_id": "2", - "old_area_id": "1", - "name": "绝地求生", - "act_id": "0", - "pk_status": "0", - "hot_status": 1, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/43ca83fdcd10505eaeef1b76cf8ce642a53b94da.png", - "parent_name": "网游", - "area_type": 0 - }, - ………… - ] - }, - { - "id": 3, - "name": "手游", - "list": [ - { - "id": "35", - "parent_id": "3", - "old_area_id": "12", - "name": "王者荣耀", - "act_id": "0", - "pk_status": "0", - "hot_status": 1, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/0fefa924760b2dd492a12dddafe179bfa1216918.png", - "parent_name": "手游", - "area_type": 0 - }, - ………… - ] - }, - { - "id": 6, - "name": "单机", - "list": [ - { - "id": "236", - "parent_id": "6", - "old_area_id": "1", - "name": "主机游戏", - "act_id": "0", - "pk_status": "0", - "hot_status": 1, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/edb636ee59f902e3134a2790545045bddd70978e.png", - "parent_name": "单机", - "area_type": 0 - }, - ………… - ] - }, - { - "id": 1, - "name": "娱乐", - "list": [ - { - "id": "21", - "parent_id": "1", - "old_area_id": "10", - "name": "视频唱见", - "act_id": "0", - "pk_status": "1", - "hot_status": 1, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/72b93ddafdf63c9f0b626ad546847a3c03c92b6f.png", - "cate_id": "12", - "parent_name": "娱乐", - "area_type": 0 - }, - ………… - ] - }, - { - "id": 5, - "name": "电台", - "list": [ - { - "id": "190", - "parent_id": "5", - "old_area_id": "10", - "name": "唱见电台", - "act_id": "0", - "pk_status": "0", - "hot_status": 0, - "lock_status": "0", - "pic": "http://i0.hdslb.com/bfs/vc/d22d7fafbf9b24e2bc3ce1df5eb9f006e6035e5d.png", - "parent_name": "电台", - "area_type": 0 - }, - ………… - ] - } - ] -} -``` - -
diff --git a/live/live_stream.md b/live/live_stream.md deleted file mode 100644 index 22cd70a..0000000 --- a/live/live_stream.md +++ /dev/null @@ -1,160 +0,0 @@ -# 直播间视频流 - -- [根据真实直播间号获取直播视频流](#根据真实直播间号获取直播视频流) - ---- - -## 根据真实直播间号获取直播视频流 - -> https://api.live.bilibili.com/room/v1/Room/playUrl - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| cid | num | 目标真实直播间号 | 必要 | 直播间的`room_id`(非短号) | -| platform | str | 直播流格式 | 非必要 | h5:hls方式
web:http-flv方式
默认为http-flv方式 | -| quality | num | 画质 | 非必要 | `qn`与`quality`任选其一
2:流畅
3:高清
4:原画 | -| qn | str | 画质 | 非必要 | `qn`与`quality`任选其一
80:流畅
150:高清
400:蓝光
10000:原画
20000:4K
30000:杜比 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:参数错误
19002003:房间信息不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | str | 1 | | -| data | obj | 信息本体 | | - - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ------------- | ------------------------ | -| current_quality | num | 当前画质代码`qn` | | -| accept_quality | array | 可选画质数参数 | | -| current_qn | num | 当前画质代码`quality` | | -| quality_description | array | 可选画质参数`quality` | | -| durl | array | 直播流url组 | | - -`accept_quality`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ---- | -| 0 | str | `qn`画质代码1 | | -| n | str | `qn`画质代码(n+1) | | -| …… | str | …… | …… | - -`quality_description`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 画质代码1 | | -| n | obj | 画质代码(n+1) | | -| …… | obj | …… | …… | - -`quality_description`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------------- | ---- | -| qn | num | 画质代码 | | -| desc | str | 该代码对应的画质名称 | | - -`durl`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| 0 | obj | 主线服务器 | | -| n | obj | 备线n服务器 | | -| …… | obj | …… | …… | - -`durl`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ------------- | ------------------------ | -| url | str | 直播流url | flv或m3u8格式
**注:带有转义** | -| length | num | 0 | 作用尚不明确 | -| order | num | 服务器线路序号 | | -| stream_type | num | 0 | 作用尚不明确 | -| p2p_type | num | 0 | 作用尚不明确 | - -**示例:** - -查询直播间`cid=14073662`的直播间信息 - -```shell -curl -G 'https://api.live.bilibili.com/room/v1/Room/playUrl' \ ---data-urlencode 'cid=14073662' \ ---data-urlencode 'qn=10000' \ ---data-urlencode 'platform=web' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "current_quality": 3, - "accept_quality": [ - "4", - "3", - "2" - ], - "current_qn": 3, - "quality_description": [ - { - "qn": 4, - "desc": "原画" - }, - { - "qn": 3, - "desc": "高清" - }, - { - "qn": 2, - "desc": "流畅" - } - ], - "durl": [ - { - "url": "https://d1--cn-gotcha04.bilivideo.com/live-bvc/601131/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=20e4ac695fbdd1d11d5dac4f93caa783&ptype=0&src=9&sl=1&order=1", - "length": 0, - "order": 1, - "stream_type": 0, - "p2p_type": 0 - }, - { - "url": "https://d1--cn-gotcha01.bilivideo.com/live-bvc/757951/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha01&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=9deea67bb9e9c1f0fa3886a34aa09473&ptype=0&src=9&sl=1&order=2", - "length": 0, - "order": 2, - "stream_type": 0, - "p2p_type": 0 - }, - { - "url": "https://d1--cn-gotcha04.bilivideo.com/live-bvc/982058/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=8753b270960034660184d975d86c0161&ptype=0&src=9&sl=1&order=3", - "length": 0, - "order": 3, - "stream_type": 0, - "p2p_type": 0 - }, - { - "url": "https://d1--cn-gotcha04.bilivideo.com/live-bvc/139554/live_14073662_bs_3699814_1500.flv?cdn=cn-gotcha04&expires=1602496530&len=0&oi=1939228219&pt=&qn=150&trid=e6540d81a5d04c2ea459c46ebe77472a&sigparams=cdn,expires,len,oi,pt,qn,trid&sign=cf93474e923c9ba8288c45d954f81045&ptype=0&src=9&sl=1&order=4", - "length": 0, - "order": 4, - "stream_type": 0, - "p2p_type": 0 - } - ] - } -} -``` - -
diff --git a/live/manage.md b/live/manage.md deleted file mode 100644 index 6cf334b..0000000 --- a/live/manage.md +++ /dev/null @@ -1,266 +0,0 @@ -# 直播间管理 - -- [更新直播间标题](#更新直播间标题) -- [开始直播](#开始直播) -- [关闭直播](#关闭直播) - ---- - -## 更新直播间标题 - -> https://api.live.bilibili.com/room/v1/Room/update - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ------------------------ | ------ | -------------------- | -| room_id | num | 直播间id | 必要 | 必须为自己的直播间id | -| title | str | 直播间标题 | 必要 | 最大20字符 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------------------------------------------------ | -| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误 | -| msg | str | 错误信息 | 默认为ok | -| message | str | 错误信息 | 默认为ok | -| data | array | 空 | | - -**示例:** - -修改直播间`10352053`标题为`测试` - -```shell -curl 'https://api.live.bilibili.com/room/v1/Room/update' \ ---data-urlencode 'room_id=10352053' \ ---data-urlencode 'title=测试' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx;bili_jct=xx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "ok", - "message": "ok", - "data": [] -} -``` - -
- -## 开始直播 - -> https://api.live.bilibili.com/room/v1/Room/startLive - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同 - -开播时必须有分区选择,开播后返回推流地址 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ----------------------------------- | -| room_id | num | 直播间id | 必要 | 必须为自己的直播间id | -| area_v2 | num | 直播分区id(子分区id) | 必要 | 详见[直播分区](live_area.md) | -| platform | str | 直播平台 | 必要 | web端:
bililink:android_link | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
**(其他错误码有待补充)** | -| msg | str | 错误信息 | 默认为空 | -| message | str | 错误信息 | 默认为空 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ---------------- | ---------------------- | -| change | num | 是否改变状态 | 0:未改变
1:改变 | -| status | str | LIVE | | -| room_type | num | 0 | 作用尚不明确 | -| rtmp | obj | RTMP推流地址信息 | | -| protocols | array | ??? | 作用尚不明确 | -| try_time | str | ??? | 作用尚不明确 | -| live_key | str | ??? | 作用尚不明确 | -| notice | obj | ??? | 作用尚不明确 | - -`data`中的`rtmp`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------------------------------- | ------------ | -| addr | str | RTMP推流(发送)地址 | **重要** | -| code | str | RTMP推流参数(密钥) | **重要** | -| new_link | str | 获取CDN推流ip地址重定向信息的url | 没啥用 | -| provider | str | ??? | 作用尚不明确 | - -`data`中的`protocols`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | ------------ | -| 0 | obj | ??? | 作用尚不明确 | - -`data`中的`protocols`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------------------------------- | ------------ | -| protocol | str | rtmp | 作用尚不明确 | -| addr | str | RTMP推流(发送)地址 | | -| code | str | RTMP推流参数(密钥) | | -| new_link | str | 获取CDN推流ip地址重定向信息的url | | -| provider | str | txy | 作用尚不明确 | - -`data`中的`notice`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---- | ------------ | -| type | num | 1 | 作用尚不明确 | -| status | num | 0 | 作用尚不明确 | -| title | str | 空 | 作用尚不明确 | -| msg | str | 空 | 作用尚不明确 | -| button_text | str | 空 | 作用尚不明确 | -| button_url | str | 空 | 作用尚不明确 | - -**示例:** - -以`27`作为分区id开播直播间`10352053` - -其中`"data"."rtmp"."addr"`为推流地址 - -`"data"."rtmp"."code"`为推流参数 - -```shell -curl 'https://api.live.bilibili.com/room/v1/Room/startLive' \ ---data-urlencode 'room_id=10352053' \ ---data-urlencode 'area_v2=27' \ ---data-urlencode 'platform=pc' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx;bili_jct=xx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "change": 1, - "status": "LIVE", - "room_type": 0, - "rtmp": { - "addr": "rtmp://txy.live-send.acg.tv/live-txy/", - "code": "?streamname=live_293793435_1567354&key=***", - "new_link": "http://tcdns.myqcloud.com:8086/bilibili_redirect?up_rtmp=txy.live-send.acg.tv%2Flive-txy%2F%3Fstreamname%3Dlive_293793435_1567354%26key%3D***", - "provider": "txy" - }, - "protocols": [ - { - "protocol": "rtmp", - "addr": "rtmp://txy.live-send.acg.tv/live-txy/", - "code": "?streamname=live_293793435_1567354&key=***", - "new_link": "http://tcdns.myqcloud.com:8086/bilibili_redirect?up_rtmp=txy.live-send.acg.tv%2Flive-txy%2F%3Fstreamname%3Dlive_293793435_1567354%26key%3D***", - "provider": "txy" - } - ], - "try_time": "0000-00-00 00:00:00", - "live_key": "l:one:live:record:10352053:1589344980", - "notice": { - "type": 1, - "status": 0, - "title": "", - "msg": "", - "button_text": "", - "button_url": "" - } - } -} -``` - -
- -## 关闭直播 - -> https://api.live.bilibili.com/room/v1/Room/stopLive - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`bili_jct`的值正确并与`csrf`相同 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ------------------------ | ------ | -------------------- | -| room_id | num | 直播间id | 必要 | 必须为自己的直播间id | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
-400:没有权限
**(其他错误码有待补充)** | -| msg | str | 错误信息 | 默认为空 | -| message | str | 错误信息 | 默认为空 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ---------------------- | -| change | num | 是否改变状态 | 0:未改变
1:改变 | -| status | str | PREPARING | | - -**示例:** - -关闭直播间`10352053`的直播 - -```shell -curl 'https://api.live.bilibili.com/room/v1/Room/stopLive' \ ---data-urlencode 'room_id=10352053' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx;bili_jct=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": { - "change": 1, - "status": "PREPARING" - } -} -``` - -
diff --git a/live/message_stream.md b/live/message_stream.md deleted file mode 100644 index 7e5be5b..0000000 --- a/live/message_stream.md +++ /dev/null @@ -1,2336 +0,0 @@ -# 直播间信息流 - -- [获取信息流认证秘钥](#获取信息流认证秘钥) -- [数据包格式](#数据包格式) -- [数据包](#数据包) - - [认证包](#认证包) - - [认证包回复](#认证包回复) - - [心跳包](#心跳包) - - [心跳包回复](#心跳包回复人气值) - - [普通包](#普通包) - ---- - -## 获取信息流认证秘钥 - -> https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------ | ------ | ---- | -| id | num | 直播间真实id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
65530:token错误(登录错误)
1:错误
60009:分区不存在
**(其他错误码有待补充)** | -| message | str | 错误信息 | 默认为空 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ----- | ------------------- | ---- | -| group | str | live | | -| business_id | num | 0 | | -| refresh_row_factor | num | 0.125 | | -| refresh_rate | num | 100 | | -| max_delay | num | 5000 | | -| token | str | 认证秘钥 | | -| host_list | array | 信息流服务器节点列表 | | - -`host_list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------- | ---- | -| host | str | 服务器域名 | | -| port | num | tcp端口 | | -| wss_port | num | wss端口 | | -| ws_port | num | ws端口 | | - -**示例:** - -获得直播间`22824550`的信息流认证秘钥 - -```shell -curl -G 'https://api.live.bilibili.com/xlive/web-room/v1/index/getDanmuInfo' \ ---data-urlencode 'id=22824550' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "group": "live", - "business_id": 0, - "refresh_row_factor": 0.125, - "refresh_rate": 100, - "max_delay": 5000, - "token": "Eac3Lm1JADzny-YnB5MW0MQcd23rw_mgMFZAnu40I-J2ecP2Qj6CH-UqjdfvwiqVEZcEksG1ONSOi1dGzm0wM4FxqA-ZYXtcQyHXPXqxmrx3AmDx8Z5-d4TuKQkaU0zxevH1B-gnu7g8TDtIE4lns4BYlw==", - "host_list": [ - { - "host": "tx-sh-live-comet-02.chat.bilibili.com", - "port": 2243, - "wss_port": 443, - "ws_port": 2244 - }, - { - "host": "tx-bj-live-comet-02.chat.bilibili.com", - "port": 2243, - "wss_port": 443, - "ws_port": 2244 - }, - { - "host": "broadcastlv.chat.bilibili.com", - "port": 2243, - "wss_port": 443, - "ws_port": 2244 - } - ] - } -} -``` - -
- -## 数据包格式 - -数据包为MQ(Message Queue,消息队列)使用Websocket或TCP连接作为通道,具体格式为头部数据+正文数据 - -操作流程: - -发送认证包->接收认证包回应->接收普通包&(每30秒发送心跳包->接收心跳回应) - -头部格式: - -| 偏移量 | 长度 | 类型 | 含义 | -| ------ | ---- | ------ | ------------------------------------------------------------ | -| 0 | 4 | uint32 | 封包总大小(头部大小+正文大小) | -| 4 | 2 | uint16 | 头部大小(一般为0x0010,16字节) | -| 6 | 2 | uint16 | 协议版本:
0普通包正文不使用压缩
1心跳及认证包正文不使用压缩
2普通包正文使用zlib压缩
3普通包正文使用brotli压缩,解压为一个带头部的协议0普通包 | -| 8 | 4 | uint32 | 操作码(封包类型) | -| 12 | 4 | uint32 | sequence,每次发包时向上递增 | - -操作码: - -| 代码 | 含义 | -| ---- | -------------------- | -| 2 | 心跳包 | -| 3 | 心跳包回复(人气值) | -| 5 | 普通包(命令) | -| 7 | 认证包 | -| 8 | 认证包回复 | - -*普通包可能包含多条命令,每个命令有一个头部,指示该条命令的长度等信息* - -## 数据包 - -### 认证包 - -方式:(上行) - -连接成功后5秒内发送,否则强制断开连接 - -正文: - -json格式 - -| 字段 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------ | ------ | ------------------ | -| uid | num | 用户mid | 非必要 | uid为0即为游客登录 | -| roomid | num | 加入房间的id | 必要 | 直播间真实id | -| protover | num | 协议版本 | 非必要 | 3 | -| platform | str | 平台标识 | 非必要 | "web" | -| type | num | 2 | 非必要 | | -| key | str | 认证秘钥 | 非必要 | | - -示例: - -``` -00000000: 0000 00ff 0010 0001 0000 0007 0000 0001 ................ -00000001: 7b22 7569 6422 3a31 3630 3134 3836 3234 {"uid":160148624 -00000002: 2c22 726f 6f6d 6964 223a 3232 3630 3831 ,"roomid":226081 -00000003: 3132 2c22 7072 6f74 6f76 6572 223a 332c 12,"protover":3, -00000004: 2270 6c61 7466 6f72 6d22 3a22 7765 6222 "platform":"web" -00000005: 2c22 7479 7065 223a 322c 226b 6579 223a ,"type":2,"key": -00000006: 2230 7670 5448 5737 7757 556e 6c6f 5270 "0vpTHW7wWUnloRp -00000007: 5251 6b47 764e 626e 7776 7364 6d2d 7159 RQkGvNbnwvsdm-qY -00000008: 4777 4243 5875 2d59 5164 6e57 7653 5547 GwBCXu-YQdnWvSUG -00000009: 7373 4139 7962 4b68 7932 6a78 3952 6f63 ssA9ybKhy2jx9Roc -0000000a: 4150 4651 6d54 4f6b 5277 6b4b 687a 4479 APFQmTOkRwkKhzDy -0000000b: 4839 5054 756f 5468 6834 4630 7562 584c H9PTuoThh4F0ubXL -0000000c: 4964 6e69 3734 5539 304b 4242 6972 3248 Idni74U90KBBir2H -0000000d: 7451 3941 3777 674b 3438 4b7a 495f 5a5a tQ9A7wgK48KzI_ZZ -0000000e: 3838 7557 4e59 6652 4f48 6964 4e6a 3732 88uWNYfROHidNj72 -0000000f: 7061 796e 3479 3071 4268 513d 3d22 7d payn4y0qBhQ=="} -``` - - - -### 认证包回复 - -方式:(下行) - -在认证包发送成功后就会收到 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| code | num | 返回值 | 0认证成功 | - -示例: - -``` -00000000: 0000 001a 0010 0001 0000 0008 0000 0001 ................ -00000001: 7b22 636f 6465 223a 307d {"code":0} -``` - - - -### 心跳包 - -方式:(上行) - -30秒左右发送一次,否则60秒后会被强制断开连接 - -正文: - -可以为空或任意字符 - -示例: - -``` -00000000: 0000 001f 0010 0001 0000 0002 0000 0001 ................ -00000001: 5b6f 626a 6563 7420 4f62 6a65 6374 5d [object Object] -``` - -### 心跳包回复(人气值) - -方式:(下行) - -在心跳包发送成功后就会收到 - -正文: - -正文分为两个部分,第一部分是人气值 [uint32整数,代表房间当前的人气值] - -第二部分是对于心跳包内容的复制,心跳包正文是什么这里就会回应什么。 - -示例: - -``` -00000000: 0000 0014 0010 0001 0000 0003 0000 0000 ................ -00000001: 0000 09a2 5b6f 626a 6563 7420 4f62 6a65 ....[object Obje -00000002: 6374 5d ct] -``` - -可见房间内人气值为2466(0x000009a2) - -### 普通包 - -方式:(下行) - -正文: - -正文一般为普通JSON数据。 - -大多数普通包都经过zlib压缩或brotli压缩。 - -示例: - -``` -00000000: 0000 0086 0010 0003 0000 0005 0000 0000 ................ -00000001: 8b38 8000 0000 7200 1000 0000 0000 0500 .8....r......... -00000002: 0000 007b 2263 6d64 223a 2257 4154 4348 ...{"cmd":"WATCH -00000003: 4544 5f43 4841 4e47 4522 2c22 6461 7461 ED_CHANGE","data -00000004: 223a 7b22 6e75 6d22 3a32 3230 3937 2c22 ":{"num":22097," -00000005: 7465 7874 5f73 6d61 6c6c 223a 2232 2e32 text_small":"2.2 -00000006: e4b8 8722 2c22 7465 7874 5f6c 6172 6765 ...","text_large -00000007: 223a 2232 2e32 e4b8 87e4 baba e79c 8be8 ":"2.2.......... -00000008: bf87 227d 7d03 .."}}. -``` - ---- - -- [弹幕](#弹幕) -- [进场或关注消息](#进场或关注消息) -- [送礼](#送礼) -- [礼物星球点亮](#礼物星球点亮) -- [礼物连击](#礼物连击) -- [通知消息](#通知消息) -- [主播准备中](#主播准备中) -- [直播开始](#直播开始) -- [主播信息更新](#主播信息更新) -- [直播间高能榜](#直播间高能榜) -- [直播间高能用户数量](#直播间高能用户数量) -- [用户到达直播间高能榜前三名的消息](#用户到达直播间高能榜前三名的消息) -- [直播间用户点赞](#直播间用户点赞) -- [直播间点赞数](#直播间点赞数) -- [直播间发红包弹幕](#直播间发红包弹幕) -- [直播间红包](#直播间红包) -- [直播间抢到红包的用户](#直播间抢到红包的用户) -- [直播间看过人数](#直播间看过人数) -- [用户进场特效](#用户进场特效) -- [直播间在所属分区的排名改变](#直播间在所属分区的排名改变) -- [直播间在所属分区排名提升的祝福](#直播间在所属分区排名提升的祝福) -- [直播间信息更改](#直播间信息更改) -- [醒目留言按钮](#醒目留言按钮) -- [顶部横幅](#顶部横幅) -- [下播的直播间](#下播的直播间) -- [未知消息](#未知消息) - ---- - - -#### 弹幕 - -当收到弹幕时接收到此条消息 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "DANMU_MSG" | 如果是弹幕消息,内容则是"DANMU_MSG" | -| info | array | 这条弹幕的用户、内容与粉丝勋章等各种信息 | 待调查其中每个数据的含义 | - - - - - - -
-查看消息示例: - -``` json -{ - "cmd": "DANMU_MSG", - "info": [ - [ - 0, - 1, - 25, - 16777215, - 1673789362967, - 1673770572, - 0, - "81240bc1", - 0, - 0, - 0, - "", - 0, - "{}", - "{}", - { - "mode": 0, - "show_player_type": 0, - "extra": "{\"send_from_me\":false,\"mode\":0,\"color\":16777215,\"dm_type\":0,\"font_size\":25,\"player_mode\":1,\"show_player_type\":0,\"content\":\"测试文本\",\"user_hash\":\"2166623169\",\"emoticon_unique\":\"\",\"bulge_display\":0,\"recommend_score\":8,\"main_state_dm_color\":\"\",\"objective_state_dm_color\":\"\",\"direction\":0,\"pk_direction\":0,\"quartet_direction\":0,\"anniversary_crowd\":0,\"yeah_space_type\":\"\",\"yeah_space_url\":\"\",\"jump_to_url\":\"\",\"space_type\":\"\",\"space_url\":\"\",\"animation\":{},\"emots\":null}" - }, - { - "activity_identity": "", - "activity_source": 0, - "not_show": 0 - } - ], - "测试文本", - [ - 50500335, - "属官一号", - 0, - 0, - 0, - 10000, - 1, - "" - ], - [ - 5, - "小纸鱼", - "薄海纸鱼", - 706667, - 6126494, - "", - 0, - 12632256, - 12632256, - 12632256, - 0, - 0, - 1837617 - ], - [ - 0, - 0, - 9868950, - ">50000", - 2 - ], - [ - "", - "" - ], - 0, - 0, - null, - { - "ts": 1673789362, - "ct": "A4721FE3" - }, - 0, - 0, - null, - null, - 0, - 21 - ] -} -``` -
- -#### 进场或关注消息 - -有用户进入直播间或关注主播时触发 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "INTERACT_WORD" | 如果是进入直播间或关注消息,内容则是"INTERACT_WORD" | -| data | obj | 进入直播间的用户的信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| contribution | obj | 待调查 | | -| dmscore | num | 待调查 | | -| fans_medal | obj | 粉丝勋章 | | -| identities | num | 待调查 | | -| is_spread | num | 待调查 | | -| msg_type | num | 1为进场,2为关注 | | -| roomid | num | 房间号 | | -| is_spread | num | 待调查 | | -| is_spread | num | 待调查 | | -| score | num | 待调查 | | -| spread_desc | str | 待调查 | | -| spread_info | str | 待调查 | | -| tail_icon | num | 待调查 | | -| timestamp | num | 时间戳 | | -| trigger_time | num | 触发时间 | | -| uid | num | 用户ID | | -| uname | str | 用户名称 | | -| uname_color | str | 用户名称颜色 | | - -
-查看消息示例: - -```json -{ - "cmd": "INTERACT_WORD", - "data": { - "contribution": { - "grade": 0 - }, - "dmscore": 4, - "fans_medal": { - "anchor_roomid": 890976, - "guard_level": 0, - "icon_id": 0, - "is_lighted": 0, - "medal_color": 6067854, - "medal_color_border": 12632256, - "medal_color_end": 12632256, - "medal_color_start": 12632256, - "medal_level": 1, - "medal_name": "小豆皮", - "score": 134, - "special": "", - "target_id": 6574487 - }, - "identities": [ - 1 - ], - "is_spread": 0, - "msg_type": 1, - "roomid": 24143902, - "score": 1644563948936, - "spread_desc": "", - "spread_info": "", - "tail_icon": 0, - "timestamp": 1644563948, - "trigger_time": 1644563947876475000, - "uid": 335979315, - "uname": "TIM_Init", - "uname_color": "" - } -} -``` - -
- -#### 送礼 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "SEND_GIFT" | 投喂礼物等,内容则是"SEND_GIFT" | -| data | obj | 礼物投喂人、礼物信息、礼物数量等 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| action | str | 礼物操作,一般为"投喂" | | -| batch_combo_id | str | 待调查 | 有时为空字符串 | -| batch_combo_send | obj | 待调查 | 有时为null | -| beatId | str | 待调查 | | -| biz_source | str | 待调查 | | -| blind_gift | | 待调查 | | -| broadcast_id | num | 待调查 | | -| coin_type | str | 待调查 | | -| combo_resources_id | num | 待调查 | | -| combo_send | | 待调查 | | -| comber_stay_time | num | 待调查 | | -| combo_total_coin | num | 待调查 | | -| crit_prob | num | 待调查 | | -| demarcation | num | 待调查 | | -| discount_price | num | 待调查 | | -| dmscore | num | 待调查 | | -| draw | num | 待调查 | | -| effect | num | 待调查 | | -| effect_block | num | 待调查 | | -| face | str | 礼物投喂者的头像URL | | -| face_effect_id | num | 待调查 | | -| face_effect_type | num | 待调查 | | -| float_sc_resource_id | num | 待调查 | | -| giftId | num | 礼物ID | | -| giftName | str | 礼物名称 | | -| giftType | num | 待调查 | | -| gold | number | 待调查 | | -| guard_level | num | 待调查 | | -| is_first | bool | 待调查 | | -| is_join_receiver | bool | 待调查 | | -| is_naming | bool | 待调查 | | -| is_special_batch | num | 待调查 | | -| magnification | num | 待调查 | | -| medal_info | obj | 礼物投喂者粉丝奖牌信息 | | -| name_color | str | 待调查 | | -| num | number | 该次投喂的礼物数量 | | -| original_gift_name | str | 待调查 | | -| price | num | 待调查 | | -| rcost | num | 待调查 | | -| receive_user_info | obj | 礼物接收者信息,一般是主播 | | -| remain | num | 待调查 | | -| rnd | num | 礼物发送时的时间戳,以及后面9位未知数字 | | -| send_master | | 待调查 | | -| silver | num | 待调查 | | -| super | num | 待调查 | | -| super_batch_gift_num | num | 待调查 | | -| super_gift_num | num | 待调查 | | -| svga_block | num | 待调查 | | -| switch | bool | 待调查 | | -| tag_image | str | 待调查 | | -| tid | num | 礼物发送时的时间戳,以及后面9位未知数字 | 似乎与rnd字段相同 | -| timestamp | num | 礼物发送时的时间戳 | | -| top_list | | 待调查 | | -| total_coin | num | 待调查 | | -| uid | num | 礼物投喂者的UID | | -| uname | str | 礼物投喂者的名称 | | - -batch_combo_send字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| action | str | 礼物操作,一般为"投喂" | | -| batch_combo_id | str | 待调查 | | -| batch_combo_num | num | 待调查 | | -| blind_gift | | 待调查 | | -| gift_id | num | 待调查 | | -| gift_name | str | 投喂的礼物名称 | 待调查 | -| gift_num | num | 投喂礼物数量 | 待调查 | -| send_master | | 待调查 | | -| uid | num | 礼物投喂者的UID | | -| uname | str | 礼物投喂者的名称 | | - -medal_info字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| anchor_roomid | num | 待调查 | | -| anchor_uname | str | 待调查 | | -| guard_level | num | 待调查 | | -| icon_id | num | 待调查 | | -| is_lighted | num | 待调查 | | -| medal_color | num | 礼物投喂者的粉丝奖牌颜色 | 十六进制颜色值转为了十进制表示 | -| medal_border_color | num | 礼物投喂者的粉丝奖牌边框颜色 | 十六进制颜色值的十进制表示 | -| medal_color_end | num | 待调查 | | -| medal_color_start | num | 待调查 | | -| medal_level | num | 礼物投喂者的粉丝奖牌等级 | | -| medal_name | str | 礼物投喂者的粉丝奖牌名称 | | -| special | str | 待调查 | | -| target_id | num | 待调查 | | - -receive_user_info字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| uid | num | 礼物接收者的UID | 一般为主播的UID | -| uname | str | 礼物接收者的名称 | 一般为主播的名称 | - -
-查看消息示例: - -```json -{ - "cmd": "SEND_GIFT", - "data": { - "action": "投喂", - "batch_combo_id": "batch:gift:combo_id:510149209:36047134:31036:1673622464.8445", - "batch_combo_send": { - "action": "投喂", - "batch_combo_id": "batch:gift:combo_id:510149209:36047134:31036:1673622464.8445", - "batch_combo_num": 1, - "blind_gift": null, - "gift_id": 31036, - "gift_name": "小花花", - "gift_num": 1, - "send_master": null, - "uid": 510149209, - "uname": "12138额83121" - }, - "beatId": "", - "biz_source": "live", - "blind_gift": null, - "broadcast_id": 0, - "coin_type": "gold", - "combo_resources_id": 1, - "combo_send": { - "action": "投喂", - "combo_id": "gift:combo_id:510149209:36047134:31036:1673622464.8434", - "combo_num": 1, - "gift_id": 31036, - "gift_name": "小花花", - "gift_num": 1, - "send_master": null, - "uid": 510149209, - "uname": "12138额83121" - }, - "combo_stay_time": 3, - "combo_total_coin": 100, - "crit_prob": 0, - "demarcation": 1, - "discount_price": 100, - "dmscore": 8, - "draw": 0, - "effect": 0, - "effect_block": 0, - "face": "https://i1.hdslb.com/bfs/face/fb79103e8b33547023e2010030b6889bba2b49bf.jpg", - "face_effect_id": 0, - "face_effect_type": 0, - "float_sc_resource_id": 0, - "giftId": 31036, - "giftName": "小花花", - "giftType": 0, - "gold": 0, - "guard_level": 0, - "is_first": true, - "is_join_receiver": false, - "is_naming": false, - "is_special_batch": 0, - "magnification": 1, - "medal_info": { - "anchor_roomid": 0, - "anchor_uname": "", - "guard_level": 0, - "icon_id": 0, - "is_lighted": 0, - "medal_color": 0, - "medal_color_border": 0, - "medal_color_end": 0, - "medal_color_start": 0, - "medal_level": 0, - "medal_name": "", - "special": "", - "target_id": 0 - }, - "name_color": "", - "num": 1, - "original_gift_name": "", - "price": 100, - "rcost": 164536872, - "receive_user_info": { - "uid": 36047134, - "uname": "小霖QL" - }, - "remain": 0, - "rnd": "1673622464121900003", - "send_master": null, - "silver": 0, - "super": 0, - "super_batch_gift_num": 1, - "super_gift_num": 1, - "svga_block": 0, - "switch": true, - "tag_image": "", - "tid": "1673622464121900003", - "timestamp": 1673622464, - "top_list": null, - "total_coin": 100, - "uid": 510149209, - "uname": "12138额83121" - } -} -``` -
- -#### 礼物星球点亮 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "GIFT_STAR_PROCESS" | 主播的礼物星球其一点亮之后,则内容为"GIFT_STAR_PROCESS" | -| data | obj | 消息文本 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| status | num | 待调查 | | -| tip | str | 点亮礼物星球的消息文本 | | - -
-查看消息示例: - -```json -{ - "cmd": "GIFT_STAR_PROCESS", - "data": { - "status": 1, - "tip": "情书已点亮" - } -} -``` -
- -#### 礼物连击 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "COMBO_SEND" | | -| data | obj | 礼物投喂者、礼物信息等 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| action | str | 礼物操作,一般为"投喂" | | -| batch_combo_id | str | 待调查 | | -| batch_combo_num | num | 连击礼物数量 | | -| combo_id | str | 待调查 | | -| combo_num | str | 连击礼物数量 | | -| combo_total_coin | num | 待调查 | | -| dmscore | num | 待调查 | | -| gift_id | num | 待调查 | | -| gift_name | str | 连击礼物的名称 | | -| gift_num | num | 0 | | -| is_join_receiver | bool | 待调查 | | -| is_naming | bool | 待调查 | | -| is_show | num | 待调查 | | -| medal_info | obj | 礼物投喂者的粉丝勋章信息 | | -| name_color | str | 待调查 | | -| r_uname | str | 主播的名称 | | -| receive_user_info | obj | 主播的UID和名称 | | -| ruid | num | 主播的UID | | -| send_master | | 待调查 | | -| total_num | num | 连击礼物数量 | | -| uid | num | 礼物投喂者的UID | | -| uname | str | 礼物投喂者的名称 | | - -receive_user_info字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | -------- | ------ | --------- | -| uid | number | 礼物接收者的UID | 一般为主播的UID | -| uname | string | 礼物接收者的名称 | 一般为主播的名称 | - -
-查看消息示例: - -```json -{ - "cmd": "COMBO_SEND", - "data": { - "action": "投喂", - "batch_combo_id": "batch:gift:combo_id:3493090830584635:29857468:31036:1673774515.6190", - "batch_combo_num": 2, - "combo_id": "gift:combo_id:3493090830584635:29857468:31036:1673774515.6180", - "combo_num": 2, - "combo_total_coin": 200, - "dmscore": 112, - "gift_id": 31036, - "gift_name": "小花花", - "gift_num": 0, - "is_join_receiver": false, - "is_naming": false, - "is_show": 1, - "medal_info": { - "anchor_roomid": 0, - "anchor_uname": "", - "guard_level": 0, - "icon_id": 0, - "is_lighted": 1, - "medal_color": 6067854, - "medal_color_border": 6067854, - "medal_color_end": 6067854, - "medal_color_start": 6067854, - "medal_level": 3, - "medal_name": "爱珞珞", - "special": "", - "target_id": 3493076559465366 - }, - "name_color": "", - "r_uname": "露萌不要雨草", - "receive_user_info": { - "uid": 29857468, - "uname": "露萌不要雨草" - }, - "ruid": 29857468, - "send_master": null, - "total_num": 2, - "uid": 3493090830584635, - "uname": "DOC-Neo" - } -} -``` -
- - - -#### 通知消息 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "NOTICE_MSG" | 通知消息,内容则是"NOTICE_MSG" | -| id | num | 待调查 | | -| data | obj | 通知数据 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| full | obj | 待调查 | | -| half | obj | 待调查 | | -| side | obj | 待调查 | | -| roomid | num | 目标直播间短号 | | -| real_roomid | num | 目标直播间真实ID | | -| msg_common | str | 显示的消息内容 | | -| msg_self | str | 消息内容本身 | 剔除额外文本 | -| link_rel | str | 通知消息跳转的URL | | -| msg_type | num | 待调查 | | -| shield_uid | num | 待调查 | | -| business_id | str | 待调查 | | -| scatter | obj | 待调查 | | -| marquee_id | str | 待调查 | | -| notice_type | num | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "NOTICE_MSG", - "id": 804, - "name": "人气榜第一名", - "full": { - "head_icon": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", - "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", - "head_icon_fa": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", - "tail_icon_fa": "https://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png", - "head_icon_fan": 1, - "tail_icon_fan": 4, - "background": "#FFE6BD", - "color": "#9D5412", - "highlight": "#FF6933", - "time": 20 - }, - "half": { - "head_icon": "https://i0.hdslb.com/bfs/live/f74b09c7fb83123a0dd66c536b6d5b143d271b08.png", - "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", - "background": "#FFE6BD", - "color": "#9D5412", - "highlight": "#FF6933", - "time": 0 - }, - "side": { - "head_icon": "", - "background": "", - "color": "", - "highlight": "", - "border": "" - }, - "roomid": 23919301, - "real_roomid": 23919301, - "msg_common": "恭喜主播<%AG超玩会王者荣耀一诺%>荣获上小时人气榜第<%1%>名!点击传送查看精彩内容!", - "msg_self": "恭喜主播<%AG超玩会王者荣耀一诺%>荣获上小时人气榜第<%1%>名!", - "link_url": "https://live.bilibili.com/23919301?broadcast_type=0&is_room_feed=1&from=28003&extra_jump_from=28003", - "msg_type": 1, - "shield_uid": -1, - "business_id": "", - "scatter": { - "min": 0, - "max": 0 - }, - "marquee_id": "", - "notice_type": 0 -} -``` -```json -{ - "cmd": "NOTICE_MSG", - "id": 814, - "name": "幻影飞船专用", - "full": { - "head_icon": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", - "tail_icon": "https://i0.hdslb.com/bfs/live/822da481fdaba986d738db5d8fd469ffa95a8fa1.webp", - "head_icon_fa": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", - "tail_icon_fa": "https://i0.hdslb.com/bfs/live/38cb2a9f1209b16c0f15162b0b553e3b28d9f16f.png", - "head_icon_fan": 1, - "tail_icon_fan": 4, - "background": "#F09153", - "color": "#FFFFFF", - "highlight": "#FFE600", - "time": 15 - }, - "half": { - "head_icon": "https://i0.hdslb.com/bfs/live/08978f1721200e11328d1f7d6231b21bcca20488.gif", - "tail_icon": "", - "background": "#F09153", - "color": "#FFFFFFFF", - "highlight": "#FFE600", - "time": 15 - }, - "side": { - "head_icon": "", - "background": "", - "color": "", - "highlight": "", - "border": "" - }, - "roomid": 25207004, - "real_roomid": 25207004, - "msg_common": "<%咖啡_ミシェル%>投喂<%夜月瓜瓜sukuyi%>1个幻影飞船,向着浩瀚星辰出发!", - "msg_self": "<%咖啡_ミシェル%>投喂<%夜月瓜瓜sukuyi%>1个幻影飞船,向着浩瀚星辰出发!", - "link_url": "https://live.bilibili.com/25207004?broadcast_type=0&is_room_feed=1&from=28003&extra_jump_from=28003&live_lottery_type=1", - "msg_type": 2, - "shield_uid": -1, - "business_id": "32356", - "scatter": { - "min": 0, - "max": 0 - }, - "marquee_id": "", - "notice_type": 0 -} -``` - -
- -#### 主播准备中 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "PREPARING" | | -| round | num | 轮播状态:
1正在轮播
0未轮播 | | -| roomid | num | 直播间ID | 未知是真实ID还是短号 | | - -
-查看消息示例: - -```json -{ - "cmd": "PREPARING", - "round": 1, - "roomid": "8618057" -} -``` - -
- -#### 直播开始 - - -#### 主播信息更新 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ROOM_REAL_TIME_MESSAGE_UPDATE" | | -| data | obj | 房间ID、主播粉丝数等 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| roomid | num | 直播间ID | 未知是真实ID还是短号 | | -| fans | num | 主播当前粉丝数 | | -| red_notice | num | 待调查 | | -| fans_club | num | 主播粉丝团人数 | | - -
-查看消息示例: - -```json -{ - "cmd": "ROOM_REAL_TIME_MESSAGE_UPDATE", - "data": { - "roomid": 8618057, - "fans": 136, - "red_notice": -1, - "fans_club": 8 - } -} -
- -#### 直播间高能榜 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ONLINE_RANK_V2" | 直播间高能用户数据刷新,内容则是"ONLINE_RANK_V2" | -| data | obj | 直播间高能用户数据 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| list | array | 在直播间高能用户中的用户信息 | | -| rank_type | str | 待调查 | | - -list数组中的对象 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| uid | num | 用户UID | | -| face | str | 用户头像URL | | -| score | str | 该用户的贡献值 | | -| uname | str | 用户名称 | | -| rank | num | 该用户在高能榜中的排名 | | -| guard_level | num | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "ONLINE_RANK_V2", - "data": { - "list": [ - { - "uid": 2082621455, - "face": "https://i2.hdslb.com/bfs/face/9de6050277fa13d830eb97e3453d89843de46a31.jpg", - "score": "20", - "uname": "8级萌新_小华", - "rank": 1, - "guard_level": 0 - }, - { - "uid": 50500335, - "face": "https://i0.hdslb.com/bfs/face/ca722209251478ef0ffb45c3adeafb9dab283c57.jpg", - "score": "20", - "uname": "属官一号", - "rank": 2, - "guard_level": 0 - }, - { - "uid": 29857468, - "face": "https://i1.hdslb.com/bfs/face/7b4ae2e7e950f2dfb2bd969859c813487ce3b64c.jpg", - "score": "12", - "uname": "露萌不要雨草", - "rank": 3, - "guard_level": 0 - } - ], - "rank_type": "gold-rank" - } -} -``` - -
- - -#### 直播间高能用户数量 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ONLINE_RANK_COUNT" | 直播间高能用户数,内容是"ONLINE_RANK_COUNT" | -| data | obj | 直播间高能用户数量 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| count | num | 直播间高能用户数量 | | - - -
-查看消息示例: - -```json -{ - "cmd": "ONLINE_RANK_COUNT", - "data": { - "count": 4 - } -} -``` - -
- -#### 用户到达直播间高能榜前三名的消息 - - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ONLINE_RANK_TOP3" | | -| data | obj | 消息内容、高能榜排名等 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| dmscore | num | 待调查 | | -| list | array | 消息内容和高能榜排名 | | - -list数组中的对象 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| msg | str | 消息内容 | | -| rank | num | 该用户的高能榜排名 | | - -
-查看消息示例: - -```json -{ - "cmd": "ONLINE_RANK_TOP3", - "data": { - "dmscore": 112, - "list": [ - { - "msg": "恭喜 <%你干嘛哈哈哎哟%> 成为高能用户", - "rank": 1 - } - ] - } -} -``` - -
- -#### 直播间用户点赞 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "LIKE_INFO_V3_CLICK" | 若直播间被赞,则内容是"LIKE_INFO_V3_CLICK" | -| data | obj | 点赞的用户的信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| show_area | num | 待调查 | | -| msg_type | num | 待调查 | | -| like_icon | str | 点赞图标的URL | | -| uid | num | 点赞的用户的UID | | -| like_text | str | 点赞文本 | | -| uname | str | 点赞的用户的名称 | | -| uname_color | str | 点赞的用户的名称颜色 | | -| identities | array | 待调查 | | -| fans_medal | obj | 点赞的用户的粉丝勋章信息 | | -| contribution_info | obj | 待调查 | | -| dmscore | num | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "LIKE_INFO_V3_CLICK", - "data": { - "show_area": 0, - "msg_type": 6, - "like_icon": "https://i0.hdslb.com/bfs/live/23678e3d90402bea6a65251b3e728044c21b1f0f.png", - "uid": 32174213, - "like_text": "为主播点赞了", - "uname": "MeiDngS", - "uname_color": "", - "identities": [ - 1 - ], - "fans_medal": { - "target_id": 0, - "medal_level": 0, - "medal_name": "", - "medal_color": 0, - "medal_color_start": 12632256, - "medal_color_end": 12632256, - "medal_color_border": 12632256, - "is_lighted": 0, - "guard_level": 0, - "special": "", - "icon_id": 0, - "anchor_roomid": 0, - "score": 0 - }, - "contribution_info": { - "grade": 0 - }, - "dmscore": 20 - } -} -``` - -
- -#### 直播间点赞数 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "LIKE_INFO_V3_UPDATE" | 若直播间点赞数更新,则内容是"LIKE_INFO_V3_UPDATE" | -| data | obj | 直播间点赞数 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| click_count | num | 直播间点赞数 | | - -
-查看消息示例: - -```json -{ - "cmd": "LIKE_INFO_V3_UPDATE", - "data": { - "click_count": 3227 - } -} -``` - -
- -#### 直播间发红包弹幕 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "POPULARITY_RED_POCKET_START" | | -| data | obj | 送红包的老板的信息、里面的礼物信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| lot_id | num | 发送的红包的ID | | -| sender_uid | num | 发送者的UID | | -| sender_name | str | 发送者的名称 | | -| sender_face | str | 发送者的头像的URL | | -| join_requirement | num | 待调查 | | -| danmu | str | 用户参与红包时自动发送的弹幕内容 | | -| current_time | num | 服务器发送数据包的Unix时间戳 | | -| start_time | num | 可以开始抢红包的Unix时间戳 | | -| end_time | num | 抢红包的结束时间Unix时间戳 | | -| last_time | num | 红包的持续时间(秒) | start_time - end_time | -| remove_time | num | 待调查 | | -| replace_time | num | 待调查 | | -| lot_status | num | 待调查 | | -| h5_url | str | 红包页面的URL | | -| user_status | num | 用户参与状态,但是不知道是哪个用户 | 1已参与
2未参与 | -| awards | array | 红包内包含的礼物的信息 | | -| lot_config_id | num | 待调查 | | -| total_price | num | 红包总价格 | | -| wait_num | num | 待调查 | | - -awards数组中的对象 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| gift_id | num | 礼物ID | | -| gift_name | str | 礼物名称 | | -| gift_pic | str | 礼物图标URL | | -| num | num | 该礼物的数量 | | - - -
-查看消息示例: - -```json -{ - "cmd": "POPULARITY_RED_POCKET_START", - "data": { - "lot_id": 8445764, - "sender_uid": 38554435, - "sender_name": "我的0019", - "sender_face": "https://i1.hdslb.com/bfs/face/282c3055de94c74d69094fad91a56f9ed73a270a.jpg", - "join_requirement": 1, - "danmu": "点点红包,关注主播抽礼物~", - "current_time": 1673684632, - "start_time": 1673684631, - "end_time": 1673684811, - "last_time": 180, - "remove_time": 1673684826, - "replace_time": 1673684821, - "lot_status": 1, - "h5_url": "https://live.bilibili.com/p/html/live-app-red-envelope/popularity.html?is_live_half_webview=1&hybrid_half_ui=1,5,100p,100p,000000,0,50,0,0,1;2,5,100p,100p,000000,0,50,0,0,1;3,5,100p,100p,000000,0,50,0,0,1;4,5,100p,100p,000000,0,50,0,0,1;5,5,100p,100p,000000,0,50,0,0,1;6,5,100p,100p,000000,0,50,0,0,1;7,5,100p,100p,000000,0,50,0,0,1;8,5,100p,100p,000000,0,50,0,0,1\&hybrid_rotate_d=1&hybrid_biz=popularityRedPacket&lotteryId=8445764", - "user_status": 2, - "awards": [ - { - "gift_id": 31212, - "gift_name": "打call", - "gift_pic": "https://s1.hdslb.com/bfs/live/461be640f60788c1d159ec8d6c5d5cf1ef3d1830.png", - "num": 2 - }, - { - "gift_id": 31214, - "gift_name": "牛哇", - "gift_pic": "https://s1.hdslb.com/bfs/live/91ac8e35dd93a7196325f1e2052356e71d135afb.png", - "num": 3 - }, - { - "gift_id": 31216, - "gift_name": "i了i了", - "gift_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png", - "num": 3 - } - ], - "lot_config_id": 3, - "total_price": 1600, - "wait_num": 0 - } -} -``` - -
- - -#### 直播间红包 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "POPULARITY_RED_POCKET_NEW" | 与“直播间发红包弹幕”不同
那个是发红包的弹幕信息
这个则和“送礼”的信息相似,但也有前者的一些字段 | -| data | obj | 发送者信息和红包(礼物)信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| lot_id | num | 发送的红包的ID | | -| start_time | num | 开始抢红包的Unix时间戳 | | -| current_time | num | 服务器发送数据包的Unix时间戳 | | -| wait_num | num | 待调查 | | -| uname | str | 发送者的名称 | | -| uid | num | 发送者的UID | | -| action | str | 礼物操作 | | -| num | num | 礼物数量 | | -| gift_name | str | "红包" | | -| gift_id | num | 礼物ID | | -| price | num | 待调查 | | -| name_color | str | 发送者的名称的颜色 | | -| medal_info | obj | 发送者的粉丝勋章信息 | | - - -
-查看消息示例: - -```json -{ - "cmd": "POPULARITY_RED_POCKET_NEW", - "data": { - "lot_id": 8445764, - "start_time": 1673684631, - "current_time": 1673684631, - "wait_num": 0, - "uname": "我的0019", - "uid": 38554435, - "action": "送出", - "num": 1, - "gift_name": "红包", - "gift_id": 13000, - "price": 20, - "name_color": "", - "medal_info": { - "target_id": 400963649, - "special": "", - "icon_id": 0, - "anchor_uname": "", - "anchor_roomid": 0, - "medal_level": 21, - "medal_name": "憨憨酥", - "medal_color": 1725515, - "medal_color_start": 12632256, - "medal_color_end": 12632256, - "medal_color_border": 12632256, - "is_lighted": 0, - "guard_level": 0 - } - } -} -``` -
- - -#### 直播间抢到红包的用户 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "POPULARITY_RED_POCKET_WINNER_LIST" | | -| data | obj | 抢到红包的用户信息、红包内的礼物信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| lot_id | num | 该红包的ID | | -| total_num | num | 该红包内所有礼物的总数 | | -| winner_info | array | 抢到红包的用户的信息
抢到的礼物ID等 | | -| awards | obj | 该红包内的礼物信息 | | -| version | num | 待调查 | | - -winner_info数组中的数组 - -| 索引 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ---- | -| 0 | num | 该抢到红包的用户的UID | | -| 1 | str | 该抢到红包的用户的名称 | | -| 2 | num | 待调查 | | -| 3 | num | 该用户抢到的礼物的ID | | - -awards字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| 礼物ID | obj | 礼物信息 | | -| ... | obj | | | - -礼物ID 对象 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| award_type | num | 待调查 | | -| award_name | str | 该礼物的名称 | | -| award_pic | str | 该礼物的图标URL | | -| award_big_pic | str | 该礼物的高分辨率图标URL | | -| award_price | num | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "POPULARITY_RED_POCKET_WINNER_LIST", - "data": { - "lot_id": 8445764, - "total_num": 8, - "winner_info": [ - [ - 38554435, - "我的0019", - 4581509, - 31212 - ], - [ - 516174930, - "云来海遛鸟大爷", - 4606389, - 31212 - ] - ], - "awards": { - "31212": { - "award_type": 1, - "award_name": "打call", - "award_pic": "https://s1.hdslb.com/bfs/live/461be640f60788c1d159ec8d6c5d5cf1ef3d1830.png", - "award_big_pic": "https://i0.hdslb.com/bfs/live/9e6521c57f24c7149c054d265818d4b82059f2ef.png", - "award_price": 500 - }, - "31214": { - "award_type": 1, - "award_name": "牛哇", - "award_pic": "https://s1.hdslb.com/bfs/live/91ac8e35dd93a7196325f1e2052356e71d135afb.png", - "award_big_pic": "https://i0.hdslb.com/bfs/live/3b74c117b4f265edcea261bc5608a58d3a7c300a.png", - "award_price": 100 - }, - "31216": { - "award_type": 1, - "award_name": "i了i了", - "award_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png", - "award_big_pic": "https://i0.hdslb.com/bfs/live/cfb9c3d9bdd2c25c95b7d859ebaa590ca9362adb.png", - "award_price": 100 - } - }, - "version": 1 - } -} -``` -
- - - -#### 直播间看过人数 - -该数据包的正文中,前19字节的信息未知。 - -前19字节信息示例: -``` -00000001: 8b38 8000 0000 7200 1000 0000 0000 0500 .8....r......... -00000002: 0000 00 ... -``` - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "WATCHED_CHANGE" | 若直播间看过人数更新,则内容是"WATCHED_CHANGE" | -| data | obj | 直播间看过人数 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| num | num | | | -| text_small | str | | | -| text_large | str | | | - -
-查看消息示例: - -```json -{ - "cmd": "WATCHED_CHANGE", - "data": { - "num": 17903, - "text_small": "1.7万", - "text_large": "1.7万人看过" - } -} -``` - -
- -#### 用户进场特效 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ENTRY_EFFECT" | 有进场特效的用户进入直播间,则内容是"ENTRY_EFFECT" | -| data | obj | 进场用户、进场特效信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| id | num | 待调查 | | -| uid | num | 进场用户的UID | | -| target_id | num | 主播的UID? | | -| mock_effect | num | 待调查 | | -| face | str | 进场用户的头像URL | | -| privilege_type | num | 待调查 | | -| copy_writing | str | 进场欢迎文本 | | -| copy_color | str | 进场欢迎文本的十六进制颜色值 | | -| highlight_color | str | 待调查 | | -| priority | num | 待调查 | | -| basemap_url | str | 进场特效背景图片URL | APP端使用该URL | -| show_avatar | num | 是否显示用户头像 | 1显示
0不显示 | -| web_basemap_url | str | 进场特效背景图片URL | 网页端使用该URL | -| web_effective_time | num | 进场特效生存时间 | 网页端 | -| web_effect_close | num | 待调查 | | -| web_close_time | num | 待调查 | | -| business | num | 待调查 | | -| copy_writing_v2 | str | 进场欢迎文本的复制? | | -| icon_list | array | 待调查 | | -| max_delay_time | num | 待调查 | | -| trigger_time | num | 触发的Unix时间戳,以及后面9位未知数字 | | -| identities | num | 待调查 | | -| effect_silent_time | num | 待调查 | | -| effective_time_new | num | 待调查 | | -| web_dynamic_url_webp | str | 待调查 | | -| web_dynamic_url_apng | str | 待调查 | | -| mobile_dynamic_url_webp | str | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "ENTRY_EFFECT", - "data": { - "id": 4, - "uid": 489893482, - "target_id": 27717502, - "mock_effect": 0, - "face": "https://i0.hdslb.com/bfs/face/member/noface.jpg", - "privilege_type": 3, - "copy_writing": "欢迎舰长 <%天使雨晰%> 进入直播间", - "copy_color": "#ffffff", - "highlight_color": "#E6FF00", - "priority": 1, - "basemap_url": "https://i0.hdslb.com/bfs/live/mlive/11a6e8eb061c3e715d0a6a2ac0ddea2faa15c15e.png", - "show_avatar": 1, - "effective_time": 2, - "web_basemap_url": "https://i0.hdslb.com/bfs/live/mlive/11a6e8eb061c3e715d0a6a2ac0ddea2faa15c15e.png", - "web_effective_time": 2, - "web_effect_close": 0, - "web_close_time": 0, - "business": 1, - "copy_writing_v2": "欢迎舰长 <%天使雨晰%> 进入直播间", - "icon_list": [], - "max_delay_time": 7, - "trigger_time": 1673625604373633300, - "identities": 6, - "effect_silent_time": 0, - "effective_time_new": 0, - "web_dynamic_url_webp": "", - "web_dynamic_url_apng": "", - "mobile_dynamic_url_webp": "" - } -} -``` - -
- - -#### 直播间在所属分区的排名改变 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "AREA_RANK_CHANGED" | 若直播间在所属分区的排名改变,则内容是"AREA_RANK_CHANGED" | -| data | obj | 直播间在所属分区的排名信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| conf_id | num | 待调查 | | -| rank_name | str | 排行榜名称 | | -| uid | num | 主播的UID | | -| rank | num | 直播间在分区的排名 | 若没有上榜则为0 | -| icon_url_blue | str | 蓝色排名图标URL | | -| icon_url_pink | str | 粉色排名图标URL | | -| icon_url_grey | str | 灰色排名图标URL | | -| action_type | num | 待调查 | | -| timestamp | num | 触发时的Unix时间戳 | | -| msg_id | str | 待调查 | | -| jump_url_link | str | 排行榜跳转链接 | APP端页面 | -| jump_url_pc | str | 排行榜跳转链接 | APP端页面 | -| jump_url_pink | str | 排行榜跳转链接 | APP端页面 | -| jump_url_web | str | 排行榜跳转链接 | APP端页面 | - -
-查看消息示例: - -```json -{ - "cmd": "AREA_RANK_CHANGED", - "data": { - "conf_id": 23, - "rank_name": "手游航海", - "uid": 27717502, - "rank": 4, - "icon_url_blue": "https://i0.hdslb.com/bfs/live/18e2990a546d33368200f9058f3d9dbc4038eb5c.png", - "icon_url_pink": "https://i0.hdslb.com/bfs/live/a6c490c36e88c7b191a04883a5ec15aed187a8f7.png", - "icon_url_grey": "https://i0.hdslb.com/bfs/live/cb7444b1faf1d785df6265bfdc1fcfc993419b76.png", - "action_type": 1, - "timestamp": 1673625610, - "msg_id": "e93c7860-b901-41ca-aad8-fe538a5fac9c", - "jump_url_link": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=3&ruid=27717502&conf_id=23&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0#/area-rank", - "jump_url_pc": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=4&ruid=27717502&conf_id=23&pc_ui=338,465,f4eefa,0#/area-rank", - "jump_url_pink": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=1&ruid=27717502&conf_id=23&is_live_half_webview=1&hybrid_rotate_d=1&is_cling_player=1&hybrid_half_ui=1,3,100p,70p,f4eefa,0,30,100,0,0;2,2,375,100p,f4eefa,0,30,100,0,0;3,3,100p,70p,f4eefa,0,30,100,0,0;4,2,375,100p,f4eefa,0,30,100,0,0;5,3,100p,70p,f4eefa,0,30,100,0,0;6,3,100p,70p,f4eefa,0,30,100,0,0;7,3,100p,70p,f4eefa,0,30,100,0,0;8,3,100p,70p,f4eefa,0,30,100,0,0#/area-rank", - "jump_url_web": "https://live.bilibili.com/p/html/live-app-hotrank/index.html?clientType=2&ruid=27717502&conf_id=23#/area-rank" - } -} -``` - -
- - -#### 直播间在所属分区排名提升的祝福 - -会分多个普通包发送 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "COMMON_NOTICE_DANMAKU" | 例如提示“恭喜主播 时雨ioo 成为手游航海当前第5名”,
,则内容是"COMMON_NOTICE_DANMAKU" | -| data | obj | 直播间在所属分区排名提升的祝福的信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| biz_id | num | 待调查 | | -| content_segments | array | 文本分段 | | -| danmaku_style | obj | 文本样式信息 | | -| danmaku_url | str | 待调查 | | -| dmscore | num | 待调查 | | -| terminals | array | 待调查 | | - -content_segments数组中的对象 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| font_color | str | text字段的十六进制颜色值 | | -| font_color_dark | str | text字段的十六进制颜色值 | APP端设置为深色模式时使用 | -| text | str | 祝贺文本 | | -| type | num | 待调查 | | - -danmaku_style字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| background_color | str | 文本背景颜色的十六进制颜色值 | | -| background_color_dark | str | 文本背景颜色的十六进制颜色值 | APP端设置为深色模式时使用 | - -
-查看消息示例: - -第一条数据: -```json -{ - "cmd": "COMMON_NOTICE_DANMAKU", - "data": { - "biz_id": 0, - "content_segments": [ - { - "font_color": "#CCCCCC", - "font_color_dark": "#CCCCCC", - "text": "恭喜主播 时雨ioo ", - "type": 1 - }, - { - "font_color": "#F494AF", - "font_color_dark": "#F494AF", - "text": "成为手游航海当前第5名", - "type": 1 - } - ], - "danmaku_style": { - "background_color": null, - "background_color_dark": null - }, - "danmaku_uri": "", - "dmscore": 144, - "terminals": [ - 1, - 2, - 3 - ] - } -} -``` -第二条数据: -```json -{ - "cmd": "COMMON_NOTICE_DANMAKU", - "data": { - "biz_id": 0, - "content_segments": [ - { - "font_color": "#99A5AE", - "font_color_dark": "#99A5AE", - "text": "恭喜主播 时雨ioo 成为手游航海当前第5名", - "type": 1 - } - ], - "danmaku_style": { - "background_color": null, - "background_color_dark": null - }, - "danmaku_uri": "", - "dmscore": 144, - "terminals": [ - 5 - ] - } -} -``` -第三条数据: -```json -{ - "cmd": "COMMON_NOTICE_DANMAKU", - "data": { - "biz_id": 0, - "content_segments": [ - { - "font_color": "#998EFF", - "font_color_dark": "#998EFF", - "text": "恭喜主播 时雨ioo 成为手游航海第5名", - "type": 1 - } - ], - "danmaku_style": { - "background_color": null, - "background_color_dark": null - }, - "danmaku_uri": "", - "dmscore": 144, - "terminals": [ - 4 - ] - } -} -``` - -
- - -#### 直播间信息更改 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "ROOM_CHANGE" | 例如直播间标题更改、直播间分区更改 | -| data | obj | | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| title | str | 直播间标题 | | -| area_id | num | 当前直播间所属分区的ID | | -| parent_area_id | num | 待调查 | | -| area_name | str | 当前直播间所属分区的名称 | | -| parent_area_name | str | 待调查 | | -| live_key | str | 待调查 | | -| sub_session_key | str | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "ROOM_CHANGE", - "data": { - "title": "开始白给CS", - "area_id": 371, - "parent_area_id": 9, - "area_name": "虚拟主播", - "parent_area_name": "虚拟主播", - "live_key": "320830629635915849", - "sub_session_key": "320830629635915849sub_time:1673690546" - } -} -``` -
- - -#### 醒目留言按钮 - -json格式 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "SUPER_CHAT_ENTRANCE" | 不知道有什么意义 | -| data | obj | 醒目留言按钮的信息 | | -| roomid | num | 直播间ID | 未知是短号还是真实ID | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | --- | ------ | --------- | -| status | num | 待调查 | | -| jump_url | str | 按下“醒目留言”按钮后弹出小窗的页面URL | | -| icon | str | “醒目留言”按钮图标的URL | | -| broadcast_type | num | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "SUPER_CHAT_ENTRANCE", - "data": { - "status": 1, - "jump_url": "https://live.bilibili.com/p/html/live-app-superchat2/index.html?is_live_half_webview=1&hybrid_half_ui=1,3,100p,70p,ffffff,0,30,100;2,2,375,100p,ffffff,0,30,100;3,3,100p,70p,ffffff,0,30,100;4,2,375,100p,ffffff,0,30,100;5,3,100p,60p,ffffff,0,30,100;6,3,100p,60p,ffffff,0,30,100;7,3,100p,60p,ffffff,0,30,100", - "icon": "https://i0.hdslb.com/bfs/live/0a9ebd72c76e9cbede9547386dd453475d4af6fe.png", - "broadcast_type": 1 - }, - "roomid": "8618057" -} -``` -
- -#### 顶部横幅 - -网页端在直播间标题下面的横幅 - -例如“限时任务”等 - -json格式 - - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "WIDGET_BANNER" | | -| data | obj | 横幅信息 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| timestamp | num | 服务器发送数据包时的Unix时间戳 | | -| widget_list | obj | 横幅信息 | 待调查 | - -widget_list字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| 横幅ID | obj | 横幅信息 | | -| ... | obj | | | - -横幅ID 字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| id | num | 横幅ID | | -| title | str | 待调查 | | -| cover | str | 待调查 | | -| web_cover | str | 待调查 | | -| tip_text | str | 待调查 | | -| tip_text_color | str | 待调查 | | -| tip_bottom_color | str | 待调查 | | -| jump_url | str | 点击横幅后出现小窗的页面的URL | | -| url | str | 待调查 | | -| stay_time | num | 待调查 | | -| site | num | 待调查 | | -| platform_in | array | 待调查 | | -| type | num | 待调查 | | -| band_id | num | 待调查 | | -| sub_key | str | 待调查 | | -| sub_data | str | 横幅数据 | | -| is_add | bool | 待调查 | | - -
-查看消息示例: - -```json -{ - "cmd": "WIDGET_BANNER", - "data": { - "timestamp": 1673684868, - "widget_list": { - "308": { - "id": 308, - "title": "一月限时任务", - "cover": "", - "web_cover": "", - "tip_text": "限时任务", - "tip_text_color": "", - "tip_bottom_color": "", - "jump_url": "https://live.bilibili.com/activity/live-activity-battle/index.html?app_name=time_limited_task_jan_2023&is_live_half_webview=1&hybrid_rotate_d=1&hybrid_half_ui=1,3,100p,70p,0,0,0,0,12,0;2,2,375,100p,0,0,0,0,12,0;3,3,100p,70p,0,0,0,0,12,0;4,2,375,100p,0,0,0,0,12,0;5,3,100p,70p,0,0,0,0,12,0;6,3,100p,70p,0,0,0,0,12,0;7,3,100p,70p,0,0,0,0,12,0;8,3,100p,70p,0,0,0,0,12,0&room_id=8618057&uid=29857468#/", - "url": "", - "stay_time": 5, - "site": 1, - "platform_in": [ - "live", - "blink", - "live_link", - "web", - "pc_link" - ], - "type": 1, - "band_id": 101558, - "sub_key": "", - "sub_data": "%7B%22task_status%22%3A0%2C%22current_val%22%3A10%2C%22target_val%22%3A1200%2C%22timeout%22%3A1673687024%2C%22reward_price%22%3A8%2C%22reward_type%22%3A1%7D", - "is_add": true - } - } - } -} -``` - -
- -#### 下播的直播间 - -json格式 - - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| cmd | str | "STOP_LIVE_ROOM_LIST" | | -| data | obj | 下播的直播间ID列表 | | - -data字段 - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | --------- | -| room_id_list | array | 下播的直播间ID | | - -room_id_list数组中的数字 - -| 类型 | 内容 | 备注 | -| --- | ---- | ---- | -| num | 下播的直播间ID | 未知是真实ID还是短号 | -| num | ... | | - - -
-查看消息示例: - -```json -{ - "cmd": "STOP_LIVE_ROOM_LIST", - "data": { - "room_id_list": [ - 22629205, - 23130005, - 25963791, - 5532805, - 668631, - 21409011, - 21559541, - 23499952, - 26700301, - 26785971, - 11673798, - 13766041, - 22980849, - 23719726, - 23865141, - 24984476, - 6134501, - 13782552, - 22276717, - 24107587, - 25023546, - 25404621, - 25516925, - 26527626, - 3392341, - 34027, - 502153, - 6479194, - 7636554, - 12237172, - 22821330, - 24484883, - 25641623, - 26230536, - 26792222, - 3642143, - 21774100, - 22797418, - 23698420, - 24020165, - 23969235, - 24207417, - 24541492, - 24900566, - 25385044, - 4484938, - 11113452, - 21442530, - 22046176, - 22184897, - 22386835, - 23499007, - 26129631, - 26866037, - 5971876, - 22779750, - 24132482, - 25789722, - 26251362, - 26822052, - 26835655, - 5122088, - 6668191, - 12439052, - 23690850, - 24458365, - 26189089, - 26676322, - 26872742, - 4917898, - 826723, - 22886872, - 24752347, - 25108137, - 5796786, - 6176498, - 6208022, - 7578115, - 14218725, - 22659435, - 23774701, - 24804876, - 25081572, - 25275744, - 26430916, - 730392, - 9505076, - 25467274, - 3015372, - 5764087, - 9407015, - 21356836, - 24302940, - 25469360, - 25666252, - 26564899, - 26574306, - 9391864, - 136707, - 15163029, - 22001560, - 22642183, - 24168773, - 24197349, - 26750190, - 59670, - 6545138, - 7538431, - 12568128, - 22865116, - 26566675, - 26658222, - 26778289, - 26856746, - 3386215, - 1270737, - 1856866, - 22371951, - 22953580, - 23026533, - 9316759, - 13628231, - 25166176, - 6736476, - 7745491, - 893989, - 25349228, - 25684996, - 26835833, - 763132, - 1282353, - 14333573, - 26677056, - 5553188, - 1549629, - 22807502, - 25633167, - 26062956, - 26558451, - 9312947, - 14366742, - 1864809, - 25581444, - 26656406, - 11454847, - 13507879, - 187331, - 22626880, - 23187177, - 23481929, - 24042533, - 24501754, - 26776408, - 2315619, - 24320832, - 24708829, - 26236176, - 26575516, - 3105045, - 6164089, - 21145740, - 21258252, - 23211964, - 23610573, - 26873451, - 10452273, - 21300836, - 26076163, - 26510266, - 933508, - 21751571, - 24043374, - 26045578, - 26784723, - 26811618, - 22836140, - 23558501, - 24429614, - 24476599, - 2681976, - 26867816, - 7802886, - 13617926, - 2049112, - 26233820, - 6868338, - 23458654, - 24370731, - 26126954, - 5070119, - 24416075 - ] - } -} -``` - -
- -#### 未知消息 - -`PLAY_TOGETHER` -
-查看消息示例: - -示例1: -```json -{ - "cmd": "PLAY_TOGETHER", - "data": { - "ruid": 29857468, - "roomid": 8618057, - "action": "switch_off", - "uid": 0, - "timestamp": 1673690546, - "message": "", - "message_type": 0, - "jump_url": "", - "web_url": "", - "apply_number": 0, - "refresh_tool": false, - "cur_fleet_num": 0, - "max_fleet_num": 0 - } -} -``` -示例2 -```json -{ - "cmd": "PLAY_TOGETHER", - "data": { - "ruid": 29857468, - "roomid": 8618057, - "action": "switch_off", - "uid": 0, - "timestamp": 1673690549, - "message": "系统提示:主播已切换分区", - "message_type": 3, - "jump_url": "", - "web_url": "", - "apply_number": 0, - "refresh_tool": true, - "cur_fleet_num": 0, - "max_fleet_num": 0 - } -} -``` -
- - diff --git a/live/redpocket.md b/live/redpocket.md deleted file mode 100644 index 15a8430..0000000 --- a/live/redpocket.md +++ /dev/null @@ -1,130 +0,0 @@ -# 直播间人气红包 - -- [获取指定直播间的红包信息](#获取指定直播间的红包信息) - ---- - -## 获取指定直播间的红包信息 - -> https://api.live.bilibili.com/xlive/lottery-interface/v1/lottery/getLotteryInfoWeb - -*请求方式:GET* - -认证方式(可选):Cookie(SESSDATA) - -如果不携带Cookie信息,user_status将始终返回2(未参与)。 - -如果所查询的直播间无红包,popularity_red_pocket为null。 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ---------------- | ------ | ---- | -| roomid | str | 直播间id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | ---------- | ------------- | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 0:成功 | -| ttl | num | TimeToLive | 正常为1 | -| data | object | 返回数据 | | - -`data`对象: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| popularity_red_pocket | array | 人气红包信息 | | -| …… | ...... | …… | …… | - -`popularity_red_pocket`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------- | ---- | -| lot_id | num | 红包id | | -| sender_uid | num | 红包发送者uid | | -| sender_name | str | 红包发送者昵称 | | -| sender_face | str | 红包发送者头像 | | -| join_requirement | num | 参与条件? | | -| danmu | str | 参与红包时自动发送的弹幕内容 | | -| awards | array | 红包内容 | | -| lot_status | num | 未知 | | -| h5_url | str | 红包界面 | | -| user_status | num | 用户是否已参与 | 1:已参与 2:未参与 | -| lot_config_id | num | 未知 | | -| total_price | num | 红包总计价格 | | - -**示例:** - -查询房间号为24146996的直播间红包信息: - -```shell -curl -G 'https://api.live.bilibili.com/xlive/lottery-interface/v1/lottery/getLotteryInfoWeb?roomid=24146996' -``` - -
-查看响应示例: - -```json - -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "pk": null, - "guard": null, - "gift": null, - "storm": null, - "silver": null, - "activity_box": { - "ACTIVITY_ID": 0, - "ACTIVITY_PIC": "" - }, - "danmu": null, - "anchor": null, - "red_pocket": null, - "popularity_red_pocket": [{ - "lot_id": 622474, - "sender_uid": 1651908873, - "sender_name": "九泽糖糖の小蘑菇", - "sender_face": "http://i0.hdslb.com/bfs/face/c932c5c8b1607fe2e1da22b9780af19662dac939.jpg", - "join_requirement": 1, - "danmu": "老板大气!点点红包抽礼物!", - "awards": [{ - "gift_id": 31212, - "num": 2, - "gift_name": "打call", - "gift_pic": "https://s1.hdslb.com/bfs/live/f75291a0e267425c41e1ce31b5ffd6bfedc6f0b6.png" - }, { - "gift_id": 31214, - "num": 3, - "gift_name": "牛哇", - "gift_pic": "https://s1.hdslb.com/bfs/live/23475a7a6170e0d94ba52720e23060dc7604b735.png" - }, { - "gift_id": 31216, - "num": 3, - "gift_name": "i了i了", - "gift_pic": "https://s1.hdslb.com/bfs/live/1157a445487b39c0b7368d91b22290c60fa665b2.png" - }], - "start_time": 1645358104, - "end_time": 1645358284, - "last_time": 180, - "remove_time": 1645358299, - "replace_time": 1645358294, - "current_time": 1645358231, - "lot_status": 1, - "h5_url": "https://live.bilibili.com/p/html/live-app-red-envelope/popularity.html?is_live_half_webview=1\u0026hybrid_half_ui=1,5,100p,100p,000000,0,50,0,0,1;2,5,100p,100p,000000,0,50,0,0,1;3,5,100p,100p,000000,0,50,0,0,1;4,5,100p,100p,000000,0,50,0,0,1;5,5,100p,100p,000000,0,50,0,0,1;6,5,100p,100p,000000,0,50,0,0,1;7,5,100p,100p,000000,0,50,0,0,1;8,5,100p,100p,000000,0,50,0,0,1\u0026hybrid_rotate_d=1\u0026hybrid_biz=popularityRedPacket\u0026lotteryId=622474", - "user_status": 1, - "lot_config_id": 3, - "total_price": 1600 - }], - "activity_box_info": null - } -} -``` - -
diff --git a/live/user.md b/live/user.md deleted file mode 100644 index 6f3fa5b..0000000 --- a/live/user.md +++ /dev/null @@ -1,363 +0,0 @@ -# 直播间用户实用 API - -- [直播间用户实用 API](#直播间用户实用-api) - - [获取用户持有的粉丝勋章信息](#获取用户持有的粉丝勋章信息) - - [佩戴勋章](#佩戴勋章) - - [直播签到](#直播签到) - - [本月直播签到信息](#本月直播签到信息) - - [上月直播签到信息](#上月直播签到信息) - ---- - -## 获取用户持有的粉丝勋章信息 - -> ~~https://api.live.bilibili.com/fans_medal/v5/live_fans_medal/iApiMedal~~ -> -> https://api.live.bilibili.com/xlive/app-ucenter/v1/user/GetMyMedals - -_请求方式:GET_ - -认证方式:Cookie(SESSDATA)或 APP - -**url 参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ------------ | ------ | ------------------------------------------------- | -| page_size | num | 每页的数量 | 必要 | 最大为 10,超出 `1002002:参数异常` | -| page | num | 返回结果页数 | 必要 | 两个参数不填返回空,只 page 不填或错误则 500 异常 | - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-1002002:参数异常
-500:服务器异常 | -| message | str | 错误信息 | 默认为 "0" | -| ttl | str | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ---------------- | ---- | -| count | num | 勋章数量 | | -| items | array | 粉丝勋章信息本体 | | -| page_info | obj | 页码信息 | | - -`items 数组内`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ------ | -------------------- | -------------------------------------- | -| can_delete | bool | 可否删除 | | -| day_limit | num | 日经验上限(原力值) | eg: 1500 | -| guard_level | num | | | -| guard_medal_title | str | 加成状态 | | -| intimacy | num | 当前已得亲密度 | | -| is_lighted | num | 是否点亮 | 0:未点亮
1:点亮 | -| level | num | 勋章等级 | | -| medal_name | str | 勋章名 | | -| medal_color_border | num | 勋章边框颜色信息 | 颜色数值为 10 进制的 16 进制值(下同) | -| medal_color_start | num | 勋章起始颜色 | 从右往左渐变(20 级+勋章) | -| medal_color_end | num | 勋章结束颜色 | 从右往左渐变(20 级+勋章) | -| medal_id | num | 粉丝勋章 id | | -| next_intimacy | num | 升级所需经验 | | -| today_feed | num | 本日亲密度 | | -| roomid | num | 直播间房间号 | | -| status | num | | | -| target_id | number | up 主 mid | | -| target_name | str | up 主用户名 | | -| uname | str | up 主用户名 | | - -`page_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------------- | ---- | -| total_page | num | 页码总长度 | | -| cur_page | num | 当前返回的页码 | | - -**示例:** - -```shell -curl https://api.live.bilibili.com/xlive/app-ucenter/v1/user/GetMyMedals?page=1&page_size=10 \ --b "SESSDATA=xxx" -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "items": [ - { - "can_deleted": true, - "day_limit": 1500, - "guard_level": 0, - "guard_medal_title": "未开启加成", - "intimacy": 9617, - "is_lighted": 0, - "level": 11, - "medal_name": "锦依卫", - "medal_color_border": 12632256, - "medal_color_end": 12632256, - "medal_color_start": 12632256, - "medal_id": 29245, - "next_intimacy": 10000, - "today_feed": 0, - "roomid": 1546736, - "status": 0, - "target_id": 36081646, - "target_name": "洛天依", - "uname": "洛天依" - } - ], - "page_info": { - "cur_page": 1, - "total_page": 1 - }, - "count": 1 - } -} -``` - -
- -## 佩戴勋章 - -> https://api.live.bilibili.com/xlive/web-room/v1/fansMedal/wear - -_请求方式:POST_ - -**表单参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ----------------------- | ------ | ---- | -| medal_id | num | 勋章 id | 必要 | | -| csrf | num | cookie 中 bili_jct 字段 | 必要 | | -| csrf_token | num | 同上 | 必要 | | - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------------- | -| code | num | 返回值 | 0:成功 | -| ttl | str | 1 | | -| message | str | 错误信息 | 默认为佩戴成功 | -| data | obj | 信息本体 | 默认为无 | - -**示例:** - -佩戴勋章 id 为 1 的勋章 - -```JavaScript -var madelForm = new FormData(); -madelForm.append("medal_id", 1); -madelForm.append("csrf", bili_jct); -madelForm.append("csrf_token", bili_jct); -$.ajax({ - url: "https://api.live.bilibili.com/xlive/web-room/v1/fansMedal/wear", - type: "POST", - data: madelForm, - dataType: "JSON", - processData: false, - contentType: false, - cache: false, - xhrFields: { - withCredentials: true - }, - success: function (){ - - } -}) -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "佩戴成功", - "ttl": 1, - "data": {} -} -``` - -
- -## 直播签到 - -> https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/DoSign - -_请求方式:GET_ - -认证方式:Cookie(SESSDATA)或 APP - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------- | -| code | num | 返回值 | 0:成功
1:参数错误 | -| ttl | str | 1 | | -| message | str | 错误信息 | 默认为当日签到奖励内容 | -| data | obj | 信息本体 | 默认为空 | - -## 本月直播签到信息 - -> https://api.live.bilibili.com/xlive/web-ucenter/v1/sign/WebGetSignInfo - -_请求方式:GET_ - -认证方式:Cookie(SESSDATA)或 APP - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------- | -| code | num | 返回值 | 0:成功 | -| ttl | str | 1 | | -| message | str | 错误信息 | 默认为0 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ----- | ---------------------------- | ---------------------- | -| text | str | 今日签到奖励信息 | 默认为空 | -| specialText | str | 连续签到奖励信息 | 默认为空 | -| status | num | 签到状态 | 0:未签到
1:已签到 | -| allDays | num | 当月天数 | | -| curMonth | num | 当前月 | | -| curYear | num | 当前年 | | -| curDay | num | 当前日 | | -| curData | str | 当前日期(格式化) | eg: 2023-2-19 | -| hadSignDays | num | 当月已签到天数 | 默认为0 | -| newTask | num | 作用未知 | 默认为0 | -| signDaysList | array | 当月已签到日列表 | 默认为空 | -| signBonusDaysList | array | 当月已签到且有特殊奖励日列表 | 默认为空 | - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "text": "3000点用户经验,2根辣条", - "specialText": "再签到7天可以获得50根辣条", - "status": 1, - "allDays": 28, - "curMonth": 2, - "curYear": 2023, - "curDay": 19, - "curDate": "2023-2-19", - "hadSignDays": 13, - "newTask": 0, - "signDaysList": [ - 2, - 3, - 4, - 5, - 6, - 7, - 11, - 13, - 14, - 15, - 17, - 18, - 19 - ], - "signBonusDaysList": [ - 6 - ] - } -} -``` - -
- -## 上月直播签到信息 - -> https://api.live.bilibili.com/sign/getLastMonthSignDays - -_请求方式:GET_ - -认证方式:Cookie(SESSDATA)或 APP - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------- | -| code | num | 返回值 | 0:成功 | -| ttl | str | 1 | | -| message | str | 错误信息 | 默认为0 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ----- | ---------------------------- | -------- | -| days | num | 上月天数 | | -| month | num | 上月月份值 | | -| hadSignDays | num | 上月已签到天数 | 默认为0 | -| signDaysList | array | 上月已签到日列表 | 默认为空 | -| signBonusDaysList | array | 上月已签到且有特殊奖励日列表 | 默认为空 | - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "month": 1, - "days": 31, - "hadSignDays": 20, - "signDaysList": [ - 1, - 2, - 3, - 6, - 7, - 8, - 10, - 12, - 13, - 14, - 15, - 18, - 20, - 23, - 24, - 25, - 26, - 27, - 30, - 31 - ], - "signBonusDaysList": [ - 7, - 31 - ] - } -} -``` - -
diff --git a/login/exit.md b/login/exit.md deleted file mode 100644 index 1fed409..0000000 --- a/login/exit.md +++ /dev/null @@ -1,72 +0,0 @@ -# 退出账号登录 - -- [退出登录(web 端)](#退出登录web端) - ---- - -## 退出登录(web端) - -> https://passport.bilibili.com/login/exit/v2 - -_请求方式:POST_ - -认证方式:Cookie - -验证登录成功后会使用`set-cookie`字段清空以下 cookie 项: - -`DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -并在服务器注销该登录 Token (SESSDATA),该 Token 即失效 - -请求必须包含以下cookie项:`DedeUserID` `bili_jct` `SESSDATA` - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ---------------------------------------- | ------ | --------------------------------- | -| biliCSRF | str | CSRF Token (位于 cookie 中的 `bili_jct`) | 必要 | | -| gourl | str | 成功后跳转到的页面 | 非必要 | 默认为`javascript:history.go(-1)` | - -**json 回复:** - -如果 cookie 已经失效则输出登录页 html - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------- | -------- | --------------------------------- | -| code | num | 返回值 | 0:成功
2202:csrf 请求非法 | -| status | bool | 返回值 | `true`:成功 | -| ts | num | 时间戳 | | -| message | str | 错误信息 | 成功时不存在 | -| data | 有效时:obj | 信息本体 | 失败时不存在 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------- | ---- | -| redirectUrl | str | 重定向 url | | - -**示例:** - -```shell -curl -L -X POST 'https://passport.bilibili.com/login/exit/v2' \ --H 'Cookie: DedeUserID=xxx; bili_jct=xxx; SESSDATA=xxx' \ --H 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'biliCSRF=xxxxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "status": true, - "ts": 1663034005, - "data": { - "redirectUrl": "https://passport.biligame.com/crossDomain?DedeUserID=&DedeUserID__ckMd5=&SESSDATA=&bili_jct=&gourl=javascript%3Ahistory.go%28-1%29" - } -} -``` -
\ No newline at end of file diff --git a/login/login_action/QR.md b/login/login_action/QR.md deleted file mode 100644 index 1c73bbd..0000000 --- a/login/login_action/QR.md +++ /dev/null @@ -1,636 +0,0 @@ -# 二维码登录 - - - -- [扫码登录流程(伪代码)](#扫码登录流程伪代码) -- [web端扫码登录](#web端扫码登录) - - [申请二维码(web端)](#申请二维码web端) - - [扫码登录(web端)](#扫码登录web端) -- [web端扫码登录-旧版](#web端扫码登录-旧版) - - [申请二维码(web端-旧版)](#申请二维码web端-旧版) - - [扫码登录(web端-旧版)](#扫码登录web端-旧版) -- [TV端扫码登录](#TV端扫码登录) - - [申请二维码(TV端)](#申请二维码TV端) - - [扫码登录(TV端)](#扫码登录TV端) - ---- - -## 扫码登录流程(伪代码) - -```python -token, url = 申请二维码() -生成二维码(url) # 等待客户端扫码 -while True: - status, cookie = 扫码登录(token) - match status: - case 未扫描: - continue - case 二维码超时 | 二维码失效: - 提示('二维码失效或超时') # 需要用户重新操作 - break - case 已扫描未确认: - 提示('扫描成功') - case 登录成功: - 提示('扫描成功') - 存储cookie(cookie) - SSO登录页面跳转() - break -``` - -## web端扫码登录 - -### 申请二维码(web端) - -> https://passport.bilibili.com/x/passport-login/web/qrcode/generate - -*请求方式:GET* - -密钥超时为180秒 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------| -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|------------------|--------| -| url | str | 二维码内容 (登录页面 url) | | -| qrcode_key | str | 扫码登录秘钥 | 恒为32字符 | - -**示例:** - -`url`中的值生成二维码,等待手机客户端扫描,并将`qrcode_key`保存备用 - -```shell -curl 'https://passport.bilibili.com/x/passport-login/web/qrcode/generate' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "url": "https://passport.bilibili.com/h5-app/passport/login/scan?navhide=1\u0026qrcode_key=8587cf8106a0b863c46d6bab913537f6\u0026from=", - "qrcode_key": "8587cf8106a0b863c46d6bab913537f6" - } -} -``` - -
- -### 扫码登录(web端) - -> https://passport.bilibili.com/x/passport-login/web/qrcode/poll - -*请求方式:GET* - -密钥超时为180秒 - -验证登录成功后会进行设置以下cookie项: - -`DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------------|-----|--------|-----|-----| -| qrcode_key | str | 扫码登录秘钥 | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------| -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|----------------------------------------------------------------|------------------------| -| url | str | 游戏分站跨域登录 url | 未登录为空 | -| refresh_token | str | 刷新`refresh_token` | 未登录为空 | -| timestamp | num | 登录时间 | 未登录为`0`
时间戳 单位为毫秒 | -| code | num | 0:扫码登录成功
86038:二维码已失效
86090:二维码已扫码未确认
86101:未扫码 | | -| message | str | 扫码状态信息 | | - -**示例:** - -使用扫描秘钥`c3bd5286a2b40a822f5f60e9bf3f602e`登录 - -```shell -curl -G "https://passport.bilibili.com/x/passport-login/web/qrcode/poll"\ ---data-urlencode 'qrcode_key=c3bd5286a2b40a822f5f60e9bf3f602e' \ --c 'cookie.txt' -``` - -当密钥正确时但未扫描时`code`为`86101` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "url": "", - "refresh_token": "", - "timestamp": 0, - "code": 86101, - "message": "未扫码" - } -} -``` - -
- -扫描成功但手机端未确认时`code`为`86090` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "url": "", - "refresh_token": "", - "timestamp": 0, - "code": 86090, - "message": "二维码已扫码未确认" - } -} -``` - -
- -扫描成功手机端确认登录后,`code`为`0`,并向浏览器写入cookie - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "url": "https://passport.biligame.com/crossDomain?DedeUserID=***\u0026DedeUserID__ckMd5=***\u0026Expires=***\u0026SESSDATA=***\u0026bili_jct=***\u0026gourl=https%3A%2F%2Fpassport.bilibili.com", - "refresh_token": "***", - "timestamp": 1662363009601, - "code": 0, - "message": "" - } -} -``` - -
- -**响应头部抓包信息:** - -可明显看见设置了几个cookie - -
-查看响应示例: - -```http -HTTP/1.1 200 OK -Date: Mon, 05 Sep 2022 07:30:09 GMT -Expires: Mon, 05 Sep 2022 07:30:08 GMT -Cache-control: no-cache -Content-encoding: br -Content-type: application/json; charset=utf-8 -bili-status-code: 0 -bili-trace-id: 0d23fe044a6315a5 -set-cookie: SESSDATA=***; Path=/; Domain=bilibili.com; Expires=Sat, 04 Mar 2023 07:30:09 GMT; HttpOnly; Secure -set-cookie: bili_jct=***; Path=/; Domain=bilibili.com; Expires=Sat, 04 Mar 2023 07:30:09 GMT -set-cookie: DedeUserID=***; Path=/; Domain=bilibili.com; Expires=Sat, 04 Mar 2023 07:30:09 GMT -set-cookie: DedeUserID__ckMd5=***; Path=/; Domain=bilibili.com; Expires=Sat, 04 Mar 2023 07:30:09 GMT -set-cookie: sid=***; Path=/; Domain=bilibili.com; Expires=Sat, 04 Mar 2023 07:30:09 GMT -x-bili-trace-id: 2fbd8abd97dbd4db0d23fe044a6315a5 -x-cache-webcdn: BYPASS from blzone02 -``` - -
- -二维码失效时`code`为`86038` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "url": "", - "refresh_token": "", - "timestamp": 0, - "code": 86038, - "message": "二维码已失效" - } -} -``` - -
- -## web端扫码登录-旧版 - -以下为旧版扫码登录 API,尚可正常访问 - -### 申请二维码(web端-旧版) - -> https://passport.bilibili.com/qrcode/getLoginUrl - -*请求方式:GET* - -密钥超时为180秒 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|------|------|--------| -| code | num | 返回值 | 0:成功 | -| status | bool | true | 作用尚不明确 | -| ts | num | 请求时间 | 时间戳 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-----|------------------|--------| -| url | str | 二维码内容 (登录页面 url) | | -| oauthKey | str | 扫码登录秘钥 | 恒为32字符 | - -**示例:** - -`url`中的值生成二维码,等待手机客户端扫描,并将`oauthKey`保存备用 - -```shell -curl 'https://passport.bilibili.com/qrcode/getLoginUrl' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "status": true, - "ts": 1583314311, - "data": { - "url": "https://passport.bilibili.com/qrcode/h5/login?oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e", - "oauthKey": "c3bd5286a2b40a822f5f60e9bf3f602e" - } -} -``` - -
- -### 扫码登录(web端-旧版) - -> https://passport.bilibili.com/qrcode/getLoginInfo - -*请求方式:POST* - -密钥超时为180秒 - -验证登录成功后会进行设置以下cookie项: - -`DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|----------|-----|--------|-----|----------------------------| -| oauthKey | str | 扫码登录秘钥 | 必要 | | -| gourl | str | 跳转url | 非必要 | 默认为http://www.bilibili.com | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|----------------------|---------------------------|---------------------------------------------------------| -| code | num | 返回值 | 0:成功 | -| message | str | | 正确无 | -| ts | num | 扫码时间 | 错误无 | -| status | bool | 扫码是否成功 | true:成功
false:未成功 | -| data | 正确时:obj
错误时:num | 正确时:游戏分站url
错误时:错误代码 | 未成功时:
-1:密钥错误
-2:密钥超时
-4:未扫描
-5:未确认 | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----|-----|--------------|-----| -| url | str | 游戏分站跨域登录 url | | - -**示例:** - -使用扫描秘钥`c3bd5286a2b40a822f5f60e9bf3f602e`登录 - -```shell -curl "https://passport.bilibili.com/qrcode/getLoginInfo"\ ---data-urlencode 'oauthKey=c3bd5286a2b40a822f5f60e9bf3f602e' \ --c 'cookie.txt' -``` - -当密钥正确时但未扫描时`status`为`false`,`data`为`-4` - -
-查看响应示例: - -```json -{ - "status":false, - "data":-4, - "message":"Can't scan~" -} -``` - -
- -扫描成功但手机端未确认时`status`为`false`,`data`为`-5` - -
-查看响应示例: - -```json -{ - "status":false, - "data":-5, - "message":"Can't confirm~" -} -``` - -
- -扫描成功手机端确认登录后,`status`为`true`,`data`为对象,并向浏览器写入cookie - -
-查看响应示例: - -```json -{ - "code": 0, - "status": true, - "ts": 1583315474, - "data": { - "url": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=***&SESSDATA=***&bili_jct=***&gourl=http%3A%2F%2Fwww.bilibili.com" - } -} -``` - -
- -**响应头部抓包信息:** - -可明显看见设置了几个cookie - -
-查看响应示例: - -```http -HTTP/1.1 200 OK -Date: Wed, 04 Mar 2020 10:36:37 GMT -Content-Type: application/json;charset=UTF-8 -Transfer-Encoding: chunked -Connection: keep-alive -Server: Apache-Coyote/1.1 -Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Thu, 04-Mar-2021 10:36:37 GMT; Path=/ -Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ -Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ -Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/; HttpOnly -Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Mon, 31-Aug-2020 10:19:57 GMT; Path=/ -Expires: Wed, 04 Mar 2020 10:36:36 GMT -Cache-Control: no-cache -X-Cache-Webcdn: BYPASS from ks-sxhz-dx-w-01 -``` - -
- -## TV端扫码登录 - -### 申请二维码(TV端) - -> https://passport.snm0516.aisee.tv/x/passport-tv-login/qrcode/auth_code -> -> https://passport.bilibili.com/x/passport-tv-login/qrcode/auth_code - -*请求方式:POST* - -鉴权方式:appkey - -密钥超时为180秒 - -本接口可申请用于TV端APP方式登录的`access_key` - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ---------- | ------------ | -------------------------- | -| appkey | str | APP 密钥 | APP 方式必要 | 仅可用`4409e2ce8ffd12b8` | -| local_id | str | TV 端 id | TV 端必要 | 可为`0` | -| ts | num | 当前时间戳 | APP 方式必要 | | -| sign | str | APP 签名 | APP 方式必要 | | -| mobi_app | str | 平台标识 | 非必要 | 会被拼接到返回的 url query | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------------------------| -| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | -------------- | ------------ | -| url | str | 二维码内容 url | | -| auth_code | str | 扫码登录秘钥 | 恒为 32 字符 | - -**示例:** - -```shell -curl 'https://passport.snm0516.aisee.tv/x/passport-tv-login/qrcode/auth_code' \ ---data-urlencode 'appkey=4409e2ce8ffd12b8' \ ---data-urlencode 'local_id=0' \ ---data-urlencode 'ts=0' \ ---data-urlencode 'sign=e134154ed6add881d28fbdf68653cd9c' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "url": "https://passport.bilibili.com/x/passport-tv-login/h5/qrcode/auth?auth_code=0eeb635a64526709d70cb4c854a3b001", - "auth_code": "0eeb635a64526709d70cb4c854a3b001" - } -} -``` - -
- -### 扫码登录(TV端) - -> https://passport.snm0516.aisee.tv/x/passport-tv-login/qrcode/poll -> -> https://passport.bilibili.com/x/passport-tv-login/qrcode/poll - -*请求方式:POST* - -鉴权方式:appkey - -密钥超时为180秒 - -验证登录成功后会返回可用于APP方式登录的`access_key`以及`refresh_token` - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----------|-----|-------|---------|-----------------------| -| appkey | str | APP密钥 | APP方式必要 | 仅可用`4409e2ce8ffd12b8` | -| auth_code | str | 扫码秘钥 | 必要 | | -| local_id | str | TV端id | TV端必要 | 可为0 | -| ts | num | 当前时间戳 | APP方式必要 | | -| sign | str | APP签名 | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----------------------|------|--------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-400:请求错误
-404:啥都木有
86038:二维码已失效
86039:二维码尚未确认
86090:二维码已扫码未确认 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有效时:obj
无效时:null | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|------------|---------------------| -| mid | num | 登录用户mid | | -| access_token | str | APP登录Token | | -| refresh_token | str | APP刷新Token | | -| expires_in | num | 有效时间 | 默认:15552000秒,等于180天 | - -**示例:** - -使用扫描秘钥`6214464b3025541abf6f654cf7569a01`进行验证登录 - -```shell -curl 'https://passport.snm0516.aisee.tv/x/passport-tv-login/qrcode/poll' \ ---data-urlencode 'appkey=4409e2ce8ffd12b8' \ ---data-urlencode 'auth_code=6214464b3025541abf6f654cf7569a01' \ ---data-urlencode 'local_id=0' \ ---data-urlencode 'ts=0' \ ---data-urlencode 'sign=87de3d0fee7c3f4facd244537238914e' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "is_new": false, - "mid": 10086, - "access_token": "********************************", - "refresh_token": "********************************", - "expires_in": 15552000, - "token_info": { - "mid": 10086, - "access_token": "********************************", - "refresh_token": "********************************", - "expires_in": 15552000 - }, - "cookie_info": { - "cookies": [ - { - "name": "SESSDATA", - "value": "********************************", - "http_only": 1, - "expires": 1679988973, - "secure": 0 - }, - { - "name": "bili_jct", - "value": "********************************", - "http_only": 0, - "expires": 1679988973, - "secure": 0 - }, - { - "name": "DedeUserID", - "value": "*******", - "http_only": 0, - "expires": 1679988973, - "secure": 0 - }, - { - "name": "DedeUserID__ckMd5", - "value": "****************", - "http_only": 0, - "expires": 1679988973, - "secure": 0 - }, - { - "name": "sid", - "value": "********", - "http_only": 0, - "expires": 1679988973, - "secure": 0 - } - ], - "domains": [ - ".bilibili.com", - ".biligame.com", - ".bigfun.cn", - ".bigfunapp.cn", - ".dreamcast.hk" - ] - }, - "sso": [ - "https://passport.bilibili.com/api/v2/sso", - "https://passport.biligame.com/api/v2/sso", - "https://passport.bigfunapp.cn/api/v2/sso" - ] - } -} -``` - -
diff --git a/login/login_action/SMS.md b/login/login_action/SMS.md deleted file mode 100644 index 112dc62..0000000 --- a/login/login_action/SMS.md +++ /dev/null @@ -1,258 +0,0 @@ -# 短信登录 - -- [获取国际冠字码_web端](#获取国际冠字码_web端) -- [发送短信验证码_web端](#发送短信验证码_web端) -- [使用短信验证码登录_web端](#使用短信验证码登录_web端) - ---- - -web端短信登录流程: - -1. [完成人机验证](readme.md) -2. 发送短信,使用国际地区代码`cid`+手机号码`tel`+登录密钥`token`+极验`challenge`+验证结果`validate`+验证结果`seccode` -3. 提交短信验证码以验证登录操作,使用国际地区代码`cid`+手机号码`tel`+短信验证码`code` - -## 获取国际冠字码_web端 - -> https://passport.bilibili.com/web/generic/country/list - -*请求方式:GET* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | ------------- | ---- | -| common | array | 常用国家&地区 | | -| others | array | 其他国家&地区 | | - -`data`中的`common`和`others`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | ---- | -| 0 | obj | 国家&地区1 | | -| n | obj | 国家&地区(n+1) | | -| …… | obj | …… | …… | - -`common`和`others`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------- | ---- | -| id | num | 国际代码值 | | -| cname | str | 国家&地区名 | | -| country_id | str | 国家&地区区号 | | - -**示例:** - -```shell -curl 'https://passport.bilibili.com/web/generic/country/list' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "common": [ - { - "id": 1, - "cname": "中国大陆", - "country_id": "86" - }, - { - "id": 5, - "cname": "中国香港特别行政区", - "country_id": "852" - }, - ………… - ], - "others": [ - { - "id": 22, - "cname": "阿富汗", - "country_id": "93" - }, - { - "id": 20, - "cname": "阿尔巴尼亚", - "country_id": "355" - }, - ………… - ] - } -} -``` - -
- -## 发送短信验证码_web端 - -> https://passport.bilibili.com/x/passport-login/web/sms/send - -*请求方式:POST* - -同手机号短信发送 CD 时间为 60s - -短信验证码 timeout 为 5min - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --- | --- | --- | --- | --- | -| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 | -| tel | num | 手机号码 | 必要 | | -| source | str | 登录来源 | 必要 | `main_web`:独立登录页
`main_mini`:小窗登录 | -| token | str | 登录 API token | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | -| challenge | str | 极验 challenge | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | -| validate | str | 极验 result | 必要 | 极验验证后得到 | -| seccode | str | 极验 result +`\|jordan` | 必要 | 极验验证后得到 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | --------- | -| code | num | 返回值 | 0:成功
-400:请求错误
1002:手机号格式错误
86203:短信发送次数已达上限
1003:验证码已经发送
1025:该手机号在哔哩哔哩有过永久封禁记录,无法再次注册或绑定新账号
2400:登录秘钥错误
2406:验证极验服务出错 | -| message | str | 错误信息 | 成功为0 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------------- | ------------------------ | -| captcha_key | str | 短信登录 token | 在下方传参时需要,请备用 | - -**示例:** - -例如手机号为`13888888888`,国际id为`1 (中国大陆)`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行发送短信验证码操作 - -```shell -curl 'https://passport.bilibili.com/x/passport-login/web/sms/send' \ ---data-urlencode 'tel=13888888888' \ ---data-urlencode 'cid=1' \ ---data-urlencode 'source=main_web' \ ---data-urlencode 'token=aabbccdd' \ ---data-urlencode 'challenge=2333' \ ---data-urlencode 'validate=666666' \ ---data-urlencode 'seccode=666666|jordan' -``` - -
-查看响应示例: - -```json -{"code":0, - "message":"0", - "ttl":1, - "data":{ - "captcha_key":"7542f109c3318d74847626495c68c321" - } -} -``` - -
- -## 使用短信验证码登录_web端 - -> https://passport.bilibili.com/x/passport-login/web/login/sms - -*请求方式:POST* - -验证登录成功后会进行设置以下cookie项: - - `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --- | --- | --- | --- | --- | -| cid | num | 国际冠字码 | 必要 | 可以从[获取国际冠字码](#获取国际冠字码(web端))获取 | -| tel | num | 手机号码 | 必要 | | -| code | num | 短信验证码 | 必要 | timeout 为 5min | -| source | str | 登录来源 | 必要 | `main_web`:独立登录页
`main_mini`:小窗登录 | -| captcha_key | str | 短信登录 token | 必要 | 从[上述API](#发送短信验证码(web端))请求成功后返回 | -| go_url | str | 跳转url | 非必要 | 默认为 https://www.bilibili.com | -| keep | bool | 是否记住登录 | 非必要 | `true`:记住登录
`false`:不记住登录 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| --- | --- | --- | --- | -| code | num | 返回值 | 0:成功
-400:请求错误
1006:请输入正确的短信验证码
1007:短信验证码已过期 | -| message | str | 错误信息 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --- | --- | --- | --- | -| is_new | bool | 是否为新注册用户 | false:非新注册用户
true:新注册用户 | -| status | num | 0 | 未知,可能0就是成功吧 | -| url | str | 跳转 url | 默认为 https://www.bilibili.com | - -**示例:** - -使用手机号`13888888888`,短信验证码为`123456`,进行验证登录操作 - -```shell -curl 'https://passport.bilibili.com/x/passport-login/web/login/sms' ---data-urlencode 'cid=1' \ ---data-urlencode 'tel=13888888888' \ ---data-urlencode 'code=123456' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "is_new": false, - "status": 0, - "url": "https://space.bilibili.com" - } -} -``` - -
- -**响应头部抓包信息:** - -可明显看见设置了几个cookie(填入浏览器即可成功登录) - -
-查看响应示例: - -```http -HTTP/1.1 200 OK -Date: Mon, 13 Jul 2020 09:57:33 GMT -Content-Type: application/json;charset=UTF-8 -Content-Length: 78 -Connection: keep-alive -Server: Apache-Coyote/1.1 -Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ -Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ -Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/; HttpOnly -Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ -Set-Cookie: sid=***; Domain=.bilibili.com; Expires=Sat, 18-Jul-2020 09:57:57 GMT; Path=/ -Expires: Mon, 13 Jul 2020 09:57:32 GMT -Cache-Control: no-cache -X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 - -``` - -
diff --git a/login/login_action/password.md b/login/login_action/password.md deleted file mode 100644 index d0def6f..0000000 --- a/login/login_action/password.md +++ /dev/null @@ -1,499 +0,0 @@ -# 密码登录 - -- [密码登录流程(伪代码)](#密码登录流程伪代码) -- [web端密码登录](#web端密码登录) - - [获取公钥&盐(web端)](#获取公钥&盐web端) - - [登录操作(web端)](#登录操作web端) -- [web端密码登录-旧版](#web端密码登录-旧版) - - [获取公钥&盐(web端-旧版)](#获取公钥&盐web端-旧版) - - [登录操作(web端-旧版)](#登录操作web端-旧版) -- [APP端密码登录](#APP端密码登录) - - [获取公钥&盐(APP端)](#获取公钥&盐APP端) - - TODO:登录操作(APP端) -- [登录密码的加密实例](#登录密码的加密实例) - ---- - -## 密码登录流程(伪代码) - -```python -账号 = '2333333' -密码字符串 = 'password' - -# 1.人机验证步骤 -token, gt, challenge = 获取验证码() -validate = 填写验证码(gt, challenge) # 这一步填写验证码 (访问极验API,得到validate) - -# 2.密码加密步骤 -pubkey, salt = 获取公钥和盐() -加密后的密码 = RSA公钥加密(pubkey, salt+密码字符串) # 盐需要加在密码字符串前 -base64编码后的密文 = base64编码(加密后的密码) - -# 3.开始登录 -cookie = 密码登录(账号, base64编码后的密文, token, challenge, validate) -存储cookie(cookie) -SSO登录页面跳转() -``` - -## web端密码登录 - -### 获取公钥&盐(web端) - -> https://passport.bilibili.com/x/passport-login/web/key - -*请求方式:GET* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------| -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|------------------------------------------| -| hash | str | 密码盐值 | 有效时间为 20s
恒为 16 字符
需要拼接在明文密码之前 | -| key | str | rsa 公钥 | PEM 格式编码
加密密码时需要使用 | - -**示例:** - -```shell -curl 'https://passport.bilibili.com/x/passport-login/web/key' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "hash": "9333681c87fd8d6e", - "key": "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n" - } -} -``` - -
- -### 登录操作(web端) - -> https://passport.bilibili.com/x/passport-login/web/login - -*请求方式:POST* - -验证登录成功后会进行设置以下 cookie 项: - -`sid` `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ---------------------- | ------ | ------------------------------------------------------------ | -| username | str | 用户登录账号 | 必要 | 手机号或邮箱地址 | -| password | str | 加密后的带盐密码 | 必要 | base64 格式 | -| keep | num | 0 | 必要 | | -| token | str | 登录 token | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | -| challenge | str | 极验 challenge | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | -| validate | str | 极验 result | 必要 | 极验验证后得到 | -| seccode | str | 极验 result +`\|jordan` | 必要 | 极验验证后得到 | -| go_url | str | 跳转 url | 非必要 | 默认为 https://www.bilibili.com | -| source | str | 登录来源 | 非必要 | `main_web`:独立登录页
`main_mini`:小窗登录 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----------------------|------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-105:验证码错误
-400:请求错误
-629:账号或密码错误
-653:用户名或密码不能为空
-662:提交超时,请重新提交
-2001:缺少必要的的参数
-2100:需验证手机号或邮箱
2400:登录秘钥错误
2406:验证极验服务出错
86000:RSA解密失败 | -| message | str | 错误信息 | | -| data | 成功时:obj
失败时:null | 数据本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|-------------------|------------------------| -| message | str | 扫码状态信息 | | -| refresh_token | str | 刷新`refresh_token` | | -| status | num | 0 | | -| timestamp | num | 登录时间 | 未登录为`0`
时间戳 单位为毫秒 | -| url | str | 游戏分站跨域登录 url | | - -**示例:** - -例如用户账号为`12345678900`,加密后的密码为`xxx`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行验证登录操作 - -```shell -curl 'https://passport.bilibili.com/x/passport-login/web/login' \ ---data-urlencode 'username=12345678900' \ ---data-urlencode 'password=xxx' \ ---data-urlencode 'keep=0' \ ---data-urlencode 'source=main_web' \ ---data-urlencode 'token=aabbccdd' \ ---data-urlencode 'challenge=2333' \ ---data-urlencode 'validate=666666' \ ---data-urlencode 'seccode=666666|jordan' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "status": 0, - "message": "", - "url": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=***&SESSDATA=***&bili_jct=***&gourl=https%3A%2F%2Fwww.bilibili.com%2F", - "refresh_token": "***", - "timestamp": 1662452570273 - } -} - -``` - -
- -**响应头部抓包信息:** - -可明显看见设置了几个 cookie - -
-查看响应示例: - -```http -HTTP/1.1 200 OK -Date: Mon, 13 Jul 2020 06:56:00 GMT -Content-Type: application/json;charset=UTF-8 -Content-Length: 273 -Connection: keep-alive -Server: Apache-Coyote/1.1 -Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ -Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ -Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/; HttpOnly -Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ -Content-Security-Policy-Report-Only: default-src 'self' data: *.bilibili.com *.hdslb.com; style-src 'self' 'unsafe-inline' *.hdslb.com static.geetest.com; img-src 'self' data: blob: *.bilibili.com *.hdslb.com http://*.hdslb.com static.geetest.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.bilibili.com *.hdslb.com api.geetest.com static.geetest.com; object-src 'self' *.hdslb.com; media-src 'self' *.acgvideo.com http://*.acgvideo.com *.ksyungslb.com; connect-src 'self' data: wss://*.bilibili.com:* *.bilibili.com *.hdslb.com *.biliapi.net *.biliapi.com; frame-ancestors 'self' *.bilibili.com *.biligame.com; report-uri https://security.bilibili.com/csp_report -Expires: Mon, 13 Jul 2020 06:55:59 GMT -Cache-Control: no-cache -X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 -``` - -
- -## web端密码登录-旧版 - -以下为密码扫码登录 API,尚可正常访问 - -### 获取公钥&盐(web端-旧版) - -> https://passport.bilibili.com/login?act=getkey - -*请求方式:GET* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|------------------------------------------| -| hash | str | 密码盐值 | 有效时间为 20s
恒为 16 字符
需要拼接在明文密码之前 | -| key | str | rsa 公钥 | PEM 格式编码
加密密码时需要使用 | - -**示例:** - -```shell -curl 'https://passport.bilibili.com/login?act=getkey' -``` - -
-查看响应示例: - -```json -{ - "hash":"07c6501690c1af85", - "key":"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n" -} -``` - -
- -### 登录操作(web端-旧版) - - -> https://passport.bilibili.com/web/login/v2 - -*请求方式:POST* - -验证登录成功后会进行设置以下cookie项: - -`sid` `DedeUserID` `DedeUserID__ckMd5` `SESSDATA` `bili_jct` - -**正文参数 (application/x-www-form-urlencoded ):** - - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ---------------------- | ------ | ------------------------------------------------------------ | -| captchaType | num | 6 | 必要 | 必须为`6` | -| username | str | 用户登录账号 | 必要 | 手机号或邮箱地址 | -| password | str | 加密后的带盐密码 | 必要 | base64 格式 | -| keep | bool | 是否记住登录 | 必要 | `true`:记住登录
`false`:不记住登录 | -| key | str | 登录 token | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | -| challenge | str | 极验 challenge | 必要 | 在[申请 captcha 验证码](readme.md#申请captcha验证码)接口处获取 | -| validate | str | 极验 result | 必要 | 极验验证后得到 | -| seccode | str | 极验 result +`\|jordan` | 必要 | 极验验证后得到 | - -
- -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-629:账号或密码错误
-653:用户名或密码不能为空
-662:提交超时,请重新提交
-2001:缺少必要的的参数
-2100:需验证手机号或邮箱
2400:登录秘钥错误
2406:验证极验服务出错
86000:RSA解密失败 | -| ts | num | 当前时间戳 | 成功时无此项 | -| message | str | 错误信息 | 默认为0 | -| data | obj | 数据本体 | 成功时有此项 | - -`data`对象: - -**未登录时:** - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|--------------|-----| -| redirectUrl | str | 游戏分站跨域登录 url | | - -**已登录时:** - -| 字段 | 类型 | 内容 | 备注 | -|---------|------|--------------------------|-----| -| isLogin | bool | true | | -| goUrl | str | https://www.bilibili.com | | - -**需验证手机号或邮箱时** - -| 字段 | 类型 | 内容 | 备注 | -|----------|-----|--------------------------|------------| -| mid | num | 用户 mid | | -| tel | str | 绑定的手机号 | 星号隐藏部分信息 | -| email | str | 绑定的邮箱 | 星号隐藏部分信息 | -| sorce | num | 0 | **作用尚不明确** | -| keeptime | num | 1 | **作用尚不明确** | -| goUrl | str | https://www.bilibili.com | | - -**示例:** - -例如用户账号为`12345678900`,加密后的密码为`xxx`,登录秘钥为`aabbccdd`,极验challenge为`2333`,极验结果为`666666`,进行验证登录操作 - -```shell -curl 'https://passport.bilibili.com/web/login/v2' \ ---data-urlencode 'captchaType=6' \ ---data-urlencode 'username=12345678900' \ ---data-urlencode 'password=xxx' \ ---data-urlencode 'keep=true' \ ---data-urlencode 'token=aabbccdd' \ ---data-urlencode 'challenge=2333' \ ---data-urlencode 'validate=666666' \ ---data-urlencode 'seccode=666666|jordan' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "data": { - "redirectUrl": "https://passport.biligame.com/crossDomain?DedeUserID=***&DedeUserID__ckMd5=***&Expires=15551000&SESSDATA=***&bili_jct=***&gourl=https%3A%2F%2Fwww.bilibili.com" - } -} -``` - -
- -**响应头部抓包信息:** - -可明显看见设置了几个 cookie - -
-查看响应示例: - -```http -HTTP/1.1 200 OK -Date: Mon, 13 Jul 2020 06:56:00 GMT -Content-Type: application/json;charset=UTF-8 -Content-Length: 273 -Connection: keep-alive -Server: Apache-Coyote/1.1 -Set-Cookie: DedeUserID=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ -Set-Cookie: DedeUserID__ckMd5=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ -Set-Cookie: SESSDATA=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/; HttpOnly -Set-Cookie: bili_jct=***; Domain=.bilibili.com; Expires=Sat, 09-Jan-2021 06:39:43 GMT; Path=/ -Content-Security-Policy-Report-Only: default-src 'self' data: *.bilibili.com *.hdslb.com; style-src 'self' 'unsafe-inline' *.hdslb.com static.geetest.com; img-src 'self' data: blob: *.bilibili.com *.hdslb.com http://*.hdslb.com static.geetest.com; script-src 'self' 'unsafe-inline' 'unsafe-eval' *.bilibili.com *.hdslb.com api.geetest.com static.geetest.com; object-src 'self' *.hdslb.com; media-src 'self' *.acgvideo.com http://*.acgvideo.com *.ksyungslb.com; connect-src 'self' data: wss://*.bilibili.com:* *.bilibili.com *.hdslb.com *.biliapi.net *.biliapi.com; frame-ancestors 'self' *.bilibili.com *.biligame.com; report-uri https://security.bilibili.com/csp_report -Expires: Mon, 13 Jul 2020 06:55:59 GMT -Cache-Control: no-cache -X-Cache-Webcdn: BYPASS from jd-sxhz-dx-w-01 -``` - -
- -## APP端密码登录 - -### 获取公钥&盐(APP端) - -> http://passport.bilibili.com/api/oauth2/getKey - -*请求方式:POST* - -鉴权方式:appkey - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-----|-------|---------|-----| -| appkey | str | APP密钥 | APP方式必要 | | -| sign | str | APP签名 | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|------------------------------------------| -| hash | str | 密码盐值 | 有效时间为 20s
恒为 16 字符
需要拼接在明文密码之前 | -| key | str | rsa 公钥 | PEM 格式编码
加密密码时需要使用 | - -**示例:** - -```shell -curl 'https://passport.bilibili.com/api/oauth2/getKey' \ ---data-urlencode 'appkey=1d8b6e7d45233436' \ ---data-urlencode 'sign=17004c193f688f0b5665c1068e733aff' -``` - -
-查看响应示例: - -```json -{ - "hash": "07c6501690c1af85", - "key": "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n" -} -``` - -
- -### 登录操作(APP端) - -TODO - -## 登录密码的加密实例 - -以下实例使用 Python 语言,在任何平台(web、APP)使用密码登录都需要如下加密步骤 - -首先在需拉取 RSA PubKey 和 salt 备用 - -```python -import requests - -resp = requests.get('https://passport.bilibili.com/x/passport-login/web/key').json()['data'] -print('salt =', resp['hash']) -print('PubKey =', resp['key']) -``` - -`hash`字段为 salt,长度固定为 16 字符,timeout 时间只有 20s - -`key`字段为 RSA PubKey,为 PEM 格式,加密需要使用 - -``` -salt = 9773d106a67e27d6 -PubKey = -----BEGIN PUBLIC KEY----- -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n -6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx -/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+ -Xl69GV6klzgxW6d2xQIDAQAB ------END PUBLIC KEY----- -``` - -例如登录密码为`BiShi22332323`,现在对它进行加盐并使用获取的 PubKey 加密 - -```python -import rsa -password = 'BiShi22332323' - -pubKey = rsa.PublicKey.load_pkcs1_openssl_pem(resp['key']) # 读取 PEM 密钥 -encryptedPassword = rsa.encrypt((resp['hash']+password).encode(), pubKey) # 盐需要加在明文密码之前,一并加密 -print(encryptedPassword) -``` - -下面将输出一段 bytes 数据: - -``` -b'}\x9c\xd4\xcd\x88\x92\xa7\xde\x85\xdb\xabm\xd7\xd3\x08\x02@xo\x85\xa4\xe1\x11\xd0o\x80\x03.$\xc8l\xbe\xba;\xfe\xee\xa7(\xf8S\x95\x1e\x9106\xa4\x1d\xcf\x8e\xbe\x8d\x94A\x86s\xf9"\x12\x0c\x135\xbb\xbc\xe1\xde\x1b\x90\t)P\xeb\xa9\x8fXY]\x83\x18\x81f\n:\xdb\xe1\xbe\xe8\x1e\xba\x1c D8d}B\x17\xf9\x8a\xf0i\'1\xa5\xc4\x05&\xaa;n\xf8{\xa02\xffY\xcelU\xd5\xaf\x8aJK\xdc\xf1@\xbc\x93' -``` - -接下来需要把加密后的结果进行 base64 编码 - -```python -import base64 -b64Password = base64.b64encode(encryptedPassword).decode() -print('result =', b64Password) -``` - -以下为最终加密结果,可直接向 API 请求体传参以登录: - -因为 RSA 公钥加密的**无法解密性**,故无法本地验证,仅可请求 API 验证(略... - -``` -result = fZzUzYiSp96F26tt19MIAkB4b4Wk4RHQb4ADLiTIbL66O/7upyj4U5UekTA2pB3Pjr6NlEGGc/kiEgwTNbu84d4bkAkpUOupj1hZXYMYgWYKOtvhvugeuhwgRDhkfUIX+YrwaScxpcQFJqo7bvh7oDL/Wc5sVdWvikpL3PFAvJM= -``` - -以下为密码加密的Java实现: - -```java -package com.ho.test; - -import cn.hutool.core.codec.Base64; - -import javax.crypto.Cipher; -import java.security.KeyFactory; -import java.security.PublicKey; -import java.security.spec.X509EncodedKeySpec; - -public class Test3 { - public static void main(String[] args) throws Exception { - //用户密码 - String password = "abcdef"; - //获取到的证书内容 - String key = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDjb4V7EidX/ym28t2ybo0U6t0n\n6p4ej8VjqKHg100va6jkNbNTrLQqMCQCAYtXMXXp2Fwkk6WR+12N9zknLjf+C9sx\n/+l48mjUU8RqahiFD1XT/u2e0m2EN029OhCgkHx3Fc/KlFSIbak93EH/XlYis0w+\nXl69GV6klzgxW6d2xQIDAQAB\n-----END PUBLIC KEY-----\n"; - //获取到的盐值 - String hash = "bb73382121594c46"; - String[] split = key.strip().split("\n"); - String newKey = split[1] + split[2] + split[3] + split[4]; - //进行加密 - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decode(newKey)); - PublicKey publicKey = keyFactory.generatePublic(keySpec); - Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm()); - cipher.init(Cipher.PUBLIC_KEY, publicKey); - byte[] bytes = cipher.doFinal((hash + password).getBytes()); - String encode = Base64.encode(bytes); - System.out.println(encode); - } -} - -``` \ No newline at end of file diff --git a/login/login_action/readme.md b/login/login_action/readme.md deleted file mode 100644 index d89ac14..0000000 --- a/login/login_action/readme.md +++ /dev/null @@ -1,99 +0,0 @@ -# 登录操作 - -人机验证方式登录包含**账号密码登录**与手**机短信验证码登录** - -**注:扫码登录**不需要进行**人机验证**,故**不使用**以下接口 - -## 扫码登录 - -- [扫码登录](QR.md) - -## 验证登录 - -人机验证流程: - -1. 请求验证码参数,得到登录密钥`key`与极验id`gt`和极验KEY`challenge` -2. 进行滑动or点击验证 -3. 返回验证结果`validate`与`seccode`,进行短信或密码登录 - - -### 申请captcha验证码 - -> https://passport.bilibili.com/x/passport-login/captcha?source=main_web - -*请求方式:GET* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | --------- | -| code | num | 返回值 | 0:成功 | -| message | str | 返回信息 | | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ----- | ------ | -------- | -| geetest | obj | 极验captcha数据 | | -| tencent | obj | (?) | **作用尚不明确** | -| token | str | 登录 API token | 与 captcha 无关,与登录接口有关 | -| type | str | 验证方式 | 用于判断使用哪一种验证方式,目前所见只有极验
geetest:极验 | - -`geetest`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ----- | ------ | -------- | -| gt | str | 极验id | 一般为固定值 | -| challenge | str | 极验KEY | 由B站后端产生用于人机验证 | - -**示例:** - -```shell -curl 'https://passport.bilibili.com/x/passport-login/captcha?source=main_web' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "type": "geetest", - "token": "00fbe75cc2864ba0af969231f193a974", - "geetest": { - "challenge": "a57d9be17505d4a15ed84694c48fbf74", - "gt": "ac597a4506fee079629df5d8b66dd4fe" - }, - "tencent": { - "appid": "" - } - } -} -``` - -
- -### 进行验证 - -本文档为Bilibili文档,验证码为geetest极验提供,故不提供api - -附: [手动验证器](https://kuresaru.github.io/geetest-validator/) -[及其源码](https://github.com/kuresaru/geetest-validator) - -1. 打开手动验证器,在1、2分别填入上面API返回的`gt`和`challenge` -2. 点击按钮3,稍等加载验证码,点击按钮4进行验证 -3. 验证完成后,点击按钮5生成验证结果 -4. 使用最开始获得到的`key`、`challenge`和刚获得到的`validate`、`seccode`继续之后的登录操作 - - -### 继续登录 - -- [短信登录](SMS.md) -- [密码登录](password.md) diff --git a/login/login_info.md b/login/login_info.md deleted file mode 100644 index b306a8b..0000000 --- a/login/login_info.md +++ /dev/null @@ -1,569 +0,0 @@ -# 登录基本信息 - -- [导航栏用户信息](#导航栏用户信息) -- [~~登录用户信息仅部分(已弃用)~~](#~~登录用户信息仅部分(已弃用)~~) -- [登录用户信息(APP端)](#登录用户信息APP端) -- [登录用户状态数(双端)](#登录用户状态数双端) -- [获取硬币数](#获取硬币数) - ---- - -## 导航栏用户信息 - -> https://api.bilibili.com/nav(带有转义) -> -> https://api.bilibili.com/x/web-interface/nav(原始数据) - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ---- | ---------------- | ------------------------------------------------- | -| isLogin | bool | 是否已登录 | false:未登录
true:已登录 | -| email_verified | num | 是否验证邮箱地址 | 0:未验证
1:已验证 | -| face | str | 用户头像url | | -| level_info | obj | 等级信息 | | -| mid | num | 用户mid | | -| mobile_verified | num | 是否验证手机号 | 0:未验证
1:已验证 | -| money | num | 拥有硬币数 | | -| moral | num | 当前节操值 | 上限为70 | -| official | obj | 认证信息 | | -| officialVerify | obj | 认证信息2 | | -| pendant | obj | 头像框信息 | | -| scores | num | 0 | 作用尚不明确 | -| uname | str | 用户昵称 | | -| vipDueDate | num | 会员到期时间 | 毫秒 时间戳 | -| vipStatus | num | 会员开通状态 | 0:无
1:有 | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度及以上大会员 | -| vip_pay_type | num | 会员开通状态 | 0:无
1:有 | -| vip_theme_type | num | 0 | 作用尚不明确 | -| vip_label | obj | 会员标签 | | -| vip_avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | -| vip_nickname_color | str | 会员昵称颜色 | 颜色码 | -| wallet | obj | B币钱包信息 | | -| has_shop | bool | 是否拥有推广商品 | false:无
true:有 | -| shop_url | str | 商品推广页面url | | -| allowance_count | num | 0 | 作用尚不明确 | -| answer_status | num | 0 | 作用尚不明确 | - -`data`中的`level_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------------------ | ---- | -| current_level | num | 当前等级 | | -| current_min | num | 当前等级经验最低值 | | -| current_exp | num | 当前经验 | | -| next_exp | 小于6级时:num
6级时:str | 升级下一等级需达到的经验 |当用户等级为Lv6时,值为`--`,代表无穷大 | - -`data`中的`official`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ------------------------------------------------- | -| role | num | 认证类型 | 0:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 是否认证 | -1:无
0:认证 | - -`data`中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------------------- | -| type | num | 是否认证 | -1:无
0:认证 | -| desc | str | 认证信息 | 无为空 | - -`data`中的`pendant`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ------------ | -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | 作用尚不明确 | - -`data`中的`vip_label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | ------------------------------------------------------------ | -| path | str | 空 | 作用尚不明确 | -| text | str | 会员名称 | | -| label_theme | str | 会员标签 | vip:大会员
annual_vip:年度大会员
ten_annual_vip:十年大会员
hundred_annual_vip:百年大会员 | - -`data`中的`wallet`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------- | ------------ | -| mid | num | 登录用户mid | | -| bcoin_balance | num | 拥有B币数 | | -| coupon_balance | num | 每月奖励B币数 | | -| coupon_due_time | num | 0 | 作用尚不明确 | - -**示例:** - -```shell -curl 'https://api.bilibili.com/nav' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "isLogin":true, - "email_verified":1, - "face":"http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", - "level_info":{ - "current_level":5, - "current_min":10800, - "current_exp":17065, - "next_exp":28800 - }, - "mid":293793435, - "mobile_verified":1, - "money":33.4, - "moral":70, - "official":{ - "role":0, - "title":"", - "desc":"", - "type":-1 - }, - "officialVerify":{ - "type":-1, - "desc":"" - }, - "pendant":{ - "pid":0, - "name":"", - "image":"", - "expire":0, - "image_enhance":"" - }, - "scores":0, - "uname":"社会易姐QwQ", - "vipDueDate":1612454400000, - "vipStatus":1, - "vipType":2, - "vip_pay_type":1, - "vip_theme_type":0, - "vip_label":{ - "path":"", - "text":"年度大会员", - "label_theme":"annual_vip" - }, - "vip_avatar_subscript":1, - "vip_nickname_color":"#FB7299", - "wallet":{ - "mid":293793435, - "bcoin_balance":8, - "coupon_balance":5, - "coupon_due_time":0 - }, - "has_shop":false, - "shop_url":"", - "allowance_count":0, - "answer_status":0 - } -} -``` - -
- -## ~~登录用户信息仅部分(已弃用)~~ - -
-查看折叠内容 - -> https://account.bilibili.com/home/userInfo - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -带有转义 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| status | bool | true | 作用尚不明确 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ---- | ----------------- | ------------------------------- | -| level_info | obj | 等级信息 | | -| bCoins | num | 拥有B币数 | | -| coins | num | 拥有硬币数 | | -| face | str | 登录用户头像url | | -| nameplate_current | null | ??? | 作用尚不明确 | -| nameplate_current | str | 登录用户勋章url | | -| pendant_current | str | 登录用户头像框url | | -| uname | str | 登录用户昵称 | | -| userStatus | str | 登录用户状态 | | -| vipType | num | 大会员类型 | 0:无
1:月度
2:年度 | -| vipStatus | num | 会员开通状态 | 0:无
1:有 | -| official_verify | num | 是否认证 | -1:无
0:认证 | -| pointBalance | num | 0 | 作用尚不明确 | - -`data`中的`level_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------------------ | ---- | -| current_level | num | 当前等级 | | -| current_min | num | 当前等级经验最低值 | | -| current_exp | num | 当前经验 | | -| next_exp | num | 升级下一等级需达到的经验 | | - -**示例:** - -```shell -curl 'https://account.bilibili.com/home/userInfo' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "status": true, - "data": { - "level_info": { - "current_level": 5, - "current_min": 10800, - "current_exp": 14270, - "next_exp": 28800 - }, - "bCoins": 10, - "coins": 2.5, - "face": "http:\/\/i2.hdslb.com\/bfs\/face\/480e2e98513aaeb65d2f2c76dbae750c4de722e9.jpg", - "nameplate_current": null, - "pendant_current": "http:\/\/i0.hdslb.com\/bfs\/face\/6550f53324c330f201a528e70ef305cb10ac2c01.png", - "uname": "\u793e\u4f1a\u6613\u59d0QwQ", - "userStatus": "\u6b63\u5f0f\u4f1a\u5458", - "vipType": 2, - "vipStatus": 1, - "official_verify": -1, - "pointBalance": 0 - } -} -``` - -
- -
- -## 登录用户信息(APP端) - -> https://app.bilibili.com/x/v2/account/myinfo - -*请求方式:GET* - -认证方式:仅可APP - -鉴权方式:appkey - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| appkey | str | APP密钥 | APP方式必要 | | -| ts | num | 当前时间戳 | APP方式必要 | | -| sign | str | APP签名 | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-3:API校验密匙错误
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ---------------- | ----------------------------- | -| mid | num | 用户mid | | -| name | str | 用户昵称 | | -| sign | str | 用户签名 | | -| coins | num | 拥有硬币数 | | -| birthday | str | 用户生日 | YYYY-MM-DD | -| face | str | 用户头像url | | -| sex | num | 用户性别 | 0:私密
1:男
2:女 | -| level | num | 用户等级 | 0-6 | -| rank | num | 1000 | **作用尚不明确** | -| silence | num | 用户是否被封禁 | 0:正常
1:封禁 | -| vip | obj | 会员信息 | | -| email_status | num | 是否验证邮箱地址 | 0:未验证
1:已验证 | -| tel_status | num | 是否验证手机号 | 0:未验证
1:已验证 | -| official | obj | 认证信息 | | -| identification | num | 1 | **作用尚不明确** | -| invite | obj | | | -| is_tourist | num | 0 | **作用尚不明确** | -| pin_prompting | num | 0 | **作用尚不明确** | - -`data`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ---- | ---------------- | ------------------------------- | -| type | num | 大会员类型 | 0:无
1:月度
2:年度 | -| status | num | 会员开通状态 | 0:无
1:有 | -| due_date | num | 大会员到期时间 | 毫秒 时间戳 | -| vip_pay_type | num | 会员开通状态 | 0:无
1:有 | -| theme_type | num | 会员开通状态 | 0:无
1:有 | -| label | obj | 大会员信息 | | -| avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | -| nickname_color | str | 会员昵称颜色 | 颜色码 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ------------ | ---------------- | -| path | str | 空 | **作用尚不明确** | -| text | str | 会员类型文字 | | -| label_theme | str | 会员类型 | | - -`data`中的`official`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ------------------------------------------------- | -| role | num | 认证类型 | 0:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 认证备注 | 无为空 | - -`data`中的`invite`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ---- | ---------------- | -| invite_remind | num | 1 | **作用尚不明确** | -| display | bool | true | **作用尚不明确** | - -**示例:** - -```shell -curl -G 'https://app.bilibili.com/x/v2/account/myinfo' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'appkey=4409e2ce8ffd12b8' \ ---data-urlencode 'ts=0' \ ---data-urlencode 'sign=b8fb8480049c525994be6507a97ae0b6' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 293793435, - "name": "社会易姐QwQ", - "sign": "高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265", - "coins": 33.4, - "birthday": "2002-03-05", - "face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", - "sex": 1, - "level": 5, - "rank": 10000, - "silence": 0, - "vip": { - "type": 2, - "status": 1, - "due_date": 1612454400000, - "vip_pay_type": 1, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299" - }, - "email_status": 1, - "tel_status": 1, - "official": { - "role": 0, - "title": "", - "desc": "", - "type": -1 - }, - "identification": 1, - "invite": { - "invite_remind": 1, - "display": true - }, - "is_tourist": 0, - "pin_prompting": 0 - } -} -``` - -
- - -## 登录用户状态数(双端) - -> https://api.bilibili.com/x/web-interface/nav/stat - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ---------- | ---- | -| following | num | 关注数 | | -| follower | num | 粉丝数 | | -| dynamic_count | num | 发布动态数 | | - -**示例:** - -当前登录用户的状态数为粉丝596,关注754,发送的动态252 - -Cookie方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/nav/stat' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "following": 754, - "follower": 596, - "dynamic_count": 252 - } -} -``` - -
- -APP方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/nav/stat' \ ---data-urlencode 'access_key=d907f51122c59599d580ade2315af971' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "following": 754, - "follower": 596, - "dynamic_count": 252 - } -} -``` - -
- -## 获取硬币数 - -> https://account.bilibili.com/site/getCoin - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -鉴权方式:Cookie中` DedeUserID `存在且不为0 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| status | bool | true | 作用尚不明确 | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | -------------------------------------- | ---------- | ---- | -| money | 硬币为正数时:num
硬币为0时:null | 当前硬币数 | | - -**示例:** - -```shell -curl 'https://account.bilibili.com/site/getCoin' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "status": true, - "data": { - "money": 42.4 - } -} -``` - -
\ No newline at end of file diff --git a/login/login_notice.md b/login/login_notice.md deleted file mode 100644 index 250327e..0000000 --- a/login/login_notice.md +++ /dev/null @@ -1,74 +0,0 @@ -# 登录记录 - -- [查询登录记录](#查询登录记录) - ---- - -## 查询登录记录 - -> https://api.bilibili.com/x/safecenter/login_notice - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ------ | ------------------------------------------------------------ | -| mid | num | 用户mid | 必要 | | -| buvid | str | 设备虚拟id | 非必要 | web端为操作登录接口时Cookie中的`buvid3`
若登录设备无`buvid`则留空 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ----------- | -------------------------- | -| mid | num | 登录用户mid | | -| device_name | str | 登录设备 | 依靠操作登录接口时的UA决定 | -| login_type | str | 登录方式 | 根据登录接口决定 | -| login_time | str | 登录时间 | YYYY-MM-DD hh:mm:ss | -| location | str | 登录位置 | 依靠ip决定 | -| ip | str | 登录ip | 部分用`*`打码 | - -**示例:** - -查询用户`293793435`设备id为`fuck_chenrui`的登录记录 - -```shell -curl -G 'https://api.bilibili.com/x/safecenter/login_notice' \ ---data-urlencode 'mid=293793435' \ ---data-urlencode 'buvid=fuck_chenrui' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 293793435, - "device_name": "Chrome浏览器", - "login_type": "扫码登录", - "login_time": "2020-10-02 22:42:38", - "location": "中国陕西渭南", - "ip": "36.40.***.**" - } -} -``` - -
diff --git a/login/member_center.md b/login/member_center.md deleted file mode 100644 index bd91629..0000000 --- a/login/member_center.md +++ /dev/null @@ -1,675 +0,0 @@ -# 个人中心 - -- [获取我的信息](#获取我的信息) -- [查询每日奖励状态](#查询每日奖励状态) -- [查询每日投币获得经验数](#查询每日投币获得经验数) -- [查询大会员状态](#查询大会员状态) -- [查询账号安全情况](#查询账号安全情况) -- [查询账号实名认证状态](#查询账号实名认证状态) -- [查询实名认证详细信息](#查询实名认证详细信息) -- [查询硬币变化情况](#查询硬币变化情况) -- [修改个人签名](#修改个人签名) - ---- - -## 获取我的信息 - -> https://api.bilibili.com/x/member/web/account - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | -------------- | --------------------------------------- | -| mid | num | 我的mid | | -| uname | str | 我的昵称 | | -| userid | str | 我的用户名 | | -| sign | str | 我的签名 | | -| birthday | str | 我的生日 | YYYY-MM-DD | -| sex | str | 我的性别 | 男 女 保密 | -| nick_free | bool | 是否未设置昵称 | false:设置过昵称
true:未设置昵称 | -| rank | str | 我的会员等级 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/member/web/account' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "mid":293793435, - "uname":"社会易姐QwQ", - "userid":"bili_84675323391", - "sign":"高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265", - "birthday":"2002-03-05", - "sex":"男", - "nick_free":false, - "rank":"正式会员" - } -} -``` - -
- -## 查询每日奖励状态 - -> https://api.bilibili.com/x/member/web/exp/reward - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | -------------------- | ------------------------------------------------------------ | -| login | bool | 每日登录 | false:未完成
true:已完成
完成奖励5经验 | -| watch | bool | 每日观看 | false:未完成
true:已完成
完成奖励5经验 | -| coins | num | 每日投币所奖励的经验 | 上限为50
注:该值更新存在延迟
[另外一个专门API](#查询每日投币获得经验数) | -| share | bool | 每日分享 | false:未完成
true:已完成
完成奖励5经验 | -| email | bool | 绑定邮箱 | false:未完成
true:已完成 | -| tel | bool | 绑定手机号 | false:未完成
true:已完成
首次完成完成奖励100经验 | -| safe_question | bool | 设置密保问题 | false:未完成
true:已完成 | -| identify_card | bool | 实名认证 | false:未完成
true:已完成
首次完成奖励50经验 | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/member/web/exp/reward' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "login": true, - "watch": true, - "coins": 30, - "share": true, - "email": true, - "tel": true, - "safe_question": true, - "identify_card": true - } -} -``` - -
- -## 查询每日投币获得经验数 - ->https://www.bilibili.com/plus/account/exp.php - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -该接口实时更新,未发现延迟 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------------------- | ----------- | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| number | num | 每日投币所奖励的经验 | 上限为50
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "number": 20 -} -``` - -
- -## 查询大会员状态 - -> https://api.bilibili.com/x/vip/web/user/info - -*请求方式:GET* - -认证方式:仅可Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---------------- | ------------------------------------------------------------ | -| mid | num | 我的mid | | -| vip_type | num | 大会员类型 | 0:无
1:月度
2:年度 | -| vip_status | num | 大会员状态 | 1:正常
2:由于IP地址更换过于频繁,服务被冻结
3:你的大会员账号风险过高,大会员功能已被锁定 | -| vip_due_date | num | 大会员到期时间 | 时间戳 毫秒 | -| vip_pay_type | num | 是否已购买大会员 | 0:未购买
1:已购买 | -| theme_type | num | 0 | 作用尚不明确 | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/vip/web/user/info' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 293793435, - "vip_type": 2, - "vip_status": 1, - "vip_due_date": 1612454400000, - "vip_pay_type": 1, - "theme_type": 0 - } -} -``` - -
- -## 查询账号安全情况 - -> https://passport.bilibili.com/web/site/user/info - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -鉴权方式:如用Cookie方式认证时Cookie中`DedeUserID`存在且不为0 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ---------------- | ---- | -| account_info | obj | 账号绑定信息 | | -| account_safe | obj | 密码安全信息 | | -| account_sns | obj | 互联登录绑定信息 | | -| account_other | obj | | | - -`data`中的`account_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ---- | -------------- | ------------------------------- | -| hide_tel | str | 绑定的手机号 | 星号隐藏部分信息 | -| hide_mail | str | 绑定的邮箱 | 星号隐藏部分信息 | -| bind_tel | bool | 是否绑定手机号 | false:未绑定
true:已绑定 | -| bind_mail | bool | 是否绑定邮箱 | false:未绑定
true:已绑定 | -| tel_verify | bool | 是否验证手机号 | false:未验证
true:已验证 | -| mail_verify | bool | 是否验证邮箱 | false:未验证
true:已验证 | -| unneeded_check | bool | 是否未设置密码 | false:已设置
true:未设置 | -| realname_certified | bool | 是否实名认证 | false:已认证
true:未认证 | - -`data`中的`account_safe`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---------------- | ----------------------------- | -| Score | num | 账号安全等级 | 0-100
已弃用? | -| score_new | num | 新版账号安全等级 | 0-100 | -| pwd_level | num | 当前密码强度等级 | 1:弱
2:中
3:强 | -| security | bool | 当前密码是否安全 | false:不安全
true:安全 | - -`data`中的`account_sns`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ------------ | ------------------------ | -| weibo_bind | num | 是否绑定微博 | 0:未绑定
1:已绑定 | -| qq_bind | num | 是否绑定qq | 0:未绑定
1:已绑定 | -| wechat_bind | num | 是否绑定微信 | 0:未绑定
1:已绑定 | - -`data`中的`account_other`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ----- | ------------ | -| skipVerify | bool | false | 作用尚不明确 | - -**示例:** - -```shell -curl 'https://passport.bilibili.com/web/site/user/info' \ --b 'SESSDATA=xxx;DedeUserID=1;' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "account_info": { - "hide_tel": "153*****056", - "hide_mail": "144****@qq.com", - "bind_tel": true, - "bind_mail": true, - "tel_verify": true, - "mail_verify": true, - "unneeded_check": false, - "realname_certified": true - }, - "account_safe": { - "Score": 90, - "score_new": 100, - "pwd_level": 3, - "security": true - }, - "account_sns": { - "weibo_bind": 1, - "qq_bind": 1, - "wechat_bind": 1 - }, - "account_other": { - "skipVerify": false - } - } -} -``` - -
- -## 查询账号实名认证状态 - -> https://api.bilibili.com/x/member/realname/status - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ------------------------ | -| status | num | 实名认证状态 | 0:未认证
1:已认证 | - -**示例:** - -当前状态为已认证 - -```shell -curl 'https://api.bilibili.com/x/member/realname/status' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "status": 1 - } -} -``` - -
- -## 查询实名认证详细信息 - -> https://api.bilibili.com/x/member/realname/apply/status - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ------------ | ------------------------------------------------------------ | -| status | num | 认证状态 | 1:已认证
3:未认证 | -| remark | str | 驳回信息 | 默认为空 | -| realname | str | 实名姓名 | 星号隐藏完全信息 | -| card | str | 证件号码 | 星号隐藏部分信息 | -| card_type | num | 证件类型代码 | 0:身份证
2:港澳居民来往内地通行证
3:台湾居民来往大陆通行证
4:护照(中国签发)
5:外国人永久居留证
6:其他国家或地区身份证明 | - -```shell -curl 'https://api.bilibili.com/x/member/realname/apply/status' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "status": 1, - "remark": "", - "realname": "***", - "card": "6****************7", - "card_type": 0 - } -} -``` - -
- -## 查询硬币变化情况 - -> httpsss://api.bilibili.com/x/member/web/coin/log - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -仅能查询最近一周的情况 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ------ | ---------------- | ---- | -| list | array | 变化记录条目列表 | | -| count | num | 变化记录条目数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ---- | -| 0 | obj | 变化记录条目1 | | -| n | obj | 变化记录条目(n+1) | | -| …… | obj | …… | …… | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ---------------------- | -| time | str | 变化时间 | YYYY-MM-DD HH:MM:SS | -| delta | num | 变化量 | 正值为收入,负值为支出 | -| reason | str | 变化说明 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/member/web/coin/log' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "time": "2020-05-19 23:58:29", - "delta": -1, - "reason": "给视频 BV1j5411s7M8 打赏" - }, - { - "time": "2020-05-19 16:02:53", - "delta": -1, - "reason": "给视频 BV1Ht4y117A1 打赏" - }, - { - "time": "2020-05-19 15:38:42", - "delta": 0.1, - "reason": "给视频 BV1nb411C7aa 打赏" - }, - { - "time": "2020-05-19 02:19:20", - "delta": 1, - "reason": "登录奖励" - }, - { - "time": "2020-05-18 22:34:04", - "delta": -1, - "reason": "给视频 BV1Bp4y1Q7uw 打赏" - }, - { - "time": "2020-05-18 22:33:59", - "delta": -1, - "reason": "给视频 BV1j5411s7M8 打赏" - }, - { - "time": "2020-05-18 02:45:53", - "delta": 1, - "reason": "登录奖励" - }, - { - "time": "2020-05-17 03:02:38", - "delta": 1, - "reason": "登录奖励" - }, - { - "time": "2020-05-16 01:57:02", - "delta": 1, - "reason": "登录奖励" - }, - { - "time": "2020-05-15 11:10:35", - "delta": 0.2, - "reason": "给视频 BV1Yt41137T6 打赏" - }, - { - "time": "2020-05-15 00:34:27", - "delta": 1, - "reason": "登录奖励" - }, - { - "time": "2020-05-14 02:11:37", - "delta": 1, - "reason": "登录奖励" - }, - { - "time": "2020-05-13 02:12:28", - "delta": 1, - "reason": "登录奖励" - } - ], - "count": 13 - } -} -``` - -
- -## 修改个人签名 - -> https://api.bilibili.com/x/member/web/sign/update - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -修改签名不会立即生效,会等待审核队列稍后生效 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| user_sign | str | 要设置的签名内容 | 非必要 | 删除签名留空或省去即可
最多支持70个字符 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
40015:签名包含敏感词
40021:签名不能包含表情图片
40022:签名过长 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -更新个人标签为`高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,资深猿厨,粉丝群:1136462265` - -```shell -curl 'https://api.bilibili.com/x/member/web/sign/update' \ ---data-urlencode 'user_sign=高中技术宅一枚,爱好MC&电子&8-bit音乐&数码&编程,粉丝群:1136462265' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
- - diff --git a/manga/Activity.md b/manga/Activity.md deleted file mode 100644 index afc25ec..0000000 --- a/manga/Activity.md +++ /dev/null @@ -1,79 +0,0 @@ -# 漫画任务操作 - -- [漫画任务操作](#漫画任务操作) - - [分享漫画](#分享漫画) - -## 分享漫画 - -> https://manga.bilibili.com/twirp/activity.v1.Activity/ShareComic - -_请求方式:POST_ - -认证方式:Cookie(SESSDATA)/ APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ---- | ------ | ------- | -| platform | str | 平台 | 必要 | android | - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | --------- | -------- | ------------------------------------------------------- | -| code | num / str | 返回值 | 见对应表格 | -| msg | str | 错误信息 | | -| meta | obj | 错误信息 | invalid_argument 时存在,例如 `{"argument":"platform"}` | -| data | obj | | `code` 为 0,`msg` 为空时存在 | - -`code` - `msg` 对应表: - -| code | code 类型 | msg | 备注 | -| ---------------- | --------- | ------------------ | --------------------------- | -| 0 | num | 空 | 分享成功,`data` 存在 | -| 0 | num | 今日已分享 | | -| invalid_argument | str | xxxx must be valid | xxxx 字段为必须,`meta`存在 | -| unauthenticated | str | must login | 必须登录才能分享 | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ---- | -| point | num | 获取积分 | | - -**示例:** - -```bash -curl -X POST https://manga.bilibili.com/twirp/activity.v1.Activity/ShareComic \ --b "SESSDATA=xxxxx" \ ---data-urlencode 'platform=android' -``` - -
-分享成功: - -```json -{ - "code": 0, - "msg": "", - "data": { - "point": 5 - } -} -``` - -
- -
-今日已分享: - -```json -{ - "code": 0, - "msg": "今日已分享" -} -``` - -
diff --git a/manga/ClockIn.md b/manga/ClockIn.md deleted file mode 100644 index 36681ed..0000000 --- a/manga/ClockIn.md +++ /dev/null @@ -1,217 +0,0 @@ -# 签到 - -> https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|----------|-----|----|-----|---------| -| platform | str | 平台 | 必要 | android | -| device | str | 平台 | 非必要 | h5 | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|------|-----|-------| -| type | num | | 非必要 | 补签时使用 | -| date | str | 补签日期 | 必要 | 补签时使用 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----------|------|--------------------------------------------| -| code | num / str | 返回值 | 0:成功
invalid_argument:今日已签到 | -| msg | str | 错误信息 | 成功:空
已签到:clockin clockin is duplicate | -| meta | obj | 错误信息 | 今日已签到时存在 | -| data | obj | | | - -**示例:** - -普通签到: - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn' \ --H 'Cookie: SESSDATA=xxx' \ --H 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'platform=android' -``` - -
-签到成功: - -```json -{ - "code": 0, - "msg": "", - "data": {} -} -``` - -
- -
-今日已签到: - -```json -{ - "code": "invalid_argument", - "msg": "clockin clockin is duplicate", - "meta": { - "argument": "clockin" - } -} -``` - -
- -补签: - -```bash -curl -L 'https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn?platform=android' \ --H 'Cookie: SESSDATA=xxx' \ --H 'content-type: application/json;charset=UTF-8' \ --d '{"type":0,"date":"2023-02-15"}' -``` - -
-补签成功: - -```json -{ - "code": 0, - "msg": "", - "data": {} -} -``` - -
- -# 查询签到状态 - -> https://manga.bilibili.com/twirp/activity.v1.Activity/GetClockInInfo - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|------|------| -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | 空 | -| data | obj | 信息本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------------|-------|------------------|------------------| -| day_count | num | 连续签到天数 | | -| status | num | 今日是否已签到 | 0:未签到
1:已签到 | -| credit_icon | str | | | -| sign_before_icon | str | | | -| sign_today_icon | str | | | -| breathe_icon | str | | | -| new_credit_x_icon | str | | | -| coupon_pic | str | | | -| points | array | 一次签到周期中每次签到可获得点数 | | -| point_infos | array | | | - -`point_infos`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|------|---------|----| -| point | num | 签到可获取积分 | | -| origin_point | num | | | -| is_activity | bool | | | -| title | str | 签到奖励描述 | | - -**示例:** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/activity.v1.Activity/GetClockInInfo' \ --H 'Cookie: SESSDATA=xxx' -``` - -
-成功: - -```json -{ - "code": 0, - "msg": "", - "data": { - "day_count": 58, - "status": 1, - "points": [ - 10, - 20, - 20, - 10, - 10, - 10, - 30 - ], - "credit_icon": "https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/9da6QImiK_w192_h192.png", - "sign_before_icon": "https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/BuA6z3lhN_w192_h192.png", - "sign_today_icon": "https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/TWSLUHbbg_w192_h192.png", - "breathe_icon": "http://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/anime.breathe.svga", - "point_infos": [ - { - "point": 10, - "origin_point": 10, - "is_activity": false, - "title": "10积分" - }, - { - "point": 20, - "origin_point": 20, - "is_activity": false, - "title": "20积分" - }, - { - "point": 20, - "origin_point": 20, - "is_activity": false, - "title": "20积分" - }, - { - "point": 10, - "origin_point": 10, - "is_activity": false, - "title": "10积分" - }, - { - "point": 10, - "origin_point": 10, - "is_activity": false, - "title": "10积分" - }, - { - "point": 10, - "origin_point": 10, - "is_activity": false, - "title": "10积分" - }, - { - "point": 30, - "origin_point": 30, - "is_activity": false, - "title": "30积分+福利券" - } - ], - "new_credit_x_icon": "https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/QP5DsW2S_w192_h192.png", - "coupon_pic": "https://i0.hdslb.com/bfs/static/manga/artifact/sign-resource/v2/Yalqqoiz_w402_h162.png" - } -} -``` - -
\ No newline at end of file diff --git a/manga/Comic.md b/manga/Comic.md deleted file mode 100644 index af9d4bb..0000000 --- a/manga/Comic.md +++ /dev/null @@ -1,4223 +0,0 @@ -# 购买漫画章节 - -> https://manga.bilibili.com/twirp/comic.v1.Comic/BuyEpisode - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录凭证 | 必要 | 使用APP鉴权方式时必填 | -| appkey | str | cc8617fd6961e070 | 非必要 | | -| mobi_app | str | android_comic | 非必要 | | -| version | str | 4.13.0 | 非必要 | | -| build | str | 36413002 | 非必要 | | -| channel | str | bilicomic | 非必要 | | -| platform | str | android | 必要 | | -| device | str | android | 非必要 | | -| buvid | str | | 非必要 | | -| machine | str | samsung+SM-G9730 | 非必要 | | -| is_teenager | num | 0 | 非必要 | | -| no_recommend | num | 0 | 非必要 | | -| ts | num | 秒级时间戳 | 非必要 | | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | -| epId | num | 章节id | 必要 | | -| buyMethod | num | 购买方式 | 必要 | 2:漫读券
4:新人等免
5:通用券 | -| couponId | num | 漫读券id | 必要 | | -| comicId | num | 漫画id | 可选 | buyMethod:4为必要| -| autoPayGoldStatus | num | 2 | 可选 | buyMethod:2,5 为必要
buyMethod:4为不必要 | -| isPresale | num | 0 | 可选 | buyMethod:2,5 为必要
buyMethod:4为不必要 | - -漫读券购买 - -``` -{ - "epId": 484366, - "buyMethod": 2, - "couponId": 7461430, - "autoPayGoldStatus": 2, - "isPresale": 0 -} -``` - -等就免费(新人等免) -``` -{ - "ep_id": 321913, - "comic_id": 26564, - "buy_method": 4 -} -``` - -通用券购买 - -``` -{ - "epId": 484366, - "buyMethod": 5, - "couponId": 0, - "autoPayGoldStatus": 2, - "payAmount": 1, - "isPresale": 0 -} -``` - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
0:本话无需购买
1:没有足够的卡券使用次数
| -| msg | str | 错误信息 | | - -**示例:** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/BuyEpisode?platform=android' \ --H 'Cookie: SESSDATA=xxx;' \ --H 'Content-Type: application/json' \ ---data-raw '{ - "epId": 484366, - "buyMethod": 2, - "couponId": 7461430, - "autoPayGoldStatus": 2, - "isPresale": 0 -}' -``` - -
-购买成功: - -```json -{ - "code": 0, - "msg": "", - "data": { - "auto_use_item": "" - } -} -``` - -
- -# 获取漫画详情 - -> https://manga.bilibili.com/twirp/comic.v1.Comic/ComicDetail - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录凭证 | 非必要 | 可不登录访问 | -| appkey | str | cc8617fd6961e070 | 非必要 | | -| mobi_app | str | android_comic | 非必要 | | -| version | str | 4.13.0 | 非必要 | | -| build | str | 36413002 | 非必要 | | -| channel | str | bilicomic | 非必要 | | -| platform | str | android | 非必要 | 可选值:web/android | -| device | str | android | 必要 | 如不填则不会获取ep_list信息,可选值:pc/android | -| buvid | str | | 非必要 | | -| machine | str | samsung+SM-G9730 | 非必要 | | -| is_teenager | num | 0 | 非必要 | | -| no_recommend | num | 0 | 非必要 | | -| ts | num | 秒级时间戳 | 非必要 | | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | -| comicId | num | 漫画id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| id | num | 漫画id | | -| title | str | 漫画名称 | | -| comic_type | num | 0,1 | | -| page_default | num | 0,1,2,4,8 | | -| page_allow | num | | | -| horizontal_cover | str | 横板封面 | | -| square_cover | str | 方形封面 | | -| vertical_cover | str | 竖版封面 | | -| author_name | array | 作者列表 | | -| styles | array | | | -| last_ord | num | 最新一话序号 | | -| is_finish | num | 完结状态
0:未完结 1:已完结 | | -| status | num | -1,0 | | -| fav | num | | | -| read_order | num | | | -| evaluate | num | 漫画简介 | | -| total | num | 总话数 | | -| ep_list | array | 章节信息 | | -| release_time | str | | | -| is_limit | num | | | -| read_epid | num | | | -| last_read_time | str | | | -| is_download | num | | | -| read_short_title | str | | | -| styles2 | array | | | -| renewal_time | str | | | -| last_short_title | str | 最新一话短标题 | | -| discount_type | num | | | -| discount | num | | | -| discount_end | str | | | -| no_reward | bool | | | -| batch_discount_type | num | | | -| ep_discount_type | num | | | -| has_fav_activity | bool | | | -| fav_free_amount | num | | | -| allow_wait_free | bool | 是否等就免费 | | -| wait_hour | num | 等待时间(小时) | | -| wait_free_at | num | 等待时间(小时) | | -| no_danmaku | num | | | -| auto_pay_status | num | | | -| no_month_ticket | bool | | | -| immersive | bool | | | -| no_discount | bool | | | -| show_type | num | | | -| pay_mode | num | | | -| chapters | array | | | -| classic_lines | str | 漫画简介 | | -| pay_for_new | num | | | -| fav_comic_info | obj | | | -| serial_status | num | | | -| series_info | obj | | | -| album_count | num | | | -| wiki_id | num | | | -| disable_coupon_amount | num | | | -| japan_comic | bool |是否为日本漫画 | | -| interact_value | num | | | -| temporary_finish_time | str | | | -| video | | | | -| introduction | str | 介绍| | -| comment_status | num | | | -| no_screenshot | bool | | | -| type | num | | | -| vomic_cvs | array | | | -| no_rank | bool | | | -| presale_eps | array | | | -| presale_text | str | | | -| presale_discount | num | | | -| no_leaderboard | bool | | | - -`ep_list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| id | num | 章节id | | -| ord | num | 章节序号,最新章节排在前面 | | -| read | num | 是否阅读过,0:没有 1:阅读过 | | -| pay_mode | num | | | -| is_locked | bool | 是否处于锁定状态 | | -| pay_gold | num | 解锁所需漫币 | | -| size | num | 文件大小(字节) | | -| short_title | str | 短标题 | | -| is_in_free | bool | | | -| title | str | 标题 | | -| cover | str | 封面 | | -| pub_time | str | 发布日期 | | -| comments | num | 评论数 | | -| unlock_expire_at | str | | | -| unlock_type | num | | | -| allow_wait_free | bool | | | -| progress | str | | | -| like_count | num | 点赞数 | | -| chapter_id | num | | | -| type | num | | | -| extra | num | | | - -`styles2`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| id | num | 漫画风格id | | -| name | str | 漫画风格名称 | | - -`fav_comic_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| has_fav_activity | bool | | | -| fav_free_amount | num | | | -| fav_coupon_type | num | | | - -`series_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| id | num | | | -| comics | array | | | - -**示例:** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/ComicDetail?device=pc' \ --H 'Content-Type: application/json' \ ---data-raw '{ - "comicId": 28500 -}' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "data": { - "id": 28500, - "title": "夏日重现", - "comic_type": 1, - "page_default": 4, - "page_allow": 15, - "horizontal_cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "square_cover": "http://i0.hdslb.com/bfs/manga-static/35fa9fa6190aa528f26f6e1341d9ee80b66b535f.jpg", - "vertical_cover": "https://i0.hdslb.com/bfs/manga-static/965cdb5c83e0b2066b4b60973ba7f4242f592967.jpg", - "author_name": [ - "田中靖规", - "集英社" - ], - "styles": [ - "悬疑灵异" - ], - "last_ord": 152, - "is_finish": 1, - "status": 0, - "fav": 0, - "read_order": 0, - "evaluate": "【此漫画的翻译由版权方提供】青梅竹马的潮死了——。听闻这个悲报,慎平回到了阔别已久的故乡和歌山市·日都岛与家人再会并出席葬礼。但是岛上貌似陡生异变,充斥着不寻常的气息……?\n夏日孤岛上的悬疑剧!!\n\n", - "total": 167, - "ep_list": [ - { - "id": 779804, - "ord": 152, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17973126, - "short_title": "后篇(4)", - "is_in_free": false, - "title": "2026未然凶宅-后篇(4)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 218, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 458, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 779788, - "ord": 151, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17654401, - "short_title": "后篇(3)", - "is_in_free": false, - "title": "2026未然凶宅-后篇(3)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 31, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 171, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 779782, - "ord": 150, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18250988, - "short_title": "后篇(2)", - "is_in_free": false, - "title": "2026未然凶宅-后篇(2)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 39, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 179, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 779752, - "ord": 149, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19374429, - "short_title": "后篇(1)", - "is_in_free": false, - "title": "2026未然凶宅-后篇(1)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 41, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 174, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 779751, - "ord": 148, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20993207, - "short_title": "前篇(3)", - "is_in_free": false, - "title": "2026未然凶宅-前篇(3)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 52, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 187, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 779749, - "ord": 147, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17048075, - "short_title": "前篇(2)", - "is_in_free": false, - "title": "2026未然凶宅-前篇(2)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 60, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 191, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 779748, - "ord": 146, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21462932, - "short_title": "前篇(1)", - "is_in_free": false, - "title": "2026未然凶宅-前篇(1)", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 151, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 233, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 546499, - "ord": 145, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 26980054, - "short_title": "139", - "is_in_free": false, - "title": "第139话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2021-02-01 12:00:00", - "comments": 1314, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 3241, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 543783, - "ord": 144, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 33822142, - "short_title": "138", - "is_in_free": false, - "title": "第138话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2021-01-25 12:00:00", - "comments": 232, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 514, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 539917, - "ord": 143, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20551895, - "short_title": "137", - "is_in_free": false, - "title": "第137话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2021-01-11 12:00:00", - "comments": 124, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 461, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 529960, - "ord": 142, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18729857, - "short_title": "136", - "is_in_free": false, - "title": "第136话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-12-28 12:00:00", - "comments": 112, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 432, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 526882, - "ord": 141, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 9528871, - "short_title": "135", - "is_in_free": false, - "title": "第135话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-12-21 12:00:00", - "comments": 64, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 397, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 524737, - "ord": 140, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 4658617, - "short_title": "记录", - "is_in_free": false, - "title": "023", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-12-14 12:00:00", - "comments": 63, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 368, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 520819, - "ord": 139, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19569820, - "short_title": "134", - "is_in_free": false, - "title": "第134话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-12-07 12:00:00", - "comments": 234, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 411, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 518563, - "ord": 138, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "133", - "is_in_free": false, - "title": "第133话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-11-30 12:00:00", - "comments": 52, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 404, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 516460, - "ord": 137, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 16923412, - "short_title": "132", - "is_in_free": false, - "title": "第132话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-11-23 12:00:00", - "comments": 66, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 408, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 513494, - "ord": 136, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22397411, - "short_title": "131", - "is_in_free": false, - "title": "第131话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-11-16 00:00:00", - "comments": 73, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 385, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 509309, - "ord": 135, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 11417949, - "short_title": "130", - "is_in_free": false, - "title": "第130话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-11-02 12:00:00", - "comments": 121, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 415, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 507403, - "ord": 134, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 13421937, - "short_title": "129", - "is_in_free": false, - "title": "第129话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-26 00:00:00", - "comments": 108, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 382, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 505464, - "ord": 133, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "128", - "is_in_free": false, - "title": "第128话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 101, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 414, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 504084, - "ord": 132, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 714738, - "short_title": "记录", - "is_in_free": false, - "title": "022", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 38, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 327, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 503749, - "ord": 131, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 13733489, - "short_title": "127", - "is_in_free": false, - "title": "第127话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 87, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 383, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 498378, - "ord": 130, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "126", - "is_in_free": false, - "title": "第126话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 83, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 392, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 496100, - "ord": 129, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17044238, - "short_title": "125", - "is_in_free": false, - "title": "第125话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 59, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 378, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494999, - "ord": 128, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19000950, - "short_title": "124", - "is_in_free": false, - "title": "第124话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 53, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 369, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494997, - "ord": 127, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 757788, - "short_title": "记录", - "is_in_free": false, - "title": "021", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 73, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 295, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494996, - "ord": 126, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 25583325, - "short_title": "123", - "is_in_free": false, - "title": "第123话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 88, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 341, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494995, - "ord": 125, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22945986, - "short_title": "122", - "is_in_free": false, - "title": "第122话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 114, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 382, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494994, - "ord": 124, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22007815, - "short_title": "121", - "is_in_free": false, - "title": "第121话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 60, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 336, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494992, - "ord": 123, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14200387, - "short_title": "120", - "is_in_free": false, - "title": "第120话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 98, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 349, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494990, - "ord": 122, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20253075, - "short_title": "119", - "is_in_free": false, - "title": "第119话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 153, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 352, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494986, - "ord": 121, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 34545559, - "short_title": "118", - "is_in_free": false, - "title": "第118话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 97, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 353, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494983, - "ord": 120, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 26875814, - "short_title": "117", - "is_in_free": false, - "title": "第117话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 38, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 326, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494982, - "ord": 119, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 24302773, - "short_title": "116", - "is_in_free": false, - "title": "第116话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 60, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 311, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494981, - "ord": 118, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22563845, - "short_title": "115", - "is_in_free": false, - "title": "第115话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 103, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 332, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494979, - "ord": 117, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 26357441, - "short_title": "114", - "is_in_free": false, - "title": "第114话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 190, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 325, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494978, - "ord": 116, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 3055913, - "short_title": "记录", - "is_in_free": false, - "title": "020", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 27, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 303, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494977, - "ord": 115, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 27213199, - "short_title": "113", - "is_in_free": false, - "title": "第113话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 131, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 344, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494876, - "ord": 114, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 27036215, - "short_title": "112", - "is_in_free": false, - "title": "第112话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 84, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 306, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494872, - "ord": 113, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18077367, - "short_title": "111", - "is_in_free": false, - "title": "第111话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 66, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 317, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494852, - "ord": 112, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 6547152, - "short_title": "记录", - "is_in_free": false, - "title": "019", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 20, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 286, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494849, - "ord": 111, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17709563, - "short_title": "110", - "is_in_free": false, - "title": "第110话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 42, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 326, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494848, - "ord": 110, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "109", - "is_in_free": false, - "title": "第109话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 42, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 325, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494847, - "ord": 109, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20356850, - "short_title": "108", - "is_in_free": false, - "title": "第108话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 52, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 322, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494846, - "ord": 108, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21075013, - "short_title": "107", - "is_in_free": false, - "title": "第107话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 29, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 314, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494698, - "ord": 107, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19078032, - "short_title": "106", - "is_in_free": false, - "title": "第106话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 81, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 320, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494696, - "ord": 106, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21291294, - "short_title": "105", - "is_in_free": false, - "title": "第105话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 56, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 350, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494691, - "ord": 105, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22030863, - "short_title": "104", - "is_in_free": false, - "title": "第104话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 56, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 305, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494690, - "ord": 104, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17400960, - "short_title": "103", - "is_in_free": false, - "title": "第103话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 33, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 304, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494688, - "ord": 103, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "102", - "is_in_free": false, - "title": "第102话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 53, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 329, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552061, - "ord": 102.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1922541, - "short_title": "记录", - "is_in_free": false, - "title": "018", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 8, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 30, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494682, - "ord": 102, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20268719, - "short_title": "101", - "is_in_free": false, - "title": "第101话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 92, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 317, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494666, - "ord": 101, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17542840, - "short_title": "100", - "is_in_free": false, - "title": "第100话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 48, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 323, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494665, - "ord": 100, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 27598387, - "short_title": "99", - "is_in_free": false, - "title": "第99话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 109, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 350, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494664, - "ord": 99, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 24852154, - "short_title": "98", - "is_in_free": false, - "title": "第98话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 64, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 326, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494663, - "ord": 98, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20721168, - "short_title": "97", - "is_in_free": false, - "title": "第97话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 57, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 309, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494656, - "ord": 97, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15000137, - "short_title": "96", - "is_in_free": false, - "title": "第96话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 126, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 339, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552060, - "ord": 96.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 3910437, - "short_title": "记录", - "is_in_free": false, - "title": "017", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 5, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 30, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494650, - "ord": 96, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 25062481, - "short_title": "95", - "is_in_free": false, - "title": "第95话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 89, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 360, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494645, - "ord": 95, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19376143, - "short_title": "94", - "is_in_free": false, - "title": "第94话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 82, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 397, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494638, - "ord": 94, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 34661163, - "short_title": "93", - "is_in_free": false, - "title": "第93话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 64, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 352, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494637, - "ord": 93, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 33798923, - "short_title": "92", - "is_in_free": false, - "title": "第92话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 55, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 350, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494632, - "ord": 92, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19784232, - "short_title": "91", - "is_in_free": false, - "title": "第91话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 81, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 387, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494627, - "ord": 91, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18532096, - "short_title": "90", - "is_in_free": false, - "title": "第90话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 121, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 371, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 494009, - "ord": 90, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19527018, - "short_title": "89", - "is_in_free": false, - "title": "第89话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 57, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 330, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552059, - "ord": 89.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 2034891, - "short_title": "记录", - "is_in_free": false, - "title": "016", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 14, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 33, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 493979, - "ord": 89, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18494693, - "short_title": "88", - "is_in_free": false, - "title": "第88话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 87, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 351, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 493950, - "ord": 88, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17416462, - "short_title": "87", - "is_in_free": false, - "title": "第87话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 71, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 343, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 493944, - "ord": 87, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "86", - "is_in_free": false, - "title": "第86话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 88, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 357, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552058, - "ord": 86.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 4837743, - "short_title": "记录", - "is_in_free": false, - "title": "015", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-10 00:00:00", - "comments": 9, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 42, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491230, - "ord": 86, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21039936, - "short_title": "85", - "is_in_free": false, - "title": "第85话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 59, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 319, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491229, - "ord": 85, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14463535, - "short_title": "84", - "is_in_free": false, - "title": "第84话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 87, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 344, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552057, - "ord": 84.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 11625156, - "short_title": "记录", - "is_in_free": false, - "title": "014", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-10 00:00:00", - "comments": 12, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 46, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491228, - "ord": 84, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15900351, - "short_title": "83", - "is_in_free": false, - "title": "第83话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 71, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 347, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491227, - "ord": 83, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19182670, - "short_title": "82", - "is_in_free": false, - "title": "第82话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 67, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 355, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491226, - "ord": 82, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18627336, - "short_title": "81", - "is_in_free": false, - "title": "第81话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 45, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 347, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491225, - "ord": 81, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15574642, - "short_title": "80", - "is_in_free": false, - "title": "第80话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 51, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 346, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491224, - "ord": 80, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 24885059, - "short_title": "79", - "is_in_free": false, - "title": "第79话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 79, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 350, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491223, - "ord": 79, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22427296, - "short_title": "78", - "is_in_free": false, - "title": "第78话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 80, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 356, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552056, - "ord": 78.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1551067, - "short_title": "记录", - "is_in_free": false, - "title": "013", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 5, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 38, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491222, - "ord": 78, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18725322, - "short_title": "77", - "is_in_free": false, - "title": "第77话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 100, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 354, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491221, - "ord": 77, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 16185606, - "short_title": "76", - "is_in_free": false, - "title": "第76话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 59, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 341, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491220, - "ord": 76, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18886387, - "short_title": "75", - "is_in_free": false, - "title": "第75话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 88, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 370, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491215, - "ord": 75, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19228812, - "short_title": "74", - "is_in_free": false, - "title": "第74话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 106, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 343, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552054, - "ord": 74.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1106084, - "short_title": "记录", - "is_in_free": false, - "title": "012", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 9, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 43, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491214, - "ord": 74, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17213820, - "short_title": "73", - "is_in_free": false, - "title": "第73话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 105, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 358, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552053, - "ord": 73.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1510250, - "short_title": "记录", - "is_in_free": false, - "title": "011", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-10 00:00:00", - "comments": 7, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 46, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491213, - "ord": 73, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 12514556, - "short_title": "72", - "is_in_free": false, - "title": "第72话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 38, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 356, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491212, - "ord": 72, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 24337518, - "short_title": "71", - "is_in_free": false, - "title": "第71话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 45, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 353, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491211, - "ord": 71, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22329539, - "short_title": "70", - "is_in_free": false, - "title": "第70话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 45, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 343, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491210, - "ord": 70, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 12721444, - "short_title": "69", - "is_in_free": false, - "title": "第69话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 59, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 363, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491209, - "ord": 69, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14948018, - "short_title": "68", - "is_in_free": false, - "title": "第68话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 48, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 363, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491208, - "ord": 68, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19604576, - "short_title": "67", - "is_in_free": false, - "title": "第67话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 97, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 370, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491207, - "ord": 67, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18529368, - "short_title": "66", - "is_in_free": false, - "title": "第66话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 136, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 386, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491206, - "ord": 66, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19616688, - "short_title": "65", - "is_in_free": false, - "title": "第65话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 79, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 350, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 491205, - "ord": 65, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17889729, - "short_title": "64", - "is_in_free": false, - "title": "第64话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 77, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 369, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552052, - "ord": 64.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1729726, - "short_title": "记录", - "is_in_free": false, - "title": "010", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-10 00:00:00", - "comments": 47, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 47, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485887, - "ord": 64, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 24816564, - "short_title": "63", - "is_in_free": false, - "title": "第63话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 96, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 363, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485886, - "ord": 63, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21990493, - "short_title": "62", - "is_in_free": false, - "title": "第62话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 161, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 377, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485885, - "ord": 62, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 16121252, - "short_title": "61", - "is_in_free": false, - "title": "第61话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 35, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 338, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485884, - "ord": 61, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 23868117, - "short_title": "60", - "is_in_free": false, - "title": "第60话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 54, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 353, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485883, - "ord": 60, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14907334, - "short_title": "59", - "is_in_free": false, - "title": "第59话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 57, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 360, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485882, - "ord": 59, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21003716, - "short_title": "58", - "is_in_free": false, - "title": "第58话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 49, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 362, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485881, - "ord": 58, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21336454, - "short_title": "57", - "is_in_free": false, - "title": "第57话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 43, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 335, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485880, - "ord": 57, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15975510, - "short_title": "56", - "is_in_free": false, - "title": "第56话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 43, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 346, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485879, - "ord": 56, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 16073891, - "short_title": "55", - "is_in_free": false, - "title": "第55话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 48, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 352, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552051, - "ord": 55.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1380370, - "short_title": "记录", - "is_in_free": false, - "title": "009", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 8, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 49, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485878, - "ord": 55, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 13480749, - "short_title": "54", - "is_in_free": false, - "title": "第54话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 56, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 357, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485877, - "ord": 54, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21882584, - "short_title": "53", - "is_in_free": false, - "title": "第53话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 38, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 372, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485853, - "ord": 53, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 23862198, - "short_title": "52", - "is_in_free": false, - "title": "第52话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 56, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 388, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485852, - "ord": 52, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 23267613, - "short_title": "51", - "is_in_free": false, - "title": "第51话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 43, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 370, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485851, - "ord": 51, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17028529, - "short_title": "50", - "is_in_free": false, - "title": "第50话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 63, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 380, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485850, - "ord": 50, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21963399, - "short_title": "49", - "is_in_free": false, - "title": "第49话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 122, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 418, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552050, - "ord": 49.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1650224, - "short_title": "记录", - "is_in_free": false, - "title": "008", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 15, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 57, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485849, - "ord": 49, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "48", - "is_in_free": false, - "title": "第48话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 71, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 392, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485848, - "ord": 48, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18582327, - "short_title": "47", - "is_in_free": false, - "title": "第47话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 64, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 401, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485847, - "ord": 47, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 28025152, - "short_title": "46", - "is_in_free": false, - "title": "第46话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 78, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 444, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485846, - "ord": 46, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18644930, - "short_title": "45", - "is_in_free": false, - "title": "第45话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 27, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 402, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485845, - "ord": 45, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17555220, - "short_title": "44", - "is_in_free": false, - "title": "第44话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 71, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 418, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485844, - "ord": 44, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 23713922, - "short_title": "43", - "is_in_free": false, - "title": "第43话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 41, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 392, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485842, - "ord": 43, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22048242, - "short_title": "42", - "is_in_free": false, - "title": "第42话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 36, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 400, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485841, - "ord": 42, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17956496, - "short_title": "41", - "is_in_free": false, - "title": "第41话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 45, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 423, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485840, - "ord": 41, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20461324, - "short_title": "40", - "is_in_free": false, - "title": "第40话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 102, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 441, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485839, - "ord": 40, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 16463871, - "short_title": "39", - "is_in_free": false, - "title": "第39话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 38, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 404, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485836, - "ord": 39, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18664684, - "short_title": "38", - "is_in_free": false, - "title": "第38话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 42, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 403, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485835, - "ord": 38, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17811979, - "short_title": "37", - "is_in_free": false, - "title": "第37话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 46, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 422, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552049, - "ord": 37.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 4923840, - "short_title": "记录", - "is_in_free": false, - "title": "005~007", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 9, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 59, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485834, - "ord": 37, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22221360, - "short_title": "36", - "is_in_free": false, - "title": "第36话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 78, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 410, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485833, - "ord": 36, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19204738, - "short_title": "35", - "is_in_free": false, - "title": "第35话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 42, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 397, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485832, - "ord": 35, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17688181, - "short_title": "34", - "is_in_free": false, - "title": "第34话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 43, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 407, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485831, - "ord": 34, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14314953, - "short_title": "33", - "is_in_free": false, - "title": "第33话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 138, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 430, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 485826, - "ord": 33, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15190983, - "short_title": "32", - "is_in_free": false, - "title": "第32话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 80, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 409, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484535, - "ord": 32, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21701429, - "short_title": "31", - "is_in_free": false, - "title": "第31话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 81, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 408, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484534, - "ord": 31, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15619952, - "short_title": "30", - "is_in_free": false, - "title": "第30话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 61, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 429, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484528, - "ord": 30, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18250579, - "short_title": "29", - "is_in_free": false, - "title": "第29话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 60, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 435, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484526, - "ord": 29, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 27051218, - "short_title": "28", - "is_in_free": false, - "title": "第28话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 59, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 406, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484514, - "ord": 28, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "27", - "is_in_free": false, - "title": "第27话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 63, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 420, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484507, - "ord": 27, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17113482, - "short_title": "26", - "is_in_free": false, - "title": "第26话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 98, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 447, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484500, - "ord": 26, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14359689, - "short_title": "25", - "is_in_free": false, - "title": "第25话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 63, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 407, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484483, - "ord": 25, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 15182223, - "short_title": "24", - "is_in_free": false, - "title": "第24话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 55, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 421, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484478, - "ord": 24, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20914179, - "short_title": "23", - "is_in_free": false, - "title": "第23话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 75, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 447, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484474, - "ord": 23, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 17764811, - "short_title": "22", - "is_in_free": false, - "title": "第22话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 65, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 434, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484461, - "ord": 22, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 27296421, - "short_title": "21", - "is_in_free": false, - "title": "第21话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 51, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 441, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484443, - "ord": 21, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 15462050, - "short_title": "记录", - "is_in_free": false, - "title": "004", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 115, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 455, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484433, - "ord": 20, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20824911, - "short_title": "20", - "is_in_free": false, - "title": "第20话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 127, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 497, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484422, - "ord": 19, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 25714866, - "short_title": "19", - "is_in_free": false, - "title": "第19话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 106, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 537, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484395, - "ord": 18, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 24927577, - "short_title": "18", - "is_in_free": false, - "title": "第18话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 94, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 527, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484387, - "ord": 17, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 0, - "short_title": "17", - "is_in_free": false, - "title": "第17话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 48, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 493, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484377, - "ord": 16, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 19775909, - "short_title": "16", - "is_in_free": false, - "title": "第16话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 70, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 503, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552046, - "ord": 15.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 3261603, - "short_title": "记录", - "is_in_free": false, - "title": "003", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2021-02-18 13:17:06", - "comments": 39, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 385, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484376, - "ord": 15, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 23101595, - "short_title": "15", - "is_in_free": false, - "title": "第15话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 97, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 510, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484375, - "ord": 14, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 21456269, - "short_title": "14", - "is_in_free": false, - "title": "第14话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 130, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 510, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484373, - "ord": 13, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 22942430, - "short_title": "13", - "is_in_free": false, - "title": "第13话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 64, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 522, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484372, - "ord": 12, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20225389, - "short_title": "12", - "is_in_free": false, - "title": "第12话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 67, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 499, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552048, - "ord": 11.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1569935, - "short_title": "记录", - "is_in_free": false, - "title": "002", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 10, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 52, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484369, - "ord": 11, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18897621, - "short_title": "11", - "is_in_free": false, - "title": "第11话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 82, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 566, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484367, - "ord": 10, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 28021344, - "short_title": "10", - "is_in_free": false, - "title": "第10话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 65, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 519, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484366, - "ord": 9, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14198049, - "short_title": "9", - "is_in_free": false, - "title": "第9话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 72, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 544, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484365, - "ord": 8, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 14137875, - "short_title": "8", - "is_in_free": false, - "title": "第8话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 92, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 575, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 552047, - "ord": 7.5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 1794952, - "short_title": "记录", - "is_in_free": false, - "title": "001", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2022-05-12 00:00:00", - "comments": 23, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 80, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484360, - "ord": 7, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 20283011, - "short_title": "7", - "is_in_free": false, - "title": "第7话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 83, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 589, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484351, - "ord": 6, - "read": 0, - "pay_mode": 1, - "is_locked": true, - "pay_gold": 49, - "size": 18898536, - "short_title": "6", - "is_in_free": false, - "title": "第6话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 43, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 626, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484350, - "ord": 5, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 18623472, - "short_title": "5", - "is_in_free": false, - "title": "第5话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 86, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 1017, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484347, - "ord": 4, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 15209423, - "short_title": "4", - "is_in_free": false, - "title": "第4话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 85, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 976, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484345, - "ord": 3, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 15210025, - "short_title": "3", - "is_in_free": false, - "title": "第3话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 72, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 972, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484344, - "ord": 2, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 26269998, - "short_title": "2", - "is_in_free": false, - "title": "第2话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 147, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 1001, - "chapter_id": 0, - "type": 0, - "extra": 0 - }, - { - "id": 484342, - "ord": 1, - "read": 0, - "pay_mode": 0, - "is_locked": false, - "pay_gold": 0, - "size": 81495763, - "short_title": "1", - "is_in_free": false, - "title": "第1话", - "cover": "http://i0.hdslb.com/bfs/manga-static/94dcf91d49253ab62b601a72772a00fddb5d0c32.jpg", - "pub_time": "2020-10-21 00:00:00", - "comments": 407, - "unlock_expire_at": "0000-00-00 00:00:00", - "unlock_type": 0, - "allow_wait_free": false, - "progress": "", - "like_count": 1283, - "chapter_id": 0, - "type": 0, - "extra": 0 - } - ], - "release_time": "2020.10.21", - "is_limit": 0, - "read_epid": 0, - "last_read_time": "", - "is_download": 1, - "read_short_title": "", - "styles2": [ - { - "id": 1081, - "name": "悬疑灵异" - } - ], - "renewal_time": "", - "last_short_title": "后篇(4)", - "discount_type": 0, - "discount": 0, - "discount_end": "0001-01-01 00:00:00", - "no_reward": false, - "batch_discount_type": 0, - "ep_discount_type": 0, - "has_fav_activity": false, - "fav_free_amount": 0, - "allow_wait_free": false, - "wait_hour": 0, - "wait_free_at": "0000-00-00 00:00:00", - "no_danmaku": 0, - "auto_pay_status": 0, - "no_month_ticket": false, - "immersive": false, - "no_discount": false, - "show_type": 0, - "pay_mode": 1, - "chapters": [], - "classic_lines": "【此漫画的翻译由版权方提供】青梅竹马的潮死了——。听闻这个悲报,慎平回到了阔别已久的故乡和歌山市·日都岛与家人再会并出席葬礼。但是岛上貌似陡生异变,充斥着不寻常的气息……?\n夏日孤岛上的悬疑剧!!\n\n", - "pay_for_new": 0, - "fav_comic_info": { - "has_fav_activity": false, - "fav_free_amount": 0, - "fav_coupon_type": 0 - }, - "serial_status": 0, - "series_info": { - "id": 0, - "comics": [] - }, - "album_count": 0, - "wiki_id": 131075, - "disable_coupon_amount": 2, - "japan_comic": true, - "interact_value": "57514", - "temporary_finish_time": "", - "video": null, - "introduction": "最聪明的男主打最聪明的反派!", - "comment_status": 1, - "no_screenshot": true, - "type": 0, - "vomic_cvs": [], - "no_rank": true, - "presale_eps": [], - "presale_text": "", - "presale_discount": 0, - "no_leaderboard": true - } -} -``` - -
diff --git a/manga/Download.md b/manga/Download.md deleted file mode 100644 index 07b0a97..0000000 --- a/manga/Download.md +++ /dev/null @@ -1,256 +0,0 @@ -# 获取当前话全部图片地址 - -> https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录凭证 | 必要 | 使用APP鉴权方式时必填 | -| appkey | str | cc8617fd6961e070 | 非必要 | | -| mobi_app | str | android_comic | 非必要 | | -| version | str | 4.21.0 | 非必要 | | -| build | str | 36421000 | 非必要 | | -| channel | str | bilicomic | 非必要 | | -| platform | str | android | 非必要 | | -| device | str | android | 非必要 | | -| buvid | str | XY118701XXXXXXXXX104911DXXXXXCAEXXXXE | 非必要 | 长度为37 | -| machine | str | | 非必要 | 手机品牌+型号 | -| is_teenager | num | 0 | 非必要 | | -| no_recommend | num | 0 | 非必要 | | -| ts | num | 秒级时间戳 | 非必要 | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | -| epId(ep_id) | num | 当前话的id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | | -| data | obj | | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| path | str | .index 文件路径 | 解密详见[此处](./unlock_index_data.md) | -| images | array | 本话图片信息 | | -| last_modified | str | 本话信息最后修改时间 | | -| host | str | `https://manga.hdslb.com` | | -| video | obj | | | - -`images` 数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| path | str | 图片的路径 | 不包含host | -| x | num | 图片宽度 | 单位:像素px | -| y | num | 图片高度 | 单位:像素px | -| video_path | str | | | -| video_size | str | | | - -`video` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| svid | str | | | -| filename | str | | | -| route | str | | | -| resource | array | | | -| raw_width | str | | | -| raw_height | str | | | -| raw_rotate | str | | | -| img_urls | array | | | -| bin_url | str | | | -| img_x_len | num | | | -| img_x_size | num | | | -| img_y_len | num | | | -| img_y_size | num | | | - - -**示例:** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex' \ --H 'Cookie: SESSDATA=xxx;' \ --H 'Content-Type: application/json' \ ---data-raw '{ - "ep_id": 321912 -}' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "", - "data": { - "path": "/bfs/manga/26564/321912/data.index?token=80eab62fef85c1c134a6399f817a938f&ts=63404145", - "images": [ - { - "path": "/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg", - "x": 1600, - "y": 2268, - "video_path": "", - "video_size": "0" - }, - { - "path": "/bfs/manga/bf1c48540b68f473b429317d8f6fa8cdb6eed3a5.jpg", - "x": 1600, - "y": 2268, - "video_path": "", - "video_size": "0" - }, - { - "path": "/bfs/manga/a46cfe90cfb49c67a4dbfc0002e5bc3d87d02963.jpg", - "x": 1600, - "y": 2268, - "video_path": "", - "video_size": "0" - } - ], - "last_modified": "2019-05-13 21:15:53", - "host": "https://manga.hdslb.com", - "video": { - "svid": "", - "filename": "", - "route": "", - "resource": [], - "raw_width": "0", - "raw_height": "0", - "raw_rotate": "0", - "img_urls": [], - "bin_url": "", - "img_x_len": 10, - "img_x_size": 160, - "img_y_len": 10, - "img_y_size": 90 - } - } -} -``` - -
- -# 获取某一图片的token - -> https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ------------------------------------- | ------ | --------------------- | -| access_key | str | APP登录凭证 | 必要 | 使用APP鉴权方式时必填 | -| appkey | str | cc8617fd6961e070 | 非必要 | | -| mobi_app | str | android_comic | 非必要 | | -| version | str | 4.21.0 | 非必要 | | -| build | str | 36421000 | 非必要 | | -| channel | str | bilicomic | 非必要 | | -| platform | str | android | 非必要 | | -| device | str | android | 非必要 | | -| buvid | str | XY118701XXXXXXXXX104911DXXXXXCAEXXXXE | 非必要 | 长度为37 | -| machine | str | samsung+SM-G9730 | 非必要 | 手机品牌+型号 | -| is_teenager | num | 0 | 非必要 | | -| no_recommend | num | 0 | 非必要 | | -| ts | num | 秒级时间戳 | 非必要 | | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------- | ------ | ------------------------------------------------------------ | -| urls | str | 请求token的图片地址 | 必要 | `[\"https://i0.hdslb.com{path}\"]`
{path}代表图片的相对网站路径,支持jpg和webp | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | | -| data | array | | | - -`data` 数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------------- | ------------------------------------ | -| url | str | 图片下载的地址 | 此时网址开头 https://manga.hdslb.com | -| token | str | 图片下载需要的token | | - -**示例:** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken' \ --H 'Cookie: SESSDATA=xxx;' \ --H 'Content-Type: application/json' \ ---data-raw '{ - "urls": "[\"https://i0.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg\"]" -}' -``` - -
-查看响应示例: - - - -```json -{ - "code": 0, - "msg": "", - "data": [ - { - "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg", - "token": "36931815abb35857627a22c347dc1c86&ts=634045c2" - } - ] -} -``` - -
- -# 下载图片 - -*请求方式:GET* - -在上一步获取token的基础上,构建如下的url - -例如获取到此token - -``` -{ - "code": 0, - "msg": "", - "data": [ - { - "url": "https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg", - "token": "36931815abb35857627a22c347dc1c86&ts=634045c2" - } - ] -} -``` - -则访问以下网址即可,注意需要添加`?token=`。此网址有效期较短 - -``` -https://manga.hdslb.com/bfs/manga/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg?token=36931815abb35857627a22c347dc1c86&ts=634045c2 -``` - -备注:若访问 `https://i0(或i1).hdslb.com/bfs/manga(或new_dyn或archive)/11e404e602fa9f709bfb89d692ac56d2e17f974d.jpg` 均无法获取 diff --git a/manga/Season.md b/manga/Season.md deleted file mode 100644 index 225144c..0000000 --- a/manga/Season.md +++ /dev/null @@ -1,439 +0,0 @@ -# 漫画赛季 - -- [漫画赛季](#漫画赛季) - - [获取赛季信息](#获取赛季信息) - - [赛季奖励领取](#赛季奖励领取) - -_漫画赛季仅在 app 端可见,但可以使用 Cookie 鉴权_ - -## 获取赛季信息 - -> https://manga.bilibili.com/twirp/user.v1.Season/GetSeasonInfo - -_请求方式:POST_ - -接口不鉴权可查看基本信息,鉴权后可查看赛季个人信息和赛季规则。 - -认证方式:Cookie(SESSDATA)/ APP - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| code | num | 返回值 | | -| msg | str | 错误信息 | | -| data | obj | 信息本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ----- | ------------------ | -------------------------- | -| current_time | str | 当前时间字符串 | ISO 8601 | -| start_time | str | 赛季开始 | ISO 8601 | -| end_time | str | 赛季结束 | ISO 8601 | -| remain_amount | num | 拥有积分 | 未登录为 `0` | -| season_id | str | 第几个赛季 | | -| tasks | array | 待领取奖励的任务 | 未登录/没有可领取时为 `[]` | -| welfare | array | 赛季奖励 | | -| next | obj | 未知 | 未登录为 `null` | -| cover | str | 版头图片 | | -| today_tasks | array | 今日的任务完成情况 | | -| text | obj | 赛季相关文案 | 未登录为 `null` | -| season_clock_in | obj | | | -| announcement | obj | 未知 | 未登录为 `null` | -| lottery | obj | | | -| mission_point_rate | str | | | -| season_title | str | 赛季标题 | | -| point_rate | obj | | | -| rank | obj | | | - -`data` 对象的 `rank`: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ----- | ---- | -| is_visible | bool | false | | - -`data` 对象的 `tasks`: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ---------- | ----------------------- | -| title | str | 任务描述 | | -| id | str | | | -| status | num | 任务状态 | 应该都是`1`:待领取奖励 | -| type | num | | 与 today_tasks 的一致 | -| amount | num | 可获取积分 | | -| ctime | str | 完成时间 | ISO 8601 | - -`data` 对象的 `next`: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---- | ---- | -| title | str | 空 | | -| amount | num | 0 | | -| gap_time | num | 0 | | -| current_time | num | 0 | | - -`data` 对象的 `text`: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------ | ---- | -| notice | str | 赛季公告 | | -| clonckInRule | str | 赛季签到规则 | | - -`data` 对象的 `announcement`: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ----- | ---- | -| title | str | 空 | | -| jump_url | str | 空 | | -| enable | bool | false | | - -`data` 对象的 `point_rate`: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ---- | ---- | -| sign_in | num | 0 | | -| game | num | 0 | | -| daily_mission | num | 0 | | -| week_mission | num | 0 | | - -`data` 对象的 `lottery`: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------------- | ---- | ------------ | ---- | -| lottery_act_id | str | '0' | | -| enable_lottery | bool | 是否开启抽奖 | | -| lottery_id | str | '0' | | -| advance_lottery_act_id | str | '0' | | -| advance_pool_id | str | '0' | | - -`data` 对象的 `season_clock_in`: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ---- | ---------------- | ---- | -| is_super_luck | bool | | | -| draw_luck_time | str | | | -| prize_type | num | | | -| prize_title | str | | | -| add_up_sign | num | 赛季连续签到天数 | | -| title | str | 签到标题 | | -| sign_old_amount | num | | | -| preluck_amount | num | | | -| continuous_days | num | 连续签到天数 | | -| address_id | str | | | -| has_super_prize | bool | | | -| subtitle | str | 签到子标题 | | -| prize_image | str | | | -| prize_target_days | num | | | -| prize_amount | num | | | -| tomorrow_amount | num | 明日签到积分 | | -| entrance_tag | str | | | - -`data` 对象的 `today_tasks`: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---------- | ------------ | ------------------------------------------- | -| type | num | | | -| title | str | 任务标题 | 可能为空字符串 | -| amount | num | 可获得积分 | | -| status | num | 完成状态 | 0:未完成
1:待领取奖励
2:已完成 | -| duration | num | 耗时(分) | 直接完成的为 0 | -| comics | comic 数组 | 任务指定漫画 | 仅`type=22`时有内容,所有账号是一致的 | -| page_url | str | 空 | | -| progress | num | 已完成进度 | | -| sub_id | num | | `type` 一致时有效 | -| share_type | num | `0` | | - -`today_tasks`对象的 `comics`: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | -------- | -------- | ---- | -| comic_id | num | 漫画 id | | -| title | str | 漫画名称 | | -| vertical_cover | str | 漫画封面 | | -| styles | str 数组 | 漫画类型 | | - -`data` 对象的 `welfare`: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------ | --------------------------------------------------------- | -| type | num | 奖励类型 | 200-限免卡
202-漫读券
203-优惠券
205-最终宝箱 | -| success | num | 兑换状态 | 0-未兑换
2-已兑换 | -| exchange_amount | num | 积分消耗 | | -| boss_welfare | bool | 最终奖励 | | -| boss_remain | num | 最终奖励剩余 | | -| rank | num | 顺序 | | -| title | str | 空 | | -| url | str | 空 | | -| kind_address_id | str | '0' | | - -**示例:** - -```bash -curl -X POST https://manga.bilibili.com/twirp/user.v1.Season/GetSeasonInfo -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "data": { - "current_time": "2022-11-30T15:12:00+08:00", - "start_time": "2022-11-14T00:00:00+08:00", - "end_time": "2022-12-11T23:59:00+08:00", - "remain_amount": 0, - "season_id": "35", - "tasks": [], - "welfare": [ - { - "type": 200, - "success": 0, - "exchange_amount": 100, - "boss_welfare": false, - "boss_remain": 0, - "rank": 1, - "title": "", - "url": "", - "kind_address_id": "0" - }, - // 中间的省略 - { - "type": 205, - "success": 0, - "exchange_amount": 0, - "boss_welfare": true, - "boss_remain": 0, - "rank": 21, - "title": "", - "url": "", - "kind_address_id": "0" - } - ], - "next": null, - "cover": "https://i0.hdslb.com/bfs/manga-static/b81fcd291cff74965b71d67e7df261de5790c2cd.png", - "today_tasks": [ - { - "type": 18, - "title": "", - "amount": 20, - "status": 0, - "duration": 30, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 1, - "share_type": 0 - }, - { - "type": 20, - "title": "", - "amount": 20, - "status": 0, - "duration": 3, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 1, - "share_type": 0 - }, - { - "type": 22, - "title": "", - "amount": 50, - "status": 0, - "duration": 15, - "comics": [ - { - "comic_id": 32190, - "title": "我的成就有点多", - "vertical_cover": "https://i0.hdslb.com/bfs/manga-static/efc403e323656fad24335aef007af5f318879597.png", - "styles": ["都市"] - }, - { - "comic_id": 30538, - "title": "我知道你的秘密", - "vertical_cover": "https://i0.hdslb.com/bfs/manga-static/607f2c13afcf82ebba98f18213033d93bba7d58a.jpg", - "styles": ["悬疑"] - }, - { - "comic_id": 25874, - "title": "桃花宝典", - "vertical_cover": "http://i0.hdslb.com/bfs/manga-static/bb1d33004af7dfbf197572cb9ef1c5fdd19e17a8.jpg", - "styles": ["都市"] - } - ], - "page_url": "", - "progress": 0, - "sub_id": 1, - "share_type": 0 - }, - { - "type": 17, - "title": "阅读3分钟", - "amount": 10, - "status": 0, - "duration": 3, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 1, - "share_type": 0 - }, - { - "type": 17, - "title": "阅读5分钟", - "amount": 10, - "status": 0, - "duration": 5, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 2, - "share_type": 0 - }, - { - "type": 17, - "title": "阅读10分钟", - "amount": 20, - "status": 0, - "duration": 10, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 3, - "share_type": 0 - }, - { - "type": 17, - "title": "阅读20分钟", - "amount": 40, - "status": 0, - "duration": 20, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 4, - "share_type": 0 - }, - { - "type": 17, - "title": "阅读30分钟", - "amount": 60, - "status": 0, - "duration": 30, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 5, - "share_type": 0 - }, - { - "type": 19, - "title": "每日首次玩猜拳", - "amount": 5, - "status": 0, - "duration": 1, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 1, - "share_type": 0 - }, - { - "type": 1, - "title": "打开系统通知", - "amount": 5, - "status": 0, - "duration": 0, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 0, - "share_type": 0 - }, - { - "type": 2, - "title": "设置个人偏好", - "amount": 5, - "status": 0, - "duration": 0, - "comics": [], - "page_url": "", - "progress": 0, - "sub_id": 0, - "share_type": 0 - } - ], - "text": null, - "season_clock_in": { - "is_super_luck": false, - "draw_luck_time": "", - "prize_type": 0, - "prize_title": "", - "add_up_sign": 0, - "title": "", - "sign_old_amount": 0, - "preluck_amount": 0, - "continuous_days": 0, - "address_id": "0", - "has_super_prize": false, - "subtitle": "", - "prize_image": "", - "prize_target_days": 0, - "prize_amount": 0, - "tomorrow_amount": 0, - "entrance_tag": "" - }, - "announcement": null, - "lottery": { - "lottery_act_id": "0", - "enable_lottery": true, - "lottery_id": "0", - "advance_lottery_act_id": "0", - "advance_pool_id": "0" - }, - "mission_point_rate": 0, - "season_title": "初冬赛季", - "point_rate": { "sign_in": 0, "game": 0, "daily_mission": 0, "week_mission": 0 }, - "rank": { "is_visible": false } - } -} -``` - -
- -## 赛季奖励领取 - -> https://manga.bilibili.com/twirp/user.v1.Season/TakeSeasonGifts - -_请求方式:POST_ - -认证方式:Cookie(SESSDATA)/ APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ------- | ------ | --------------- | -| season_id | num | 赛季 id | 必要 | 必须为本赛季 id | - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| code | num | 返回值 | | -| msg | str | 错误信息 | | - -`code` - `msg` 对照表: - -| code | msg | 备注 | -| ---- | ------------------------------------ | ---------------------------- | -| 0 | | 领取成功 | -| 2 | 当前没有正在进行的赛季,无法兑换奖励 | season_id 字段不正确 | -| 7 | 任务已领取或者未完成 | 没有已经完成的 `today_tasks` | diff --git a/manga/User.md b/manga/User.md deleted file mode 100644 index e8d3e4a..0000000 --- a/manga/User.md +++ /dev/null @@ -1,730 +0,0 @@ -# 获取拥有的漫读券列表 - -> https://manga.bilibili.com/twirp/user.v1.User/GetCoupons - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| access_key | str | APP登录凭证 | 必要 | 使用APP鉴权方式时必填 | -| appkey | str | cc8617fd6961e070 | 非必要 | | -| mobi_app | str | android_comic | 非必要 | | -| version | str | 4.13.0 | 非必要 | | -| build | str | 36413002 | 非必要 | | -| channel | str | bilicomic | 非必要 | | -| platform | str | android | 非必要 | | -| device | str | android | 非必要 | | -| buvid | str | | 非必要 | | -| machine | str | samsung+SM-G9730 | 非必要 | | -| is_teenager | num | 0 | 非必要 | | -| no_recommend | num | 0 | 非必要 | | -| ts | num | 秒级时间戳 | 非必要 | | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | -| pageNum | num | 页数 | 必要 | | -| pageSize | num | 分页大小 | 必要 | 默认20,取值范围[1,100] | -| notExpired | bool | true | 非必要 | | -| tabType | num | 1 | 非必要 | | -| type | num | 0 | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | | -| data | obj | | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| total_remain_amount | num | | | -| user_coupons | array | | | -| coupon_info | obj | | | - -`user_coupons` 数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| ID | num | 漫读券id | | -| remain_amount | num | 漫读券剩余数 | | -| expire_time | num | 过期时间 | | -| reason | num | 获取方式 | | -| type | num | 类型 | | -| ctime | num | 获取时间 | | -| total_amount | num | 漫读券总数 | | -| limits | array | (?) | | -| type_num | num | 7:福利券 | | -| will_expire | num | 是否即将过期?
0:否
1:是 | | -| discount | num | 0 | | -| discount_limit | num | 0 | | -| is_from_card | num | 0 | | -| valid_time | str | 0001-01-01 | | -| discount_base | num | 0 | | - -`coupon_info` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| new_coupon_num | num | | | -| coupon_will_expire | num | | | -| rent_will_expire | num | | | -| new_rent_num | num | | | -| discount_will_expire | num | | | -| new_discount_num | num | | | -| month_ticket_will_expire | num | | | -| new_month_ticket_num | num | | | -| silver_will_expire | num | | | -| new_silver_num | num | | | -| remain_item | num | | | -| remain_discount | num | | | -| remain_coupon | num | 拥有的漫读券数量 | | -| remain_silver | num | 拥有的通用券数量 | | -| remain_shop_coupon | num | 拥有的商城优惠券数量 | | -| new_shop_num | num | | | -| shop_will_expire | num | | | -| new_suit_id | num | | | -| remain_suit_coupon | num | | | -| new_suit_num | num | | | -| suit_will_expire | num | | | -| vip_priv_coupon | bool | | | - - -**示例:** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/user.v1.User/GetCoupons' \ --H 'Cookie: SESSDATA=xxx;' \ --H 'Content-Type: application/json' \ ---data-raw '{ - "notExpired": true, - "pageNum": 1, - "pageSize": 20, - "tabType": 1, - "type": 0 -}' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "", - "data": { - "total_remain_amount": 1, - "user_coupons": [ - { - "ID": 7473503, - "remain_amount": 1, - "expire_time": "2022-05-24 12:00:33", - "reason": "积分兑换", - "type": "福利券", - "ctime": "2022-05-17 12:00:33", - "total_amount": 1, - "limits": [], - "type_num": 7, - "will_expire": 0, - "discount": 0, - "discount_limit": 0, - "is_from_card": 0, - "valid_time": "0001-01-01", - "discount_base": 0 - } - ], - "coupon_info": { - "new_coupon_num": 0, - "coupon_will_expire": 0, - "rent_will_expire": 0, - "new_rent_num": 0, - "discount_will_expire": 0, - "new_discount_num": 0, - "month_ticket_will_expire": 0, - "new_month_ticket_num": 0, - "silver_will_expire": 0, - "new_silver_num": 0, - "remain_item": 0, - "remain_discount": 0, - "remain_coupon": 1, - "remain_silver": 8, - "remain_shop_coupon": 1, - "new_shop_num": 0, - "shop_will_expire": 0, - "new_suit_id": 60007, - "remain_suit_coupon": 0, - "new_suit_num": 0, - "suit_will_expire": 0, - "vip_priv_coupon": false - } - } -} -``` - -
- - - -# 获取已购漫画 - -> https://manga.bilibili.com/twirp/user.v1.User/GetAutoBuyComics - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ---- | ------ | ---- | -| device | str | 设备 | 非必要 | | -| platform | str | 平台 | 非必要 | | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ------------------------------------------------- | -| page_num | num | 页数 | 必要 | | -| page_size | num | 分页大小 | 必要 | 默认15 | - - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---------- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | | -| data | obj(array) | | | - -`data`array中的对象 - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ---- | ---------------- | ---- | -| id | num | 内部id | | -| comic_id | str | 漫画id | | -| comic_title | str | 漫画标题 | | -| hcover | str | 横版头图 | | -| scover | str | 方形头图 | | -| vcover | str | 竖版封面图 | | -| bought_ep_count | num | 已购章节数 | | -| gold_status | num | | | -| coupon_status | num | | | -| comic_status | num | 漫画状态 | | -| last_ord | num | 最后一话 | | -| ctime | str | 获取时间 | | -| last_short_title | str | 最后一话的短标题 | | -| bug_type | num | 购买类型 | | -| ep_for_chapters | num | | | -| orders | obj | 自动扣费顺序 | | -| enable_auto_pay | bool | 是否开启自动付费 | | -| type | num | | | - - - -**示例** - -```bash -curl -L -X POST 'https://manga.bilibili.com/twirp/user.v1.User/GetAutoBuyComics' \ --H "Cookie: xxxxx" \ --H 'Content-Type: application/json;charset=UTF-8' \ --H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36' \ --d '{"page_num": 1,"page_size": 15}' -``` - - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "", - "data": [ - { - "id": 20276887, - "comic_id": 26554, - "comic_title": "擅长捉弄的(原)高木同学", - "hcover": "http://i0.hdslb.com/bfs/manga-static/443b4a49be1e92cd204af1472e2a7f41c1df7336.png", - "scover": "http://i0.hdslb.com/bfs/manga-static/e29eb39aed0971851efe5998d3b9c156ba52bb4e.jpg", - "vcover": "http://i0.hdslb.com/bfs/manga-static/9536b3d6c6eaef5992986d6b06d35188c20f4366.jpg", - "bought_ep_count": 13, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 235, - "ctime": "2022-01-26 21:39:33", - "last_short_title": "235", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 15129353, - "comic_id": 29726, - "comic_title": "NEW GAME!", - "hcover": "https://i0.hdslb.com/bfs/manga-static/586df1c03978ef01eac9e6a670f26395f6495ead.jpg", - "scover": "https://i0.hdslb.com/bfs/manga-static/7110c8751fef26b082b5452bd515736a78bf0670.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/d3aa1477dcc9720f9bcee19c775849baad6b4e66.jpg", - "bought_ep_count": 4, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 180, - "ctime": "2021-06-21 16:29:27", - "last_short_title": "180", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 13525712, - "comic_id": 28080, - "comic_title": "终将成为你", - "hcover": "https://i0.hdslb.com/bfs/manga-static/bed69097d5fdc68bff87fce1e168b810448ee145.jpg", - "scover": "https://i0.hdslb.com/bfs/manga-static/855e851b58c805b05b347fddb80a46dcb260afac.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/10e8243b502bd19947cd49a6ac2ea0a9b8c5daa3.jpg", - "bought_ep_count": 5, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 45, - "ctime": "2021-04-09 08:26:41", - "last_short_title": "第45话", - "buy_type": 9, - "ep_for_chapters": 0, - "orders": [], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 13469083, - "comic_id": 28198, - "comic_title": "米诺斯的牛肉100%", - "hcover": "http://i0.hdslb.com/bfs/manga-static/75931d991ddd40bc49c655ff3fca770d45eac9aa.jpg", - "scover": "http://i0.hdslb.com/bfs/manga-static/ee37104f5d97bb486e69d660d9a93242a1c2817a.jpg", - "vcover": "http://i0.hdslb.com/bfs/manga-static/be5400d37c1428ecc98a8e2d1772175991a262ed.jpg", - "bought_ep_count": 1, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 6, - "ctime": "2021-04-06 12:21:20", - "last_short_title": "6", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 13436048, - "comic_id": 27545, - "comic_title": "宝石之国", - "hcover": "http://i0.hdslb.com/bfs/manga-static/94637fff52eca04a8f32e19ed0c2f676b9bee96e.png", - "scover": "http://i0.hdslb.com/bfs/manga-static/e538ce332a639809aea70c8e30a19645e9b2ae3e.jpg", - "vcover": "http://i0.hdslb.com/bfs/manga-static/91e03718b03b7d3a2dca53c461b4b84953ce8cb0.jpg", - "bought_ep_count": 11, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 96, - "ctime": "2021-04-05 00:09:17", - "last_short_title": "96", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 13237163, - "comic_id": 27877, - "comic_title": "极主夫道", - "hcover": "https://i0.hdslb.com/bfs/manga-static/5a8b7bd678e2ae135415af31493417ae77bc83dd.png", - "scover": "http://i0.hdslb.com/bfs/manga-static/aa36b8cff89e42c1820e43c483d483ed3eb8d938.png", - "vcover": "http://i0.hdslb.com/bfs/manga-static/96a6b07bcea58955efed4df876bc8f1b5df9d5cc.jpg", - "bought_ep_count": 6, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 96, - "ctime": "2021-03-27 12:28:27", - "last_short_title": "96", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 12913068, - "comic_id": 25519, - "comic_title": "四月是你的谎言", - "hcover": "http://i0.hdslb.com/bfs/manga-static/33cda8ed8e6c89691d5397dc47f8c7c7945a54c4.png", - "scover": "http://i0.hdslb.com/bfs/manga-static/a6ed17ddac9bb568cefeb4eda8f8f3298db6c8cd.jpg", - "vcover": "http://i0.hdslb.com/bfs/manga-static/6d82d75a9a2817a18e16e2b82f76312d0fd02d06.jpg", - "bought_ep_count": 36, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 44, - "ctime": "2021-03-11 23:58:50", - "last_short_title": "44", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 12793711, - "comic_id": 28537, - "comic_title": "前男友成为了那样的男子", - "hcover": "https://i0.hdslb.com/bfs/manga-static/33440f7675a424dcce35459e2392e23e9d345531.jpg", - "scover": "http://i0.hdslb.com/bfs/manga-static/3de961215ad2a96ccf5dbb45d85db88934b545cb.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/77feff2a5f1aab93060e8ce5105e5616cb7313a7.jpg", - "bought_ep_count": 3, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 54, - "ctime": "2021-03-06 19:20:03", - "last_short_title": "44", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 12751111, - "comic_id": 26009, - "comic_title": "辉夜大小姐想让我告白 ~天才们的恋爱头脑战~", - "hcover": "https://i0.hdslb.com/bfs/manga-static/7fe349fd5a3d9522546e1582ad03604e82b1ff41.png", - "scover": "http://i0.hdslb.com/bfs/manga-static/b0ac1e3379e940c47b31209edf016e32e8bcee37.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/6188cad7ec7ac2b0555c0a815f9d2afbe7c0c5cb.jpg", - "bought_ep_count": 2, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 259, - "ctime": "2021-03-05 00:16:13", - "last_short_title": "269", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 12479079, - "comic_id": 27867, - "comic_title": "邪神与厨二病少女", - "hcover": "https://i0.hdslb.com/bfs/manga-static/96594b34528640f51ef5062648b55c871f4d4b1b.jpg", - "scover": "https://i0.hdslb.com/bfs/manga-static/54a7f8d35024ef46dc270dc758d882bc98c4a1c5.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/1b07c3be74d65cbb707934de190af10ca81588f3.jpg", - "bought_ep_count": 194, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 216.5, - "ctime": "2021-02-23 00:18:06", - "last_short_title": "216.5", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 11749927, - "comic_id": 29119, - "comic_title": "足艺少女小村同学", - "hcover": "https://i0.hdslb.com/bfs/manga-static/30b7917fd7d8b0afe6d913f09bab31e5eafae8b6.jpg", - "scover": "https://i0.hdslb.com/bfs/manga-static/f4ec445bc209ad473cdf9127528c09e271535617.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/8f83793c06dc0f59cab3a6acf4b978dc3c0a01f9.jpg", - "bought_ep_count": 13, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 58, - "ctime": "2021-01-31 11:04:31", - "last_short_title": "最终话", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 11605399, - "comic_id": 29053, - "comic_title": "如果是理想中的女儿,就算是世界最强也能受到宠爱吗?", - "hcover": "https://i0.hdslb.com/bfs/manga-static/5a7886e2b94515ea75a3ea34d9c77db3f2487b59.jpg", - "scover": "https://i0.hdslb.com/bfs/manga-static/88f6d08fed2998aba96cedbfdffba555bef4d1c1.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/517a155372e7de966cca2f5f42edabd31a90b169.jpg", - "bought_ep_count": 5, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 28, - "ctime": "2021-01-25 19:40:15", - "last_short_title": "28", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 11386175, - "comic_id": 28656, - "comic_title": "就算这样,“步”还是靠了过来", - "hcover": "http://i0.hdslb.com/bfs/manga-static/c95456b2d00f84293bda62b12539d19172b45db1.jpg", - "scover": "http://i0.hdslb.com/bfs/manga-static/2601c1474cd214d28797381e70b2c19ac7d67869.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/3a556ed655ddf84c7930b3ce180fbdbf8f1d8112.jpg", - "bought_ep_count": 2, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 160, - "ctime": "2021-01-17 10:48:29", - "last_short_title": "160", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 11356706, - "comic_id": 26731, - "comic_title": "在魔王城说晚安", - "hcover": "https://i0.hdslb.com/bfs/manga-static/061f63826f1aa24a5b9346f79b915999004b13da.jpg", - "scover": "http://i0.hdslb.com/bfs/manga-static/94ae037dae4cc61d580c5c3c42702ccf10d977dc.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/2958043a10024ddebfafc4fd47d3566043689300.jpg", - "bought_ep_count": 148, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 292, - "ctime": "2021-01-16 11:25:47", - "last_short_title": "292", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - }, - { - "id": 11079049, - "comic_id": 27355, - "comic_title": "堀与宫村", - "hcover": "https://i0.hdslb.com/bfs/manga-static/b51b905707664415dab91cf81fb0373f970b54b5.jpg", - "scover": "https://i0.hdslb.com/bfs/manga-static/6ac604dfd0ad6c486a520519983212d74c340f28.jpg", - "vcover": "https://i0.hdslb.com/bfs/manga-static/c29ba3ce67613539666582d31d42b40fb48cc3c7.jpg", - "bought_ep_count": 119, - "gold_status": 2, - "coupon_status": 2, - "comic_status": 0, - "last_ord": 126, - "ctime": "2021-01-05 12:52:59", - "last_short_title": "page.122", - "buy_type": 0, - "ep_for_chapters": 0, - "orders": [ - { - "id": 2, - "title": "漫读券" - }, - { - "id": 3, - "title": "通用券" - }, - { - "id": 1, - "title": "漫币" - } - ], - "enable_auto_pay": false, - "type": 0 - } - ] -} -``` - -
\ No newline at end of file diff --git a/manga/index_file.md b/manga/index_file.md deleted file mode 100644 index e6f9c39..0000000 --- a/manga/index_file.md +++ /dev/null @@ -1,277 +0,0 @@ -# data.index - -- [data.index文件解析](#data.index文件解析) - - [获取data.index](#获取data.index) - - [文件解密算法](#文件解密算法) - - [进行解密操作](#进行解密操作) -- [data.index内容](#data.index内容) - ---- - -## data.index文件解析 - -本解密及数据解析例程以《在魔王城说晚安 第 1 话 不眠之城的公主》为例 - -本话链接:https://manga.bilibili.com/mc26731/329893 (mcid=`26731`, epid=`329893`) - -使用 Python 语言为例 - -### 获取data.index - -直接使用 GET 方法请求该话对应的 data.index 文件地址,就会得到一个二进制文件 - -```bash -curl -s 'https://manga.hdslb.com/bfs/manga/26731/329893/data.index?token=4b93ced19dc5ade671064804232ef4f5&ts=634e1943' | hexdump -C -``` - -data.index 文件内容的 HEX 如下 - -首部有 9 Byte 作为 File Magic 内容是 ASCII 编码的 `BILICOMIC` - -``` -00000000 42 49 4c 49 43 4f 4d 49 43 f5 43 06 04 7f 68 08 |BILICOMIC.C...h.| -00000010 00 ad 08 05 00 6b 68 00 00 a5 08 05 00 6b 68 00 |.....kh......kh.| -00000020 00 a5 08 0c 00 6b 68 69 6e c1 6d 7d 2e 0f 09 74 |.....khin.m}...t| -00000030 ec 33 c3 8f 5c 2c 64 86 df 40 a4 82 58 9c 42 f5 |.3..\,d..@..X.B.| -00000040 ab 21 51 4d aa f9 f1 e0 84 84 9b 40 12 58 87 1e |.!QM.......@.X..| -00000050 ba 28 29 7d ce 89 04 03 d9 91 8d fd 7e 31 1d be |.()}........~1..| -00000060 ba d8 35 ef cb a0 83 db 71 5e f1 ee f1 90 19 43 |..5.....q^.....C| -00000070 03 dd 32 f7 b8 7a b7 07 7f b9 3f 7d 3a d5 54 7e |..2..z....?}:.T~| -00000080 5f fa e2 bd c1 90 bb 0f 9c 7d 34 e4 f0 49 2f 17 |_........}4..I/.| -00000090 39 1b c0 cc 45 25 47 72 76 34 13 12 b9 12 f9 f3 |9...E%Grv4......| -000000a0 8b b9 56 13 72 be 60 5e 55 27 5f 98 e0 3e 41 78 |..V.r.`^U'_..>Ax| -000000b0 d5 af 56 d0 82 3c d5 e0 55 94 70 d0 0c 16 5f 33 |..V..<..U.p..._3| -000000c0 c5 bb 14 d7 e9 e5 4a 7c 7f db 04 ea 7b 9b 90 94 |......J|....{...| -000000d0 fd 53 e1 d2 f8 86 1b 7c ea 97 dd 0b 22 33 75 39 |.S.....|...."3u9| -000000e0 24 76 39 38 6d 58 a4 ed b4 14 8f 71 49 95 9c cb |$v98mX.....qI...| -000000f0 eb 42 eb ec df a2 22 ae 39 0c 3d 03 95 43 27 55 |.B....".9.=..C'U| -00000100 c1 c8 b2 37 2c 01 b0 f4 22 7c 51 1a 93 b5 ab 6d |...7,..."|Q....m| -00000110 72 95 0c 33 9a ed 2d d6 22 f0 08 b6 5c bb f6 b5 |r..3..-."...\...| -00000120 07 5f cf a1 3a 66 c8 30 41 29 31 dd 17 63 46 85 |._..:f.0A)1..cF.| -00000130 ea 53 20 a0 aa 89 65 91 78 37 ac 4b 06 e6 59 7a |.S ...e.x7.K..Yz| -00000140 c2 b7 10 56 cc a0 2e 85 94 09 01 89 83 43 82 a4 |...V.........C..| -00000150 db 60 91 89 15 83 aa 45 aa d6 5f fd 6a 64 f9 1c |.`.....E.._.jd..| -00000160 9d ef c3 6c 34 85 e7 49 8a a7 c3 bc 32 09 eb b8 |...l4..I....2...| -00000170 ef 70 ab d6 6a d2 7f f6 96 b1 9a 75 eb f8 47 34 |.p..j......u..G4| -00000180 db 1d 99 78 57 58 04 4e e0 c4 a4 58 d8 81 f5 02 |...xWX.N...X....| -00000190 3c 42 7e 1c 27 98 3c 70 df 04 13 33 fa ff 21 3b | -查看json内容: - -```json -{ - "clips": [ - {"r": 1600, "b": 2300, "t": 0, "l": 0, "pic": 0}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 1}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 2}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 3}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 4}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 5}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 6}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 7}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 8}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 9}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 10}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 11}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 12}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 13}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 14}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 15}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 16}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 17}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 18}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 19}, - {"r": 1600, "b": 2468, "t": 0, "l": 0, "pic": 20}, - {"r": 846, "b": 1200, "t": 0, "l": 0, "pic": 21} - ], - "pics": [ - "/bfs/manga/fc655fa220dfab74bb91b9b6e308e92e1f74fc4b.jpg", - "/bfs/manga/cb3c882f5a72c45385541e65dba6ac7689c24ebc.jpg", - "/bfs/manga/9f79683a30a1f165a6abcd2550066bd0f9bce719.jpg", - "/bfs/manga/592702a6411a8739d041d50cff9ac52ccc3e0ab1.jpg", - "/bfs/manga/52fb305a77f80d4078469c67ca4c4d8031722acc.jpg", - "/bfs/manga/d3bb31ca1943c2558eca9df9a44b7fb52d927f1e.jpg", - "/bfs/manga/2ac06b8dbaae0499edf7fb6cd99c1fe4b424a96f.jpg", - "/bfs/manga/98f63f139ecf30e3b037635fc1f59fb40388e947.jpg", - "/bfs/manga/55099ea5e0e198482ea6d216a5e41b02835701b7.jpg", - "/bfs/manga/ee60daaf9ca659bb0df7d45402c86c79a1f64739.jpg", - "/bfs/manga/8620f9742fddc97d4179f18fd2b9f1b1420138dd.jpg", - "/bfs/manga/0490a9d8bdb6312ac56baa24ed0595a2465d98dc.jpg", - "/bfs/manga/bc3234cb0ba2be2b724b1a640a418f1db7b2ac43.jpg", - "/bfs/manga/0d16c5e9779f187916e4b173e7a6447b14707ece.jpg", - "/bfs/manga/58f3985afc3f2cf57052725dfea47af5634ac1c8.jpg", - "/bfs/manga/de09b30d952566c2c1308f5da59a2ffb3b2deb5c.jpg", - "/bfs/manga/36ecc5565340605883cb000f513b49bfc91e0d3e.jpg", - "/bfs/manga/120f3174def02b3dd908ee69b427d094506b884d.jpg", - "/bfs/manga/fdbe3bd0d446c0129557bd19037785456e55f12c.jpg", - "/bfs/manga/813a1bb68c3f89616583c8662fa81984d6a907db.jpg", - "/bfs/manga/fd3a53f04831e577707e4c873e2fc205e71d5cde.jpg", - "/bfs/manga/50e1c513336e0685ca01723d64c712294e534ca0.jpg" - ], - "sizes": [ - {"cx": 1600, "cy": 2300}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 1600, "cy": 2468}, - {"cx": 846, "cy": 1200} - ] -} -``` - - - -## data.index内容 - -以下内容为解密后的 JSON 数据定义 - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ----- | -------- | ---- | -| clips | array | 尺寸信息 | | -| pics | array | 图片路径 | | -| sizes | array | 尺寸信息 | | - -根对象中的`clips`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 第 1 页信息 | | -| n | obj | 第 (n+1) 页信息 | | -| …… | obj | …… | …… | - -`clips`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------- | -| r | num | 图片宽度 | | -| b | num | 图片高度 | | -| t | num | (?) | | -| l | num | (?) | | -| pic | num | 图片页码序号 | 从 0 开始递增 | - -根对象中的`pics`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ------------------------------ | -| 0 | str | 第 1 图片路径 | 图片不能直接访问,需要二次鉴权 | -| n | str | 第 (n+1) 图片路径 | | -| …… | str | …… | …… | - -根对象中的`sizes`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 第 1 页信息 | | -| n | obj | 第 (n+1) 页信息 | | -| …… | obj | …… | …… | - -`clips`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| cx | num | 图片宽度 | | -| cy | num | 图片高度 | | diff --git a/manga/light_card.md b/manga/light_card.md deleted file mode 100644 index c4409c4..0000000 --- a/manga/light_card.md +++ /dev/null @@ -1,204 +0,0 @@ -# 获取轻享卡信息 - -> https://manga.bilibili.com/twirp/card.v1.Card/GetUserLightCard - -*请求方式:POST* - -是否需要登录:`是` - -认证方式:Cookie(SESSDATA)/ APP - -Content-Type:`application/x-www-form-urlencoded` - -**URL参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------------|-----|----------------|-----|-----------------| -| access_key | str | 登录`access_key` | | 与`SESSDATA`二选其一 | - -**json回复:** - -根对象: - -| 字段名 | 类型 | 内容 | 备注 | -|------|-----|------|------| -| code | num | 响应码 | 0:成功 | -| msg | str | | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段名 | 类型 | 内容 | 备注 | -|--------------------|-------|----------------|---------------------------------| -| state | num | 轻享卡开通状态 | 0:未开通
1:已开通 | -| show_state | num | | | -| expire_date | str | 轻享卡到期时间 | | -| receive_amount | num | 已领取数量 | | -| save_money | num | 已节省漫币 | | -| index | num | 默认选择签到周期 | | -| week | array | 一个领取周期内的领取状态信息 | | -| month_reward_state | num | 是否可选择全勤奖 | 0:不可领取
1:可领取
2:不可领取(灰色) | -| month_reward | num | | | -| cur_month_end | str | 全勤奖领取剩余时间 | | -| server_time | str | 当前服务器时间 | | - -`week`数组中的对象: - -| 字段名 | 类型 | 内容 | 备注 | -|-------------------|-----|-------------|------------------------------------------------| -| index | num | 第几领取周期 | 从`1`开始 | -| start_time | str | 本周期领取开始时间 | 1:待领取
2:已领取
3:明日可领
4:已失效
5:可领取 | -| end_time | str | 本周期领取结束时间 | `同上` | -| first | num | 本周期第1天的领取状态 | `同上` | -| second | num | 本周期第2天的领取状态 | `同上` | -| third | num | 本周期第3天的领取状态 | `同上` | -| fourth | num | 本周期第4天的领取状态 | `同上` | -| full_reward_state | num | 周期全勤奖领取状态 | 1:不可领取
2:可领取
3:已领取 | - -**示例:** - -`SESSDATA`方式: - -```shell -curl -L -X POST 'https://manga.bilibili.com/twirp/card.v1.Card/GetUserLightCard' \ --H 'Cookie: SESSDATA=xxx' -``` - -`access_key`方式: - -```shell -curl -L -X POST 'https://manga.bilibili.com/twirp/card.v1.Card/GetUserLightCard?access_key=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "data": { - "state": 1, - "show_state": 1, - "expire_date": "2023-03-09T23:59:59+08:00", - "receive_amount": 18, - "save_money": 890, - "index": 1, - "week": [ - { - "index": 1, - "start_time": "2023-02-10T00:00:00+08:00", - "end_time": "2023-02-16T23:59:59+08:00", - "first": 5, - "second": 1, - "third": 1, - "fourth": 1, - "full_reward_state": 1 - }, - { - "index": 2, - "start_time": "2023-02-17T00:00:00+08:00", - "end_time": "2023-02-23T23:59:59+08:00", - "first": 1, - "second": 1, - "third": 1, - "fourth": 1, - "full_reward_state": 1 - }, - { - "index": 3, - "start_time": "2023-02-24T00:00:00+08:00", - "end_time": "2023-03-02T23:59:59+08:00", - "first": 1, - "second": 1, - "third": 1, - "fourth": 1, - "full_reward_state": 1 - }, - { - "index": 4, - "start_time": "2023-03-03T00:00:00+08:00", - "end_time": "2023-03-09T23:59:59+08:00", - "first": 1, - "second": 1, - "third": 1, - "fourth": 1, - "full_reward_state": 1 - } - ], - "month_reward_state": 0, - "month_reward": 0, - "cur_month_end": "2023-03-10T00:00:00+08:00", - "server_time": "2023-02-10T10:59:43+08:00" - } -} -``` - -
- -# 领取轻享卡奖励 - -> https://manga.bilibili.com/twirp/card.v1.Card/GetLightCoupon - -*请求方式:POST* - -是否需要登录:`是` - -认证方式:Cookie(SESSDATA)/ APP - -Content-Type:`application/json` - -**URL参数:** - -| 参数名 | 类型 | 必填 | 内容 | 备注 | -|------------|-----|----|-----------------|----| -| access_key | str | | 与`SESSDATA`二选其一 | | - -**正文参数( application/json ):** - -| 参数名 | 类型 | 必填 | 内容 | 备注 | -|-----------|-----|----|-----|--------| -| weekIndex | num | √ | 第几周 | 从`1`开始 | -| type | num | √ | 第几天 | 从`1`开始 | - -**json回复:** - -根对象: - -| 字段名 | 类型 | 内容 | 备注 | -|------|-----|-----|----------------------------------------------------| -| code | num | 响应码 | 0:成功
3:今日已领取,请明日再来
3:还未满足领取条件
4:找不到数据~ | -| msg | str | | | -| data | obj | | | - -**示例:** - -`SESSDATA`方式: - -```shell -curl -L -X POST 'https://manga.bilibili.com/twirp/card.v1.Card/GetLightCoupon' \ --H 'content-type: application/json; charset=utf-8' \ --H 'Cookie: SESSDATA=xxx' \ ---data-raw '{"type":1,"weekIndex":1}' -``` - -`access_key`方式: - -```shell -curl -L -X POST 'https://manga.bilibili.com/twirp/card.v1.Card/GetLightCoupon?access_key=xxx' \ --H 'content-type: application/json; charset=utf-8' \ ---data-raw '{"type":1,"weekIndex":1}' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "data": {} -} -``` - -
\ No newline at end of file diff --git a/manga/point_shop.md b/manga/point_shop.md deleted file mode 100644 index 4d121f6..0000000 --- a/manga/point_shop.md +++ /dev/null @@ -1,451 +0,0 @@ -# 积分商城 - -- [获取当前持有点数](#获取当前持有点数) -- [获取兑换奖品列表](#获取兑换奖品列表) -- [兑换物品](#兑换物品) -- [获取兑换历史记录](#获取兑换历史记录) -- [获取玩法说明](#获取玩法说明) - -*积分商城由web页面提供功能,地址为:* - -> https://manga.bilibili.com/eden/credits-exchange.html - -## 获取当前持有点数 - -> https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/GetUserPoint - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | | -| msg | str | 错误信息 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ------------ | -| point | str | 点数 | 不登录时为0 | - -**示例:** - -```bash -curl 'https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/GetUserPoint' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "", - "data": { - "point": "66666" - } -} -``` - -
- -## 获取兑换奖品列表 - -> https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/ListProduct - -*请求方式:POST* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | | -| msg | str | 错误信息 | | -| data | array | 奖品列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| 0 | obj | 奖品1 | | -| n | obj | 奖品(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ------------ | -| id | num | 物品id | | -| type | num | 物品类型 | 0:商城相关
3:限免券
7:福利券 | -| title | str | 物品名 | | -| image | str | 显示的图像 | 福利券为空 | -| amount | num | 库存总量 | | -| cost | num | 兑换所需点数(原价) | | -| real_cost | num | 兑换所需点数(现价) | | -| remain_amount | num | 库存剩余数 | | -| comic_id | num | 相关漫画id | | -| limits | array | 限定使用范围(漫画) | 限免券所适用的漫画 | -| discount | num | (?) | 目前恒为0 | -| product_type | num | 物品类型 | 1:限免券、福利券
4:商城满99立减10元券、商城5元无门槛券
5:商城5魔晶 | -| pendant_url | str | (?) | | -| pendant_expire | num | (?) | 0:限免券、福利券
7:商城满99立减10元券、商城5元无门槛券、商城5魔晶 | -| exchange_limit | num | 兑换次数限制 | | -| address_deadline | str | (?) | | -| act_type | num | (?) | 目前恒为0 | -| has_exchanged | bool | 是否兑换过该物品 | | -| main_coupon_deadline | str | 兑换后使用截止时间 | | -| deadline | str | 兑换后使用截止时间 | | -| point | str | (?) | 目前恒为0 | - -**示例:** - -```bash -curl 'https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/ListProduct' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "", - "data": [ - { - "id": 195, - "type": 7, - "title": "积分兑换", - "image": "", - "amount": 15999, - "cost": 200, - "real_cost": 100, - "remain_amount": 0, - "comic_id": 0, - "limits": [], - "discount": 0, - "product_type": 1, - "pendant_url": "", - "pendant_expire": 7, - "exchange_limit": 0, - "address_deadline": "0001-01-01T00:00:00Z", - "act_type": 0, - "has_exchanged": false, - "main_coupon_deadline": "0001-01-01T00:00:00Z", - "deadline": "", - "point": "0" - }, - { - "id": 1009, - "type": 0, - "title": "商城5魔晶", - "image": "", - "amount": 500, - "cost": 260, - "real_cost": 30, - "remain_amount": 0, - "comic_id": 0, - "limits": [], - "discount": 0, - "product_type": 5, - "pendant_url": "", - "pendant_expire": 0, - "exchange_limit": 1, - "address_deadline": "0001-01-01T00:00:00Z", - "act_type": 0, - "has_exchanged": false, - "main_coupon_deadline": "2022-03-22T23:59:59+08:00", - "deadline": "2022-03-22T23:59:59+08:00", - "point": "0" - }, - { - "id": 1008, - "type": 0, - "title": "商城满99立减10元券", - "image": "", - "amount": 400, - "cost": 2000, - "real_cost": 400, - "remain_amount": 390, - "comic_id": 0, - "limits": [], - "discount": 0, - "product_type": 4, - "pendant_url": "", - "pendant_expire": 0, - "exchange_limit": 1, - "address_deadline": "0001-01-01T00:00:00Z", - "act_type": 0, - "has_exchanged": false, - "main_coupon_deadline": "2022-03-22T23:59:59+08:00", - "deadline": "2022-03-22T23:59:59+08:00", - "point": "0" - }, - { - "id": 1007, - "type": 0, - "title": "商城5元无门槛券", - "image": "", - "amount": 200, - "cost": 1000, - "real_cost": 200, - "remain_amount": 134, - "comic_id": 0, - "limits": [], - "discount": 0, - "product_type": 4, - "pendant_url": "", - "pendant_expire": 0, - "exchange_limit": 1, - "address_deadline": "0001-01-01T00:00:00Z", - "act_type": 0, - "has_exchanged": false, - "main_coupon_deadline": "2022-03-22T23:59:59+08:00", - "deadline": "2022-03-22T23:59:59+08:00", - "point": "0" - }, - { - "id": 1536, - "type": 3, - "title": "白兔糖", - "image": "http://i0.hdslb.com/bfs/manga-static/c3369754789a77b5d0b15cc31c75538ac035b3aa.jpg", - "amount": 4000, - "cost": 100, - "real_cost": 75, - "remain_amount": 3991, - "comic_id": 27164, - "limits": [ - { - "type": 1, - "id": 27164, - "title": "白兔糖" - } - ], - "discount": 0, - "product_type": 1, - "pendant_url": "", - "pendant_expire": 7, - "exchange_limit": 0, - "address_deadline": "0001-01-01T00:00:00Z", - "act_type": 0, - "has_exchanged": false, - "main_coupon_deadline": "0001-01-01T00:00:00Z", - "deadline": "", - "point": "0" - } - ] -} -``` - -
- - -## 兑换物品 - -> https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/Exchange - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**正文参数( application/x-www-form-urlencoded 或 application/json):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| product_id | str | 物品id | 必要 | | -| product_num | num | 兑换个数 | 必要 | | -| point | num | 物品所需点数 | 必要 | 现价(real_cost) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:兑换成功
1:积分不足
1:您点的太快了~
2:库存不足
3:product point mismatch(point填写错误)
3:超过用户最大可兑换数量
4:现在抢票的人太多啦,再点一下有机会优先上车喔 ε=ε=(ノ≧∇≦)ノ | -| message | str | 错误信息 | | - -**示例:** - -```bash -curl 'https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/Exchange' \ ---data-urlencode 'product_id=195' \ ---data-urlencode 'product_num=1' \ ---data-urlencode 'point=real_cost' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "" -} -``` - -
- -## 获取兑换历史记录 - -> https://manga.bilibili.com/twirp/activity.v1.Activity/GetPrizeList - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)/ APP - -**正文参数( application/x-www-form-urlencoded 或 application/json):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ | -| act_id | num | 固定值:90018 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | | -| msg | str | 错误信息 | | | -| data | obj | 信息本体 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------- | ---- | -| prizes | obj | 兑换记录 | | -| addr | obj | (?) | | - -`data`中的`prizes`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ------------ | -| user_prize_id | str | 兑换id? | | -| prize_id | num | 兑换的物品id | | -| ctime | str | 兑换时间 | | -| addr | null | (?) | | -| deadline | str | 过期时间 | | -| type | num | 类型 | 1:限免券、福利券
8:商城5魔晶 | -| name | str | 物品名 | | - -**示例:** - -```bash -curl 'https://manga.bilibili.com/twirp/activity.v1.Activity/GetPrizeList' \ ---data-urlencode 'act_id=90018' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "data": { - "prizes": [ - { - "user_prize_id": "55117444", - "prize_id": 1009, - "ctime": "2022-03-21T12:22:53+08:00", - "addr": null, - "deadline": "0001-01-01T00:00:00Z", - "type": 8, - "name": "商城5魔晶" - }, - { - "user_prize_id": "2594073385420523088", - "prize_id": 1536, - "ctime": "2022-03-21T12:07:24+08:00", - "addr": null, - "deadline": "0001-01-01T00:00:00Z", - "type": 1, - "name": "白兔糖限免卡" - }, - { - "user_prize_id": "4899916394614914913", - "prize_id": 195, - "ctime": "2021-12-24T12:01:08+08:00", - "addr": null, - "deadline": "0001-01-01T00:00:00Z", - "type": 1, - "name": "积分兑换" - }, - { - "user_prize_id": "1152921504636496551", - "prize_id": 195, - "ctime": "2021-12-13T12:05:13+08:00", - "addr": null, - "deadline": "0001-01-01T00:00:00Z", - "type": 1, - "name": "积分兑换" - } - ], - "addr": { - "name": "", - "phone": "", - "address": "", - "id_card": "" - } - } -} -``` - -
- -## 获取玩法说明 - -> https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/GetExchangeRule - -*请求方式:POST* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| code | num | 返回值 | | -| msg | str | 错误信息 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| rule | str | 玩法说明 | | - -**示例:** - -```bash -curl 'https://manga.bilibili.com/twirp/pointshop.v1.Pointshop/GetExchangeRule' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "msg": "", - "data": { - "rule": "日常兑换说明:\n1、赛季积分达到一定数量可兑换积分商城内相应的商品;\n2、日常兑换奖品的刷新时间为每日中午12点,每天可兑换的奖品总数有限(具体可见商品页面展示),请尽快兑换。\n3、兑换的福利券&限免卡奖品有效期详见兑换框内显示或卡券包内详情说明哦,请及时在有效期内使用。\n4、赛季积分有效期为当前赛季时长(每期赛季时长详见福利中心页面倒计时显示),请及时在有效期内进行使用。\n5、赛季积分可在福利中心完成特定任务获取,具体详情可至福利中心查看(部分活动也可获取赛季积分,可随时关注活动信息哦)。" - } -} -``` - -
diff --git a/message/msg.md b/message/msg.md deleted file mode 100644 index 4753391..0000000 --- a/message/msg.md +++ /dev/null @@ -1,65 +0,0 @@ -# 通知消息 - -- [未读消息数](#未读消息数) - ---- - -## 未读消息数 - -> https://api.bilibili.com/x/msgfeed/unread - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------------- | ------------ | -| at | num | 未读at数 | | -| chat | num | 0 | 作用尚不明确 | -| like | num | 未读点赞数 | | -| reply | num | 未读回复数 | | -| sys_msg | num | 未读系统通知数 | | -| up | num | UP主助手信息数 | | - -**示例:** - -以下信息代表了未读点赞数为10,未读回复数为4,未读at消息数为3,未读系统通知数为2,UP主助手信息数为1 - -```shell -curl 'https://api.bilibili.com/x/msgfeed/unread' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "at": 3, - "chat": 0, - "like": 10, - "reply": 4, - "sys_msg": 2, - "up": 1 - } -} -``` - -
diff --git a/message/private_msg.md b/message/private_msg.md deleted file mode 100644 index 598e17f..0000000 --- a/message/private_msg.md +++ /dev/null @@ -1,374 +0,0 @@ -# 私信 - -- [未读私信数](#未读私信数) -- [发送私信(web端)](#发送私信web端) -- [私信消息记录](#私信消息记录) ---- - -## 未读私信数 - -> https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-6:账号未登录 | -| message | str | 错误信息 | 默认为ok | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data` 对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | -------------------- | ---- | -| unfollow_unread | num | 未关注用户未读私信数 | | -| follow_unread | num | 已关注用户未读私信数 | | -| _gt_ | num | 0 | | - -**示例:** - -以下信息代表了为未关注用户未读私信数为`1`条,已关注用户未读私信数为`6`条 - -```shell -curl 'https://api.vc.bilibili.com/session_svr/v1/session_svr/single_unread' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "ok", - "message": "ok", - "data": { - "unfollow_unread": 1, - "follow_unread": 6, - "_gt_": 0 - } -} -``` - -
- -## 发送私信(web端) - -> https://api.vc.bilibili.com/web_im/v1/web_im/send_msg - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数(application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------------ | ------------------------------------ | ------------------------ | ------ | -------------------------------------- | -| msg[sender_uid] | num | 发送者mid | 必要 | | -| msg[receiver_id] | num | 接收者mid | 必要 | | -| msg[receiver_type] | num | 1 | 必要 | 固定为1 | -| msg[msg_type] | num | 消息类型 | 必要 | 1:发送文字
2:发送图片
5:撤回消息 | -| msg[msg_status] | num | 0 | 非必要 | | -| msg[dev_id] | string | 372778FD-E359-461D-86A3-EA2BCC6FF52A | 必要 | **获取方式在下面** | -| msg[timestamp] | num | 时间戳(秒) | 必要 | | -| msg[content] | 发送文字时:str
撤回消息时:num | 消息内容 | 必要 | **详见下表** | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - ---- - -**dev_id的获取** - -以JS为例: - -```javascript -const deviceid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function (name) { - let randomInt = 16 * Math.random() | 0; - return ("x" === name ? randomInt : 3 & randomInt | 8).toString(16).toUpperCase() -})); -``` - -代码来自 [andywang425/BLTH](https://github.com/andywang425/BLTH/blob/45fe93e31754ca8bf07059d46266398e787dbf45/B%E7%AB%99%E7%9B%B4%E6%92%AD%E9%97%B4%E6%8C%82%E6%9C%BA%E5%8A%A9%E6%89%8B.js#L6618) - -以Java为例 - -```java -public class Util{ - private String getDevId() { - char[] b = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; - char[] s = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".toCharArray(); - for (int i = 0; i < s.length; i++) { - if ('-' == s[i] || '4' == s[i]) { - continue; - } - int randomInt = (int) (16 * Math.random()); - if ('x' == s[i]) { - s[i] = b[randomInt]; - } else { - s[i] = b[3 & randomInt | 8]; - } - } - return new String(s); - } -} -``` ---- - -`msg[content]`消息内容: - -当发送文字时(`msg[msg_type]=1`): - -该参数为json序列字串 - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---- | -| content | str | 私信内容 | | - -当发送图片时(`msg[msg_type]=2`): - -该参数为json序列字串 - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | :-------------------------------------------- | -| url | str | 图片url | 默认为B站相簿图片上传通道
也可用三方图床 | -| width | num | 图片的宽 | 单位:像素(非必要) | -| height | num | 图片的高 | 单位:像素(非必要) | -| type | str | 图片格式 | (非必要) | -| original | num | 1 | **作用未知**(非必要) | -| size | num | 文件大小 | 单位:千字节(非必要)
__向上取整__ | - -当撤回消息时(`msg[msg_type]=5`): - -该参数为数值,为目标消息的` msg_key ` - -**json回复:** - -根对象: -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------- | -| code | num | 返回值 | 0:成功
| -| message | str | 错误信息 | 默认为ok | -| ttl | num | | 默认为1 | -| data | obj | 主体 | 出错时为空 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ---------- | ------------ | -| msg_key| num | 消息唯一id | | -| msg_content | str | 发送的消息 | | -| key_hit_infos | obj | | 作用尚不明确 | - -**示例:** - -给目标用户`mid=1`发一条文字私信: - -> up主你好, -> -> 催更[doge] - -```shell -curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ ---data-urlencode 'msg[sender_uid]=293793435' \ ---data-urlencode 'msg[receiver_id]=1' \ ---data-urlencode 'msg[receiver_type] =1' \ ---data-urlencode 'msg[msg_type]=1' \ ---data-urlencode 'msg[dev_id] =372778FD-E359-461D-86A3-EA2BCC6FF52A' \ ---data-urlencode 'msg[timestamp] =1626181379' \ ---data-urlencode 'msg[content]={"content":"up主你好,\n催更[doge]"}' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{"code":0, -"message":"0", -"ttl":1, -"data":{"msg_key":6984393491767669026, - "msg_content":"up主你好,\n催更[doge]", - "key_hit_infos":{}}} -``` - -
- -给目标用户`mid=1`发一条图片私信: - -> - -```shell -curl 'https://api.vc.bilibili.com/web_im/v1/web_im/send_msg' \ ---data-urlencode 'msg[sender_uid]=293793435' \ ---data-urlencode 'msg[receiver_id]=1' \ ---data-urlencode 'msg[receiver_type] =1' \ ---data-urlencode 'msg[msg_type]=2' \ ---data-urlencode 'msg[content]={"url":https://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg}' \ ---data-urlencode 'csrf_token=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "msg":"ok", - "message":"ok", - "data":{ - "msg_key":6852570013146024354, - "_gt_":0 - } -} -``` - -
- -## 私信消息记录 - -> https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs - -*请求方式:GET* - -此接口有设计缺陷,能够获取已经撤回,无法显示(如 发送私信 中msg[msg_type]:3)的消息 - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------------ | ------------------ | -| sender_device_id | num | 发送者设备 | 可选 | 1 | -| talker_id | num | 聊天对象的UID | 必要 | -------------- | -| session_type | num | 聊天对象的类型 | 必要 | 1为用户,2为粉丝团 | -| size | num | 列出消息条数 | 可选 | 默认是20 | -| build | num | 未知 | 可选 | 默认是0 | -| mobi_app | str | 设备 | 可选 | web | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ---------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| msg | str | 错误信息 | 默认为0 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 数据列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| messages | array | 聊天记录列表 | | -| has_more | num | 0 | | -| min_seqno | num | 未知 | | -| max_seqno | num | 未知 | | -| e_infos | array | 聊天表情列表 | | - -`messages`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| sender_uid | num | 发送者uid | 注意名称是sender_uid | -| receiver_type | num | 与session_type对应 | 1为用户,2为粉丝团 | -| receiver_id | num | 接收者uid | 注意名称是receiver_id | -| msg_type | num | 消息类型 | 1:文字消息
2:图片消息
5:撤回的消息
12、13:通知 | -| content | str | 消息内容 | 此处存在设计缺陷 | -| msg_seqno | num | 未知 | | -| timestamp | num | 消息发送时间戳 | | -| at_uids | array | 未知 | | -| msg_key | num | 未知 | | -| msg_status | num | 消息状态 | 0 | -| notify_code |str | 未知 | | -| new_face_version |num | 未知 | 疑似只在粉丝团消息中出现 | - -`e_infos`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| text | str | 表情名称 | | -| uri | str | 表情链接 | | -| size | num | 表情尺寸 | 1 | - -**示例:** - -获取与目标用户`mid=123`私信记录: - -```shell -curl 'https://api.vc.bilibili.com/svr_sync/v1/svr_sync/fetch_session_msgs?sender_device_id=1&talker_id=123&session_type=1&size=20&build=0&mobi_app=web' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "0", - "message": "0", - "ttl": 1, - "data": { - "messages": [ - { - "sender_uid": 2239814, - "receiver_type": 1, - "receiver_id": 123, - "msg_type": 1, - "content": "{\"content\":\"[口罩]\"}", - "msg_seqno": 309675413389322, - "timestamp": 1654154093, - "at_uids": [ - 0 - ], - "msg_key": 7104537732714964358, - "msg_status": 0, - "notify_code": "", - "new_face_version": 1 - }, - { - "sender_uid": 2239814, - "receiver_type": 1, - "receiver_id": 123, - "msg_type": 5, - "content": "{\"content\":\"1\"}", - "msg_seqno": 308302399586307, - "timestamp": 1654072255, - "at_uids": [ - 0 - ], - "msg_key": 7104186240789226795, - "msg_status": 0, - "notify_code": "" - }, - ], - "has_more": 0, - "min_seqno": 308188515844097, - "max_seqno": 309675413389322, - "e_infos": [ - { - "text": "[口罩]", - "url": "http://i0.hdslb.com/bfs/emote/3ad2f66b151496d2a5fb0a8ea75f32265d778dd3.png", - "size": 1 - } - ] - } -} -``` - -
- diff --git a/mkdocs/mkdocs.yml b/mkdocs/mkdocs.yml deleted file mode 100644 index b1fcc70..0000000 --- a/mkdocs/mkdocs.yml +++ /dev/null @@ -1,8 +0,0 @@ -site_name: 哔哩哔哩-API收集整理 -repo_url: https://github.com/SocialSisterYi/bilibili-API-collect - -site_description: 本项目旨在对B站web端、移动端以及TV端散落在世界各地的野生api进行收集整理,研究使用方法并对其进行说明 -site_author: 所有的贡献者们 - -docs_dir: '..' -site_dir: 'html' \ No newline at end of file diff --git a/newbie_exam/action.md b/newbie_exam/action.md deleted file mode 100644 index 738a6a4..0000000 --- a/newbie_exam/action.md +++ /dev/null @@ -1,456 +0,0 @@ -# 操作 - -- [提交答题](#提交答题) - - [提交基础题](#提交基础题) - - [提交附加题](#提交附加题) - - [提交自选题](#提交自选题) -- [获取验证码](#获取验证码) -- [提交验证码](#提交验证码) -- [提交自选题分类](#提交自选题分类) -- [提前交卷](#提前交卷) - ---- - -## 提交答题 - -### 提交基础题 - -> https://api.bilibili.com/x/answer/v4/base/check - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------------ | -------------- | ------------------------------------------ | -| question_id | num | 题目id | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 | -| ans_hash | str | 选项hash | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
41014:答题过快或错误太多
41012:用户答题提交题目id不合法
41020:用户基础题已通过
41023:用户答题记录不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ----------------------------------- | -| passed | bool | 选项是否正确 | true:选项正确
false:选项错误 | - -**示例:** - -提交题目id为`104`的题,选项hash为`cb4c8cc9424fc771f7c1598e74de498f` - -```shell -curl 'https://api.bilibili.com/x/answer/v4/base/check' \ ---data-urlencode 'question_id=104' \ ---data-urlencode 'ans_hash=cb4c8cc9424fc771f7c1598e74de498f' \ ---data-urlencode 'csrf=xxxx' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "passed": true - } -} -``` - -
- -### 提交附加题 - -> https://api.bilibili.com/x/answer/v4/base/check - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------------ | -------------- | ------------------------------------------ | -| question_id | num | 题目id | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 | -| ans_hash | str | 选项hash | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
41014:答题过快或错误太多
41012:用户答题提交题目id不合法
41023:用户答题记录不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ----------------------------------- | -| passed | bool | 选项是否正确 | true:选项正确
false:选项错误 | - -**示例:** - -提交题目id为`104`的题,选项hash为`cb4c8cc9424fc771f7c1598e74de498f` - -```shell -curl 'https://api.bilibili.com/x/answer/v4/base/check' \ ---data-urlencode 'question_id=104' \ ---data-urlencode 'ans_hash=cb4c8cc9424fc771f7c1598e74de498f' \ ---data-urlencode 'csrf=xxxx' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "passed": true - } -} -``` - -
- -### 提交自选题 - -> https://api.bilibili.com/x/answer/v4/pro/check - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------------ | -------------- | ------------------------------------------ | -| question_id | num | 题目id | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 | -| ans_hash | str | 选项hash | 必要 | 从[拉取基础题api](fetch.md#拉取基础题)获得 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
41014:答题过快或错误太多
41012:用户答题提交题目id不合法
41023:用户答题记录不存在
41026:获取用户DB题目信息异常 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ---- | ---------- | -| passed | bool | true | 恒为`true` | - -**示例:** - -提交题目id为`2935`的题,选项hash为`ffd55cbe0624f466bee2ea3eb576a4d0` - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/pro/check' \ ---data-urlencode 'question_id=2935' \ ---data-urlencode 'ans_hash=ffd55cbe0624f466bee2ea3eb576a4d0' \ ---data-urlencode 'csrf=xxxx' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "passed": true - } -} -``` - -
- -## 获取验证码 - -> https://api.bilibili.com/x/answer/v4/captcha - -*请求方式:GET* - -认证方式:APP或Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
41010:用户答题非法访问
41014:答题过快或错误太多
41020:用户基础题已通过
41021:用户基础题未通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ----------- | ------------- | -| type | str | 验证码类型? | geetest:极验 | -| gt | str | 极验id | | -| challenge | str | 极验key | | -| token | str | (?) | | -| url | str | (?) | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/answer/v4/captcha' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "type": "geetest", - "gt": "abc55d1fb914cb110cfb4c232a4b4c35", - "challenge": "90a6e03e626e13ee186ddae0107c3ae2", - "token": "", - "url": "" - } -} -``` - -
- -## 提交验证码 - -> https://api.bilibili.com/x/answer/v4/captcha/check - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**注:** - -旧版`edition=0`同时提交自选题分类以及验证码 - -新版`edition=2`仅仅提交验证码 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------------- | ---- | ---------------------- | -------------- | ---------------- | -| types | nums | 自选题分类(旧版) | 非必要 | 新版不需要此字段 | -| type | str | 验证码类型 | 非必要 | | -| bilibili_token | str | | 非必要 | | -| bilibili_code | str | | 非必要 | | -| geetest_challenge | str | 极验key | 非必要 | | -| geetest_seccode | str | 极验结果+\|jordan | 非必要 | | -| geetest_validate | str | 极验结果 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-105:验证码错误
-400:请求错误
41010:用户答题非法访问
41014:答题过快或错误太多
41021:用户基础题未通过
41031:自选题未通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/answer/v4/captcha/check' \ ---data-urlencode 'types=' \ ---data-urlencode 'type=geetest' \ ---data-urlencode 'bilibili_token=' \ ---data-urlencode 'bilibili_code=' \ ---data-urlencode 'geetest_challenge=3f809a7a9c51edca751fd26c032c182d' \ ---data-urlencode 'geetest_seccode=513ec576a275a3eb250829202d4dce46|jordan' \ ---data-urlencode 'geetest_validate=513ec576a275a3eb250829202d4dce46' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 提交自选题分类 - -> https://api.bilibili.com/x/answer/v4/pro/type/check - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------------------- | -------------- | ---- | -| types | nums | 自选题分类(新版) | 必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
41010:用户答题非法访问
41014:答题过快或错误太多
41021:用户基础题未通过
41031:自选题未通过
41052:用户题目类型不合法
41055:基础附加题未通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -选择`游戏` `影视` `科教/知识` `动画/动漫`分类 - -```shell -curl 'https://api.bilibili.com/x/answer/v4/pro/type/check' \ ---data-urlencode 'types=1,2,3,4' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 提前交卷 - -> https://api.bilibili.com/x/answer/v4/submit - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -当当前得分>=60时,可请求本接口提前完成答题 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------------------- | -------------- | ---- | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
41014:答题过快或错误太多
41023:用户答题记录不存在
41031:自选题未通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---------------- | -------------------------------------------- | -| hid | num | 答题会话id | | -| mid | num | 答题用户mid | | -| score | num | 得分 | | -| status | num | 0 | | -| number | num | 0 | | -| result | str | succeed | | -| stage | str | result | | -| version | str | 版本 | 目前为`v4` | -| start_time | num | 本次答题开始时间 | 时间戳 | -| first_answer | num | 0 | | -| progress | str | | | -| text | str | | | -| url | str | | | -| in_reg_audit | bool | | | -| edition | num | 答题版本 | 0:旧版(40+10+50)
2:新版(40+30+30) | -| rewards | null | | | -| captcha | num | 1 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/answer/v4/submit' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "hid": 1623207905520705, - "mid": 293793435, - "score": 63, - "status": 3, - "number": 0, - "result": "succeed", - "stage": "result", - "version": "v4", - "start_time": 1636889218, - "first_answer": 0, - "progress": "", - "text": "", - "url": "", - "in_reg_audit": false, - "edition": 0, - "rewards": null, - "captcha": 1 - } -} -``` - -
diff --git a/newbie_exam/fetch.md b/newbie_exam/fetch.md deleted file mode 100644 index 5b52e27..0000000 --- a/newbie_exam/fetch.md +++ /dev/null @@ -1,263 +0,0 @@ -# 拉取题目 - -- [拉取基础题](#拉取基础题) -- [拉取附加题](#拉取附加题) -- [拉取自选题](#拉取自选题) - ---- - -## 拉取基础题 - -> https://api.bilibili.com/x/answer/v4/base - -*请求方式:GET* - -认证方式:Cookie或APP - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
41014:答题过快或错误太多
41020:用户基础题已通过
41023:用户答题记录不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ---- | -| question | obj | 题目内容 | | - -`data`中的`question`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | ------------------ | ------------------------------------------------------------ | -| id | num | 问题id | **问题id不代表题图,因为选项是打乱的** | -| number | num | 当前题号 | | -| q_height | num | 问题部分总高度 | | -| q_coord_y | num | 问题部分Y裁剪起始 | 当然是0 | -| image | str | 题图url | 题目文字+所有的选项文字排版成一张图,存储在bfs中 | -| from | str | 问题来源页面url | 如:“xx弹幕是否违规”所在的视频页 | -| options | array | 选项列表 | | -| type_id | num | 题目父类型id | 见[查询自选题分类](info.md#查询自选题分类)
**注:36为基础题** | -| type_name | str | 分院小电视提示文案 | 如:xx小电视 | -| type_image | str | 分院小电视图标url | | - -`question`中的`options`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----- | ---------------------- | -| 0 | obj | 选项A | | -| 1 | obj | 选项B | 选项至少2个 | -| 2 | obj | 选项C | 数组长度取决于选项个数 | -| 3 | obj | 选项D | | - -`question`中的`options`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ----------------- | ------------------------ | -| number | num | 选项序号 | 如:1为A 2为B | -| high | num | 选项部分总高度 | | -| coord_y | num | 选项部分Y裁剪起始 | | -| hash | str | 选项hash | 作为提交对应选项时应传参 | - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/base' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "question": { - "id": 6511, - "number": 1, - "q_height": 38.4, - "q_coord_y": 0, - "image": "https://i0.hdslb.com/bfs/member/9d7f1f1f0b7478a621d1b998a5a98982.png", - "from": "", - "options": [ - { - "number": 1, - "high": 42, - "coord_y": 38.4, - "hash": "f7619d6c2040d44f39dc87a7aa34fb9e" - }, - { - "number": 2, - "high": 42, - "coord_y": 80.4, - "hash": "dce5140040f40ca4030783585684369d" - } - ], - "type_id": 36, - "type_name": "小电视校长", - "type_image": "https://i0.hdslb.com/bfs/face/7b67c0c0da64a6ab059ff49bb0d4b92988b91806.png" - } - } -} -``` -
- -## 拉取附加题 - -> https://api.bilibili.com/x/answer/v4/extra - -*请求方式:GET* - -认证方式:Cookie或APP - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
41014:答题过快或错误太多
41021:用户基础题未通过
41023:用户答题记录不存在
41054:用户附加题已通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -同[拉取基础题](#拉取基础题)的`data`对象 - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/extra' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "question": { - "id": 11492, - "number": 44, - "q_height": 76.8, - "q_coord_y": 0, - "image": "https://i0.hdslb.com/bfs/member/b6c846613bd0b44cd7c8af1d83e3f0c2.png", - "from": "https://www.bilibili.com/video/av14659093", - "options": [ - { - "number": 1, - "high": 42, - "coord_y": 76.8, - "hash": "ca15e6009047cf82358c50ab90fd8d9e" - }, - { - "number": 2, - "high": 42, - "coord_y": 118.8, - "hash": "60e86a1c736c68da3462f66377e4e8ca" - } - ], - "type_id": 36, - "type_name": "小电视校长", - "type_image": "https://i0.hdslb.com/bfs/face/7b67c0c0da64a6ab059ff49bb0d4b92988b91806.png" - } - } -} -``` -
- -## 拉取自选题 - -> https://api.bilibili.com/x/answer/v4/pro - -*请求方式:GET* - -认证方式:Cookie或APP - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
41014:答题过快或错误太多
41021:用户基础题未通过
41023:用户答题记录不存在
41051:用户答题验证码未通过
41055:基础附加题未通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -同[拉取基础题](#拉取基础题)的`data`对象 - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/pro' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "question": { - "id": 824, - "number": 54, - "q_height": 38.4, - "q_coord_y": 0, - "image": "https://i0.hdslb.com/bfs/member/417e02be5652f79d0312fa2fcee28869.png", - "from": "", - "options": [ - { - "number": 1, - "high": 42, - "coord_y": 38.4, - "hash": "c4574c23cf728c19abeab3e7525258d4" - }, - { - "number": 2, - "high": 42, - "coord_y": 80.4, - "hash": "ffd48760758fbb8a2c183d1d04f692f8" - }, - { - "number": 3, - "high": 42, - "coord_y": 122.4, - "hash": "898d414dff49fe20c4a1da1e148fadb2" - }, - { - "number": 4, - "high": 42, - "coord_y": 164.4, - "hash": "09018443f09d8ef4f6fec5e96e082270" - } - ], - "type_id": 1, - "type_name": "游戏小电视", - "type_image": "https://i0.hdslb.com/bfs/face/6590bee26086fed66ee7cc5bac26a32d2f733037.png" - } - } -} -``` - -
- diff --git a/newbie_exam/info.md b/newbie_exam/info.md deleted file mode 100644 index 135d6c3..0000000 --- a/newbie_exam/info.md +++ /dev/null @@ -1,556 +0,0 @@ -# 查询信息 - -- [查询答题状态](#查询答题状态) -- [查询自选题分类](#查询自选题分类) -- [查询答题结果](#查询答题结果) - ---- - -## 查询答题状态 - -> https://api.bilibili.com/x/answer/v4/status - -*请求方式:GET* - -认证方式:Cookie或APP - -**json回复:** - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
41014:答题过快或错误太多 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ------------------ | ------------------------------------------------------------ | -| hid | num | 答题会话id | | -| mid | num | 答题用户mid | | -| score | num | 当前得分 | | -| status | num | 答题状态 | 0:未答题
2:答题中
3:已通过 | -| number | num | 当前题号 | | -| result | str | 是否通过答题 | failed:未通过
succeed:已通过 | -| stage | str | 当前答题阶段 | base:基础题
extra:附加题
pro_type:等待选择自选题类型
pro:自选题
complete:已完成 | -| version | str | 答题版本 | 当前为`v4` | -| start_time | num | 本次答题开始时间 | 时间戳 | -| first_answer | num | (?) | | -| progress | str | 当前答题进度 | 百分比
60分为100% | -| text | str | 提示文案 | | -| url | str | 答题页面url | | -| in_reg_audit | bool | 是否为第一次答题 | | -| edition | num | 答题版本 | 0:旧版(40+10+50)
2:新版(40+30+30) | -| rewards | null | (?) | | -| captcha | num | 是否已经提交验证码 | 1:已提交
仅新版提交验证码后存在 | - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/status' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "hid": 1623207905520705, - "mid": 293793435, - "score": 2, - "status": 2, - "number": 2, - "result": "failed", - "stage": "base", - "version": "v4", - "start_time": 1623207905, - "first_answer": 2, - "progress": "3", - "text": "继续答题", - "url": "https://www.bilibili.com/h5/newbie/entry?navhide=1", - "in_reg_audit": false, - "edition": 0, - "rewards": null - } -} -``` - -
- -## 查询自选题分类 - -> https://api.bilibili.com/x/answer/v4/pro/type - -*请求方式:GET* - -认证方式:Cookie或APP - -当字段`edition`的值不同时,该接口返回的数据也不同 - -**json回复:** - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | ---------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
41014:答题过快或错误太多
41021:用户基础题未通过
41031:自选题未通过
41055:基础附加题未通过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 父分类列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| 0 | obj | 父分类1 | | -| n | obj | 父分类(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | ---------- | ---- | -| id | num | 父分类id | | -| name | str | 父分类名 | | -| fields | array | 子分类列表 | | - -`data`数组中的对象中的`fields`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| 0 | obj | 子分类1 | | -| n | obj | 子分类(n+1) | | -| …… | obj | …… | …… | - -`fields`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| id | num | 子分类id | | -| name | str | 子分类名 | | - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/pro/type' \ --b 'SESSDATA=xxx' -``` - -旧版`edition=0`返回: - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "id": 1, - "name": "游戏", - "fields": [ - { - "id": 8, - "name": "动作射击" - }, - { - "id": 9, - "name": "冒险格斗" - }, - { - "id": 12, - "name": "策略模拟 " - }, - { - "id": 13, - "name": "角色扮演 " - }, - { - "id": 14, - "name": "音乐体育 " - } - ] - }, - { - "id": 2, - "name": "影视", - "fields": [ - { - "id": 15, - "name": "纪录片 " - }, - { - "id": 16, - "name": "电影 " - }, - { - "id": 17, - "name": "电视剧 " - } - ] - }, - { - "id": 3, - "name": "科技", - "fields": [ - { - "id": 18, - "name": "军事 " - }, - { - "id": 19, - "name": "地理 " - }, - { - "id": 20, - "name": "历史 " - }, - { - "id": 21, - "name": "文学 " - }, - { - "id": 22, - "name": "数学 " - }, - { - "id": 23, - "name": "物理 " - }, - { - "id": 24, - "name": "化学 " - }, - { - "id": 25, - "name": "生物 " - }, - { - "id": 26, - "name": "数码科技 " - } - ] - }, - { - "id": 4, - "name": "动画", - "fields": [ - { - "id": 27, - "name": "动画声优 " - }, - { - "id": 28, - "name": "动漫内容 " - } - ] - }, - { - "id": 5, - "name": "艺术", - "fields": [ - { - "id": 29, - "name": "ACG音乐 " - }, - { - "id": 30, - "name": "三次元音乐 " - }, - { - "id": 31, - "name": "绘画 " - } - ] - }, - { - "id": 6, - "name": "流行前线", - "fields": [ - { - "id": 32, - "name": "娱乐 " - }, - { - "id": 33, - "name": "时尚 " - }, - { - "id": 34, - "name": "运动 " - } - ] - }, - { - "id": 7, - "name": "鬼畜", - "fields": [ - { - "id": 35, - "name": "鬼畜 " - } - ] - } - ] -} -``` - -
- -新版`edition=2`返回: - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "id": 1, - "name": "游戏", - "fields": [ - { - "id": 1, - "name": "游戏" - } - ] - }, - { - "id": 2, - "name": "影视", - "fields": [ - { - "id": 2, - "name": "影视" - } - ] - }, - { - "id": 3, - "name": "科教/知识", - "fields": [ - { - "id": 3, - "name": "科教/知识" - } - ] - }, - { - "id": 4, - "name": "动画/动漫", - "fields": [ - { - "id": 4, - "name": "动画/动漫" - } - ] - }, - { - "id": 5, - "name": "音乐/舞蹈", - "fields": [ - { - "id": 5, - "name": "音乐/舞蹈" - } - ] - }, - { - "id": 32, - "name": "明星/娱乐", - "fields": [ - { - "id": 32, - "name": "明星/娱乐" - } - ] - }, - { - "id": 35, - "name": "鬼畜", - "fields": [ - { - "id": 35, - "name": "鬼畜" - } - ] - }, - { - "id": 42, - "name": "时尚/健身", - "fields": [ - { - "id": 42, - "name": "时尚/健身" - } - ] - } - ] -} -``` - -
- - -## 查询答题结果 - -> https://api.bilibili.com/x/answer/v4/result - -*请求方式:GET* - -认证方式:无 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ------ | ---- | -| hid | num | 答题会话id | 必要 | | - -**json回复:** - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
41023:用户答题记录不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------------- | ----- | ------------------------ | ----------------------------------- | -| hid | num | 答题会话id | | -| mid | num | 答题用户mid | | -| member | num | | | -| score | num | 得分 | | -| level | num | 用户等级 | | -| first_pass | num | | | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| status | str | 答题结果 | failed:未通过
succeed:已通过 | -| question_types | array | 已选择的自选题列表 | | -| power | array | 自选题分类得分情况 | | -| start_time | num | 开始答题时间 | 时间戳 | -| share | obj | | | -| can_show_rank_btn | bool | | | -| is_same_user | bool | | | -| view_more | str | | | -| video_info | obj | | | -| main_tids | array | | | -| sub_tids | array | | | -| power_result | null | | | -| score_rate | num | 分数超过平均用户的百分比 | | -| permission | obj | | | -| rewards | null | | | - -**示例:** - -```shell -curl -G 'https://api.bilibili.com/x/answer/v4/result' \ ---data-urlencode 'hid=1615088061307609' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "hid": 1615088061307609, - "mid": 1386643599, - "member": 0, - "score": 70, - "level": 0, - "first_pass": 0, - "uname": "眉凭铱ひ前非", - "face": "http://i0.hdslb.com/bfs/face/cd83d4cdbfb521455c168eaa181915b40cb664d1.jpg", - "status": "succeed", - "question_types": [ - { - "id": 12, - "name": "策略模拟 " - }, - { - "id": 13, - "name": "角色扮演 " - }, - { - "id": 14, - "name": "音乐体育 " - }, - { - "id": 8, - "name": "动作射击" - }, - { - "id": 9, - "name": "冒险格斗" - } - ], - "power": [ - { - "score": 0, - "name": "动画" - }, - { - "score": 0, - "name": "艺术" - }, - { - "score": 5, - "name": "游戏" - }, - { - "score": 0, - "name": "科技" - }, - { - "score": 0, - "name": "影视" - }, - { - "score": 0, - "name": "鬼畜" - } - ], - "start_time": 1615088061, - "share": { - "content": "", - "short_content": "" - }, - "can_show_rank_btn": false, - "is_same_user": true, - "view_more": "", - "video_info": { - "url": "", - "name": "", - "img": "", - "watch_num": "", - "up_num": "" - }, - "main_tids": [], - "sub_tids": [], - "power_result": null, - "score_rate": 84, - "permission": { - "reply": true, - "color_dm": true - } - } -} -``` - -
\ No newline at end of file diff --git a/note/action.md b/note/action.md deleted file mode 100644 index 33dbaba..0000000 --- a/note/action.md +++ /dev/null @@ -1,135 +0,0 @@ -# 笔记操作 - -- [保存视频笔记](#保存视频笔记) -- [删除视频笔记](#删除视频笔记) - ---- - -## 保存视频笔记 - -> https://api.bilibili.com/x/note/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ------------------------ | ------ | ------------------------------------------------------------ | -| oid | num | 目标id | 必要 | | -| oid_type | num | 目标id类型 | 必要 | `0`视频(oid=avid) | -| note_id | num | 笔记id | 非必要 | 创建时无需此项 | -| title | str | 笔记标题 | 必要 | | -| summary | str | 笔记预览文本 | 必要 | | -| content | str | 笔记正文json序列 | 必要 | 格式见[附表](readme.md#附表-笔记正文序列格式) | -| tags | str | 笔记跳转标签列表 | 非必要 | | -| cls | num | 1 | 非必要 | 作用尚不明确 | -| from | str | 提交类型 | 非必要 | `auto`自动提交
`save`手动提交
`close`关闭时自动提交 | -| cont_len | num | 正文字数 | 非必要 | | -| platform | str | 平台 | 非必要 | 可为`web` | -| publish | num | 是否公开笔记 | 非必要 | `0`不公开
`1`公开 | -| auto_comment | num | 是否添加到评论区 | 非必要 | `0`不添加
`1`添加 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | `0`成功
`-101`账号未登录
`-111`csrf校验失败
`-400`请求错误
`79508`该稿件已存在笔记,无法新增
`79513`笔记所属视频不合法 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ------------ | ---- | -| note_id | num | 笔记id | | - -**示例:** - -保存内容为加粗的STRONG的笔记`3809605586518023`于`av970322090` - -```shell -curl 'https://api.bilibili.com/x/note/add' \ ---data-urlencode 'oid=970322090' \ ---data-urlencode 'oid_type=0' \ ---data-urlencode 'note_id=3809605586518023' ---data-urlencode 'title=周刊哔哩哔哩排行榜#543' ---data-urlencode 'summary=STRONG' ---data-urlencode 'content=[{"attributes":{"bold":true},"insert":"STRONG"},{"insert":"\n"}]' ---data-urlencode 'tags=' ---data-urlencode 'cls=1' ---data-urlencode 'from=save' ---data-urlencode 'csrf=xxx' --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "note_id": 3809605586518023 - } -} -``` - -
- -## 删除视频笔记 - -> https://api.bilibili.com/x/note/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ------------------------ | ------ | ---- | -| oid | num | 目标稿件avid | 必要 | | -| note_id | num | 笔记id | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -删除稿件`av457253380`下的笔记`4075968478576647` - -```shell -curl 'https://api.bilibili.com/x/note/del' \ ---data-urlencode 'oid=457253380' \ ---data-urlencode 'note_id=4075968478576647' \ ---data-urlencode 'csrf=xxx' --b 'SESSDATA=xxx' -``` - -
-查看响应示例: -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
diff --git a/note/info.md b/note/info.md deleted file mode 100644 index 2014a05..0000000 --- a/note/info.md +++ /dev/null @@ -1,315 +0,0 @@ -# 笔记详细信息 - -- [查询该稿件是否禁止笔记](#查询该稿件是否禁止笔记) -- [查询私有笔记内容](#查询私有笔记内容) -- [查询公开笔记内容](#查询公开笔记内容) - ---- - -## 查询该稿件是否禁止笔记 - -> https://api.bilibili.com/x/note/is_forbid - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| aid | num | 稿件avid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | `0`成功
`-400`请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ---- | ------------ | ----------------------------------- | -| forbid_note_entrance | bool | 是否禁止笔记 | `true`禁止笔记
`false`允许笔记 | - -**示例:** - -查询视频稿件`av338677252`是否禁止笔记 - -```shell -curl 'https://api.bilibili.com/x/note/info' \ ---data-urlencode 'aid=338677252' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "forbid_note_entrance": false - } -} -``` - -
- -## 查询私有笔记内容 - -> https://api.bilibili.com/x/note/info - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ---------- | ----------- | -------- | -| oid | num | 目标id | 必要 | | -| oid_type | num | 目标id类型 | 必要 | `0`视频(oid=avid) | -| note_id | num | 笔记id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | `0`成功
`-400`请求错误
`-101`账号未登录
`79502`笔记详情未找到
`79503`笔记正文未找到 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ----- | ---------------- | -------------- | -| arc | obj | 对应视频稿件信息 | | -| audit_status | num | 0 | 作用暂不明确 | -| cid_count | num | 视频分P数 | | -| content | str | 笔记正文json序列 | 格式见[附表](readme.md#附表-笔记正文序列格式) | -| forbid_note_entrance | bool | | | -| pub_reason | str | 公开笔记相关原因 | | -| pub_status | num | 公开笔记状态 | `1`未公开
`2`已公开
`4`退回 | -| pub_version | num | | | -| summary | str | 笔记预览文本 | | -| tags | array | 笔记跳转标签列表 | | -| title | str | 笔记标题 | | - -`data`中的`arc`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------- | ----------------- | -| oid | num | 目标id | | -| oid_type | num | 目标id类型 | `0`视频(oid=avid) | -| title | str | 视频标题 | | -| pic | str | 视频封面 | | -| status | num | | | -| desc | str | 视频简介 | | - -`data`中的`tags`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---------------- | -| 0 | obj | 标签1 | | -| n | obj | 标签(n+1) | 按照笔记中位置排列 | -| …… | obj | …… | …… | - -`tags`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ----------------- | ------------ | -| cid | num | 视频cid | | -| status | num | 0 | 作用尚不明确 | -| index | num | 在稿件中的分P索引 | | -| seconds | num | 视频进度 | | -| pos | num | 笔记中位置 | | - -**示例:** - -查询视频`av338677252`中笔记`24508729145690112`的内容 - -```shell -curl 'https://api.bilibili.com/x/note/info' \ ---data-urlencode 'oid=338677252' \ ---data-urlencode 'oid_type=0' \ ---data-urlencode 'note_id=24508729145690112' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "title": "2022哔哩哔哩拜年纪", - "summary": " ...", - "content": "[{"insert":"\n"}]", - "cid_count": 0, - "audit_status": 0, - "pub_status": 0, - "pub_reason": "", - "pub_version": 0, - "forbid_note_entrance": false, - "tags": [], - "arc": { - "oid": 338677252, - "title": "2022哔哩哔哩拜年纪", - "status": 0, - "oid_type": 0, - "pic": "http://i2.hdslb.com/bfs/archive/1e683a5363f35aa0a65419dbf145177099e38f90.jpg", - "desc": "" - } - } -} -``` - -
- -## 查询公开笔记内容 - -> https://api.bilibili.com/x/note/publish/info - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------ | ------ | -------- | -| cvid | num | 笔记对应的专栏cvid | 必要 | 非笔记id | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------------------------------------- | -| code | num | 返回值 | `0`成功
`-400`请求错误
`79514`公开笔记详情未找到 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ----- | ---------------------- | --------------------------------------------- | -| cvid | num | 公开笔记对应的专栏cvid | | -| note_id | num | 笔记id | | -| title | str | 笔记标题 | | -| summary | str | 笔记预览 | | -| content | str | 笔记正文json序列 | 格式见[附表](readme.md#附表-笔记正文序列格式) | -| cid_count | num | (?) | | -| pub_status | num | 公开状态 | | -| tags | array | | | -| arc | obj | 稿件信息 | | -| author | obj | 作者信息 | | -| forbid_note_entrance | bool | | | - -`data`中的`arc`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------- | ----------------- | -| oid | num | 目标id | | -| oid_type | num | 目标id类型 | `0`视频(oid=avid) | -| title | str | 标题 | | -| status | num | (?) | | -| pic | str | 封面url | | -| desc | str | 简介 | | - -`data`中的`author`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------- | ---- | -| mid | num | 用户mid | | -| name | str | 昵称 | | -| face | str | 头像url | | -| level | num | 用户等级 | | -| vip_info | obj | 会员信息 | | -| pendant | obj | 头像框信息 | | - -**示例:** - -查看公开笔记`cv15160286`的信息 - -```shell -curl 'https://api.bilibili.com/x/note/publish/info' \ ---data-urlencode 'cvid=15160286' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "cvid": 15160286, - "note_id": 24114044116402190, - "title": "2022哔哩哔哩拜年纪", - "summary": "我决定再重新做一个系列,叫做影评系列 那么我们这一次是影系列的第n期 我也不知道是多少期,到时候回去统计一下 今天的影评是写,2022年哔哩哔哩拜年纪 【...", - "content": "[{"insert":"我决定再重新做一个系列,叫做影评系列\n那么我们这一次是影系列的第n期\n我也不知道是多少期,到时候回去统计一下\n今天的影评是写,2022年哔哩哔哩拜年纪\n【以及往年的拜年祭,会提一下】\n看完哔哩哔哩拜年纪之后,我的触动真的很大,那今天就先写哔哩哔哩拜年纪吧。\n字数同样有点长,希望看过2022哔哩哔哩拜年纪的人可以认真看完吧!也可以说说你的想法啊!\n\n首先先说一说它的时间,因为每次都在除夕夜播放而出现要和家人看春晚,又要去抢红包之类的,所以每次都看不了直播。这一点就很糟心了。\n所以说这次同往年一样,我也是看的回放。\n一\n一开始是2233跳舞,因为我不太关注这些二次元,所以说就不详细评述了\n但是这个和去年的不问天,应该是一个系列的。都是2233在一起出镜,然后配的是一首歌,但是我觉得这首歌确实没有不问天那么惊艳我了。\n【我觉得很大的可能是今年的作曲没有泡泡老师,去年,前年的泡泡老师作的曲都真的非常的好听,而且今年的拜年纪的预告片上也有一个三首他写的歌的串烧。真的很不错。】\n二\n然后就说一下\n今年以及往年的动画\n这个主体动画真的每年做的都很不错。就是既有意义,又有故事,还有深度,同时还介绍了风俗人情和乡土民俗,真的都是非常非常好的动画,并且动画制作也很精良。\n真的想知道这些动画的主创人员都是谁,可是每次都没有标注。\n【既然谈到动画,就来说一下去年预告的一个动画叫盒中之海。其实我本来是去年看拜年纪的时候是没有看到这个预告片的\n但是今年的评论区底下,几乎每一个评论区中都在催盒中之海,于是我便去看了一下。我发现这个真的变得更有意义和深度了。\n他讲的是一个游戏,还有海神等等\n虽然感觉到它的预告片很乱,但是总觉得其中有什么联系?就是很悬疑又很惊恐但一看就很有深度的动画了!\n所以我也期待着了!】\n今年讲的是哔哩楼的故事,我觉得他的那个创意真的很好,就是自助餐厅的创意\n可以让每一个人都尝到厨师的快乐,\n但又不是真正去做厨师,如果真的能有这样一家店就好了!\n然后拜年纪传统的视频串烧节目就不说了吧。\n三\n再后来就是新春小记,俗称的是拜年曲\n去年的拜年曲是吉祥话,我觉得两个都很好听,但是说去年的都是我认识并且比较喜欢的歌手,可以今年的歌手一个都不认识了[em]e107[/em]\n但是近两年的但连许都用了说话开篇,然后其中高潮的时候都是顶针的方式来演唱,可能这也是一个习俗吧,但真的还比较好听!\n四\n一些没有触动的作品就不说了\n所以接下来是灯火!\n我没有想到今年过年能再一次听到\n《灯火里的中国》!\n因为今年春晚没有周深还有些遗憾呢!\n但虽然这首歌不是周深唱的,但也温暖人心!\n这个应该与去年的《我的祖国》是一个系列的!\n五\n四迹老师的动画一如既往的有意思\n【但就是少了灵魂快板……】\n去年和前年的快板真的深入人心了!\n所以我还是最喜欢去年的\n“这个好诶!”\n六\n邪教老师好几年没有写燃曲了哈哈哈哈哈哈\n但这个风灵玉秀和拜年祭一起做的动画挺好的\n虽然我不知道风灵玉秀是什么动画\n但武侠版的这个动画的动作做的很细致\n又不是很快,看的舒服又清晰\n配上音乐……\n【我不在想再说还不错了哈哈哈哈哈哈哈】\n七\n终于到我最喜欢的一首人演唱的歌曲\n【哈哈哈哈哈为了不与卡农冲突】\n《快乐手帐》\n我要把纳兰寻风的词吹爆!!!!!!!!!\n“跟着我,哒哒哒哒,搭个舞台\n跟着我,哒哒哒哒,大步迈开”\n“生活就是平平淡淡,偶尔磕磕绊绊\n让脑筋多转转,往好处看看!”\n真的好温暖!积极向上!向前看!\n这个初音未来的声音也没有不适感了!\n这个真的好棒!\n八\n然后是沃玛!\n沃玛的脑回路真的很独特!\n他的这个系列是视频真的很独特又新奇!\n这个不好描述……自己去看吧!\n沃玛的声音也好听!哈哈哈哈哈哈哈\n九\n魔术跳过吧\n上面是这次拜年级我最喜欢的一个节目,第大调卡农。\n这个真的很温暖,还有小提琴和钢琴的两个二重奏,就是非常的震撼人心,很感动。\n再配上他的画面,从一个小孩儿到最后的老人,感觉这一生都可以用这首歌来概括。所以说真的很感动又很温暖,\n而且这个节目的副标题是:\n致敬一生中每一个重要时刻\n所以更感动了!\n十\n拜年祭燃曲《弈》\n意境真的很扩大,不看注释完全看不懂词啊\n但去还比较好听,但感觉没有去年的《万象霜天》惊艳\n那我在b站上面看到一个视频,把这八年的八个燃曲在一起放,然后《弈》真的听起来很明显,很明显。\n高潮很高,很好听!\n所以苍穹是sv还是v啊?\n十一\n这次cilicili的《另一个我》没有做好\n可能是因为去年是《时光盲盒》真的太棒了!!!!\n“一遍遍,我回来了!……辛苦了!”\n反而今年的歌没有触动\n这是我唯一一个跳过了大约一分钟的节目\n十二\n后面几个节目都具有讽刺意义\n但那个三年都放的那个讽刺动画系列\n我属实看不懂哈哈哈哈哈哈哈哈\n梗太多了哈哈哈哈哈哈真有些看不懂\n十三\n终于到《除夕》了\n音阙诗听第二次上拜年祭!\n第一次安安和镜子演唱《与梦盛开》\n第二次是音阙诗听团队创作《除夕》\n同样是音阙诗听味啊!\n这次的词写的还不错!\n所以,节日系列开更!\n【但A-SOUL究竟是什么组合,根本没听说过啊】\n十四\n最后一个节目。\n流年如歌,是前年的最后一个节目,但是我那时候还不习惯听V曲,所以说几乎完全就跳过了,那个节目没有听。\n但是这个纳兰寻风作的词,以及这个西门振作的曲,真的配合起来好好听。\n还是要再吹一下纳兰寻风老师的词真的好棒,然后同样和上一个说的一样,温暖,感动,就有积极向上的那种乐观。\n“你是冰雪消融唤醒万物第一缕花香……”\n“湖面上小船儿晃晃岁月长……”\n【但是纳兰寻风老师究竟是做什么的?\n好像经常调教也能看到他哈哈哈哈哈哈\n没有特别关注】\n然后我每次听一听的是泠鸢翻唱的版本,这一次是让刷牙老师来唱的,男声和女声唱有有别样的风味\n这真的就像《难忘今宵》一样,要待在每一场拜年纪嘛?\n新年的那一天晚上都随着流年如歌,进入梦乡!\n人生如梦,流年似水,岁月如歌,\n春夏秋冬,年复一年\n唯有自己不变\n去下一个十年找到属于自己的答案吧!\n哔哩哔哩乾杯!\n\n\n十五【正好是十五哈哈哈哈哈】\n《五十》这个节目是很晚的时候看的\n有些悬疑,甚至有些恐怖,但引起了许多思考\n写太多了,就不详说了……\n【再次期待艾导的《盒中之海》!】\n\n哔哩哔哩( ゜ -゜)つロ 乾杯~​\n——今日发布于Q,转到哔哩哔哩!\n"}]", - "cid_count": 0, - "pub_status": 2, - "tags": [], - "arc": { - "oid": 338677252, - "title": "2022哔哩哔哩拜年纪", - "status": 0, - "oid_type": 0, - "pic": "http://i2.hdslb.com/bfs/archive/1e683a5363f35aa0a65419dbf145177099e38f90.jpg", - "desc": "" - }, - "author": { - "mid": 523870870, - "name": "夜达星xxxxxxx", - "face": "http://i1.hdslb.com/bfs/face/2cdfd277e63b6bb1f400ed616b5caf0a04196f28.jpg", - "level": 3, - "vip_info": { - "type": 0, - "status": 0, - "due_date": 0, - "vip_pay_type": 0, - "theme_type": 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": "" - } - }, - "forbid_note_entrance": false - } -} -``` - -
diff --git a/note/list.md b/note/list.md deleted file mode 100644 index 0efe584..0000000 --- a/note/list.md +++ /dev/null @@ -1,660 +0,0 @@ -# 笔记列表 - -- [查询稿件私有笔记](#查询稿件私有笔记) -- [查询用户私有笔记](#查询用户私有笔记) -- [查询稿件公开笔记](#查询稿件公开笔记) -- [查询用户公开笔记](#查询用户公开笔记) - ---- - -## 查询稿件私有笔记 - -> https://api.bilibili.com/x/note/list/archive - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -该接口只能查询私有笔记,无法查询公开笔记 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ------------------------ | ------ | ----------------- | -| oid | num | 目标id | 必要 | | -| oid_type | num | 目标id类型 | 必要 | `0`视频(oid=avid) | -| csrf | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | -------------------------------------------------- | -| noteIds | array | 笔记列表 | 无笔记则无此项
可能后续会允许视频添加多个笔记 | - -`data`中的`noteIds`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------ | ---- | -| 0 | str | 笔记id | | - -**示例:** - -查询视频`av970322090`的笔记id - -```shell -curl 'https://api.bilibili.com/x/note/list/archive' \ ---data-urlencode 'oid=970322090' \ ---data-urlencode 'oid_type=0' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "noteIds":[ - "3809605586518023" - ] - } -} -``` - -
- -## 查询用户私有笔记 - -> https://api.bilibili.com/x/note/list - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ------------ | ----------- | ------------------------------------------------------- | -| ps | num | 每页项数 | 必要 | | -| pn | num | 页码 | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| page | obj | 页面信息 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---------------- | -| 0 | obj | 笔记1 | | -| n | obj | 笔记(n+1) | 按照创建顺序排列 | -| …… | obj | …… | …… | - -`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ---- | ------------ | ------------------------- | -| title | str | 笔记标题 | | -| summary | str | 笔记预览文本 | | -| mtime | str | 提交时间 | YYYY-MM-DD hh:mm | -| arc | obj | 视频信息 | | -| note_id | num | 笔记id | | -| audit_status | num | 0 | 作用尚不明确 | -| web_url | str | 笔记h5页url | | -| note_id_str | str | 笔记id str | | -| message | str | 更新信息 | "更新于 YYYY-MM-DD hh:mm" | -| forbid_note_entrance | bool | (?) | | -| likes | num | 点赞数 | | -| has_like | bool | 是否点赞 | | - -`list`中的`arc`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | ---------------------- | -| oid | num | 目标id | | -| bvid | str | 稿件bvid | | -| pic | str | 稿件封面图片url | | -| desc | str | 视频简介 | | -| status | num | 0 | | -| oid_type | num | 目标id类型 | `0`视频(oid=avid) | -| aid | num | 稿件avid | | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | -------------------- | -| total | num | 笔记总数 | | -| size | num | 每页项数 | | -| num | num | 页码 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/note/list' \ ---data-urlencode 'ps=10' \ ---data-urlencode 'pn=1' --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "title": "2022哔哩哔哩拜年纪", - "summary": " ...", - "mtime": "2022-02-16 16:46", - "arc": { - "oid": 338677252, - "bvid": "BV1fR4y1T7aV", - "pic": "http://i2.hdslb.com/bfs/archive/1e683a5363f35aa0a65419dbf145177099e38f90.jpg", - "desc": "愿大家看的开心!新年快乐,虎年大吉,欧气十足,万事顺意!ヾ(≧▽≦*)o", - "status": 0, - "oid_type": 0, - "aid": 338677252 - }, - "note_id": 24508729145690110, - "audit_status": 0, - "web_url": "https://www.bilibili.com/h5/note-app?oid=338677252&oid_type=0&pagefrom=fullpage&navhide=1&-Bct.statusbar.mode=0", - "note_id_str": "24508729145690112", - "message": "更新于 2022-02-16 16:46", - "forbid_note_entrance": false, - "likes": 0, - "has_like": false - } - ], - "page": { - "total": 1, - "size": 10, - "num": 1 - } - } -} -``` - -
- -## 查询稿件公开笔记 - -> https://api.bilibili.com/x/note/publish/list/archive - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ---------- | ------ | ----------------- | -| oid | num | 目标id | 必要 | | -| oid_type | num | 目标id类型 | 必要 | `0`视频(oid=avid) | -| ps | num | 每页项数 | 必要 | | -| pn | num | 页码 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ----- | ------------ | ---- | -| list | array | 公开笔记列表 | | -| page | obj | 页面信息 | | -| show_public_note | bool | | | -| message | str | | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---------------- | -| 0 | obj | 笔记1 | | -| n | obj | 笔记(n+1) | 按照创建顺序排列 | -| …… | obj | …… | …… | - -`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------------------- | ------------------------- | -| cvid | num | 公开笔记对应的专栏cvid | | -| title | str | 笔记标题 | | -| summary | str | 笔记预览 | | -| pubtime | str | 发布时间 | YYYY-MM-DD hh:mm | -| web_url | str | 笔记h5页url | | -| message | str | 更新信息 | "更新于 YYYY-MM-DD hh:mm" | -| author | obj | 作者信息 | | -| likes | num | 点赞数 | | -| has_like | bool | 是否点赞 | 需要登录(Cookie) | - -`list`中的对象中的`author`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ---------- | ---- | -| mid | num | 用户mid | | -| name | str | 昵称 | | -| face | str | 头像url | | -| level | num | 用户等级 | | -| vip_info | obj | 会员信息 | | -| pendant | obj | 头像框信息 | | - -**示例:** - -查询视频`av338677252`的公开笔记列表 - -```shell -curl 'https://api.bilibili.com/x/note/publish/list/archive' \ ---data-urlencode 'oid=338677252' \ ---data-urlencode 'oid_type=0' \ ---data-urlencode 'ps=10' \ ---data-urlencode 'pn=1' --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "cvid": 15160286, - "title": "2022哔哩哔哩拜年纪", - "summary": "我决定再重新做一个系列,叫做影评系列 那么我们这一次是影系列的第n期 我也不知道是多少期,到时候回去统计一下 今天的影评是写,2022年哔哩哔哩拜年纪 【...", - "pubtime": "2022-02-07 23:44", - "web_url": "https://www.bilibili.com/h5/note-app/view?cvid=15160286&pagefrom=ugcvideo", - "message": "更新于 2022-02-07 23:44", - "author": { - "mid": 523870870, - "name": "夜达星xxxxxxx", - "face": "http://i1.hdslb.com/bfs/face/2cdfd277e63b6bb1f400ed616b5caf0a04196f28.jpg", - "level": 3, - "vip_info": { - "type": 0, - "status": 0, - "due_date": 0, - "vip_pay_type": 0, - "theme_type": 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": "" - } - }, - "likes": 7, - "has_like": false - }, - { - "cvid": 15086217, - "title": "2022哔哩哔哩拜年纪", - "summary": "节目表,多图预警,方便各位时间戳跳转…… 01:20 New Day [图片] 06:32 重返哔哩楼1 [图片] 11:06 嗨,...", - "pubtime": "2022-02-01 20:07", - "web_url": "https://www.bilibili.com/h5/note-app/view?cvid=15086217&pagefrom=ugcvideo", - "message": "更新于 2022-02-01 20:07", - "author": { - "mid": 3810985, - "name": "Remレム22", - "face": "http://i1.hdslb.com/bfs/face/4cce970eb1b9fb8b322d49133a11caa630178728.jpg", - "level": 6, - "vip_info": { - "type": 2, - "status": 1, - "due_date": 1694880000000, - "vip_pay_type": 1, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - } - }, - "likes": 22, - "has_like": false - }, - { - "cvid": 15080841, - "title": "2022哔哩哔哩拜年纪", - "summary": "2022哔哩哔哩拜年纪从厨师的角度开始了故事,而厨师象征着每个人,每一道菜都是每个厨师用汗水耕耘出来的,并且在主线故事中穿插这不同的小故事,代表了近几年生...", - "pubtime": "2022-02-01 10:10", - "web_url": "https://www.bilibili.com/h5/note-app/view?cvid=15080841&pagefrom=ugcvideo", - "message": "更新于 2022-02-01 10:10", - "author": { - "mid": 482114483, - "name": "沐曦mornal", - "face": "http://i2.hdslb.com/bfs/face/cf1ef9c2045e317dfe6dbe8659b6f7a69c7572d5.jpg", - "level": 4, - "vip_info": { - "type": 1, - "status": 1, - "due_date": 1646755200000, - "vip_pay_type": 1, - "theme_type": 0, - "label": { - "path": "", - "text": "大会员", - "label_theme": "vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "", - "role": 1, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - } - }, - "likes": 7, - "has_like": false - }, - { - "cvid": 15080246, - "title": "2022哔哩哔哩拜年纪", - "summary": "niumniumnium~~~33是我的菜了! 这次的跨年纪呢确实不同于以往。我发现现代技术确实给类似的活动提供了平台与支持,但是不可否认的是bilibi...", - "pubtime": "2022-02-01 08:59", - "web_url": "https://www.bilibili.com/h5/note-app/view?cvid=15080246&pagefrom=ugcvideo", - "message": "更新于 2022-02-01 08:59", - "author": { - "mid": 1049943541, - "name": "吃瓜的DINGBALL", - "face": "http://i1.hdslb.com/bfs/face/93e7a3826586338e15e5703f9d49bb3bbd0adfa5.jpg", - "level": 2, - "vip_info": { - "type": 1, - "status": 0, - "due_date": 1641744000000, - "vip_pay_type": 0, - "theme_type": 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": "" - } - }, - "likes": 10, - "has_like": false - }, - { - "cvid": 15077197, - "title": "2022哔哩哔哩拜年纪", - "summary": "23333333333333333333333333333333333333333333333333333333333333333333333333333...", - "pubtime": "2022-01-31 22:53", - "web_url": "https://www.bilibili.com/h5/note-app/view?cvid=15077197&pagefrom=ugcvideo", - "message": "更新于 2022-01-31 22:53", - "author": { - "mid": 433136442, - "name": "KiBi_3", - "face": "http://i0.hdslb.com/bfs/face/4c11d1419316f14b8b0f5c146d0cd34627955244.jpg", - "level": 2, - "vip_info": { - "type": 0, - "status": 0, - "due_date": 0, - "vip_pay_type": 0, - "theme_type": 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": "" - } - }, - "likes": 2, - "has_like": false - }, - { - "cvid": 15077019, - "title": "2022哔哩哔哩拜年纪", - "summary": "2022加油吖!~~~~~~~~~~~~~~~~~~~~~2022加油吖!2022加油吖!2022加油吖!2022加油吖!2022加油吖!2022加油吖!...", - "pubtime": "2022-01-31 22:36", - "web_url": "https://www.bilibili.com/h5/note-app/view?cvid=15077019&pagefrom=ugcvideo", - "message": "更新于 2022-01-31 22:36", - "author": { - "mid": 11283554, - "name": "zhen_____", - "face": "http://i0.hdslb.com/bfs/baselabs/381fcc3865daf85bd6a1ddc4b6dfbd11ba937dc9.jpg", - "level": 6, - "vip_info": { - "type": 2, - "status": 1, - "due_date": 1730736000000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 5459, - "name": "星座系列:巨蟹座", - "image": "http://i2.hdslb.com/bfs/garb/item/a6e5b6b36a4a6c00ca8881ecc837c2aa9ebcb53d.png", - "expire": 0, - "image_enhance": "http://i2.hdslb.com/bfs/garb/item/a6e5b6b36a4a6c00ca8881ecc837c2aa9ebcb53d.png", - "image_enhance_frame": "" - } - }, - "likes": 5, - "has_like": false - } - ], - "page": { - "total": 6, - "size": 10, - "num": 1 - }, - "show_public_note": true, - "message": "" - } -} -``` - -
- -## 查询用户公开笔记 - -> https://api.bilibili.com/x/note/publish/list/user - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| ps | num | 每页项数 | 必要 | | -| pn | num | 页码 | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----- | -------- | ---- | -| list | array | 明细列表 | | -| page | obj | 页面信息 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---------------- | -| 0 | obj | 笔记1 | | -| n | obj | 笔记(n+1) | 按照创建顺序排列 | -| …… | obj | …… | …… | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ---- | -| total | num | 笔记总数 | | -| size | num | 每页项数 | | -| num | num | 页码 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/note/publish/list/user' \ ---data-urlencode 'ps=10' \ ---data-urlencode 'pn=1' --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "page": { - "total": 0, - "size": 10, - "num": 1 - } - } -} -``` - -
diff --git a/note/readme.md b/note/readme.md deleted file mode 100644 index dbf0223..0000000 --- a/note/readme.md +++ /dev/null @@ -1,159 +0,0 @@ -# 视频笔记 - -2020-11-16 B站推出了测试版的功能——"视频笔记",与视频稿件关联,为富文本模式,可供记录观看视频时的感悟以及视频中的重要内容,目前只可在web端操作 - -笔记分为私有笔记和公开笔记,一个稿件只能添加一篇私有笔记,但可以公开多篇笔记 - -公开笔记与【专栏】性质相同,使用`cvid`寻址相应的公开笔记 - ---- - -**继续查看:** - -- [笔记列表](list.md) -- [笔记详细信息](info.md) -- [笔记操作](action.md) - ---- - -## 附表-笔记正文序列格式 - -根数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 第1个元素 | | -| n | obj | 第(n+1)个元素 | | -| …… | obj | …… | …… | - -根数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------ | ------------------- | -| attributes | obj | 元素属性 | 无属性无此项 | -| insert | str | 元素内容 | 为跳转/图片时无此项 | -| insert | obj | 元素跳转信息 | 非跳转/图片时无此项 | - -对象中的`attributes`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------- | ------------------------------ | -| bold | bool | 是否加粗 | | -| strike | bool | 是否删除线 | | -| underline | bool | 是否下划线 | | -| background | str | 背景颜色 | | -| color | str | 文字颜色 | | -| list | str | 列表属性 | ordered有序列表/bullet无序列表 | -| size | str | 文字字号 | | - -对象中的`insert`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | ------ | -| tag | obj | 跳转标签 | 二选一 | -| imageUpload | obj | 笔记图片 | 二选一 | - -`insert`中的`tag`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ----------------- | ------------ | -| cid | num | 视频cid | | -| status | num | 0 | 作用尚不明确 | -| index | num | 在稿件中的分P索引 | | -| seconds | num | 视频进度 | | -| cidCount | num | 稿件总分P数 | | -| key | str | 标签创建时间戳 | | -| title | str | output | 作用尚不明确 | - -`insert`中的`imageUpload`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ---------- | ------------ | -| url | str | 图片链接 | | -| status | str | done | 作用尚不明确 | -| width | num | 图片宽度-2 | | - -示例: - -以下笔记正文序列包含`字号`、`加粗`、`高亮`、`普通文本`格式 - -```json -[ - { - "attributes": { - "size": "24px", - "bold": true - }, - "insert": "关掉" - }, - { - "attributes": { - "size": "24px" - }, - "insert": "," - }, - { - "attributes": { - "size": "24px", - "bold": true - }, - "insert": "关掉" - }, - { - "insert": "," - }, - { - "attributes": { - "background": "#fff359" - }, - "insert": "一定要" - }, - { - "attributes": { - "background": "#fff359", - "bold": true - }, - "insert": "关掉" - }, - { - "insert": "\n再不关掉那些" - }, - { - "attributes": { - "bold": true - }, - "insert": "网络游戏" - }, - { - "insert": ",小孩哪有" - }, - { - "attributes": { - "bold": true - }, - "insert": "美好的未来" - }, - { - "insert": ",哪有" - }, - { - "attributes": { - "bold": true - }, - "insert": "美好的前程" - }, - { - "insert": ",祖国哪有" - }, - { - "attributes": { - "bold": true - }, - "insert": "栋梁之才" - }, - { - "insert": "\n" - } -] -``` - diff --git a/other/API_sign.md b/other/API_sign.md deleted file mode 100644 index 767b12d..0000000 --- a/other/API_sign.md +++ /dev/null @@ -1,84 +0,0 @@ -# API 签名与鉴权 - -部分客户端专用的 rest api 存在基于 sign 的鉴权,需要使用规定的`appkey`及其对应的`appsec`与原始请求参数进行签名计算 - -不同`appkey`对应不同的 app (如客户端、概念版、必剪、漫画、bililink等) - -不同平台同 app 也会存在不同的 `appkey`(如安卓端、ios端、TV端等) - -同平台同 app 下不同功能也会存在不同的 `appkey`(如登录专用、取流专用等) - -**appkey与appsec一一对应** - -- [API签名的计算方式](#API签名的计算方式) -- [已知的APPKey](#已知的APPKey) - ---- - -## API签名的计算方式 - -首先为参数中添加`appkey`字段,然后按照参数的 key 重新排序,再将重排序后的参数使用 url query 格式序列化拼接与该 appkey 相对应的 appsec (盐值) 进行**md5 hash计算**(32位小写),该 hash 便是 API 签名 - -为参数尾部增添`sign`字段,它的值为上一步计算所得的 hash,一并作为表单提交 - -**实例:** - -使用 appkey = `1d8b6e7d45233436`, appsec = `560c52ccd288fed045859ed18bffd973` 对如下 `params` 参数进行签名 - -```python -import hashlib -import urllib.parse - -def appsign(params, appkey, appsec): - '为请求参数进行 api 签名' - params.update({'appkey': appkey}) - params = dict(sorted(params.items())) # 重排序参数 key - query = urllib.parse.urlencode(params) # 序列化参数 - sign = hashlib.md5((query+appsec).encode()).hexdigest() # 计算 api 签名 - params.update({'sign':sign}) - return params - -appkey = '1d8b6e7d45233436' -appsec = '560c52ccd288fed045859ed18bffd973' -params = { - 'id':114514, - 'str':'1919810', - 'test':'いいよ,こいよ', -} -signed_params = appsign(params, appkey, appsec) -query = urllib.parse.urlencode(signed_params) -print(signed_params) -print(query) -``` - -输出以下内容,分别是进行 api 签名后参数的 dict 以及 url query 格式 - -``` -{'appkey': '1d8b6e7d45233436', 'id': 114514, 'str': '1919810', 'test': 'いいよ,こいよ', 'sign': '01479cf20504d865519ac50f33ba3a7d'} -appkey=1d8b6e7d45233436&id=114514&str=1919810&test=%E3%81%84%E3%81%84%E3%82%88%EF%BC%8C%E3%81%93%E3%81%84%E3%82%88&sign=01479cf20504d865519ac50f33ba3a7d -``` - -## 已知的APPKey - -| appkey | appsec(sign盐值) | 平台 | 应用 | 备注 | -|------------------|----------------------------------|-----|----------|------| -| 07da50c9a0bf829f | 25bdede4e1581c836cab73a48790ca6e | 安卓 | 概念版 | | -| 1d8b6e7d45233436 | 560c52ccd288fed045859ed18bffd973 | 安卓 | 客户端 | 一般用途 | -| 178cf125136ca8ea | 34381a26236dd1171185c0beb042e1c6 | 安卓 | 概念版 | | -| 27eb53fc9058f8c3 | c2ed53a74eeefe3cf99fbd01d8c9c375 | ios | 客户端 | 一般用途 | -| 37207f2beaebf8d7 | e988e794d4d4b6dd43bc0e89d6e90c43 | 安卓 | biliLink | | -| 4409e2ce8ffd12b8 | 59b43e04ad6965f34319062b478f83dd | TV | 客户端 | | -| 57263273bc6b67f6 | a0488e488d1567960d3a765e8d129f90 | 安卓 | 客户端 | | -| 8d23902c1688a798 | 710f0212e62bd499b8d3ac6e1db9302a | 安卓 | 车机版 | | -| 5dce947fe22167f9 | | 安卓 | 必剪 | | -| 7d336ec01856996b | a1ce6983bc89e20a36c37f40c4f1a0dd | 安卓 | 概念版 | | -| 85eb6835b0a1034e | 2ad42749773c441109bdc0191257a664 | | | | -| 8e16697a1b4f8121 | f5dd03b752426f2e623d7badb28d190a | 安卓 | 国际版 | | -| aae92bc66f3edfab | af125a0d5279fd576c1b4418a3e8276d | PC | 投稿工具 | | -| ae57252b0c09105d | c75875c596a69eb55bd119e74b07cfe3 | 安卓 | 国际版 | | -| bb3101000e232e27 | 36efcfed79309338ced0380abd824ac1 | 安卓 | 国际版 | | -| bca7e84c2d947ac6 | 60698ba2f68e01ce44738920a0ffe768 | 安卓 | 客户端 | 登录专用 | -| cc578d267072c94d | ffb6bb4c4edae2566584dbcacfc6a6ad | 安卓 | 轻视频 | | -| cc8617fd6961e070 | 3131924b941aac971e45189f265262be | 安卓 | 漫画 | | -| iVGUTjsxvpLeuDCf | aHRmhWMLkdeMuILqORnYZocwMBpMEOdt | 安卓 | 客户端 | 取流专用 | -| YvirImLGlLANCLvM | JNlZNgfNGKZEpaDTkCdPQVXntXhuiJEM | ios | 客户端 | 取流专用 | diff --git a/other/bvid_desc.md b/other/bvid_desc.md deleted file mode 100644 index a99c2cf..0000000 --- a/other/bvid_desc.md +++ /dev/null @@ -1,390 +0,0 @@ -# bvid说明 - -2020-03-23 B站推出了全新的稿件视频id`bvid`来接替之前的`avid`,其意义与之相同 - -详见: - -1. [【升级公告】AV号全面升级至BV号(专栏)](https://www.bilibili.com/read/cv5167957) -2. [【升级公告】AV号全面升级至BV号](https://www.bilibili.com/blackboard/activity-BV-PC.html) - ---- - -- [概述](#概述) - - [格式](#格式) - - [实质](#实质) - - [avid发号方式的变化](#avid发号方式的变化) - -- [算法概述](#算法概述) - - [av->bv算法](#av->bv算法) - - [bv->av算法](#bv->av算法) - -- [编程实现](#编程实现) - - - [Python](#Python) - - - [C](#C) - - - [TypeScript](#TypeScript) - - - [Java](#Java) - - - [Kotlin](#Kotlin) - - - [Golang](#Golang) - ---- - -## 概述 - -### 格式 - -“bvid”恒为长度为12的字符串,前两个字母为大写“BV”,后10个为base58计算结果 - -### 实质 - -“bvid"为“avid”的base58编码,可通过算法进行相互转化 - -### avid发号方式的变化 - -从2009-09-09 09:09:09 [av2](https://www.bilibili.com/video/av2)的发布到2020-03-28 19:45:02 [av99999999](https://www.bilibili.com/video/av99999999)的发布B站结束了以投稿时间为顺序的avid发放,改为随机发放avid - -~~暗示B站东方要完?泪目~~ - -## 算法概述 - -### av->bv算法 - -注:本算法及示例程序仅能编码及解码avid<` 29460791296 `,无法验证avid>=` 29460791296 `的正确性 - -1. a=(avid⊕177451812)+8728348608 -2. 以i为循环变量循环6次b[i]=(a/58^i)%58 -3. 将b[i]中各个数字转换为以下码表中的字符 - -码表: - -> fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF - -4. 初始化字符串b[i]=`BV1 4 1 7 ` - -5. 按照以下字符顺序编码表编码并填充至b[i] - -字符顺序编码表: - -> 0 -> 11 -> -> 1 -> 10 -> -> 2 -> 3 -> -> 3 -> 8 -> -> 4 -> 4 -> -> 5 -> 6 - -算法以及程序主要参考[知乎@mcfx的回答](https://www.zhihu.com/question/381784377/answer/1099438784) - -### bv->av算法 - -为以上算法的逆运算 - -## 编程实现 - -使用Python、C、TypeScript、Java、Kotlin以及Golang作为示例,欢迎社区提交更多例程 - -### Python - -```python -table = 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF' # 码表 -tr = {} # 反查码表 -# 初始化反查码表 -for i in range(58): - tr[table[i]] = i -s = [11, 10, 3, 8, 4, 6] # 位置编码表 -XOR = 177451812 # 固定异或值 -ADD = 8728348608 # 固定加法值 - -def bv2av(x): - r = 0 - for i in range(6): - r += tr[x[s[i]]] * 58 ** i - return (r - ADD) ^ XOR - -def av2bv(x): - x = (x ^ XOR) + ADD - r = list('BV1 4 1 7 ') - for i in range(6): - r[s[i]] = table[x // 58 ** i % 58] - return ''. join(r) - -print(av2bv(170001)) -print(bv2av('BV17x411w7KC')) -``` - -输出为: - -``` -BV17x411w7KC -170001 -``` - -### C - -```c -#include -#include -#include -#include - -const char table[] = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"; // 码表 -char tr[124]; // 反查码表 -const unsigned long long XOR = 177451812; // 固定异或值 -const unsigned long long ADD = 8728348608; // 固定加法值 -const int s[] = {11, 10, 3, 8, 4, 6}; // 位置编码表 - -// 初始化反查码表 -void tr_init() { - for (int i = 0; i < 58; i++) - tr[table[i]] = i; -} - -unsigned long long bv2av(char bv[]) { - unsigned long long r = 0; - unsigned long long av; - for (int i = 0; i < 6; i++) - r += tr[bv[s[i]]] * (unsigned long long)pow(58, i); - av = (r - ADD) ^ XOR; - return av; -} - -char *av2bv(unsigned long long av) { - char *result = (char*)malloc(13); - strcpy(result,"BV1 4 1 7 "); - av = (av ^ XOR) + ADD; - for (int i = 0; i < 6; i++) - result[s[i]] = table[(unsigned long long)(av / (unsigned long long)pow(58, i)) % 58]; - return result; -} - -int main() { - tr_init(); - printf("%s\n", av2bv(170001)); - printf("%u\n", bv2av("BV17x411w7KC")); - return 0; -} -``` - -输出为: - -``` -BV17x411w7KC -170001 -``` - -### TypeScript - -感谢[#417](https://github.com/SocialSisterYi/bilibili-API-collect/issues/417#issuecomment-1186475063)提供 - -```typescript -export default class BvCode { - private TABEL = 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'; // 码表 - private TR: Record = {}; // 反查码表 - private S = [11, 10, 3, 8, 4, 6]; // 位置编码表 - private XOR = 177451812; // 固定异或值 - private ADD = 8728348608; // 固定加法值 - constructor() { - // 初始化反查码表 - const len = this.TABEL.length; - for (let i = 0; i < len; i++) { - this.TR[this.TABEL[i]] = i; - } - } - av2bv(av: number): string { - const x_ = (av ^ this.XOR) + this.ADD; - const r = ['B', 'V', '1', , , '4', , '1', , '7']; - for (let i = 0; i < 6; i++) { - r[this.S[i]] = this.TABEL[Math.floor(x_ / 58 ** i) % 58]; - } - return r.join(''); - } - bv2av(bv: string): number { - let r = 0; - for (let i = 0; i < 6; i++) { - r += this.TR[bv[this.S[i]]] * 58 ** i; - } - return (r - this.ADD) ^ this.XOR; - } -} - -const bvcode = new BvCode(); - -console.log(bvcode.av2bv(170001)); -console.log(bvcode.bv2av('BV17x411w7KC')); -``` - -输出为: - -``` -BV17x411w7KC -170001 -``` - -### Java - -```java -/** - * 算法来自:https://www.zhihu.com/question/381784377/answer/1099438784 - */ -public class Util { - private static final String TABLE = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF"; - private static final int[] S = new int[]{11, 10, 3, 8, 4, 6}; - private static final int XOR = 177451812; - private static final long ADD = 8728348608L; - private static final Map MAP = new HashMap<>(); - - static { - for (int i = 0; i < 58; i++) { - MAP.put(TABLE.charAt(i), i); - } - } - - public static String aidToBvid(int aid) { - long x = (aid ^ XOR) + ADD; - char[] chars = new char[]{'B', 'V', '1', ' ', ' ', '4', ' ', '1', ' ', '7', ' ', ' '}; - for (int i = 0; i < 6; i++) { - int pow = (int) Math.pow(58, i); - long i1 = x / pow; - int index = (int) (i1 % 58); - chars[S[i]] = TABLE.charAt(index); - } - return String.valueOf(chars); - } - - public static int bvidToAid(String bvid) { - long r = 0; - for (int i = 0; i < 6; i++) { - r += MAP.get(bvid.charAt(S[i])) * Math.pow(58, i); - } - return (int) ((r - ADD) ^ XOR); - } -} -``` - -### Kotlin -```kotlin -/** - * 此程序非完全原创,改编自GH站内某大佬的Java程序,修改了部分代码,且转换为Kotlin - * 算法来源同上 - */ -object VideoUtils { - //这里是由知乎大佬不知道用什么方法得出的转换用数字 - var ss = intArrayOf(11, 10, 3, 8, 4, 6, 2, 9, 5, 7) - var xor: Long = 177451812 //二进制时加减数1 - - var add = 8728348608L //十进制时加减数2 - - //变量初始化工作,加载哈希表 - private const val table = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF" - private val mp = HashMap() - private val mp2 = HashMap() - - //现在,定义av号和bv号互转的方法 -//定义一个power乘方方法,这是转换进制必要的 - fun power(a: Int, b: Int): Long { - var power: Long = 1 - for (c in 0 until b) power *= a.toLong() - return power - } - - //bv转av方法 - fun bv2av(s: String): String { - var r: Long = 0 - //58进制转换 - for (i in 0..57) { - val s1 = table.substring(i, i + 1) - mp[s1] = i - } - for (i in 0..5) { - r += mp[s.substring(ss[i], ss[i] + 1)]!! * power(58, i) - } - //转换完成后,需要处理,带上两个随机数 - return (r - add xor xor).toString() - } - - //av转bv方法 - fun av2bv(st: String): String { - try { - var s = java.lang.Long.valueOf(st.split("av".toRegex()).dropLastWhile { it.isEmpty() } - .toTypedArray()[1]) - val sb = StringBuffer("BV1 4 1 7 ") - //逆向思路,先将随机数还原 - s = (s xor xor) + add - //58进制转回 - for (i in 0..57) { - val s1 = table.substring(i, i + 1) - mp2[i] = s1 - } - for (i in 0..5) { - val r = mp2[(s / power(58, i) % 58).toInt()] - sb.replace(ss[i], ss[i] + 1, r!!) - } - return sb.toString() - } catch (e: ArrayIndexOutOfBoundsException) { - return "" - } - } - -} -``` - -### Golang -```golang -package main - -import "math" - -const TABLE = "fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF" - -var S = [11]uint{11, 10, 3, 8, 4, 6} - -const XOR = 177451812 -const ADD = 8728348608 - -var TR = map[string]int64{} - -// 初始化 TR -func init() { - for i := 0; i < 58; i++ { - TR[TABLE[i:i+1]] = int64(i) - } -} - -func BV2AV(bv string) int64 { - r := int64(0) - for i := 0; i < 6; i++ { - r += TR[bv[S[i]:S[i]+1]] * int64(math.Pow(58, float64(i))) - } - return (r - ADD) ^ XOR -} - -func AV2BV(av int64) string { - x := (av ^ XOR) + ADD - r := []rune("BV1 4 1 7 ") - for i := 0; i < 6; i++ { - r[S[i]] = rune(TABLE[x/int64(math.Pow(58, float64(i)))%58]) - } - return string(r) -} - -func main() { - println(AV2BV(170001)) - println(BV2AV("BV17x411w7KC")) -} -``` - -输出为: - -``` -BV17x411w7KC -170001 -``` diff --git a/other/errcode.md b/other/errcode.md deleted file mode 100644 index 534f39d..0000000 --- a/other/errcode.md +++ /dev/null @@ -1,65 +0,0 @@ -# 公共错误码 - -下表为大部分接口返回值中`code`字段值中公共的错误代码 - -- [权限类](#权限类) -- [请求类](#请求类) - ---- - -## 权限类 - -| 代码 | 含义 | -| ---- | -------------------------- | -| -1 | 应用程序不存在或已被封禁 | -| -2 | Access Key 错误 | -| -3 | API 校验密匙错误 | -| -4 | 调用方对该 Method 没有权限 | -| -101 | 账号未登录 | -| -102 | 账号被封停 | -| -103 | 积分不足 | -| -104 | 硬币不足 | -| -105 | 验证码错误 | -| -106 | 账号非正式会员或在适应期 | -| -107 | 应用不存在或者被封禁 | -| -108 | 未绑定手机 | -| -110 | 未绑定手机 | -| -111 | csrf 校验失败 | -| -112 | 系统升级中 | -| -113 | 账号尚未实名认证 | -| -114 | 请先绑定手机 | -| -115 | 请先完成实名认证 | - -## 请求类 - -| 代码 | 含义 | -| ---- | --------------------- | -| -304 | 木有改动 | -| -307 | 撞车跳转 | -| -400 | 请求错误 | -| -401 | 未认证 (或非法请求) | -| -403 | 访问权限不足 | -| -404 | 啥都木有 | -| -405 | 不支持该方法 | -| -409 | 冲突 | -| -412 | 请求被拦截 (客户端 ip 被服务端风控) | -| -500 | 服务器错误 | -| -503 | 过载保护,服务暂不可用 | -| -504 | 服务调用超时 | -| -509 | 超出限制 | -| -616 | 上传文件不存在 | -| -617 | 上传文件太大 | -| -625 | 登录失败次数太多 | -| -626 | 用户不存在 | -| -628 | 密码太弱 | -| -629 | 用户名或密码错误 | -| -632 | 操作对象数量限制 | -| -643 | 被锁定 | -| -650 | 用户等级太低 | -| -652 | 重复的用户 | -| -658 | Token 过期 | -| -662 | 密码时间戳过期 | -| -688 | 地理区域限制 | -| -689 | 版权限制 | -| -701 | 扣节操失败 | -|-8888|对不起,服务器开小差了~ (ಥ﹏ಥ)| diff --git a/other/picture.md b/other/picture.md deleted file mode 100644 index 2b1aaad..0000000 --- a/other/picture.md +++ /dev/null @@ -1,44 +0,0 @@ -# 图片格式化 - -对于\*.hdslb.com/bfs下的图片文件都可以使用以下格式化参数 - -> \*.hdslb.com/bfs/\*/\*.\[jpg/png/gif\]@{width}w\_{high}h\_{quality}q.{format} - -| 可选参数 | 含义 | 备注 | -| -------- | ---------------- | ---------------- | -| width | 图片最大限制宽度 | | -| high | 图片最大限制高度 | | -| quality | 图片质量百分比 | 仅限webp | -| format | 图片格式 | 仅限png/jpg/webp | - -**示例:** - -原始图片 - -https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg - -![](https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg) - -高度限制为100 - -https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@100h - -![](https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@100h) - -宽度限制为100 - -https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@100w - -![](https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@100w) - -转换格式为webp - -https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@.webp - -![](https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@.webp) - -转换为webp图片质量为1% - -https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@1q.webp - -![](https://i1.hdslb.com/bfs/archive/e5fff1472bad1c0c6bcb3004205f9be23b58ffc0.jpg@1q.webp) \ No newline at end of file diff --git a/other/time_stamp.md b/other/time_stamp.md deleted file mode 100644 index eff0881..0000000 --- a/other/time_stamp.md +++ /dev/null @@ -1,79 +0,0 @@ -# 获取当前时间戳 - -- [获取当前时间戳](#获取当前时间戳) - - [获取当前时间戳](#获取当前时间戳-1) - - [获取服务器端UTC时间](#获取服务器端utc时间) - ---- - -## 获取当前时间戳 - -> https://api.bilibili.com/x/report/click/now - -*请求方式:GET* - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ---- | -| now | num | 当前的时间戳 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/report/click/now' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "now": 1592666471 - } -} -``` - -
- -## 获取服务器端UTC时间 - -> https://interface.bilibili.com/serverdate.js - -*请求方式:GET* - -**js回复:** - -```js -window.serverdate = Date.UTC(YYYY, M, D, h, m, s); -``` - -**示例:** - -```shell -curl 'https://interface.bilibili.com/serverdate.js' -``` - - -
-查看响应示例: - -```js -window.serverdate = Date.UTC(2021, 4, 16, 17, 31, 8); -``` -
diff --git a/ranking&dynamic/85videos.md b/ranking&dynamic/85videos.md deleted file mode 100644 index 206f844..0000000 --- a/ranking&dynamic/85videos.md +++ /dev/null @@ -1,199 +0,0 @@ - - -# 入站必刷 - -[获取入站必刷85个视频](#85videos) - -## 获取入站必刷85个视频 - -> https://api.bilibili.com/x/web-interface/popular/precious - -**url参数** - -| 字段 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ----- | -------- | --------------------------- | -| page | int | 第几页 | 不必要 | 默认为1 | -| page_size | int | 每一页的视频数 | 不必要 | 可以设为 85 获取所有的视频 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 视频列表 | | - -`data` 字段: - -| 字段 | 类型 | 内容 | 备注 | -| - | - | - | - | -| title | string | 标题 | 入站必刷 | -| media_id | int | media_id | | -| explain | string | 解释(概括)| 我不允许还有人没看过这85个宝藏视频! | -| list | list | 列表 | | - -`data` 中的 `list` 字段: - -| 字段 | 类型 | 内容 | 备注 | -| - | - | - | - | -| aid | int | aid | | -| videos | int | 视频数? | | -| tid | int | 分区 id | | -| tname | string | 分区名称 | | -| copyright | int | 版权 | | -| pic | url | 封面 url | | -| title | string | 标题 | | -| pubdate | int | 发布时间 | 时间戳 | -| ctime | int | 暂不清楚 | 时间戳 | -| desc | string | 简介 | | -| state | int | 暂不清楚 | | -| duration | int | 视频时长 | 单位为秒 | -| mission_id | int | 暂不清楚 | | -| rights | dict | 暂不清楚 | 好像没啥么用 | -| owner | dict | 作者 | | -| stat | dict | 状态 | | -| dynamic | string | 动态发布时写的文字 | | -| cid | int | cid | | -| dimension | dict | 视频的一些属性 | | -| season_id | int | 暂不清楚 | | -| short_link | string | 短链 | | -| short_link_v2 | string | 短链 | 第二版 | -| bvid | string | bvid | | -| season_type | int | 分区 tid? | | -| is_ogv | bool | 暂不清楚 | | -| ogv_info | dict/null? | 暂不清楚 | | -| rcmd_reason | string? | 暂不清楚 | | -| achievement | string | 荣誉概述 | | - -**示例:** - -``` shell -curl 'https://api.bilibili.com/x/web-interface/popular/precious' -``` -
-查看响应事例: - -``` json -{ - "code":0, - "message":"0", - "ttl":1, - "data":{ - "title":"入站必刷", - "media_id":496307088, - "explain":"我不允许还有人没看过这85个宝藏视频!", - "list":[ - { - "aid":715024588, - "videos":1, - "tid":233, - "tname":"极客DIY", - "copyright":1, - "pic":"http://i1.hdslb.com/bfs/archive/55ce9a4d1797ec56a0d4ed727f1a279b89ec3664.jpg", - "title":"【才浅】15天花20万元用500克黄金敲数万锤纯手工打造三星堆黄金面具", - "pubdate":1618207101, - "ctime":1618207101, - "desc":"倾家荡产求三连支持!!!请大家帮忙给新系列想个名字,点赞一百万的话制作三星堆黄金权杖,不会真的可以点到一百万吧\nbgm:\n-Old-B - 【Free Beat】侠之道 、于剑飞 - 01 片头曲 帝陵、AniFace - 夜辞秋江", - "state":0, - "duration":717, - "mission_id":16881, - "rights":{ - "bp":0, - "elec":0, - "download":0, - "movie":0, - "pay":0, - "hd5":0, - "no_reprint":1, - "autoplay":1, - "ugc_pay":0, - "is_cooperation":0, - "ugc_pay_preview":0, - "no_background":0, - "arc_pay":0, - "pay_free_watch":0 - }, - "owner":{ - "mid":2200736, - "name":"才疏学浅的才浅", - "face":"http://i2.hdslb.com/bfs/face/1f4819b224cd882025a9a6a5f2c6680c332f37bc.jpg" - }, - "stat":{ - "aid":715024588, - "view":13833908, - "danmaku":215105, - "reply":39792, - "favorite":619513, - "coin":2484204, - "share":122302, - "now_rank":0, - "his_rank":1, - "like":2338710, - "dislike":0 - }, - "dynamic":"倾家荡产求三连!!", - "cid":323723441, - "dimension":{ - "width":1920, - "height":1080, - "rotate":0 - }, - "season_id":19992, - "short_link":"https://b23.tv/BV16X4y1g7wT", - "short_link_v2":"https://b23.tv/BV16X4y1g7wT", - "bvid":"BV16X4y1g7wT", - "season_type":0, - "is_ogv":false, - "ogv_info":null, - "rcmd_reason":"", - "achievement":"央视新华社点赞,博物馆喊话来上班!" - }, - ... and more - ] - } -} -``` -
diff --git a/ranking&dynamic/dynamic.md b/ranking&dynamic/dynamic.md deleted file mode 100644 index 941a0b1..0000000 --- a/ranking&dynamic/dynamic.md +++ /dev/null @@ -1,199 +0,0 @@ -# 分区最新视频 - -- [获取分区最新视频列表](#获取分区最新视频列表) - ---- - -## 获取分区最新视频列表 - -> https://api.bilibili.com/x/web-interface/dynamic/region - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ------- | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页项数 | 非必要 | 默认为5 | -| rid | num | 目标分区tid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ------ | -------- | ---- | -| archives | array | 视频列表 | | -| page | obj | 页面信息 | | - -`data`中的`archives`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| 0 | obj | 视频1 | | -| n | obj | 视频(n+1) | | -| …… | obj | …… | …… | - -`data`中的`archives`数组中的对象: - -基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ---- | -| count | num | 总计视频数 | | -| num | num | 当前页码 | | -| size | num | 每页项数 | | - -**示例:** - -获取`tid=21`(生活->日常)分区中的2条最新动态视频信息 - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/dynamic/region' \ ---data-urlencode 'rid=21' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "page": { - "num": 1, - "size": 2, - "count": 189 - }, - "archives": [{ - "aid": 56998612, - "videos": 24, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/76536be425ed98ba1f1b9aef1ada3a09f94c9f04.jpg", - "title": "操控百万UP主的一天!", - "pubdate": 1562568733, - "ctime": 1561624175, - "desc": "拍这个视频还挺辛苦的,希望大家喜欢的话给个三连叭!", - "state": 0, - "attribute": 536887424, - "duration": 1864, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 0, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 2206456, - "name": "花少北丶", - "face": "http://i1.hdslb.com/bfs/face/86ef6895a8f88c80f2885e7eb9ba7989db437b93.jpg" - }, - "stat": { - "aid": 56998612, - "view": 2863604, - "danmaku": 82588, - "reply": 5502, - "favorite": 65471, - "coin": 104905, - "share": 5815, - "now_rank": 0, - "his_rank": 12, - "like": 165638, - "dislike": 0 - }, - "dynamic": "你想看的这里都有!", - "cid": 99548502, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1Wx411d7jX" - }, { - "aid": 837503204, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/7025827d8dbfc6139a2d066daa51a08897282534.jpg", - "title": "“都是小人物,就别说什么大话了,活着就行”", - "pubdate": 1585264054, - "ctime": 1585264054, - "desc": "每一位用心生活的小人物,都是各自生活中不平凡的英雄!", - "state": 0, - "attribute": 16512, - "duration": 295, - "mission_id": 12868, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 350928606, - "name": "彼岸的岛", - "face": "http://i2.hdslb.com/bfs/face/9814b8b6defc045aa07c3bb08e8a30e63afd9f3e.jpg" - }, - "stat": { - "aid": 837503204, - "view": 142239, - "danmaku": 602, - "reply": 702, - "favorite": 4728, - "coin": 4712, - "share": 917, - "now_rank": 0, - "his_rank": 0, - "like": 7700, - "dislike": 0 - }, - "dynamic": "#全能打卡挑战##正能量##感人#", - "cid": 169901162, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "bvid": "BV1cg4y1a7tB" - }] - } -} -``` - -
diff --git a/ranking&dynamic/popular.md b/ranking&dynamic/popular.md deleted file mode 100644 index f849eb4..0000000 --- a/ranking&dynamic/popular.md +++ /dev/null @@ -1,1298 +0,0 @@ -# 热门视频 - -- [获取当前热门视频列表](#获取当前热门视频列表) - ---- - -## 获取当前热门视频列表 - -> https://api.bilibili.com/x/web-interface/popular - -_请求方式:GET_ - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | --------- | -| pn | num | 页码 | 非必要 | 默认为 1 | -| ps | num | 每页项数 | 非必要 | 默认为 20 | - ->> 注意:当携带Cookie时返回的数据的排行是个性化的 - -**json 回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为 0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------------- | ---- | -| list | array | 视频列表 | | -| no_more | bool | 是否有更多数据 | false:下页还有数据
true:下页没有数据 | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| 0 | obj | 视频1 | | -| n | obj | 视频(n+1) | | -| …… | obj | …… | …… | - -`data`中的`list`数组中的对象: - -基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 - - -**示例:** - -获取当前热门视频列表(不携带 Cookie) - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/popular' \ ---data-urlencode 'ps=20' \ ---data-urlencode 'pn=1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "aid": 260200041, - "videos": 1, - "tid": 212, - "tname": "美食侦探", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/02641bbfadc63f5224834b096cc6c440e14f385f.jpg", - "title": "街头碳水大师:当北方人看到 南方那么多面食…", - "pubdate": 1662198796, - "ctime": 1662198796, - "desc": "想不到这个南方街头,竟把我俩吃到深夜…", - "state": 0, - "duration": 803, - "mission_id": 873400, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 99157282, - "name": "盗月社食遇记", - "face": "http://i1.hdslb.com/bfs/face/c7fb5da587c2ec6b56ad47579933fda34c000457.jpg" - }, - "stat": { - "aid": 260200041, - "view": 295188, - "danmaku": 3590, - "reply": 1465, - "favorite": 3651, - "coin": 12006, - "share": 2039, - "now_rank": 0, - "his_rank": 0, - "like": 39568, - "dislike": 0 - }, - "dynamic": "这玩意怎么可能不好吃呢?!", - "cid": 822798408, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1fe411g7F5", - "short_link_v2": "https://b23.tv/BV1fe411g7F5", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220903a22ujdxvylswyat3oqlkj8wax_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1fe411g7F5", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "很多人点赞", "corner_mark": 0 } - }, - { - "aid": 472731550, - "videos": 1, - "tid": 17, - "tname": "单机游戏", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/7ebaad047fb96e5d14b8ebb2eabf4b39a4ef10a6.jpg", - "title": "卸载!!!!!", - "pubdate": 1662177000, - "ctime": 1662093287, - "desc": "再见!!!!!", - "state": 0, - "duration": 1090, - "mission_id": 899516, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 546195, - "name": "老番茄", - "face": "http://i0.hdslb.com/bfs/face/bc5ca101313d4db223c395d64779e76eb3482d60.jpg" - }, - "stat": { - "aid": 472731550, - "view": 997762, - "danmaku": 19350, - "reply": 4339, - "favorite": 44208, - "coin": 113024, - "share": 2172, - "now_rank": 0, - "his_rank": 7, - "like": 205331, - "dislike": 0 - }, - "dynamic": "", - "cid": 821658341, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1AK411f7KR", - "short_link_v2": "https://b23.tv/BV1AK411f7KR", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220902a23i8b6s8004xd62mg3z2ol72_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1AK411f7KR", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "20万点赞", "corner_mark": 0 } - }, - { - "aid": 730159604, - "videos": 1, - "tid": 173, - "tname": "桌游棋牌", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/524de9769a0c06d8300950e24b52dbdd7a192613.jpg", - "title": "老板?架空啦!", - "pubdate": 1662188531, - "ctime": 1662184216, - "desc": "希望你喜欢这次的视频,这次玩的是《我是大老板》。\n游戏的规则不算简单:\n轮到你时,你可以选择发起生意;\n当然你也可以选择补充手牌。\n做成生意会需要一些字母,相当于需要有人投资,ABCDEF就是各位投资人;\n身份类的字母是永久的,除非别人用招募牌给挖走;\n手牌中的字母是一次性的。\n为了成功完成生意,你作为老板需要和你的合伙人商量好价钱,完成后按约定分给合伙人。\n当然,失败的生意是挣不到钱的;\n并且,你作为老板可以 决定是否做这单生意。\n数个回合后,摇骰子决定游戏是否结束;\n游戏结束时,钱最多的人就赢了。\n注意", - "state": 0, - "duration": 941, - "mission_id": 917790, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 3913194, - "name": "高斯Goh", - "face": "http://i0.hdslb.com/bfs/face/d4c65b5c6be3f9d845c15401173f98b130728851.jpg" - }, - "stat": { - "aid": 730159604, - "view": 603101, - "danmaku": 6535, - "reply": 3197, - "favorite": 13123, - "coin": 22361, - "share": 1587, - "now_rank": 0, - "his_rank": 68, - "like": 87913, - "dislike": 0 - }, - "dynamic": "", - "cid": 822547268, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1BD4y1B7ji", - "short_link_v2": "https://b23.tv/BV1BD4y1B7ji", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220903a21dbowrqfua2zw3hxxeffqtt_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1BD4y1B7ji", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "8万点赞", "corner_mark": 1 } - }, - { - "aid": 942708210, - "videos": 1, - "tid": 85, - "tname": "小剧 场", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/fc453b388f94300e69134a67f2f02d3136462c60.jpg", - "title": "【火焰醉枪】卧槽!这火焰枪竟然不是特效,30个小时匠心制作……", - "pubdate": 1662087586, - "ctime": 1662087587, - "desc": "上期做了火焰醉剑后,大家都说想看火焰醉枪,这次熬了两个大夜拍完啦,制作不易,希望大家多多支持啊!", - "state": 0, - "duration": 156, - "mission_id": 926961, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 432083444, - "name": "俩大叔的功夫梦", - "face": "http://i2.hdslb.com/bfs/face/40bfa8df7854402bdecd21a9c7a67bc1bb891637.jpg" - }, - "stat": { - "aid": 942708210, - "view": 1583053, - "danmaku": 2300, - "reply": 1596, - "favorite": 21206, - "coin": 48190, - "share": 3088, - "now_rank": 0, - "his_rank": 13, - "like": 219810, - "dislike": 0 - }, - "dynamic": "【火焰醉枪】卧槽!这火焰枪竟然不是特效,30个小时匠心制作……", - "cid": 821595336, - "dimension": { "width": 3840, "height": 2160, "rotate": 0 }, - "short_link": "https://b23.tv/BV1yW4y1q78t", - "short_link_v2": "https://b23.tv/BV1yW4y1q78t", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220902a2uf2p36okkkd5tj0koh3jk17_firsti.jpg", - "pub_location": "四川", - "bvid": "BV1yW4y1q78t", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "百万播放", "corner_mark": 1 } - }, - { - "aid": 985156462, - "videos": 1, - "tid": 137, - "tname": "明星综合", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/ee633bc1f33e88a08240cb5df19a768c007871fd.jpg", - "title": "【时代少年团】《哪吒》练习室版", - "pubdate": 1662199200, - "ctime": 1662133574, - "desc": "", - "state": 0, - "duration": 254, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 3670216, - "name": "TF家族", - "face": "http://i1.hdslb.com/bfs/face/1c74336b9060d40d0ccf5e8bce7c0de34526b1e3.jpg" - }, - "stat": { - "aid": 985156462, - "view": 180284, - "danmaku": 20822, - "reply": 6925, - "favorite": 4740, - "coin": 6962, - "share": 1052, - "now_rank": 0, - "his_rank": 0, - "like": 28324, - "dislike": 0 - }, - "dynamic": "", - "cid": 822227418, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1yt4y1j7RW", - "short_link_v2": "https://b23.tv/BV1yt4y1j7RW", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220902a23cnqomtt52rac3gi8wbif37_firsti.jpg", - "pub_location": "北京", - "bvid": "BV1yt4y1j7RW", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "明星综合·人气飙升", "corner_mark": 1 } - }, - { - "aid": 857527108, - "videos": 1, - "tid": 230, - "tname": "软件应用", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/9f495c058d7825b8d45f2701b4271affbf17442b.jpg", - "title": "【苏星河】我的这个微信,你们没人用过", - "pubdate": 1661953525, - "ctime": 1661952710, - "desc": "结尾有惊喜!", - "state": 0, - "duration": 654, - "mission_id": 668476, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 598464467, - "name": "苏星河牛通", - "face": "http://i2.hdslb.com/bfs/face/836a17376b6d1c21200310137256c91731045d1b.jpg" - }, - "stat": { - "aid": 857527108, - "view": 6031262, - "danmaku": 10807, - "reply": 7949, - "favorite": 252749, - "coin": 111985, - "share": 20700, - "now_rank": 0, - "his_rank": 1, - "like": 413858, - "dislike": 0 - }, - "dynamic": "", - "cid": 820274225, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1tV4y1H72k", - "short_link_v2": "https://b23.tv/BV1tV4y1H72k", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220831qn3fp342hh8svfbtvora7zon7_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1tV4y1H72k", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "百万播放", "corner_mark": 1 } - }, - { - "aid": 857678378, - "videos": 1, - "tid": 76, - "tname": "美食制作", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/5007b350acb31aa5f4a14c96190273d5590a6cb2.jpg", - "title": "《 中 式 炸 鸡 》", - "pubdate": 1662197400, - "ctime": 1662135610, - "desc": "三连吗\n谢谢", - "state": 0, - "duration": 248, - "mission_id": 816705, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 337521240, - "name": "记录生活的蛋黄派", - "face": "http://i0.hdslb.com/bfs/face/9ba6c7a0d3a2ebfe9db2f46219ece98e210d0269.jpg" - }, - "stat": { - "aid": 857678378, - "view": 285421, - "danmaku": 5138, - "reply": 1694, - "favorite": 2757, - "coin": 9736, - "share": 763, - "now_rank": 0, - "his_rank": 0, - "like": 56170, - "dislike": 0 - }, - "dynamic": "谢谢", - "cid": 822249262, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1sV4y1p7hB", - "short_link_v2": "https://b23.tv/BV1sV4y1p7hB", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220903qn1naqorns10fx528qp3fucqw_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1sV4y1p7hB", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "5万点赞", "corner_mark": 1 } - }, - { - "aid": 602403491, - "videos": 1, - "tid": 161, - "tname": "手工", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/01bf653fd89126740b02c421207eb2519ee26f0c.jpg", - "title": "用超轻黏土捏一个小奶牛", - "pubdate": 1661607234, - "ctime": 1661607235, - "desc": "-", - "state": 0, - "duration": 60, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1160308896, - "name": "大米的摆摊日常", - "face": "http://i0.hdslb.com/bfs/face/2766a97e274c77166d208293c391b08e93cd7793.jpg" - }, - "stat": { - "aid": 602403491, - "view": 1055453, - "danmaku": 3500, - "reply": 2575, - "favorite": 23732, - "coin": 144083, - "share": 3469, - "now_rank": 0, - "his_rank": 42, - "like": 340294, - "dislike": 0 - }, - "dynamic": "", - "cid": 816374904, - "dimension": { "width": 1080, "height": 1920, "rotate": 0 }, - "short_link": "https://b23.tv/BV1pB4y157Bh", - "short_link_v2": "https://b23.tv/BV1pB4y157Bh", - "up_from_v2": 35, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220827a21lg9szf96xk8r3l38i3jet5_firsti.jpg", - "pub_location": "四川", - "bvid": "BV1pB4y157Bh", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "百万播放", "corner_mark": 1 } - }, - { - "aid": 217678690, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/1b96235f6b4736f79430362f070f96f76741b8a5.jpg", - "title": "离谱到家了!两社恐挑战去7个UP主家零元购!", - "pubdate": 1662177000, - "ctime": 1662154182, - "desc": "感谢大家的观看,这期视频剪了一个月了。希望大家喜 欢\n三十六贱笑说:这期如果点赞40W,直接拍成系列。", - "state": 0, - "duration": 1918, - "mission_id": 753163, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 285499073, - "name": "东尼ookii", - "face": "http://i2.hdslb.com/bfs/face/456b2bff7e41ab212b74e9019fda1f26362e8723.jpg" - }, - "stat": { - "aid": 217678690, - "view": 976493, - "danmaku": 11559, - "reply": 1995, - "favorite": 8791, - "coin": 37190, - "share": 1776, - "now_rank": 0, - "his_rank": 31, - "like": 133451, - "dislike": 0 - }, - "dynamic": "超 级 离 谱 新 系 列 !!!", - "cid": 822326594, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1Ja41137BA", - "short_link_v2": "https://b23.tv/BV1Ja41137BA", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220903qn2sc6o94iasldc2uix7nw6kz_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1Ja41137BA", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "13万点赞", "corner_mark": 1 } - }, - { - "aid": 857726292, - "videos": 1, - "tid": 76, - "tname": "美食制作", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/1a9fe65a51c03d69fd1d4d50cff621e7b9112e29.jpg", - "title": "羊 肉 天 花 板", - "pubdate": 1662192000, - "ctime": 1662184515, - "desc": "羊肉串:\n其实我对羊肉串还是有些研究和追求的\n羊肉记得提前泡30分钟淡盐水去 膻味\n腌肉配方:2勺生抽 1勺蚝油 2勺白胡椒粉\n香料配方:半勺白糖 3勺孜然 2勺辣椒面\n同样的配方腌羊肉和香料也可以在家里炒 着着吃", - "state": 0, - "duration": 434, - "mission_id": 912283, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 473524263, - "name": "澳洲阿彭", - "face": "http://i0.hdslb.com/bfs/face/954547cf631e4f986e5f9e3bfd65328600184b6f.jpg" - }, - "stat": { - "aid": 857726292, - "view": 335725, - "danmaku": 951, - "reply": 429, - "favorite": 3672, - "coin": 15611, - "share": 867, - "now_rank": 0, - "his_rank": 0, - "like": 45838, - "dislike": 0 - }, - "dynamic": "千万不要让猫进厨房", - "cid": 822587296, - "dimension": { "width": 3840, "height": 2160, "rotate": 0 }, - "season_id": 28525, - "short_link": "https://b23.tv/BV1tV4y1p7ux", - "short_link_v2": "https://b23.tv/BV1tV4y1p7ux", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220903a21elu6y2vu085u1gh47kqbdb_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1tV4y1p7ux", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "", "corner_mark": 0 } - }, - { - "aid": 815203242, - "videos": 1, - "tid": 216, - "tname": "鬼畜剧场", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/04a85276faffd2f4bd59a4a7f36cf69833af0fc2.jpg", - "title": "科目三:作毙", - "pubdate": 1662114430, - "ctime": 1662114430, - "desc": "看来你 是真想跟我拼一下子", - "state": 0, - "duration": 72, - "mission_id": 870359, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 7518140, - "name": "暂离二度", - "face": "http://i2.hdslb.com/bfs/face/3d31d41810f12de173515f83b150234bb08a6e72.jpg" - }, - "stat": { - "aid": 815203242, - "view": 892126, - "danmaku": 596, - "reply": 877, - "favorite": 13100, - "coin": 13068, - "share": 19249, - "now_rank": 0, - "his_rank": 92, - "like": 57099, - "dislike": 0 - }, - "dynamic": "", - "cid": 821964961, - "dimension": { "width": 1280, "height": 720, "rotate": 0 }, - "short_link": "https://b23.tv/BV1PG4y1r7JX", - "short_link_v2": "https://b23.tv/BV1PG4y1r7JX", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220902a21fhpl3fapghr9lxcwblqxu0_firsti.jpg", - "pub_location": "浙江", - "bvid": "BV1PG4y1r7JX", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "5万点赞", "corner_mark": 1 } - }, - { - "aid": 302736065, - "videos": 1, - "tid": 251, - "tname": "三农", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/a37fd6ed038127d2336d67c7e5726b9c016a0bae.jpg", - "title": "我又开始玩梗了,而且还进去了。", - "pubdate": 1662095667, - "ctime": 1662095667, - "desc": "-", - "state": 0, - "duration": 53, - "mission_id": 840062, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 50316381, - "name": "疆域阿力木", - "face": "http://i0.hdslb.com/bfs/face/05626e28bbbb34f944f28791a75a2cef4f396a6e.jpg" - }, - "stat": { - "aid": 302736065, - "view": 3078837, - "danmaku": 2722, - "reply": 3193, - "favorite": 15765, - "coin": 22301, - "share": 3463, - "now_rank": 0, - "his_rank": 3, - "like": 461326, - "dislike": 0 - }, - "dynamic": "", - "cid": 821690665, - "dimension": { "width": 1080, "height": 1920, "rotate": 0 }, - "short_link": "https://b23.tv/BV19P411V7Kz", - "short_link_v2": "https://b23.tv/BV19P411V7Kz", - "up_from_v2": 36, - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220902qn2fba1mpclsphj2deu0cb5hg_firsti.jpg", - "pub_location": "新疆", - "bvid": "BV19P411V7Kz", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "百万播放", "corner_mark": 1 } - }, - { - "aid": 557636142, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/ff263e883790351a81caa336c372807a8aabd76c.jpg", - "title": "家里有游乐园?【杜海皇】", - "pubdate": 1662180876, - "ctime": 1662180434, - "desc": "希望各位观众老爷们喜欢这期视频!\n喜欢记得点赞/投币/收藏/分享!", - "state": 0, - "duration": 905, - "mission_id": 753163, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 178029850, - "name": "杜海皇", - "face": "http://i1.hdslb.com/bfs/face/133111338ef9d6ca04515a0b517b2e837bc41e2b.jpg" - }, - "stat": { - "aid": 557636142, - "view": 692389, - "danmaku": 17406, - "reply": 3198, - "favorite": 14095, - "coin": 24362, - "share": 1470, - "now_rank": 0, - "his_rank": 44, - "like": 98582, - "dislike": 0 - }, - "dynamic": "家里有游乐园?", - "cid": 822513886, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1ae4y1d7z8", - "short_link_v2": "https://b23.tv/BV1ae4y1d7z8", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220903a2vmxll1f3m5f532fzheru0f6_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1ae4y1d7z8", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "9万点赞", "corner_mark": 1 } - }, - { - "aid": 217653051, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/f6e7436fc136c6e824d0cdcc527b366417c238b5.jpg", - "title": "不行了,我们真的土飞天了!!!", - "pubdate": 1662197177, - "ctime": 1662195861, - "desc": "宝剑嫂说点赞20W,立马开始学习究极无敌宇宙SSS难度土味舞蹈!!!\n我就不信她能学会!??\n\n邮箱:baojiansao@163.com\n记得投稿!!等你!!!", - "state": 0, - "duration": 564, - "mission_id": 753163, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 147166910, - "name": "雨哥到处跑", - "face": "http://i2.hdslb.com/bfs/face/5717b696a212199679c31857b46c3ba5c465ee06.jpg" - }, - "stat": { - "aid": 217653051, - "view": 186234, - "danmaku": 2498, - "reply": 745, - "favorite": 2573, - "coin": 7170, - "share": 1162, - "now_rank": 0, - "his_rank": 0, - "like": 34817, - "dislike": 0 - }, - "dynamic": "究!极!无!敌!宇!宙!\n土!味!之!王!!!", - "cid": 822750256, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1ga41137Gs", - "short_link_v2": "https://b23.tv/BV1ga41137Gs", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220903a21l7ofzzwi97zg23eqr7n2ur_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1ga41137Gs", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "", "corner_mark": 0 } - }, - { - "aid": 472678228, - "videos": 1, - "tid": 76, - "tname": "美食制作", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/e92f638626a4e7bfff43f0ff72faf35ff914d851.jpg", - "title": "谁能吃空这一盆,立马入职!", - "pubdate": 1662111000, - "ctime": 1662099066, - "desc": "想知道小胖说什么的看到最后!", - "state": 0, - "duration": 220, - "mission_id": 816705, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 11452660, - "name": "p老板开饭了", - "face": "http://i1.hdslb.com/bfs/face/b1c8a639f1773284b3a7ceb00d62c54de1c8f470.jpg" - }, - "stat": { - "aid": 472678228, - "view": 1136045, - "danmaku": 541, - "reply": 1002, - "favorite": 7157, - "coin": 2192, - "share": 1122, - "now_rank": 0, - "his_rank": 65, - "like": 107942, - "dislike": 0 - }, - "dynamic": "完了,暴露了", - "cid": 821731282, - "dimension": { "width": 2160, "height": 3840, "rotate": 0 }, - "season_id": 619430, - "short_link": "https://b23.tv/BV12K411Z7ET", - "short_link_v2": "https://b23.tv/BV12K411Z7ET", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220902a21767eiq3pz6kpdf47u3h6c5_firsti.jpg", - "pub_location": "四川", - "bvid": "BV12K411Z7ET", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "百万播放", "corner_mark": 1 } - }, - { - "aid": 900009457, - "videos": 1, - "tid": 182, - "tname": "影视杂谈", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/533cb2685bcf5e64b29772dc87347466950710bd.jpg", - "title": "别抬头!天上的东西会吃人!2022最新科幻电影!", - "pubdate": 1661943707, - "ctime": 1661943707, - "desc": "《不》", - "state": 0, - "duration": 349, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 688872987, - "name": "侃片大师兄", - "face": "http://i0.hdslb.com/bfs/face/8935b194271d1dac8ce4c99bdbbd80f682d4a939.jpg" - }, - "stat": { - "aid": 900009457, - "view": 2142899, - "danmaku": 763, - "reply": 687, - "favorite": 5943, - "coin": 587, - "share": 238, - "now_rank": 0, - "his_rank": 85, - "like": 77420, - "dislike": 0 - }, - "dynamic": "", - "cid": 819990856, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1EP4y1f71v", - "short_link_v2": "https://b23.tv/BV1EP4y1f71v", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220831qn23b5noftuzwf87zp2nxkfin_firsti.jpg", - "pub_location": "山东", - "bvid": "BV1EP4y1f71v", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "", "corner_mark": 0 } - }, - { - "aid": 645144956, - "videos": 1, - "tid": 208, - "tname": " 校园学习", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/4caba77c0ea7d95292c4e52dcfc1a2807318f068.jpg", - "title": "耗时一个月制作!不想任何学生错过这个视频啊啊!学习方法/中学/大学/研究生/考证/留学/成长/求职 | 开学解惑图鉴", - "pubdate": 1662177900, - "ctime": 1662127479, - "desc": "开学季啦,框框作为B站辅导员,为大家整理实用知识和经验参考,视频中所有的链接如下,如果 有帮助还请大家三连支持一波!!!!\n一、学习干货\n1、学习方法:\nBV1LU4y1g7no、BV14b411h7FM、BV1QX4y157mJ、BV1Ya4y1W7iT 、BV1X3411k7CX、BV1p741127kM\n2、中学学科:\n语文:BV1ZT4113744、BV1zB4y1w7Sk、BV1oE411K7Qq、BV18U4y1m7iV、BV16L4y157iZ\n数学:BV147411K7xu、BV1fJ411R", - "state": 0, - "duration": 439, - "mission_id": 895731, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 40427625, - "name": "取景框看世界", - "face": "http://i0.hdslb.com/bfs/face/0d671560a6dd7f28247b3b7501d404a5b01280ea.jpg" - }, - "stat": { - "aid": 645144956, - "view": 137130, - "danmaku": 1686, - "reply": 597, - "favorite": 23723, - "coin": 10164, - "share": 1411, - "now_rank": 0, - "his_rank": 0, - "like": 20994, - "dislike": 0 - }, - "dynamic": "这是框框给所有学生党送上的开学礼物,你一定会喜欢的(=・ω・=)", - "cid": 822546678, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "season_id": 682687, - "short_link": "https://b23.tv/BV1rY4y1T7Lk", - "short_link_v2": "https://b23.tv/BV1rY4y1T7Lk", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220903a2204tfiy965tnt32zfgxjhwn_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1rY4y1T7Lk", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "", "corner_mark": 0 } - }, - { - "aid": 302509227, - "videos": 1, - "tid": 183, - "tname": "影视剪辑", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/72695f92333cc5c5dcdc5161ba98fa89a8ad081a.jpg", - "title": "“从不拍烂片的导演”", - "pubdate": 1661986407, - "ctime": 1661986407, - "desc": "-", - "state": 0, - "duration": 20, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 241973789, - "name": "柯基剪辑c", - "face": "http://i2.hdslb.com/bfs/face/515688d6b0406ac9c242b3e0fbb36a5feabd50c8.jpg" - }, - "stat": { - "aid": 302509227, - "view": 169278, - "danmaku": 98, - "reply": 285, - "favorite": 9330, - "coin": 2736, - "share": 396, - "now_rank": 0, - "his_rank": 0, - "like": 34129, - "dislike": 0 - }, - "dynamic": "", - "cid": 820560843, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1pP411L7yw", - "short_link_v2": "https://b23.tv/BV1pP411L7yw", - "up_from_v2": 8, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220901a232uv0w65umpau1641kk1ktt_firsti.jpg", - "pub_location": "江苏", - "bvid": "BV1pP411L7yw", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "", "corner_mark": 0 } - }, - { - "aid": 815038949, - "videos": 1, - "tid": 250, - "tname": "出行", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/f66582af3f5ea12b04d6f2bec1298fca308d33ce.jpg", - "title": "那天,我看到了54岁最帅的模样", - "pubdate": 1661769000, - "ctime": 1661756898, - "desc": "-", - "state": 0, - "duration": 91, - "mission_id": 834125, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 2041168605, - "name": "他叫阿园", - "face": "http://i0.hdslb.com/bfs/face/ee0cee6afda83588c938a5279d47ce66633379e6.jpg" - }, - "stat": { - "aid": 815038949, - "view": 4203035, - "danmaku": 1797, - "reply": 3724, - "favorite": 69671, - "coin": 150880, - "share": 6483, - "now_rank": 0, - "his_rank": 1, - "like": 732835, - "dislike": 0 - }, - "dynamic": "", - "cid": 817949474, - "dimension": { "width": 1080, "height": 1920, "rotate": 0 }, - "short_link": "https://b23.tv/BV1VG4y167tn", - "short_link_v2": "https://b23.tv/BV1VG4y167tn", - "up_from_v2": 36, - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220829a2246h1eks5qvfw17msnqjkun_firsti.jpg", - "pub_location": "浙江", - "bvid": "BV1VG4y167tn", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": " 百万播放", "corner_mark": 1 } - }, - { - "aid": 900245725, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/8e842aef4241d2f0971bfbf8289919f9417a2054.jpg", - "title": "我们管这叫军训,外国人管这叫实兵演习!", - "pubdate": 1662092612, - "ctime": 1662092612, - "desc": "素材来源:各大高校军训名场面!\nBGM:Wake (Live)", - "state": 0, - "duration": 185, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 626297715, - "name": "荒草音乐", - "face": "http://i0.hdslb.com/bfs/face/d7b9ec37a9b159318cbf09d9d2ce43eba6cfaa12.jpg" - }, - "stat": { - "aid": 900245725, - "view": 792824, - "danmaku": 1603, - "reply": 2508, - "favorite": 11174, - "coin": 3072, - "share": 6911, - "now_rank": 0, - "his_rank": 0, - "like": 37460, - "dislike": 0 - }, - "dynamic": "", - "cid": 821649493, - "dimension": { "width": 1920, "height": 1080, "rotate": 0 }, - "short_link": "https://b23.tv/BV1DP4y1o7y1", - "short_link_v2": "https://b23.tv/BV1DP4y1o7y1", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220902a226id1e9dpruvu1a3ni88cad_firsti.jpg", - "pub_location": "四川", - "bvid": "BV1DP4y1o7y1", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": { "content": "", "corner_mark": 0 } - } - ], - "no_more": false - } -} -``` -
\ No newline at end of file diff --git a/ranking&dynamic/ranking.md b/ranking&dynamic/ranking.md deleted file mode 100644 index eaac2cb..0000000 --- a/ranking&dynamic/ranking.md +++ /dev/null @@ -1,959 +0,0 @@ -# 视频排行榜 - - - -- [视频排行榜](#视频排行榜) - - [获取分区视频排行榜列表](#获取分区视频排行榜列表) - ---- - -## 获取分区视频排行榜列表 - -> https://api.bilibili.com/x/web-interface/ranking/v2 - -*请求方式:GET* - -获取稿件内容质量,近期的数据前100个稿件,动态更新。 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ------------------------------------- | -| rid | num | 目标分区tid | 非必要 | | -| type | str | 未知 | 非必要 | 默认为:all,且为目前唯一已知值。怀疑为稿件类型,但没有找到其他值佐证。 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 视频列表 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --- | --- | --- | --- | -| note | str | “根据稿件内容质量、近期的数据综合展示,动态更新” | 目前恒为此结果 | -| list | list | 视频列表 | 暂无 | - -`list`列表: - -| 项 | 类型 | 内容 | 备注 | -| --- | ---- | --------------- | ---- | -| 0 | obj | 排行榜第1名 | | -| n | obj | 排行榜第(n+1)名 | | -| …… | obj | …… | …… | -| 99 | obj | 排行榜第100名 | | - -`data`列表中的对象: - -可参考[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象。本API对象中所有字段,均可在链接对象中找到。 - -**示例:** - -获取`tid=1`(动画)分区中所有稿件排行榜排行榜 - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/ranking/v2' \ ---data-urlencode 'tid=1' \ ---data-urlencode 'type=all' -``` - -
-因本API返回对象过多(100个),故不全部展示,使用者可自行尝试。查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "note": "根据稿件内容质量、近期的数据综合展示,动态更新", - "list": [ - { - "aid": 517751921, - "videos": 1, - "tid": 253, - "tname": "动漫杂谈", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/c70d89ce459eb4a501885f7050ee37d94a5944e4.jpg", - "title": "神作之月!十年前的奇迹!新番时光机「2012年10月篇」", - "pubdate": 1668856639, - "ctime": 1668856639, - "desc": "新番时光机,回顾十年前的动画!本期为2012年10月\n\n往期:\nBV1Br4y1y7ri\nBV1Ly4y1s7wp\nBV16r4y1A7w4\nBV1c64y1f7ff\nBV1sA411A7JD\nBV1wT4y1D729\nBV1mR4y1A7Ey\nBV1gB4y1V7sz", - "state": 0, - "duration": 752, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 63231, - "name": "泛式", - "face": "https://i0.hdslb.com/bfs/face/2608aaa45309c77ac88fbfaa40e160b8c7892985.jpg" - }, - "stat": { - "aid": 517751921, - "view": 1156543, - "danmaku": 14224, - "reply": 5601, - "favorite": 28753, - "coin": 58324, - "share": 6548, - "now_rank": 0, - "his_rank": 11, - "like": 136884, - "dislike": 0 - }, - "dynamic": "泛式队长,时光机更新!", - "cid": 896512490, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 21183, - "short_link": "https://b23.tv/BV1Eg411v7a1", - "short_link_v2": "https://b23.tv/BV1Eg411v7a1", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n221119a29spw3xihz66g3aeuae34t8i_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1Eg411v7a1", - "score": 0 - }, - { - "aid": 987795979, - "videos": 1, - "tid": 27, - "tname": "综合", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/6045782867b5dd91196d93324028f3346eed663a.jpg", - "title": "看海贼的和看火影的都沉默了......", - "pubdate": 1668830400, - "ctime": 1668780416, - "desc": "这一期我把之前十多期的火影加海贼王的内容做了个合集,把做得还可以的片段浓缩成这3分钟,有部分重制了,下一次这类型的视频等着绿牛和尼卡路飞出场,在做多一期—。—感觉还可以的话就给我个三连……或者一个免费的赞,谢谢了", - "state": 0, - "duration": 196, - "mission_id": 1074046, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 601674546, - "name": "-夏秋冬-", - "face": "https://i0.hdslb.com/bfs/face/83b4dd8830c24ee73fbc59f0bd974ea37b0a9470.jpg" - }, - "stat": { - "aid": 987795979, - "view": 2098359, - "danmaku": 3460, - "reply": 2393, - "favorite": 33358, - "coin": 54977, - "share": 45656, - "now_rank": 0, - "his_rank": 15, - "like": 116834, - "dislike": 0 - }, - "dynamic": "", - "cid": 895657562, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1D44y1Q7im", - "short_link_v2": "https://b23.tv/BV1D44y1Q7im", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n221118qn157llqyqytou2d6cypvute8_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1D44y1Q7im", - "score": 0 - }, - { - "aid": 690264225, - "videos": 1, - "tid": 86, - "tname": "特摄", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/f1ff369250c5fa72106e32e3d7862740ba6a3ab9.jpg", - "title": "评分7.0!风评不佳?诚实吐槽特摄电影《新奥特曼》", - "pubdate": 1668860302, - "ctime": 1668860302, - "desc": "点个关注再走哦~", - "state": 0, - "duration": 832, - "mission_id": 1028236, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 730732, - "name": "瓶子君152", - "face": "https://i1.hdslb.com/bfs/face/951d0a41b33e0c73a0460d20ee83c4c62b0da45f.jpg" - }, - "stat": { - "aid": 690264225, - "view": 1503667, - "danmaku": 4718, - "reply": 3816, - "favorite": 20847, - "coin": 49980, - "share": 4100, - "now_rank": 0, - "his_rank": 18, - "like": 131574, - "dislike": 0 - }, - "dynamic": "#动漫杂谈# #新奥特曼# \n新奥特曼这部电影终于也是借着在你B的推出全网首播\n我也终于是蹭到一回热度了\n这次电影其实评价十分的两极化,那么他究竟讲了什么,我又觉得他怎么样呢,答案就在视频中\n本期视频点赞10w投币4w后面做德凯完结吐槽", - "cid": 896556696, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1S24y1y7yn", - "short_link_v2": "https://b23.tv/BV1S24y1y7yn", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221119a23dw30m9rx43073w439ptba1_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1S24y1y7yn", - "score": 0 - }, - { - "aid": 690367853, - "videos": 1, - "tid": 47, - "tname": "短片·手书·配音", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/a79fc307134273460bcc2ebcf56569097dcf5537.jpg", - "title": "”B 站 用 户 精 神 现 状 Ⅱ “", - "pubdate": 1668829018, - "ctime": 1668829019, - "desc": "耶 熬夜之后\n准备看柯南去!\n希望这个视频能带给你快乐!\n☆··☆··☆··☆··☆··☆··☆··☆··☆··☆··☆\n\n文案/绘画/配音/剪辑:鸽一品 \n本节目基本保持1-2周1更!如果喜欢的话请一定要多多三连互动哦!\n\n平时我也会在直播间和大家互动发\n直播时间会在动态中发布周表 大概一周五播\n从0开始做V! 请多多支持!\n\n ☆··☆··☆··☆··☆··☆··☆··☆··☆··☆··☆\n\n感谢你的支持!鸽子也有自己贩售周边的桃宝店啦~\n一品鸽子窝:https://shop409788748.tao", - "state": 0, - "duration": 122, - "mission_id": 1074046, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 11399495, - "name": "鸽一品", - "face": "https://i2.hdslb.com/bfs/face/87f1fca837a16d6bbae552861454b45b1519301e.jpg" - }, - "stat": { - "aid": 690367853, - "view": 1158451, - "danmaku": 2596, - "reply": 338, - "favorite": 11617, - "coin": 3685, - "share": 429, - "now_rank": 0, - "his_rank": 45, - "like": 132542, - "dislike": 0 - }, - "dynamic": "耶 熬夜之后\n准备看柯南去!\n希望这个视频能带给你快乐!", - "cid": 896076372, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 174909, - "short_link": "https://b23.tv/BV1n24y117Zz", - "short_link_v2": "https://b23.tv/BV1n24y117Zz", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n221119a23psu3qlqb6ssz3rae8wrk8s_firsti.jpg", - "pub_location": "浙江", - "bvid": "BV1n24y117Zz", - "score": 0 - }, - { - "aid": 605336408, - "videos": 1, - "tid": 47, - "tname": "短片·手书·配音", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/69ce5bd3ab899d2212e6dab962c8cfa7f41ad5af.jpg", - "title": "【封号斗罗】哔哩哔哩,来封我朋友的号呀!", - "pubdate": 1668830400, - "ctime": 1668823531, - "desc": "我好坏~\n\n后期 可大师 / 桥和你\n封号斗罗 CV 海盐奶糖白露\nBGM Girls Generation-Gee (Instrumental)", - "state": 0, - "duration": 64, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 20603745, - "name": "其人", - "face": "https://i0.hdslb.com/bfs/face/f5eb49deb5e87dde3f143c5d2d95d3338060ab93.jpg" - }, - "stat": { - "aid": 605336408, - "view": 652606, - "danmaku": 1527, - "reply": 757, - "favorite": 17896, - "coin": 5787, - "share": 762, - "now_rank": 0, - "his_rank": 49, - "like": 118886, - "dislike": 0 - }, - "dynamic": "", - "cid": 895984408, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 780987, - "short_link": "https://b23.tv/BV1u84y1C7w3", - "short_link_v2": "https://b23.tv/BV1u84y1C7w3", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n221119a2tl68uyltrxucgeyufpd33gz_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1u84y1C7w3", - "score": 0 - }, - { - "aid": 220294467, - "videos": 1, - "tid": 24, - "tname": "MAD·AMV", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/f18d4ecf7578e997d870f0aaf83a26e4fc379d2f.jpg", - "title": "【原神夜店风】深 夜 邂 逅~", - "pubdate": 1668827100, - "ctime": 1668770318, - "desc": "希望大家希望 做了蛮久的", - "state": 0, - "duration": 77, - "mission_id": 1060142, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1542136, - "name": "三笠・阿克曼", - "face": "http://i1.hdslb.com/bfs/face/871d3db6a329d2b0e1a67c546301a65f9752d62a.jpg" - }, - "stat": { - "aid": 220294467, - "view": 353464, - "danmaku": 594, - "reply": 474, - "favorite": 34617, - "coin": 11816, - "share": 2647, - "now_rank": 0, - "his_rank": 66, - "like": 88222, - "dislike": 0 - }, - "dynamic": "大的来了!#原神##MAD#", - "cid": 895467115, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 330790, - "short_link": "https://b23.tv/BV1d8411j7xK", - "short_link_v2": "https://b23.tv/BV1d8411j7xK", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n221118qntcb67e8mcic613b3frykpxn_firsti.jpg", - "pub_location": "陕西", - "bvid": "BV1d8411j7xK", - "score": 0 - }, - { - "aid": 562862605, - "videos": 1, - "tid": 47, - "tname": "短片·手书·配音", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/1cd7cb6cf45cdbd65b5b2cb85ac48bd045a110bf.jpg", - "title": "【孤独摇滚/手书】给波奇酱穿新衣服~", - "pubdate": 1668816600, - "ctime": 1668798123, - "desc": "小波奇那么漂亮!快给她买新衣服!!\n感谢原画姐姐们把波奇画得那么可爱!!!", - "state": 0, - "duration": 105, - "mission_id": 1074046, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1992514, - "name": "纸欣Dream", - "face": "https://i1.hdslb.com/bfs/face/2c09ba55a475fafa1e82eff79869a9580774f1b0.jpg" - }, - "stat": { - "aid": 562862605, - "view": 428030, - "danmaku": 793, - "reply": 854, - "favorite": 24869, - "coin": 25730, - "share": 6026, - "now_rank": 0, - "his_rank": 96, - "like": 48593, - "dislike": 0 - }, - "dynamic": "#孤独摇滚# 给波奇酱换新衣服!!", - "cid": 896737541, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1fv4y117Qh", - "short_link_v2": "https://b23.tv/BV1fv4y117Qh", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221119a2usulbe9u89fy3g0479v48y0_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1fv4y117Qh", - "score": 0 - }, - { - "aid": 945304847, - "videos": 1, - "tid": 47, - "tname": "短片·手书·配音", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/76026f6a6d7698fcc5656fb2d7c151dcb4b4ea65.jpg", - "title": "【丧病中配】如果2077的CV来配音《赛博朋克:边缘行者》(第五话)", - "pubdate": 1668843300, - "ctime": 1668836610, - "desc": "本作品为剪辑二创,非商业用途仅供娱乐,喜欢的朋友欢迎去看完整版原片!\n有幸邀请到CV大佬们一起配《赛博朋克:边缘行者》玩,希望大家喜欢。本视频点赞过5万,继续更新第六话,谢谢大家的支持啦!\nCAST:\n大卫:@刘照坤Jock \n露西:CV张琦@Kii崽 \n曼恩:嘟督\n吉米黑咲:@配音演员虞晓旭 \n琦薇:@楼倾司 \n多莉欧:CV张琦@Kii崽 \n田中:@黑石稔 \n校长:@黑石稔 \n葛洛莉亚:CV张琦@Kii崽 \nNCPD(全):@是没有风的内个无风吖 \n义体医生:嘟督\n夹暴机动队:@菇力", - "state": 0, - "duration": 1034, - "mission_id": 1089377, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 2403047, - "name": "嘟督不噶油", - "face": "https://i2.hdslb.com/bfs/face/74738ef7c1ff743959908029b4c9d2dd8b5827c6.jpg" - }, - "stat": { - "aid": 945304847, - "view": 397714, - "danmaku": 2559, - "reply": 1513, - "favorite": 16296, - "coin": 39497, - "share": 3686, - "now_rank": 0, - "his_rank": 0, - "like": 54893, - "dislike": 0 - }, - "dynamic": "久等了!丧病中配《赛博朋克:边缘行者》第五话参上!做个好梦,大卫~", - "cid": 896151792, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 751347, - "short_link": "https://b23.tv/BV1gW4y1W7f4", - "short_link_v2": "https://b23.tv/BV1gW4y1W7f4", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221119a23injccl1ujog874rrzkgjbq_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1gW4y1W7f4", - "score": 0 - }, - { - "aid": 432692681, - "videos": 1, - "tid": 47, - "tname": "短片·手书·配音", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/13b14a9003bd55b842e3d956f951719e37d4698d.jpg", - "title": "✨踏入白色殿堂,你选择谁?✨", - "pubdate": 1668679200, - "ctime": 1668669686, - "desc": "听说国内人均白毛控?\n小狐兔粉毛MEME指路:BV17B4y1J7vW\nBGM:Di Young-Pixel Pig", - "state": 0, - "duration": 45, - "mission_id": 1074046, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1118188465, - "name": "在下小狐兔", - "face": "https://i1.hdslb.com/bfs/face/182be1a72202ae348f9d39f047d7b13e32798f80.jpg" - }, - "stat": { - "aid": 432692681, - "view": 1167712, - "danmaku": 3754, - "reply": 2080, - "favorite": 88688, - "coin": 53575, - "share": 5869, - "now_rank": 0, - "his_rank": 5, - "like": 170078, - "dislike": 0 - }, - "dynamic": "染头白毛,直接少走60年弯路~", - "cid": 894207559, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 73722, - "short_link": "https://b23.tv/BV1oG411F7B9", - "short_link_v2": "https://b23.tv/BV1oG411F7B9", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221117a2a2f8je8qiu2724qkdbgwjch_firsti.jpg", - "pub_location": "浙江", - "bvid": "BV1oG411F7B9", - "score": 0 - }, - { - "aid": 262671873, - "videos": 1, - "tid": 47, - "tname": "短片·手书·配音", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/0d03863e63cc426bbc579bcb54433e3c2f412686.jpg", - "title": "《不做》", - "pubdate": 1668598143, - "ctime": 1668598143, - "desc": "咸鱼日常", - "state": 0, - "duration": 40, - "mission_id": 1074046, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 357538100, - "name": "懒小熊_LXX", - "face": "https://i2.hdslb.com/bfs/face/7cc145cb9831c319f4a20dc560915478561110a8.jpg" - }, - "stat": { - "aid": 262671873, - "view": 1682548, - "danmaku": 384, - "reply": 1984, - "favorite": 51955, - "coin": 21220, - "share": 49865, - "now_rank": 0, - "his_rank": 11, - "like": 231688, - "dislike": 0 - }, - "dynamic": "", - "cid": 893540811, - "dimension": { - "width": 1440, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1RY411d7Sp", - "short_link_v2": "https://b23.tv/BV1RY411d7Sp", - "up_from_v2": 8, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n221116a2qu5s05btpwu93sv0xig9hx5_firsti.jpg", - "pub_location": "湖南", - "bvid": "BV1RY411d7Sp", - "score": 0 - }, - { - "aid": 432645631, - "videos": 1, - "tid": 253, - "tname": "动漫杂谈", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/976382dd53576cc1af0926a31103e5d179cd26b3.jpg", - "title": "童年引爆全国的动画!《小鲤鱼》的最终结局和剧情究竟是什么?【拾荒记#29】", - "pubdate": 1668741505, - "ctime": 1668741505, - "desc": "相关动画:《小鲤鱼历险记》\n关于拾荒记这个栏目,我将在这个系列节目和大家一起在记忆的杂物堆里翻点什么出来\n\n大家还有什么想看我解读的,欢迎在评论区指出,说不定我下期就做了呢", - "state": 0, - "duration": 1945, - "mission_id": 993288, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 3078223, - "name": "野灿baka", - "face": "https://i1.hdslb.com/bfs/face/db80dbe62245bd35b32c293670190bf8ccd47975.jpg" - }, - "stat": { - "aid": 432645631, - "view": 1901441, - "danmaku": 14422, - "reply": 2815, - "favorite": 20903, - "coin": 26252, - "share": 6618, - "now_rank": 0, - "his_rank": 39, - "like": 97232, - "dislike": 0 - }, - "dynamic": "这期下饭很足,做了一个月呢,看个饱!", - "cid": 895004016, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 210289, - "short_link": "https://b23.tv/BV19G411F7iz", - "short_link_v2": "https://b23.tv/BV19G411F7iz", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221118a23ee03atvk7k4525jkiqwvxo_firsti.jpg", - "pub_location": "广西", - "bvid": "BV19G411F7iz", - "score": 0 - }, - { - "aid": 732840638, - "videos": 1, - "tid": 24, - "tname": "MAD·AMV", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/5bf52f12ed2eb3d3576f6eb4931e82a4f0aec9ce.jpg", - "title": "“ 现 在 开 始 ,电 锯 人 也 要 起 飞 了 ”", - "pubdate": 1668826313, - "ctime": 1668826313, - "desc": "是我低估了特效向MAD的难度,这次做了快一个月才做好(大概是累到很久都不想剪mad的程度。。)\n灵感来自林逸大佬的MAD视频\nbgm:16shots\n这次真的花费巨多心思,希望大家多多三连哇", - "state": 0, - "duration": 121, - "mission_id": 1074046, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 13458092, - "name": "笔龙XDDD", - "face": "https://i2.hdslb.com/bfs/face/fda9b8f0fb9d42c3ed90190b49b7478c87684078.jpg" - }, - "stat": { - "aid": 732840638, - "view": 456933, - "danmaku": 474, - "reply": 497, - "favorite": 16240, - "coin": 20333, - "share": 2288, - "now_rank": 0, - "his_rank": 0, - "like": 42301, - "dislike": 0 - }, - "dynamic": "叩", - "cid": 896032916, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 861825, - "short_link": "https://b23.tv/BV1hD4y1s7fJ", - "short_link_v2": "https://b23.tv/BV1hD4y1s7fJ", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221119a23flpz3l68ol27195z5warrj_firsti.jpg", - "pub_location": "浙江", - "bvid": "BV1hD4y1s7fJ", - "score": 0 - }, - { - "aid": 520311091, - "videos": 1, - "tid": 25, - "tname": "MMD·3D", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/0b15fe71c25d0c226a96a4ef253cfb946dda3a15.jpg", - "title": "万叶:哥把你揣兜里,你把哥踹沟里", - "pubdate": 1668871911, - "ctime": 1668871911, - "desc": "模型:米哈游/观海子\n渲染:小二今天吃啥啊、克里斯提亚娜\n动作/镜头:CME6大神犬\n原声:伤心欲茄", - "state": 0, - "duration": 16, - "mission_id": 1060142, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 403425503, - "name": "甜甜草酿鸡", - "face": "https://i2.hdslb.com/bfs/face/66eb2201458e7bf1875c6a1da629cf1c887e30fd.jpg" - }, - "stat": { - "aid": 520311091, - "view": 401135, - "danmaku": 206, - "reply": 597, - "favorite": 15559, - "coin": 2623, - "share": 12448, - "now_rank": 0, - "his_rank": 0, - "like": 64094, - "dislike": 0 - }, - "dynamic": "", - "cid": 896780848, - "dimension": { - "width": 1080, - "height": 1920, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1hM411C7ez", - "short_link_v2": "https://b23.tv/BV1hM411C7ez", - "up_from_v2": 35, - "first_frame": "http://i0.hdslb.com/bfs/storyff/n221119a213u50mtr1xje1pmh9ufufp1_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1hM411C7ez", - "score": 0 - }, - { - "aid": 775289285, - "videos": 1, - "tid": 210, - "tname": "手办·模玩", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/8defd33e5c2dd860ecb46dfef3445aad14a1f7fa.jpg", - "title": "“最帅最强”的“究极体”?万代 MGEX 强袭自由高达 拼装模型【评头论足】", - "pubdate": 1668830154, - "ctime": 1668830154, - "desc": "大家喜欢视频的话多多点赞关注投币哦~\n《评头论足》主要以第一人称的方式去介绍最新上市的模玩产品,给人以把玩在手中最真实的直观感受,为广大模型爱好者选购模型玩具产品提供方便。合作油箱 pinggaoda@qq.com", - "state": 0, - "duration": 1120, - "mission_id": 1080009, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 2029306, - "name": "-评头论足-", - "face": "https://i1.hdslb.com/bfs/face/c20b5d1f044448ff2c5f4dbafc5dc464fdcdbca5.jpg" - }, - "stat": { - "aid": 775289285, - "view": 422301, - "danmaku": 12251, - "reply": 4824, - "favorite": 11219, - "coin": 26475, - "share": 10777, - "now_rank": 0, - "his_rank": 0, - "like": 37206, - "dislike": 0 - }, - "dynamic": "年度关注度超高的MGEX强袭自由,他来了!", - "cid": 896057755, - "dimension": { - "width": 3840, - "height": 2160, - "rotate": 0 - }, - "season_id": 573806, - "short_link": "https://b23.tv/BV1h14y1H7Ls", - "short_link_v2": "https://b23.tv/BV1h14y1H7Ls", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n221119a21mwd5z96o6l7q1tg8gqhh6m_firsti.jpg", - "pub_location": "辽宁", - "bvid": "BV1h14y1H7Ls", - "score": 0 - }, - ] - } -} -``` - -
diff --git a/search/hot.md b/search/hot.md deleted file mode 100644 index 049ad9c..0000000 --- a/search/hot.md +++ /dev/null @@ -1,569 +0,0 @@ -# 默认搜索&热搜 - -- [获取默认搜索内容(web端)](#获取默认搜索内容web端) -- [获取热搜列表(web端)](#获取热搜列表web端) -- [获取热搜列表(手机端)](#获取热搜列表手机端) - ---- - -## 获取默认搜索内容(web端) - -> https://api.bilibili.com/x/web-interface/search/default - -*请求方式:GET* - -默认搜索为搜索框中默认填充内容,用于官方推荐内容,若不输入点击搜索按钮跳转为`url`中的链接 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------- | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | --------------- | -------------- | -| seid | str | 搜索seid | | -| id | num | 默认搜索id | | -| type | num | 0 | | -| show_name | str | 显示文字 | | -| name | str | 空 | | -| goto_type | num | 跳转类型 | 1:视频 | -| goto_value | str | 搜索目标id | 视频:稿件avid | -| url | str | 搜索目标跳转url | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/web-interface/search/default' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "seid": "17607543598496143098", - "id": 3296036255232726331, - "type": 0, - "show_name": "歪果仁在中国做模特能赚多少钱?", - "name": "", - "goto_type": 1, - "goto_value": "243920322", - "url": "https://www.bilibili.com/video/BV1Tv411q7gx" - } -} -``` - -
- -## 获取热搜列表(web端) - -> https://s.search.bilibili.com/main/hotword - -*请求方式:GET* - -榜单每隔固定时间统计一次,请求后返回搜索前10的关键词 - -带有转义 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------------ | ------------- | -| exp_str | str | ??? | | -| code | num | 返回值 | 0:成功 | -| cost | obj | 详细搜索用时 | 大概是吧? | -| seid | str | 搜索seid | | -| timestamp | num | 榜单统计时间 | 时间戳 | -| message | str | 错误信息 | 默认为success | -| list | array | 热搜列表 | | - -`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------ | -| 0 | obj | 榜单第1名 | | -| n | obj | 榜单第(n+1)名 | 按照名次顺序 | -| 10 | obj | 榜单第10名 | 最后一项 | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ------- | -| status | str | 空 | | -| hot_id | num | 热词id | 大概是吧? | -| keyword | str | 关键词 | | -| resource_id| num | 资源id | | -| goto_type | num | 0 | | -| res | array| null | | -| show_name | str | 完整关键词| | -| pos | num | 名次 | 1-10 | -| word_type | num | 条目属性 | 均返回8 | -| id | num | 名次 | 1-10 | -| goto_value | str | 空 | | -| live_id | array| null | | -| name_type | str | 空 | | -| icon | str | 图标url | | - -**示例:** - -```shell -curl 'https://s.search.bilibili.com/main/hotword' -``` - -
-查看响应示例: - -```json -{ - "exp_str": "8104#8200#8300#8401#8500#5502#6699", - "code": 0, - "cost": { - "reas_request": "0.001895", - "params_check": "0.000127", - "reas_response_format": "0.000098", - "deserialize_response": "0.000080", - "reas_request_format": "0.000076", - "total": "0.002479", - "main_handler": "0.002252" - }, - "seid": "9318821020548476185", - "timestamp": 1596034742, - "message": "success", - "list": [{ - "status": "", - "hot_id": 11003, - "keyword": "流浪地球2刘德华", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "流浪地球2刘德华造型", - "pos": 1, - "word_type": 8, - "id": 1, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png" - }, - { - "status": "", - "hot_id": 11012, - "keyword": "QQ飞车手游飞跃黄河", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "QQ飞车手游飞跃黄河", - "pos": 2, - "word_type": 8, - "id": 2, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" - }, - { - "status": "", - "hot_id": 10996, - "keyword": "西工大遭网络攻击最新调查", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "西工大遭网络攻击最新调查", - "pos": 3, - "word_type": 8, - "id": 3, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png" - }, - { - "status": "", - "hot_id": 11004, - "keyword": "EDG 起诉", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "EDGJieJie已起诉多家企业", - "pos": 4, - "word_type": 8, - "id": 4, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" - }, - { - "status": "", - "hot_id": 10992, - "keyword": "隐入尘烟", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "隐入尘烟全平台下架", - "pos": 5, - "word_type": 8, - "id": 5, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png" - }, - { - "status": "", - "hot_id": 10987, - "keyword": "原神半年内最良心封神池", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "原神半年内最良心封神池", - "pos": 6, - "word_type": 8, - "id": 6, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "" - }, - { - "status": "", - "hot_id": 10988, - "keyword": "高校回应设国内首个元宇宙院系", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "高校回应设国内首个元宇宙院系", - "pos": 7, - "word_type": 8, - "id": 7, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "" - }, - { - "status": "", - "hot_id": 10994, - "keyword": "美宇宙飞船成功撞击小行星", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "美宇宙飞船成功撞击小行星", - "pos": 8, - "word_type": 8, - "id": 8, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "" - }, - { - "status": "", - "hot_id": 10991, - "keyword": "你薅的羊毛可能已违法", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "你薅的羊毛可能已违法", - "pos": 9, - "word_type": 8, - "id": 9, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "" - }, - { - "status": "", - "hot_id": 11013, - "keyword": "辛普森一家", - "resource_id": 0, - "goto_type": 0, - "res": [ - - ], - "show_name": "辛普森一家", - "pos": 10, - "word_type": 8, - "id": 10, - "goto_value": "", - "live_id": [ - - ], - "name_type": "", - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png" - } - ] -} -``` - -
- -## 获取热搜列表(手机端) - -> https://app.bilibili.com/x/v2/search/trending/ranking - -*请求方式:GET* - -榜单每隔固定时间统计一次,请求后返回搜索前20的关键词 - -带有转义 - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------------ | ------------- | -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 返回值 | 默认为1 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------ | -| trackid | num | | 不知用途 | -| list | array | 热搜列表 | | - -`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------ | -| 0 | obj | 榜单第1名 | | -| n | obj | 榜单第(n+1)名 | 按照名次顺序 | -| 20 | obj | 榜单第20名 | 最后一项 | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ------- | -| position | num | 名次 | 1-20 | -| keyword | str | 关键词 | | -| show_name | str | 完整关键词| | -| word_type | num | 条目属性 | 均返回8 | -| icon | str | 图标url | | -| hot_id | num | 热词id | 大概是吧? | - -**示例:** - -```shell -curl 'https://app.bilibili.com/x/v2/search/trending/ranking' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "trackid": "12666380188451258075", - "list": [ - { - "position": 1, - "keyword": "流浪地球2刘德华", - "show_name": "流浪地球2刘德华造型", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png", - "hot_id": 11003 - }, - { - "position": 2, - "keyword": "QQ飞车手游飞跃黄河", - "show_name": "QQ飞车手游飞跃黄河", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png", - "hot_id": 11012 - }, - { - "position": 3, - "keyword": "西工大遭网络攻击最新调查", - "show_name": "西工大遭网络攻击最新调查", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png", - "hot_id": 10996 - }, - { - "position": 4, - "keyword": "EDG 起诉", - "show_name": "EDGJieJie已起诉多家企业", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png", - "hot_id": 11004 - }, - { - "position": 5, - "keyword": "隐入尘烟", - "show_name": "隐入尘烟全平台下架", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/e9e7a2d8497d4063421b685e72680bf1cfb99a0d.png", - "hot_id": 10992 - }, - { - "position": 6, - "keyword": "原神半年内最良心封神池", - "show_name": "原神半年内最良心封神池", - "word_type": 8, - "hot_id": 10987 - }, - { - "position": 7, - "keyword": "高校回应设国内首个元宇宙院系", - "show_name": "高校回应设国内首个元宇宙院系", - "word_type": 8, - "hot_id": 10988 - }, - { - "position": 8, - "keyword": "美宇宙飞船成功撞击小行星", - "show_name": "美宇宙飞船成功撞击小行星", - "word_type": 8, - "hot_id": 10994 - }, - { - "position": 9, - "keyword": "你薅的羊毛可能已违法", - "show_name": "你薅的羊毛可能已违法", - "word_type": 8, - "hot_id": 10991 - }, - { - "position": 10, - "keyword": "火锅店剩锅底重新给顾客", - "show_name": "火锅店剩锅底重新给顾客", - "word_type": 1, - "hot_id": 11014 - }, - { - "position": 11, - "keyword": "海月", - "show_name": "王者海月逆天", - "word_type": 8, - "hot_id": 10999 - }, - { - "position": 12, - "keyword": "周琦重返NBL", - "show_name": "徐静雨评周琦重返NBL", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png", - "hot_id": 11007 - }, - { - "position": 13, - "keyword": "小超梦剑魔连招", - "show_name": "小超梦剑魔QA连招", - "word_type": 8, - "hot_id": 11006 - }, - { - "position": 14, - "keyword": "东八区的先生们已下架", - "show_name": "东八区的先生们已下架", - "word_type": 8, - "hot_id": 10955 - }, - { - "position": 15, - "keyword": "三国杀新武将全惠解", - "show_name": "三国杀新武将全惠解", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png", - "hot_id": 11009 - }, - { - "position": 16, - "keyword": "ALGS训练赛", - "show_name": "ALGS训练赛", - "word_type": 8, - "icon": "http://i0.hdslb.com/bfs/feed-admin/4d579fb61f9655316582db193118bba3a721eec0.png", - "hot_id": 11011 - }, - { - "position": 17, - "keyword": "王者青白蛇皮肤优化", - "show_name": "王者青白蛇皮肤优化", - "word_type": 8, - "hot_id": 11000 - }, - { - "position": 18, - "keyword": "普京授予斯诺登俄公民身份", - "show_name": "普京授予斯诺登俄公民身份", - "word_type": 1, - "hot_id": 10977 - }, - { - "position": 19, - "keyword": "赛诺角色演示", - "show_name": "原神赛诺角色演示", - "word_type": 8, - "hot_id": 10998 - }, - { - "position": 20, - "keyword": "COD19被玩坏了", - "show_name": "COD19被玩坏了", - "word_type": 8, - "hot_id": 10971 - } - ], - "exp_str": "8000#5509#6605#7708" - } -} -``` - -
diff --git a/search/search_request.md b/search/search_request.md deleted file mode 100644 index 9f32448..0000000 --- a/search/search_request.md +++ /dev/null @@ -1,1443 +0,0 @@ -# 搜索 - -- [综合搜索(web端)](#综合搜索web端) -- [分类搜索(web端)](#分类搜索web端) - ---- - -> **B站于2022年8月24日更新了搜索api,增加了一大堆Cookies的校验,如果Cookies不足会返回-412搜索被拦截。如果没有cookies的话,请在搜索之前先GET一遍 https://bilibili.com 以获取cookies** - -## 综合搜索(web端) - -> https://api.bilibili.com/x/web-interface/search/all/v2 - -*方式:GET* - -认证方式:Cookie(SESSDATA) - -返回和关键字相关的20条信息 - -综合搜索为默认搜索方式,主要用于优先搜索用户、影视、番剧、游戏、话题等,并加载第一页的20项相关视频,还用于展示各个类型的结果数目,便于进一步分类搜索 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------- | ---- | ---------------- | ------ | ---- | -| keyword | str | 需要搜索的关键词 | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ----- | ---------------- | ---------------- | -| seid | str | 搜索id | | -| page | num | 页数 | 固定为1 | -| pagesize | num | 每页条数 | 固定为20 | -| numResults | num | 总条数 | 最大值为1000 | -| numPages | num | 分页数 | 最大值为50 | -| suggest_keyword | str | 空 | **作用尚不明确** | -| rqt_type | str | search | **作用尚不明确** | -| cost_time | obj | 详细搜索用时 | 大概是吧? | -| exp_list | obj | ??? | **作用尚不明确** | -| egg_hit | num | 0 | **作用尚不明确** | -| pageinfo | obj | 分类页数信息 | | -| top_tlist | obj | 分类结果数目信息 | | -| show_column | num | 0 | **作用尚不明确** | -| show_module_list | array | 返回结果类型列表 | | -| result | array | 结果列表 | | - -`data`中的`cost_time`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ---- | ---- | ---- | -| params_check | str | | | -| illegal_handler | str | | | -| as_response_format | str | | | -| as_request | str | | | -| save_cache | str | | | -| deserialize_response | str | | | -| as_request_format | str | | | -| total | str | | | -| main_handler | str | | | - -`data`中的`pageinfo`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | -------- | ---- | -| pgc | obj | - | | -| live_room | obj | 直播数 | | -| photo | obj | 相簿数 | | -| topic | obj | 话题数 | | -| video | obj | 视频数 | | -| user | obj | - | | -| bili_user | obj | 用户数 | | -| media_ft | obj | 电影数 | | -| article | obj | 专栏数 | | -| media_bangumi | obj | 番剧数 | | -| special | obj | - | | -| operation_card | obj | - | | -| upuser | obj | - | | -| movie | obj | - | | -| live_all | obj | - | | -| tv | obj | - | | -| live | obj | 直播间数 | | -| bangumi | obj | - | | -| activity | obj | 活动数 | | -| live_master | obj | - | | -| live_user | obj | 主播数 | | - -`pageinfo`中的所有对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ---- | -| numResults | num | 总计数量 | | -| total | num | 总计数量 | | -| pages | num | 分页数量 | | - -`data`中的`top_tlist`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | -------- | ---- | -| pgc | num | - | | -| live_room | num | 直播数 | | -| photo | num | 相簿数 | | -| topic | num | 话题数 | | -| video | num | 视频数 | | -| user | num | - | | -| bili_user | num | 用户数 | | -| media_ft | num | 电影数 | | -| article | num | 专栏数 | | -| media_bangumi | num | 番剧数 | | -| card | num | - | | -| operation_card | num | - | | -| upuser | num | - | | -| movie | num | - | | -| live_all | num | - | | -| tv | num | - | | -| live | num | 直播间数 | | -| special | num | - | | -| bangumi | num | - | | -| activity | num | 活动数 | | -| live_master | num | - | | -| live_user | num | 主播数 | | - -`data`中的`show_module_list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | str | activity | | -| 1 | str | web_game | 游戏 | -| 2 | str | card | | -| 3 | str | media_bangumi | 番剧 | -| 4 | str | media_ft | 电影 | -| 5 | str | bili_user | 用户 | -| 6 | str | user | | -| 7 | str | star | | -| 8 | str | video | 视频 | - -`data`中的`result`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| 0 | obj | - | | -| 1 | obj | 游戏结果 | | -| 2 | obj | - | | -| 3 | obj | 番剧结果 | | -| 4 | obj | 电影结果 | | -| 5 | obj | 用户结果 | | -| 6 | obj | - | | -| 7 | obj | - | | -| 8 | obj | 视频结果 | | - -`result`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | -------- | ------------------------------ | -| result_type | str | 结果类型 | 与`result`数组对应的项相同 | -| data | array | 搜索结果 | 结果为该项所对应的对象条目格式 | - -`result`数组中的对象中的`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---------------------------------------- | -| 0 | obj | 搜索结果1 | 对象详情见[搜索结果](search_response.md) | -| n | obj | 搜索结果(n+1) | 按照参数指定的顺序排列 | -| …… | obj | …… | …… | - -**示例:** - -使用综合搜索进行搜索关键字`洛天依` - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/search/all/v2' \ ---data-urlencode 'keyword=洛天依' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "seid": "8850295244740510044", - "page": 1, - "pagesize": 20, - "numResults": 1000, - "numPages": 50, - "suggest_keyword": "", - "rqt_type": "search", - "cost_time": { - "params_check": "0.000496", - "get upuser live status": "0.002325", - "illegal_handler": "0.000118", - "as_response_format": "0.007020", - "mysql_request": "0.000054", - "as_request": "0.099139", - "as_request_format": "0.002199", - "deserialize_response": "0.000342", - "total": "0.109753", - "main_handler": "0.109041" - }, - "exp_list": { - "5520": true - }, - "egg_hit": 0, - "pageinfo": { - "pgc": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "live_room": { - "numResults": 1, - "total": 1, - "pages": 1 - }, - "photo": { - "numResults": 1000, - "total": 1000, - "pages": 50 - }, - "bili_user": { - "numResults": 548, - "total": 548, - "pages": 28 - }, - "topic": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "video": { - "numResults": 1000, - "total": 1000, - "pages": 50 - }, - "user": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "article": { - "numResults": 1000, - "total": 1000, - "pages": 50 - }, - "media_ft": { - "numResults": 1, - "total": 1, - "pages": 1 - }, - "media_bangumi": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "special": { - "numResults": 14, - "total": 14, - "pages": 1 - }, - "operation_card": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "upuser": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "movie": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "live_all": { - "numResults": 2, - "total": 2, - "pages": 1 - }, - "tv": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "live": { - "numResults": 773, - "total": 773, - "pages": 39 - }, - "bangumi": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "activity": { - "numResults": 0, - "total": 0, - "pages": 0 - }, - "live_master": { - "numResults": 1, - "total": 1, - "pages": 1 - }, - "live_user": { - "numResults": 772, - "total": 772, - "pages": 39 - } - }, - "top_tlist": { - "pgc": 0, - "live_room": 1, - "photo": 1000, - "bili_user": 548, - "topic": 0, - "video": 1000, - "user": 0, - "article": 1000, - "media_ft": 1, - "media_bangumi": 0, - "card": 0, - "operation_card": 0, - "upuser": 0, - "movie": 0, - "tv": 0, - "live": 2, - "special": 14, - "bangumi": 0, - "activity": 0, - "live_master": 1, - "live_user": 772 - }, - "show_column": 0, - "show_module_list": [ - "bili_user", - "user", - "activity", - "web_game", - "card", - "media_bangumi", - "media_ft", - "star", - "video" - ], - "result": [ - { - "result_type": "bili_user", - "data": [ - { - "type": "bili_user", - "mid": 36081646, - "uname": "洛天依", - "usign": "上海禾念Vsinger旗下歌手,世界第一位VOCALOID中文虚拟歌姬。投食请戳:luotianyi@sh-henian.com", - "fans": 1982688, - "videos": 45, - "upic": "//i2.hdslb.com/bfs/face/cc96d1d6bf76f8198263f9083921997ab3a80d8b.jpg", - "verify_info": "", - "level": 6, - "gender": 2, - "is_upuser": 1, - "is_live": 0, - "room_id": 1546736, - "res": [ - { - "aid": 753839250, - "bvid": "BV1Hk4y1B7Cx", - "title": "【洛天依】2020.7.12洛天依生日会", - "pubdate": 1594559234, - "arcurl": "http://www.bilibili.com/video/av753839250", - "pic": "//i2.hdslb.com/bfs/archive/5347eafb5a65ad9a9ffc39063d686772ea1298c4.jpg", - "play": "269428", - "dm": 30648, - "coin": 33838, - "fav": 24066, - "desc": "从2012年一路走至2020年,8年间刻画下的无数回忆,都在生日会上娓娓道来。\n大家的每一次应援,每一条弹幕都无可替代,都凝结着无可比拟的珍贵回忆。\n希望天依的歌声能鼓起每个人心中的勇气,跨过悲伤、无力,去迎接希望。\n愿我们一同携手成长~相扶相伴。\n天依的首张官方数字专辑也已经上线,等你来听。\n试听: BV1Tp4y1S7cu\n购买:https://y.music.163.com/m/album?id=92206376", - "duration": "58:6", - "is_pay": 0, - "is_union_video": 0 - }, - { - "aid": 968772260, - "bvid": "BV1Tp4y1S7cu", - "title": "【洛天依原创曲】万分之一的光", - "pubdate": 1594557008, - "arcurl": "http://www.bilibili.com/video/av968772260", - "pic": "//i1.hdslb.com/bfs/archive/67c6118e4f94bee89b984525ca665fc88c969cac.jpg", - "play": "333322", - "dm": 9323, - "coin": 39961, - "fav": 29818, - "desc": "8年间我们一起经历了许多,有欢乐也有悲伤,有相遇自然也有别离,但曾相处的日子永远那么辉光闪耀。\n感谢你成为我的光芒,而我也会是你万分之一的光。\n\n音乐:ChiliChill\n贝斯:山口進也\n鼓手:口口口口口\n调校:动点P\n弦乐编配:胡静成 / ChiliChill\n小提琴:庞阔 / 张浩\n中提琴:毕芳\n大提琴:郎莹\n监制:人形兎\n出品:Vsinger", - "duration": "4:12", - "is_pay": 0, - "is_union_video": 1 - }, - { - "aid": 883803983, - "bvid": "BV1kK4y1s7Dd", - "title": "洛天依2020官方专辑《Moments》试听PV", - "pubdate": 1594526467, - "arcurl": "http://www.bilibili.com/video/av883803983", - "pic": "//i1.hdslb.com/bfs/archive/2ff004df9d98e2a78531c6400ee8e823fb30e6f4.jpg", - "play": "205340", - "dm": 7748, - "coin": 18792, - "fav": 14222, - "desc": "8是数字也是象征;\n∞是循环也是无限;\n \n音乐给予了我诞生和成长的力量,让我不断汲取养分,直至冲破险阻向阳生长;\n音乐让我更加幸运,在曾经未知的道路上遇见属于我们彼此的蓝色星光;\n那些一路上的美好,我都想和你们一起收集,瞬间即永恒。\n\n--------Staff--------\n作曲:Chilichill / COP / 人形兎 / 纯白P / 花之祭P / 希望索任合资 / 银临 / JUSF周存\n作词: Chilichill / COP / 人形兎 / 果汁凉菜 / 沈病娇 / 南岐 / 冥凰 / ", - "duration": "3:44", - "is_pay": 0, - "is_union_video": 0 - } - ], - "official_verify": { - "type": 0, - "desc": "洛天依官方账号" - }, - "hit_columns": [ - "uname" - ] - } - ] - }, - { - "result_type": "user", - "data": [] - }, - { - "result_type": "activity", - "data": [] - }, - { - "result_type": "web_game", - "data": [] - }, - { - "result_type": "card", - "data": [] - }, - { - "result_type": "media_bangumi", - "data": [] - }, - { - "result_type": "media_ft", - "data": [] - }, - { - "result_type": "star", - "data": [] - }, - { - "result_type": "video", - "data": [ - { - "type": "video", - "id": 753839250, - "author": "洛天依", - "mid": 36081646, - "typeid": "30", - "typename": "VOCALOID·UTAU", - "arcurl": "http://www.bilibili.com/video/av753839250", - "aid": 753839250, - "bvid": "BV1Hk4y1B7Cx", - "title": "【洛天依】2020.7.12洛天依生日会", - "description": "从2012年一路走至2020年,8年间刻画下的无数回忆,都在生日会上娓娓道来。\n大家的每一次应援,每一条弹幕都无可替代,都凝结着无可比拟的珍贵回忆。\n希望天依的歌声能鼓起每个人心中的勇气,跨过悲伤、无力,去迎接希望。\n愿我们一同携手成长~相扶相伴。\n天依的首张官方数字专辑也已经上线,等你来听。\n试听: BV1Tp4y1S7cu\n购买:https://y.music.163.com/m/album?id=92206376", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/5347eafb5a65ad9a9ffc39063d686772ea1298c4.jpg", - "play": 269428, - "video_review": 30648, - "favorites": 24066, - "tag": "VSINGER,洛天依生日快乐,2020洛天依生日会,洛天依生日会,VOCALOID,洛天依", - "review": 4391, - "pubdate": 1594559234, - "senddate": 1594559234, - "duration": "58:6", - "badgepay": false, - "hit_columns": [ - "title", - "author", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 102616359 - }, - { - "type": "video", - "id": 753460703, - "author": "低调的黑叔", - "mid": 22065421, - "typeid": "25", - "typename": "MMD·3D", - "arcurl": "http://www.bilibili.com/video/av753460703", - "aid": 753460703, - "bvid": "BV1Zk4y1B7bn", - "title": "【4K/布料/水手服】洛天依 - GimmexGimme", - "description": "喜欢本期4K请点个关注并长按视频下方大拇指一键三连拜托啦这对我真的很重要\n\nModel:\niRon0129/夏夜/Tda様/やまもと/Samsink(机动战士牛肉)\n\nMotion:\nシガー\n\nSailor Suit:\n星音\n\nStage:\nG_Wuuuuu\n\nRenderer:\nToolbag 3\n\nMusic:\n【初音ミク×鏡音リン】Gimme×Gimme【八王子P×Giga】", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/d1bd3d4d12b1e115ce82463853ff791a45472f1f.jpg", - "play": 809854, - "video_review": 1189, - "favorites": 47632, - "tag": "自制,3D,TDA,动画,百万剪辑师挑战,洛天依,美腿,舞蹈MMD,4K", - "review": 798, - "pubdate": 1591367468, - "senddate": 1591404973, - "duration": "1:11", - "badgepay": false, - "hit_columns": [ - "title", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 102465557 - }, - { - "type": "video", - "id": 10131337, - "author": "赛亚♂sya", - "mid": 157056, - "typeid": "30", - "typename": "VOCALOID·UTAU", - "arcurl": "http://www.bilibili.com/video/av10131337", - "aid": 10131337, - "bvid": "BV1fx411U7Kg", - "title": "【洛天依原创】自言自语", - "description": "词曲编调绘:Sya;混音:JUSF周存;简介你随便拿个之前的复制粘贴就行", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/e5aab7ddab3e060854e420edae6c5282cbe09324.jpg", - "play": 746480, - "video_review": 4665, - "favorites": 49097, - "tag": "黑洛,诚信代投,自言自语,洛天依,VOCALOID中文曲,原创,高级一图流,自x自x,自A自B系列,赛亚♂sya,JUSF周存", - "review": 7310, - "pubdate": 1493282828, - "senddate": 1542308981, - "duration": "4:14", - "badgepay": false, - "hit_columns": [ - "title", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 102432728 - }, - ………… - ] - } - ] - } -} -``` - -
- - - -## 分类搜索(web端) - -> https://api.bilibili.com/x/web-interface/search/type - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -根据关键词进行搜索,返回结果每页20项 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------------ | ------ | ------------------------------------------------------------ | -| search_type | str | 搜索目标类型 | 必要 | 视频:video
番剧:media_bangumi
影视:media_ft
直播间及主播:live
直播间:live_room
主播:live_user
专栏:article
话题:topic
用户:bili_user
相簿:photo | -| keyword | str | 需要搜索的关键词 | 必要 | | -| order | str | 结果排序方式 | 非必要 | 搜索类型为视频、专栏及相簿时:
默认为totalrank
综合排序:totalrank
最多点击:click
最新发布:pubdate
最多弹幕:dm
最多收藏:stow
最多评论:scores
最多喜欢:attention(仅用于专栏)
----------------------------
搜索结果为直播间时:
默认为online
人气直播:online
最新开播:live_time
----------------------------
搜索结果为用户时:
默认为0
默认排序:0
粉丝数:fans
用户等级:level | -| order_sort | num | 用户粉丝数及等级排序顺序 | 非必要 | 仅用于搜索用户
默认为0
由高到低:0
由低到高:1 | -| user_type | num | 用户分类筛选 | 非必要 | 仅用于搜索用户
默认为0
全部用户:0
up主:1
普通用户:2
认证用户:3 | -| duration | num | 视频时长筛选 | 非必要 | 仅用于搜索视频
默认为0
全部时长:0
10分钟以下:1
10-30分钟:2
30-60分钟:3
60分钟以上:4 | -| tids | num | 视频分区筛选 | 非必要 | 仅用于搜索视频
默认为0
全部分区:0
筛选分区:目标分区tid | -| category_id | num | 专栏及相簿分区筛选 | 非必要 | 搜索结果为专栏时:
默认为0
全部分区:0
动画:2
游戏:1
影视:28
生活:3
兴趣:29
轻小说:16
科技:17
--------
搜索结果为相簿时:
默认为0
全部分区:0
画友:1
摄影:2 | -| page | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---------------------------------------------------------- | ------------ | ------------------------------ | -| seid | num | 搜索seid | | -| page | num | 当前页码 | | -| pagesize | num | 每页条数 | 固定20 | -| numResults | num | 总条数 | 最大值为1000 | -| numPages | num | 总计分页数 | 最大值为50 | -| suggest_keyword | str | 空 | **作用尚不明确** | -| rqt_type | str | search | **作用尚不明确** | -| cost_time | obj | 详细搜索用时 | 大概 | -| exp_list | obj | ??? | **作用尚不明确** | -| egg_hit | num | 0 | **作用尚不明确** | -| pageinfo | obj | 副分页信息 | 只在搜索类型为直播间及主播有效 | -| result | 搜索类型为直播间及主播时:obj
搜索类型为其他时:array | 结果列表 | | -| show_column | num | 0 | **作用尚不明确** | - -`data`中的`cost_time`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------------- | ---- | ---- | ---- | -| params_check | str | | | -| illegal_handler | str | | | -| as_response_format | str | | | -| as_request | str | | | -| save_cache | str | | | -| deserialize_response | str | | | -| as_request_format | str | | | -| total | str | | | -| main_handler | str | | | - -`data`中的`pageinfo`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---------- | ---- | -| live_room | obj | 直播间信息 | | -| live_user | obj | 主播信息 | | - -`pageinfo`中的`live_room`及`live_user`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | -------- | ---- | -| numPages | num | 总计页数 | | -| numResults | num | 总计项数 | | -| total | num | 总计项数 | | -| pages | num | 总计页数 | | - -**搜索类型为直播间及主播时:** - -`data`中的`result`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ---------- | ---- | -| live_room | array | 直播间信息 | | -| live_user | array | 主播信息 | | - -`result`中的`live_room`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---------------------------------------- | -| 0 | obj | 直播间搜索结果1 | 对象详情见[搜索结果](search_response.md) | -| n | obj | 直播间搜索结果(n+1) | 按照参数指定的顺序排列 | -| …… | obj | …… | …… | - -`result`中的`live_user`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ---------------------------------------- | -| 0 | obj | 主播搜索结果1 | 对象详情见[搜索结果](search_response.md) | -| n | obj | 主播搜索结果(n+1) | 按照参数指定的顺序排列 | -| …… | obj | …… | …… | - -**搜索类型为其他时:** - -`data`中的`result`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---------------------------------------- | -| 0 | obj | 搜索结果1 | 对象详情见[搜索结果](search_response.md) | -| n | obj | 搜索结果(n+1) | 按照参数指定的顺序排列 | -| …… | obj | …… | …… | - -**示例:** - -按照关键词` 少年 `搜索视频,默认排序,全部时长,全部分区,第1页 - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/search/type' \ ---data-urlencode 'search_type=video' \ ---data-urlencode 'keyword=少年' \ ---data-urlencode 'order=totalrank' \ ---data-urlencode 'duration=0' \ ---data-urlencode 'tids=0' \ ---data-urlencode 'page=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "seid": "9339963973663795027", - "page": 1, - "pagesize": 20, - "numResults": 1000, - "numPages": 50, - "suggest_keyword": "", - "rqt_type": "search", - "cost_time": { - "params_check": "0.000300", - "illegal_handler": "0.000077", - "as_response_format": "0.003071", - "as_request": "0.072525", - "save_cache": "0.001115", - "deserialize_response": "0.000310", - "as_request_format": "0.000319", - "total": "0.077996", - "main_handler": "0.076419" - }, - "exp_list": { - "5520": true - }, - "egg_hit": 0, - "result": [ - { - "type": "video", - "id": 243082173, - "author": "大橘爱吃猫", - "mid": 178932626, - "typeid": "193", - "typename": "MV", - "arcurl": "http://www.bilibili.com/video/av243082173", - "aid": 243082173, - "bvid": "BV1De411p77r", - "title": "梦然-《少年》官方版", - "description": "https://www.ixigua.com/i6822128361129640462/?logTag=EBTB5DTpBmxcfK1GYOOea\n梦然老师《少年》MV官方版,原版:西瓜视频搜索“抖音梦然-《少年》” 抖音搜索 “《少年》MV梦然。", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/e25120857a6298d1d4b9e64a805c023b5143c8ff.jpg", - "play": 1037655, - "video_review": 2616, - "favorites": 27341, - "tag": "华语MV,国语MV,梦然,少年,梦想,成长,循环,热歌", - "review": 1265, - "pubdate": 1588407050, - "senddate": 1588407051, - "duration": "4:18", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 105415949 - }, - { - "type": "video", - "id": 97387124, - "author": "小石头和孩子们", - "mid": 324914635, - "typeid": "31", - "typename": "翻唱", - "arcurl": "http://www.bilibili.com/video/av97387124", - "aid": 97387124, - "bvid": "BV1B7411R7a8", - "title": "你还是从前的那个少年吗?来自元气少女超甜的《少年》", - "description": "", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/8502088a888aeb37df7c4bd1b77d57aabae4f4d3.jpg", - "play": 1953494, - "video_review": 5934, - "favorites": 50883, - "tag": "全民音乐UP主,小石头和孩子们,少年,MV,翻唱,音乐推荐", - "review": 2963, - "pubdate": 1584581433, - "senddate": 1584581434, - "duration": "4:1", - "badgepay": false, - "hit_columns": [ - "title", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 101083208 - }, - { - "type": "video", - "id": 200115746, - "author": "似乎一脸懵逼", - "mid": 110939266, - "typeid": "22", - "typename": "鬼畜调教", - "arcurl": "http://www.bilibili.com/video/av200115746", - "aid": 200115746, - "bvid": "BV1Yz411b7A3", - "title": "【马化腾】我还是充钱那个少年,没有一丝丝改变~", - "description": "临时做的小作品\n音源:-提问-", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/078a9b50b4df8d25c2f586668741b30348604173.jpg", - "play": 1069066, - "video_review": 3198, - "favorites": 16321, - "tag": "黄绿合战5th-绿队应援,马化腾,鬼畜调教,腾讯,腾讯游戏,QQ,氪金,少年,我还是从前那个少年", - "review": 1438, - "pubdate": 1585650825, - "senddate": 1586310556, - "duration": "1:26", - "badgepay": false, - "hit_columns": [ - "title", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100482941 - }, - { - "type": "video", - "id": 96440301, - "author": "Da圣音乐", - "mid": 353230307, - "typeid": "130", - "typename": "音乐综合", - "arcurl": "http://www.bilibili.com/video/av96440301", - "aid": 96440301, - "bvid": "BV1LE411G7F4", - "title": "最近突然火的《少年》太好听了,单曲循环了很多遍!", - "description": "Hello,大家好,我是阿光\n本期节目为大家盘点三首最近特别火的中文歌曲\n我保证每一首歌都能撩动你的心弦\n来喽,正如:恰同学少年,风华正茂!\n第一首就是歌手梦然发行于2019年的《少年》\n第二首《后会无期》\n第三首《平凡天使》", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/bcde6fb455902b367138b7a4026419de0a50a42d.jpg", - "play": 2440158, - "video_review": 2314, - "favorites": 7163, - "tag": "乐评盘点,音乐,少年,后会无期,平凡天使,邓紫棋,热门歌曲,感动,高考,疫情", - "review": 1072, - "pubdate": 1584334818, - "senddate": 1584339026, - "duration": "3:2", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100455675 - }, - { - "type": "video", - "id": 370000842, - "author": "猫耳半圆", - "mid": 485450109, - "typeid": "24", - "typename": "MAD·AMV", - "arcurl": "http://www.bilibili.com/video/av370000842", - "aid": 370000842, - "bvid": "BV1AZ4y1j7t6", - "title": "最近火爆全网的《少年》,你喜欢吗?", - "description": "BGM:少年——梦然\n花了好多心思的作品,求个三连呀φ(>ω<*)", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/7437b6f66856b0d87437afd8827939954716cb2f.jpg", - "play": 2257050, - "video_review": 16225, - "favorites": 95864, - "tag": "bilibili新星计划,AMV,MAD,新人向,论BGM的重要性,青春,少年,治愈向,催泪向,多素材", - "review": 3548, - "pubdate": 1585459066, - "senddate": 1585459067, - "duration": "1:37", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100409086 - }, - { - "type": "video", - "id": 837972700, - "author": "Da圣音乐", - "mid": 353230307, - "typeid": "130", - "typename": "音乐综合", - "arcurl": "http://www.bilibili.com/video/av837972700", - "aid": 837972700, - "bvid": "BV1Ug4y1z7oN", - "title": "终于找到日语版《少年》了!开口就是恋爱的味道,岛国也要被洗脑", - "description": "终于找到日语版《少年》了!开口就是恋爱的味道,岛国也要被洗脑", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/413b5417418c0e1107b3f79a284d20040b8bb4e9.jpg", - "play": 1390981, - "video_review": 2344, - "favorites": 11330, - "tag": "乐评盘点,梦然,少年,下山,日语,斋藤飞鸟,告白气球,花泽香菜,火影忍者,海贼王", - "review": 988, - "pubdate": 1588239130, - "senddate": 1588241127, - "duration": "3:12", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100407822 - }, - { - "type": "video", - "id": 285145715, - "author": "潮汕好男人", - "mid": 19071708, - "typeid": "22", - "typename": "鬼畜调教", - "arcurl": "http://www.bilibili.com/video/av285145715", - "aid": 285145715, - "bvid": "BV1ac411h7BC", - "title": "【全明星】少年", - "description": "我还是充钱那个少年,又大又圆的少年\nBGM:少年\n制作:MC传奇(潮汕好男人/永远的MG)\n\n黄绿合战Day.3 对阵作品:BV1qQ4y1K7Gs, 投票传送门:https://www.bilibili.com/blackboard/activity-yellowVSgreen5th.html", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/911faee003fc828c46497cbd58fab0e22c7554f8.jpg", - "play": 3689254, - "video_review": 38262, - "favorites": 115408, - "tag": "鬼畜调教,鬼畜,黄绿合战,少年,黄绿合战5th,全明星", - "review": 4560, - "pubdate": 1586404524, - "senddate": 1592816392, - "duration": "3:1", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100254286 - }, - { - "type": "video", - "id": 51475845, - "author": "吃你的馒头", - "mid": 25770774, - "typeid": "137", - "typename": "明星", - "arcurl": "http://www.bilibili.com/video/av51475845", - "aid": 51475845, - "bvid": "BV1K4411i7mw", - "title": "【日本少年混剪】氧气/心动瞬间/薄荷味的夏天要来了", - "description": "个人喜欢的霓虹国少年们混剪\n\n喜欢的少年会让我想起夏天,淡淡的薄荷味在校服衬衫晕开,笑容在空气里变成汽水,砰的一声打开砸向心脏。\n\nBGM:米津玄师/菅田将晖《灰色与青》\n\n道枝骏佑/新田真剑佑/菅田将晖\n坂口健太郎/古川雄辉/山崎贤人\n山田凉介/片寄凉太/贺来贤人\n龙星凉/佐藤健/吉沢亮\n柏原崇/锦户亮\n\n不按出场顺序(剪得昏天黑地完全记不住)\n\n禁二改转载出站,微博非本人发布皆为盗取视频,请随手举报或@吃你的馒头。\n\n原创作品不易,谢谢喜欢和理解。", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/93ae9d66eaf62161f1f12d0102b6c2d66ebe05a9.jpg", - "play": 1842547, - "video_review": 10738, - "favorites": 136384, - "tag": "明星,龙星凉,新田真剑佑,菅田将晖,古川雄辉,片寄凉太,柏原崇,山崎贤人,道枝骏佑,贺来贤人,山田凉介,锦户亮", - "review": 2385, - "pubdate": 1556992133, - "senddate": 1559716273, - "duration": "3:5", - "badgepay": false, - "hit_columns": [ - "title", - "description" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100239604 - }, - { - "type": "video", - "id": 967814999, - "author": "沙拉酱merry", - "mid": 492472, - "typeid": "31", - "typename": "翻唱", - "arcurl": "http://www.bilibili.com/video/av967814999", - "aid": 967814999, - "bvid": "BV1Hp4y1y7iQ", - "title": "真的不是原唱?!《少年》超A御姐音翻唱", - "description": "少年\n词/曲/原唱/Rap:梦然\n和声编写:海青/梦然\n和声演唱:海青/梦然\n翻唱:沙拉酱merry\n后期:小敏\n这首歌真好听!\nPs:由于这首歌的难度和换气问题,音频和视频是分开录的所以会有口型差异,敬请谅解!!!大家听歌愉快~", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/565e8cdc98dab13dfa547cb13744410964f2fc00.jpg", - "play": 959598, - "video_review": 2447, - "favorites": 15166, - "tag": "被才华封印的颜值,少年,翻唱,女声,沙拉酱merry,御姐音", - "review": 1371, - "pubdate": 1587114006, - "senddate": 1587114030, - "duration": "7:58", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100235329 - }, - { - "type": "video", - "id": 455021866, - "author": "鲨然鲨然", - "mid": 435476320, - "typeid": "126", - "typename": "人力VOCALOID", - "arcurl": "http://www.bilibili.com/video/av455021866", - "aid": 455021866, - "bvid": "BV195411673y", - "title": "【川普】我还是曾经那个少年", - "description": "鬼畜娱乐,请勿当真哦\n希望大家能开怀一笑\n笑了的话别忘了点赞哦", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/7cee31977deb39f297d2d2598e736d26ed337568.jpg", - "play": 3845319, - "video_review": 34660, - "favorites": 74705, - "tag": "黄绿合战5th-黄队应援,鬼畜调教,人力VOCALOID,自制,UTAU,川普,搞笑,少年,恶搞,青春", - "review": 4469, - "pubdate": 1585651085, - "senddate": 1586266006, - "duration": "2:56", - "badgepay": false, - "hit_columns": [ - "title", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100163091 - }, - { - "type": "video", - "id": 753055295, - "author": "大门E", - "mid": 735734, - "typeid": "31", - "typename": "翻唱", - "arcurl": "http://www.bilibili.com/video/av753055295", - "aid": 753055295, - "bvid": "BV1xk4y1k7aw", - "title": "【完整版日语版《少年》本尊来了】竟是国人元老唱见~", - "description": "词:lolo2513&梦然\n曲:梦然\n编曲:张亮\n混音:顾潇予\nPV:大门E\n之前唱了一个片段不料被许多人误以为《少年》原版是日本歌曲改编。因为没有版权一直没full,如今终于得到梦然老师(版权方)的认可及改编授权,终于出来了,再次感谢~!以我的key重新编曲,好哥们儿@lolo2513 老师的完整版日文填词,满满的少年jump既视感,唱的时候满脑子鸣人路飞,作为一个十五年的国人老唱见能被大家认可一首ACG歌曲简直泪流满面,希望大家能够喜欢~", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/363ece7b0fd61d1eb48a4bc3c2e804446b46ca1d.jpg", - "play": 676181, - "video_review": 1209, - "favorites": 31147, - "tag": "bilibili新星计划,少年,日语歌,翻唱", - "review": 1964, - "pubdate": 1588932007, - "senddate": 1588957659, - "duration": "4:1", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100152701 - }, - { - "type": "video", - "id": 328601322, - "author": "萌宠教主", - "mid": 23976014, - "typeid": "24", - "typename": "MAD·AMV", - "arcurl": "http://www.bilibili.com/video/av328601322", - "aid": 328601322, - "bvid": "BV1EA411i7MD", - "title": "用三十部动漫唱一首《少年》——你长大了,你还在追番吗?", - "description": "BGM:少年\n【剪辑,填词】萌宠教主\n【演唱】浅若_natsu", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/eb7c1be356fd3bc6a947bb6398b6f02fc961bec2.jpg", - "play": 381018, - "video_review": 2881, - "favorites": 28530, - "tag": "少年,AMV,多素材,MAD,综漫,混剪,梦然,催泪", - "review": 922, - "pubdate": 1592020805, - "senddate": 1592020836, - "duration": "4:5", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100129139 - }, - { - "type": "video", - "id": 838737756, - "author": "bili_148834382", - "mid": 148834382, - "typeid": "138", - "typename": "搞笑", - "arcurl": "http://www.bilibili.com/video/av838737756", - "aid": 838737756, - "bvid": "BV1Ug4y1v7mU", - "title": "大爷:我还是从前那个少年,没有一丝丝改变!", - "description": "大爷:我还是从前那个少年,没有一丝丝改变!", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/912cb238879558119d2f129438d7c71bb4372f9e.jpg", - "play": 7052, - "video_review": 18, - "favorites": 17, - "tag": "逗比,挑战,卧槽,沙雕,搞笑,大爷,厉害了,不一样呀,秀", - "review": 8, - "pubdate": 1593489906, - "senddate": 1593489906, - "duration": "1:34", - "badgepay": false, - "hit_columns": [ - "title", - "description" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100123108 - }, - { - "type": "video", - "id": 541162396, - "author": "鬼兄奇谈", - "mid": 94641579, - "typeid": "124", - "typename": "社科人文", - "arcurl": "http://www.bilibili.com/video/av541162396", - "aid": 541162396, - "bvid": "BV1Bi4y1G7mo", - "title": "少年黑帮“新龙会”覆灭记!史上最“中二”的黑社会,作案后竟留下错别字?", - "description": "少年黑帮“新龙会”覆灭记!史上最“中二”的黑社会,作案后竟留下错别字?\n视频内容及素材均来源于网络", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/4c0c8d8f720119e3087b6b02025c3d957d642781.jpg", - "play": 150747, - "video_review": 627, - "favorites": 487, - "tag": "犯罪,案件,奇闻,全能打卡挑战,学生,法制,黑社会,中二,违法", - "review": 438, - "pubdate": 1593596709, - "senddate": 1593596710, - "duration": "8:42", - "badgepay": false, - "hit_columns": [ - "title", - "description" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100120066 - }, - { - "type": "video", - "id": 413715309, - "author": "wkkm13", - "mid": 4056950, - "typeid": "76", - "typename": "美食圈", - "arcurl": "http://www.bilibili.com/video/av413715309", - "aid": 413715309, - "bvid": "BV1gV41167WS", - "title": "梦开始的地方,一年前那个不会剪辑的少年阿强。", - "description": "转自强哥第一个视频,那时候他还叫“浮华d假象”。\n梦开始的地方,那个不会剪辑的少年。", - "arcrank": "0", - "pic": "//i0.hdslb.com/bfs/archive/73772867e6a4ebaf66a12c73f1bc0d7a1f0fa085.jpg", - "play": 149332, - "video_review": 332, - "favorites": 86, - "tag": "cram阿强,泪目,美食,吃播,梦想,剪辑", - "review": 437, - "pubdate": 1593604848, - "senddate": 1593604848, - "duration": "5:31", - "badgepay": false, - "hit_columns": [ - "title", - "description" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100102196 - }, - { - "type": "video", - "id": 838507935, - "author": "木子山上起酥酥", - "mid": 185924591, - "typeid": "75", - "typename": "动物圈", - "arcurl": "http://www.bilibili.com/video/av838507935", - "aid": 838507935, - "bvid": "BV1Jg4y1q77h", - "title": "少年人,这是修行。", - "description": "微博", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/8eae881830a5fc2be1434781e086f7191082cec8.jpg", - "play": 120068, - "video_review": 43, - "favorites": 312, - "tag": "逗比,正能量,水豚,动物", - "review": 155, - "pubdate": 1592366769, - "senddate": 1592366769, - "duration": "0:15", - "badgepay": false, - "hit_columns": [ - "title" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100101593 - }, - { - "type": "video", - "id": 47749359, - "author": "Da圣音乐", - "mid": 353230307, - "typeid": "130", - "typename": "音乐综合", - "arcurl": "http://www.bilibili.com/video/av47749359", - "aid": 47749359, - "bvid": "BV12b411W7nF", - "title": "16岁中国少年韩国综艺上怒怼:老子来自中国!现场一片哗然", - "description": "16岁中国少年韩国综艺上怒怼:老子来自中国!现场一片哗然", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/171d9b27a0b9823b71894008117501014dd561ba.jpg", - "play": 5042589, - "video_review": 3949, - "favorites": 26065, - "tag": "说唱,韩国,中国,音乐选集,Rap,瞧不起,DISS,迪亚克,D.ark,综艺节目", - "review": 2793, - "pubdate": 1553926233, - "senddate": 1553926233, - "duration": "2:38", - "badgepay": false, - "hit_columns": [ - "title", - "description" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100101064 - }, - { - "type": "video", - "id": 82363754, - "author": "在下甘柒辣", - "mid": 374835894, - "typeid": "24", - "typename": "MAD·AMV", - "arcurl": "http://www.bilibili.com/video/av82363754", - "aid": 82363754, - "bvid": "BV1qJ411V7QH", - "title": "我已不再是少年,但你们终究活在我心里", - "description": "国动会越来越好的,它由我们一同注目它的成长。\nBGM: start\n可否给个币,给这个肝疼的up点鼓励( ̄y▽ ̄)~*", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/2c7afbc835dbce9f554eb1b21b583ef6bed34cce.jpg", - "play": 1588667, - "video_review": 6782, - "favorites": 37909, - "tag": "国产动画,国漫良心,国漫,国漫王者归来,星游记,镇魂街,灵笼,刺客伍六七,大圣归来,哪吒", - "review": 1190, - "pubdate": 1578320753, - "senddate": 1582999612, - "duration": "3:44", - "badgepay": false, - "hit_columns": [ - "title" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100099970 - }, - { - "type": "video", - "id": 413742409, - "author": "音乐Fans小琼", - "mid": 342943435, - "typeid": "130", - "typename": "音乐综合", - "arcurl": "http://www.bilibili.com/video/av413742409", - "aid": 413742409, - "bvid": "BV1bV41167Un", - "title": "《少年》霸占7周热歌第一,如今终于被新的神曲打破!网友:听吐了!", - "description": "bgm 纸砚zyan《画皮》\n《惊雷》MC六道\n《素颜》许嵩\n《麻雀》李荣浩\n《点歌的人》海来阿木\n《桥边姑娘》海伦 \n《旧梦一场》阿悠悠\n《世界这么大还是遇见你》程响(翻唱)\n《后来遇见他》胡66\n《处处吻》杨千嬅\n《少年》梦然", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/f004565df82a9ac3a8a168b4c12e244861f1d812.jpg", - "play": 12363, - "video_review": 137, - "favorites": 100, - "tag": "乐评盘点,全能打卡挑战,翻唱,许嵩,杨千嬅,李荣浩,喊麦,民谣,热歌,神曲", - "review": 71, - "pubdate": 1593523679, - "senddate": 1593576757, - "duration": "3:37", - "badgepay": false, - "hit_columns": [ - "title", - "description" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100097483 - }, - { - "type": "video", - "id": 625380628, - "author": "涩廊", - "mid": 178366933, - "typeid": "137", - "typename": "明星", - "arcurl": "http://www.bilibili.com/video/av625380628", - "aid": 625380628, - "bvid": "BV1Xt4y127bX", - "title": "这TM才叫日系美少年!", - "description": "道枝骏佑,02年霓虹国弟弟!杰尼斯美少年!没长残的童星代表!身高现在180+了!绰号米七(谐音)\n出演过电视剧《成为母亲》《我的裙子去哪了》\n\n米七是一个超级帅气可爱的男孩子!一直都在努力提升自己,请敬请期待他未来的作品!\n米七米七!未来可期!\n跪求三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连三连", - "arcrank": "0", - "pic": "//i2.hdslb.com/bfs/archive/9d727949eed2d82eb0561d08cbb3e28ac6603532.jpg", - "play": 768179, - "video_review": 1595, - "favorites": 29494, - "tag": "全能打卡挑战,杰尼斯,美少年,道枝骏佑,日系,米七", - "review": 1545, - "pubdate": 1588381204, - "senddate": 1590253109, - "duration": "1:22", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 100094816 - } - ], - "show_column": 0 - } -} -``` - -
diff --git a/search/search_response.md b/search/search_response.md deleted file mode 100644 index ed064d2..0000000 --- a/search/search_response.md +++ /dev/null @@ -1,778 +0,0 @@ -# 搜索响应条目 - -本页为搜索结果数组`result`中的对象的说明 - ---- - -- [对象类型1-结果为视频](#对象类型1-结果为视频) -- [对象类型2-结果为番剧&影视](#对象类型2-结果为番剧&影视) -- [对象类型3-结果为直播间](#对象类型3-结果为直播间) -- [对象类型4-结果为主播](#对象类型4-结果为主播) -- [对象类型5-结果为专栏](#对象类型5-结果为专栏) -- [对象类型6-结果为话题](#对象类型6-结果为话题) -- [对象类型7-结果为用户](#对象类型7-结果为用户) -- [对象类型8-结果为相簿](#对象类型8-结果为相簿) - ---- - -## 对象类型1-结果为视频 - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ----- | -------------- | ----------------------------------------- | -| type | str | 结果类型 | 固定为video | -| id | num | 结果 | 为稿件avid | -| author | str | UP主昵称 | | -| mid | num | UP主mid | | -| typeid | str | 视频分区tid | | -| typename | str | 视频子分区名 | | -| arcurl | str | 视频重定向url | | -| aid | num | 稿件avid | | -| bvid | str | 稿件bvid | | -| title | str | 视频标题 | 关键字用xml标签``标注 | -| description | str | 视频简介 | | -| arcrank | str | 0 | **作用尚不明确** | -| pic | str | 视频封面url | | -| play | num | 视频播放量 | | -| video_review | num | 视频弹幕量 | | -| favorites | num | 视频收藏数 | | -| tag | str | 视频TAG | 每项TAG用`,`分隔 | -| review | num | 视频评论数 | | -| pubdate | num | 视频投稿时间 | 时间戳 | -| senddate | num | 视频发布时间 | 时间戳 | -| duration | str | 视频时长 | HH:MM | -| badgepay | bool | false | **作用尚不明确** | -| hit_columns | array | 关键字匹配类型 | | -| view_type | str | 空 | **作用尚不明确** | -| is_pay | num | 0 | **作用尚不明确** | -| is_union_video | num | 是否为合作视频 | 0:否
1:是 | -| rec_tags | null | - | **作用尚不明确** | -| new_rec_tags | array | 空 | **作用尚不明确** | -| rank_score | num | 结果排序量化值 | | - -`视频条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------------------------------------------ | -| 0 | str | 匹配类型1 | title:标题匹配
description:简介匹配
author:UP主昵称匹配
tag:视频TAG匹配 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -**示例:** - -
-查看响应示例: - -```json -{ - "type": "video", - "id": 78977417, - "author": "MitchieM", - "mid": 5669526, - "typeid": "30", - "typename": "VOCALOID·UTAU", - "arcurl": "http://www.bilibili.com/video/av78977417", - "aid": 78977417, - "bvid": "BV1KJ411C7Un", - "title": "【Mitchie M】初音未来《买买买》【2020拜年祭单品】", - "description": "bilibili拜年祭のために、ダンスミュージックと中国の伝統楽器を組み合わせた曲を作りました。歌詞に「买买买」を使ったユニークな曲が出来上がったので、最高のクオリティーのMVと共に楽しんでもらえたら嬉しいです!\n为哔哩哔哩拜年祭制作了一首电子舞曲与中国传统乐器相结合的音乐,歌词是描写【买买买】的独特作品,和最棒的PV一起享受吧!\n\n▶︎ 舞蹈视频 [BV1pA411i7J6]", - "arcrank": "0", - "pic": "//i1.hdslb.com/bfs/archive/f0403bbd1ff3bad1df79aaa159d9e1cfb52c92de.jpg", - "play": 2915520, - "video_review": 14572, - "favorites": 114102, - "tag": "2020拜年祭单品,买买买,初音未来", - "review": 6124, - "pubdate": 1579877678, - "senddate": 1593099008, - "duration": "4:2", - "badgepay": false, - "hit_columns": [ - "title", - "description", - "tag" - ], - "view_type": "", - "is_pay": 0, - "is_union_video": 0, - "rec_tags": null, - "new_rec_tags": [], - "rank_score": 109020056 -} -``` - -
- -## 对象类型2-结果为番剧&影视 - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ------------------------------- | ---------------------------- | ------------------------------------------------------------ | -| type | str | 结果类型 | media_bangumi:番剧
media_ft:影视 | -| media_id | num | 剧集mdid | | -| season_id | num | 剧集ssid | | -| title | str | 剧集标题 | 关键字用xml标签``标注 | -| org_title | str | 剧集原名 | 关键字用xml标签``标注
可为空 | -| cover | str | 剧集封面url | | -| media_type | num | 剧集类型 | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | -| areas | str | 地区 | | -| styles | str | 风格 | | -| cv | str | 声优 | | -| staff | str | 制作组 | | -| play_state | num | 0 | **作用尚不明确** | -| goto_url | str | 剧集重定向url | | -| desc | str | 简介 | | -| corner | num | 角标有无 | 2:无
13:有 | -| pubtime | num | 开播时间 | 时间戳 | -| media_mode | num | 2 | **作用尚不明确** | -| is_avid | bool | false | **作用尚不明确** | -| fix_pubtime_str | str | 开播时间重写信息 | 优先级高于`pubtime`
可为空 | -| media_score | 有效时:obj
无效时:null | 评分信息 | | -| hit_columns | 有效时:array
无效时:null | 关键字匹配类型 | | -| all_net_name | str | 空 | **作用尚不明确** | -| all_net_icon | str | 空 | **作用尚不明确** | -| all_net_url | str | 空 | **作用尚不明确** | -| angle_title | str | 角标内容 | | -| angle_color | num | 角标颜色 | 0:红色
2:橙色 | -| display_info | array | 剧集标志信息 | | -| hit_epids | str | 关键字匹配分集标题的分集epid | 多个用`,`分隔 | -| pgc_season_id | num | 剧集ssid | | -| season_type | num | 剧集类型 | 1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | -| season_type_name | str | 剧集类型文字 | | -| selection_style | str | 分集选择按钮风格 | horizontal:横排式
grid:按钮式 | -| ep_size | num | 结果匹配的分集数 | | -| url | str | 剧集重定向url | | -| button_text | str | 观看按钮文字 | | -| is_follow | num | 是否追番 | 需要登录(SESSDATA)
未登录则恒为0
0:否
1:是 | -| is_selection | num | 1 | **作用尚不明确** | -| eps | array | 结果匹配的分集信息 | | -| badges | array | 剧集标志信息 | | - -`番剧条目`中的`media_score`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------ | ---- | -| user_count | num | 总计评分人数 | | -| score | num | 评分 | | - -`番剧条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | -------------------------------------- | -| 0 | str | 匹配类型1 | title:标题匹配
org_title:原标题 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -`番剧条目`中的`display_info`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ---- | -| 0 | obj | 剧集标志信息 | | - -`display_info`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ---- | ------------ | ------ | -| bg_color_night | str | 夜间背景颜色 | 颜色码 | -| text | str | 剧集标志 | 颜色码 | -| border_color | str | 背景颜色 | 颜色码 | -| bg_style | num | 1 | | -| text_color | str | 文字颜色 | 颜色码 | -| bg_color | str | 背景颜色 | 颜色码 | -| text_color_night | str | 夜间文字颜色 | 颜色码 | -| border_color_night | str | 夜间背景颜色 | 颜色码 | - -`番剧条目`中的`eps`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------ | -| 0 | obj | 分集信息1 | | -| n | obj | 分集信息(n+1) | 项数为同时匹配到的分集数 | -| …… | obj | …… | …… | - -`eps`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ----- | ------------- | ---- | -| id | num | 分集epid | | -| cover | str | 分集封面url | | -| title | str | 完整标题 | | -| url | str | 分集重定向url | | -| release_date | str | 空 | | -| badges | array | 分集标志 | | -| index_title | str | 短标题 | | -| long_title | str | 单集标题 | | - -`番剧条目`中的`badges`数组(同`eps`数组中的对象中的`badges`数组): - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ---- | -| 0 | obj | 剧集标志信息 | | - -`badges`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ---- | ------------ | ------ | -| text | str | 剧集标志 | 颜色码 | -| text_color | str | 文字颜色 | 颜色码 | -| text_color_night | str | 夜间文字颜色 | 颜色码 | -| bg_color | str | 背景颜色 | 颜色码 | -| bg_color_night | str | 夜间背景颜色 | 颜色码 | -| border_color | str | 空 | | -| border_color_night | str | 空 | | -| bg_style | num | 1 | | - -**示例:** - -
-查看响应示例: - -```json -{ - "media_id": 28224080, - "season_id": 29310, - "type": "media_bangumi", - "title": "异度侵入 ID:INVADED", - "org_title": "イド:インヴェイデッド", - "cover": "//i0.hdslb.com/bfs/bangumi/image/9bf9e66968f85b33ec3769a16c86b36dc984abbc.png", - "media_type": 1, - "areas": "日本", - "styles": "原创/科幻/推理", - "cv": "酒井户:津田健次郎\n百贵:细谷佳正\n富久田:竹内良太\n本堂町:M・A・O\n东乡:布里德卡特·塞拉·惠美\n早濑浦:村治学\n白岳:近藤隆\n羽二重:岩濑周平\n若鹿:榎木淳弥\n国府:加藤涉\n西村:落合福嗣\n松冈:西凛太朗 ", - "staff": "监督:青木英\n脚本:舞城王太郎\n角色原案:小玉有起\n角色设计:碇谷敦\n美术:曽野由大\n作画监督:又贺大介\n副监督:久保田雄大\n色彩设计:千叶絵美\n动画制作:NAZ", - "play_state": 0, - "goto_url": "https://www.bilibili.com/bangumi/play/ss29310/", - "desc": "本片讲述利用能检测出人们杀意的装置以及利用思想粒子做出的“井”,来探知事件真相的科幻故事。", - "corner": 13, - "pubtime": 1578240000, - "media_mode": 2, - "is_avid": false, - "fix_pubtime_str": "", - "media_score": { - "user_count": 275391, - "score": 9.8 - }, - "hit_columns": [ - "title" - ], - "all_net_name": "", - "all_net_icon": "", - "all_net_url": "", - "angle_title": "会员专享", - "angle_color": 0, - "display_info": [ - { - "bg_color_night": "#BB5B76", - "text": "会员专享", - "border_color": "#FB7299", - "bg_style": 1, - "text_color": "#FFFFFF", - "bg_color": "#FB7299", - "text_color_night": "#E5E5E5", - "border_color_night": "#BB5B76" - } - ], - "hit_epids": "", - "pgc_season_id": 29310, - "season_type": 1, - "season_type_name": "番剧", - "selection_style": "grid", - "ep_size": 13, - "url": "https://www.bilibili.com/bangumi/play/ss29310", - "button_text": "立即观看", - "is_follow": 1, - "is_selection": 1, - "eps": [ - { - "id": 307446, - "cover": "http://i0.hdslb.com/bfs/archive/4a1895e5b675209b6948dc321c3cc4991a6262bc.jpg", - "title": "1", - "url": "https://www.bilibili.com/bangumi/play/ep307446", - "release_date": "", - "badges": [], - "index_title": "1", - "long_title": "JIGSAWED 碎片世界" - }, - { - "id": 307447, - "cover": "http://i0.hdslb.com/bfs/archive/c66175203fdb6f54a9fb3accd793da0341b3140a.jpg", - "title": "2", - "url": "https://www.bilibili.com/bangumi/play/ep307447", - "release_date": "", - "badges": [ - { - "text": "会员", - "text_color": "#FFFFFF", - "text_color_night": "#E5E5E5", - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "border_color": "", - "border_color_night": "", - "bg_style": 1 - } - ], - "index_title": "2", - "long_title": "JIGSAWED Ⅱ 碎片世界" - }, - ………… - ], - "badges": [ - { - "text": "会员专享", - "text_color": "#FFFFFF", - "text_color_night": "#E5E5E5", - "bg_color": "#FB7299", - "bg_color_night": "#BB5B76", - "border_color": "", - "border_color_night": "", - "bg_style": 1 - } - ] -}, -``` - -
- -## 对象类型3-结果为直播间 - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | -------------- | ----------------------------------------- | -| type | str | 结果类型 | 固定为live_room | -| rank_offset | num | 搜索结果排名值 | | -| uid | num | 主播mid | | -| tas | str | 直播间TAG | 多个用`,`分隔 | -| hit_columns | array | 关键字匹配类型 | | -| live_time | str | 开播时间 | YYYY-MM-DD HH:MM:SS | -| cate_name | str | 子分区名 | | -| live_status | num | 1 | | -| uname | str | 主播昵称 | | -| uface | str | 主播头像url | | -| user_cover | str | 直播间封面url | | -| short_id | num | 0 | **作用尚不明确** | -| area | num | 1 | **作用尚不明确** | -| title | str | 直播间标题 | 关键字用xml标签``标注 | -| cover | str | 关键帧截图url | | -| online | num | 在线人数 | | -| rank_index | num | 0 | **作用尚不明确** | -| rank_score | num | 结果排序量化值 | | -| roomid | num | 直播间id | | -| attentions | num | 主播粉丝数 | | - -`直播间条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------------------------------------------ | -| 0 | str | 匹配类型1 | title:直播间标题匹配
cate_name:子分区名匹配
uname:主播昵称匹配 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -**示例:** - -
-查看响应示例: - -```json -{ - "rank_offset": 1, - "uid": 682508, - "tags": "minecraft,声控,我的世界,虚拟主播,助眠", - "hit_columns": [ - "title", - "cate_name" - ], - "live_time": "2020-07-03 19:08:46", - "cate_name": "我的世界", - "live_status": 1, - "uname": "超心塞的十六", - "uface": "//i0.hdslb.com/bfs/face/dc33ad47b5e299c08bea9cfe565373213012599c.jpg", - "user_cover": "//i0.hdslb.com/bfs/live/new_room_cover/cbc7b1d0ba181df2c714c2e45ab00937129d3c5c.jpg", - "short_id": 148, - "area": 1, - "type": "live_room", - "title": "MC 1.16 极限服", - "cover": "//i0.hdslb.com/bfs/live/keyframe07031915000000010313u3z18a.jpg", - "online": 34702, - "rank_index": 0, - "rank_score": 34702, - "roomid": 10313, - "attentions": 317864 -} -``` - -
- -## 对象类型4-结果为主播 - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | -------------- | ------------------------------------------------------ | -| type | str | 结果类型 | 固定为live_user | -| rank_offset | num | 搜索结果排名值 | | -| uid | num | 主播mid | | -| tas | str | 直播间TAG | 多个用`,`分隔 | -| live_time | str | 开播时间 | YYYY-MM-DD HH:MM:SS
如未开播为0000-00-00 00:00:00 | -| hit_columns | array | 关键字匹配类型 | | -| live_status | num | 是否开播 | 0:未开播
1:已开播 | -| area | num | 1 | **作用尚不明确** | -| is_live | bool | 是否开播 | false:未开播
true:已开播 | -| uname | str | 主播昵称 | 关键字用xml标签``标注 | -| uface | str | 主播头像url | | -| rank_index | num | 0 | **作用尚不明确** | -| rank_score | num | 结果排序量化值 | | -| attentions | num | 主播粉丝数 | | - -`主播条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------ | -| 0 | str | 匹配类型1 | uname:主播昵称匹配 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -**示例:** - -
-查看响应示例: - -```json -{ - "rank_offset": 1, - "uid": 322892, - "tags": "鬼畜,游戏,瞎扯淡,轰炸挂", - "type": "live_user", - "live_time": "2020-07-03 17:57:30", - "hit_columns": [ - "uname" - ], - "live_status": 1, - "area": 1, - "is_live": true, - "uname": "痒局长", - "uface": "//i2.hdslb.com/bfs/face/bcdf640faa16ebaacea1d4c930baabaec9087a80.jpg", - "rank_index": 0, - "rank_score": 2620790, - "roomid": 5441, - "attentions": 2570790 -} -``` - -
- -## 对象类型5-结果为专栏 - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | -------------- | ---------------- | -| type | str | 结果类型 | 固定为article | -| rank_offset | num | 搜索结果排名值 | | -| pub_time | num | 投稿时间 | 时间戳 | -| like | num | 获赞数 | | -| title | str | 标题 | | -| mid | num | UP主mid | | -| image_urls | array | 封面图组 | | -| template_id | num | ??? | **作用尚不明确** | -| category_id | num | 专栏分区 | | -| view | num | 阅读数 | | -| reply | num | 评论数 | | -| rank_index | num | 0 | **作用尚不明确** | -| desc | str | 文章预览 | | -| rank_score | num | 结果排序量化值 | | -| id | num | 专栏cvid | | -| category_name | str | 子分区名 | | - -`专栏条目`中的`covers`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | str | 封面图片1 | | -| n | str | 封面图片(n+1) | | -| …… | str | …… | | - -**示例:** - -
-查看响应示例: - -```json -{ - "pub_time": 1582123245, - "like": 113, - "title": "【洛水闲谈】《普通DISCO》神话达成后的个人感想", - "rank_offset": 1, - "mid": 295535204, - "image_urls": [ - "//i0.hdslb.com/bfs/article/0c2e7e3cc14f7e097482688600be713a9e9a7029.png" - ], - "template_id": 4, - "category_id": 4, - "view": 843, - "reply": 58, - "rank_index": 0, - "desc": "今天,2020年2月19日,随着bilibili弹幕网上《普通DISCO》的播放量突破1000W,中文VOCALOID的第一首神话级歌曲诞生了。笔者昨夜盯着《普通DISCO》的播放量的增长速率熬到很晚,今早又起了个大早盯着那最后一万的播放量差距,直到播放量突破1000W才放松紧绷的神经,敲打键盘时肢体困倦神疲乏力,故长话短说,若有表达不妥之处还望各位海涵。ilem教主,其拥有近二十首百万传说曲,占bilibili弹幕网中文VOCALOID百万传说曲的三分之一,中文VOCALOID第一首传说曲与第", - "rank_score": 19, - "type": "article", - "id": 4743576, - "category_name": "动漫杂谈" -} -``` - -
- -## 对象类型6-结果为话题 - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ----------------- | ---------------- | -| type | str | 结果类型 | 固定为topic | -| description | str | 简介 | | -| pubdate | nm | 发布时间 | 时间戳 | -| title | str | 标题 | | -| favourite | num | 0 | **作用尚不明确** | -| hit_columns | array | 关键字匹配类型 | | -| review | num | 0 | **作用尚不明确** | -| rank_offset | num | 搜索结果排名值 | | -| cover | str | 话题封面url | | -| update | num | 上传时间 | 时间戳 | -| mid | nm | 0 | **作用尚不明确** | -| click | num | ??? | **作用尚不明确** | -| tp_type | num | ??? | **作用尚不明确** | -| keyword | str | 空 | **作用尚不明确** | -| tp_id | num | 话题tp | | -| rank_index | num | 0 | **作用尚不明确** | -| author | str | UP主昵称 | | -| arcurl | str | 话题页面重定向url | | -| rank_score | num | 结果排序量化值 | | - -`话题条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------ | -| 0 | str | 匹配类型1 | title:话题标题匹配 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -**示例:** - -
-查看响应示例: - -```json -{ - "description": "「Bad Apple」的各式各样的PV有很多很多,小编在这里给大家推荐一些比较特别且高人气的特别PV......", - "pubdate": 1479380676, - "title": "「Bad Apple」 的N种特别PV", - "favourite": 0, - "hit_columns": [ - "title" - ], - "review": 0, - "rank_offset": 1, - "cover": "//i0.hdslb.com/bfs/active/3005a94d446db3873d97b483323156b491d850ac.jpg", - "update": 31507200, - "mid": 0, - "click": 211843, - "tp_type": 0, - "keyword": "", - "tp_id": 2215, - "rank_index": 0, - "author": "Nuuu", - "type": "topic", - "arcurl": "http://www.bilibili.com/topic/50.html", - "rank_score": 1851888 -} -``` - -
- -## 对象类型7-结果为用户 - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ----- | -------------- | ----------------------------- | -| type | str | 结果类型 | 固定为bili_user | -| mid | num | 用户mid | | -| uname | str | 用户昵称 | | -| usign | str | 用户签名 | | -| fans | num | 用户粉丝数 | | -| videos | num | 用户稿件数 | | -| upic | str | 用户头像url | | -| verify_info | str | 空 | **作用尚不明确** | -| level | num | 用户等级 | | -| gender | num | 用户性别 | 1:男
2:女
3:私密 | -| is_upuser | num | 是否为UP主 | 0:否
1:是 | -| is_live | num | 是否正在直播 | 0:否
1:是 | -| room_id | num | 用户直播间id | | -| res | array | 用户投稿内容 | | -| official_verify | obj | 用户认证信息 | | -| hit_columns | array | 关键字匹配类型 | | - -`用户条目`中的`res`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ------------------------- | -| 0 | obj | 用户投稿视频1 | | -| n | obj | 用户投稿视频(n+1) | 项数为用户投稿的3个视频数 | -| …… | obj | …… | …… | - -`res`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ----------------- | ---------------- | -| aid | num | 稿件avid | | -| bvid | str | 稿件bvid | | -| title | str | 视频标题 | | -| pubdate | num | 视频投稿时间 | 时间戳 | -| arcurl | str | 视频页面重定向url | | -| pic | str | 视频封面图片url | | -| play | str | 播放量 | | -| dm | str | 弹幕量 | | -| coin | num | 投币数 | | -| fav | num | 收藏数 | | -| desc | str | 视频简介 | | -| duration | str | 视频时长 | MM:SS | -| is_pay | num | 0 | **作用尚不明确** | -| is_union_video | num | 是否为合作视频 | 0:否
1:是 | - -`用户条目`中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ----------------------------------------- | -| type | num | 是否认证 | 127:无
0:个人认证
1:组织认证 | -| desc | str | 认证名称 | | - -`用户条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------ | -| 0 | str | 匹配类型1 | uname:用户昵称匹配 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -**示例:** - -
-查看响应示例: - -```json -{ - "type": "bili_user", - "mid": 208259, - "uname": "陈睿", - "usign": "喜欢的话就坚持吧", - "fans": 1561640, - "videos": 5, - "upic": "//i1.hdslb.com/bfs/app/8920e6741fc2808cce5b81bc27abdbda291655d3.png", - "verify_info": "", - "level": 6, - "gender": 1, - "is_upuser": 1, - "is_live": 0, - "room_id": 3394945, - "res": [ - { - "aid": 883660923, - "bvid": "BV1SK4y1477d", - "title": "BILIBILI 11周年演讲", - "pubdate": 1593176427, - "arcurl": "http://www.bilibili.com/video/av883660923", - "pic": "//i0.hdslb.com/bfs/archive/b28021df9c67ee2821cb9c1142b9d5e594e3b951.jpg", - "play": "6144081", - "dm": 185789, - "coin": 167803, - "fav": 147421, - "desc": "BILIBILI 11周年演讲,邀请数位嘉宾分享他们与B站的故事。\n陈睿《bilibili 11周年主题演讲》\n机智的党妹 《在B站,表达自我》\n腾格尔《在B站,做全新的腾格尔》\n周深《在B站,做一个歌手》《起风了》\n罗翔《在B站,授业与解惑》\nCarly李旎《在B站,一起成长》\nBILIBILI 11周年特映片《喜相逢》", - "duration": "217:7", - "is_pay": 0, - "is_union_video": 1 - }, - { - "aid": 838688095, - "bvid": "BV1Wg4y1v77h", - "title": "我们的五年——B站五年员工纪念视频 2020版", - "pubdate": 1593004830, - "arcurl": "http://www.bilibili.com/video/av838688095", - "pic": "//i1.hdslb.com/bfs/archive/701da662dfe00fb180eb4a47f1c38403838570a7.jpg", - "play": "957960", - "dm": 10830, - "coin": 44030, - "fav": 23108, - "desc": "每年626前夕,我们都会给本年度满五年工龄的员工颁发金LOGO(金质的小电视胸章),感谢他们对公司的陪伴和付出。“五年守护,感恩有你”", - "duration": "4:51", - "is_pay": 0, - "is_union_video": 0 - }, - { - "aid": 327892668, - "bvid": "BV1fA411b7zo", - "title": "【推荐一本喜欢的书】上帝掷骰子吗?", - "pubdate": 1587632267, - "arcurl": "http://www.bilibili.com/video/av327892668", - "pic": "//i0.hdslb.com/bfs/archive/c3ec25e2e4425303d7f4915692e3a9f0ec027669.jpg", - "play": "2131624", - "dm": 13570, - "coin": 37432, - "fav": 35498, - "desc": "#推荐一本喜欢的书# 423世界读书日,推荐我看过的最好看的量子物理科普书籍《上帝掷骰子吗》#读书等身#\n欢迎参与B站读书日活动:https://www.bilibili.com/blackboard/activity-gNeFPygv0.html 你每投一个读书视频,B站都会为你捐出一本书。", - "duration": "4:46", - "is_pay": 0, - "is_union_video": 0 - } - ], - "official_verify": { - "type": 0, - "desc": "bilibili董事长兼CEO" - }, - "hit_columns": [ - "uname" - ] -} -``` - -
- -## 对象类型8-结果为相簿 - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | -------------- | ---------------- | -| type | str | 结果类型 | 固定为photo | -| count | num | 图片数 | | -| like | num | 收藏数 | | -| title | str | 相簿标题 | | -| hit_columns | array | 关键字匹配类型 | | -| rank_offset | num | 搜索结果排名值 | | -| cover | str | 相簿封面url | | -| mid | num | UP主mid | | -| uname | str | UP主昵称 | | -| rank_index | num | 0 | **作用尚不明确** | -| view | num | 观看次数 | | -| id | num | 相簿id | | -| rank_score | num | 结果排序量化值 | | - -`相簿条目`中的`hit_columns`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------------------------------------------ | -| 0 | str | 匹配类型1 | title:相簿标贴匹配
description:相簿简介匹配
source_tag:相簿TAG匹配 | -| n | str | 匹配类型(n+1) | 项数为同时匹配到的类型数 | -| …… | str | …… | …… | - -**示例:** - -
-查看响应示例: - -```json -{ - "count": 4, - "like": 42, - "title": "EVA Q 绫波丽", - "hit_columns": [ - "title" - ], - "rank_offset": 1, - "cover": "http://i0.hdslb.com/bfs/album/1043ee70b677c9aab406142c6aa00d097be07c1e.jpg", - "mid": 3306217, - "uname": "迷失人形LLS", - "rank_index": 0, - "view": 100924, - "type": "photo", - "id": 8952802, - "rank_score": 25315 -} -``` - -
\ No newline at end of file diff --git a/search/suggest.md b/search/suggest.md deleted file mode 100644 index 441054f..0000000 --- a/search/suggest.md +++ /dev/null @@ -1,185 +0,0 @@ -# 搜索建议 - -- [获取搜索建议关键词(web端)](#获取搜索建议关键词web端) - ---- - -## 获取搜索建议关键词(web端) - -> https://s.search.bilibili.com/main/suggest - -*请求方式:GET* - -搜索建议最多提供10个候选关键词 - -搜索建议内容可为任意语言(中 英 日等....),中文拼音支持全拼联想词 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| --------- | ---- | ---------------------- | ------ | ------------------------ | -| term | str | 需要获得建议的输入内容 | 必要 | | -| main_ver | str | v1 | 非必要 | 固定为`v1` | -| highlight | str | 任意 | 非必要 | 有此项开启关键词高亮标签 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ------------ | ------------ | -| code | num | 返回值 | 0:成功 | -| cost | obj | 详细搜索用时 | 大概是吧? | -| result | obj | 搜索建议结果 | | -| page caches | obj | ??? | 作用尚不明确 | -| sengine | obj | ??? | 作用尚不明确 | -| stoken | str | ??? | 作用尚不明确 | - -`cost`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ---- | -| about | obj | 套了个娃 | | - -`cost`中的`about`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---- | ---- | -| params_check | str | | | -| total | str | | | -| main_handler | str | | | - -`result`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----- | -------- | ---- | -| tag | array | 套了个娃 | | - -`result`中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------- | ---------------------- | -| 0 | obj | 第1建议关键词 | | -| n | obj | 第(n+1)建议关键词 | 按照相关程度与热度顺序 | -| 9 | obj | 第10建议关键词 | 最后一项 | - -`tag`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ------------------------------------------------------------ | -| value | str | 关键词内容 | | -| ref | num | 0 | 作用尚不明确 | -| name | str | 显示内容 | 在无高亮显示时与`value`相同
有高亮显示时带有``的xml标签 | -| spid | num | ??? | 作用尚不明确 | - -`page caches`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---- | ------------ | -| save cache | str | no | 作用尚不明确 | - -`sengine`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---- | ------------ | -| usage | num | 0 | 作用尚不明确 | - -**示例:** - -获取关于`lei`的搜索建议,关键词带有高亮 - -```shell -curl -G 'https://s.search.bilibili.com/main/suggest' \ ---data-urlencode 'term=lei' \ ---data-urlencode 'main_ver=v1' \ ---data-urlencode 'highlight=' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "cost": { - "about": { - "params_check": "0.000103", - "total": "0.011644", - "main_handler": "0.011472" - } - }, - "result": { - "tag": [ - { - "value": "雷军", - "ref": 0, - "name": "雷军", - "spid": 1 - }, - { - "value": "雷之律者", - "ref": 0, - "name": "雷之律者", - "spid": 5 - }, - { - "value": "LEI神", - "ref": 0, - "name": "LEI神", - "spid": 5 - }, - { - "value": "LEIGH ELLEXSON", - "ref": 0, - "name": "LEIGH ELLEXSON", - "spid": 5 - }, - { - "value": "LEICA Q2", - "ref": 0, - "name": "LEICA Q2", - "spid": 5 - }, - { - "value": "LEIGHANNE", - "ref": 0, - "name": "LEIGHANNE", - "spid": 0 - }, - { - "value": "雷达探测姬", - "ref": 0, - "name": "雷达探测姬", - "spid": 5 - }, - { - "value": "雷律", - "ref": 0, - "name": "雷律", - "spid": 5 - }, - { - "value": "雷霆嘎巴", - "ref": 0, - "name": "雷霆嘎巴", - "spid": 5 - }, - { - "value": "雷霆沙赞", - "ref": 0, - "name": "雷霆沙赞", - "spid": 5 - } - ] - }, - "page caches": { - "save cache": "no" - }, - "sengine": { - "usage": 0 - }, - "stoken": "12344377692164099019" -} -``` - -
diff --git a/user/check_nickname.md b/user/check_nickname.md deleted file mode 100644 index add987e..0000000 --- a/user/check_nickname.md +++ /dev/null @@ -1,137 +0,0 @@ -# 检查昵称是否可注册 - -- [检查昵称](#检查昵称) - ---- - -## 检查昵称 - -> https://passport.bilibili.com/web/generic/check/nickname - -*请求方式:GET* - -也可用于判断指定昵称的用户是否存在 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ----------- | ------ | ---- | -| nickName | str | 目标昵称 | 必要 | 最长为16字符 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 状态码 | -400:请求错误
-500:服务器端异常
**详细说明见下一表格** | -| message | str | 错误详情 | 若昵称可用,则不返回message | - -`code`状态码: - -| 值 | 含义 | -| ----- | --------------------------------- | -| 0 | 昵称未被注册 | -| 2001 | 该昵称已被他人使用 | -| 40002 | 昵称包含敏感信息 | -| 40004 | 昵称不可包含除\-和_以外的特殊字符 | -| 40005 | 昵称过长(超过16字符) | -| 40006 | 昵称过短(少于2字符) | -| 40014 | 昵称已存在 | - -**示例:** - -查询昵称 `xijinping` 是否被使用: - -```shell -curl -G 'https://passport.bilibili.com/web/generic/check/nickname' \ ---data-urlencode 'nickName=xijinping' -``` - -
-查看响应示例: - -```json -{ - "code":40002, - "message":"昵称包含敏感信息" -} -``` - -
- -查询昵称 `//` 是否被使用: - -```shell -curl -G 'https://passport.bilibili.com/web/generic/check/nickname' \ ---data-urlencode 'nickName=//' -``` - -
-查看响应示例: - -```json -{ - "code": 40004, - "message": "昵称不可包含除-和_以外的特殊字符" -} -``` - -
- -查询昵称 `test0000000000000 ` 是否被使用: - -```shell -curl -G 'https://passport.bilibili.com/web/generic/check/nickname' \ ---data-urlencode 'nickName=test0000000000000 ' -``` - -
-查看响应示例: - -```json -{ - "code": 40005, - "message": "昵称过长" -} -``` - -
- -查询昵称 `0` 是否被使用: - -```shell -curl -G 'https://passport.bilibili.com/web/generic/check/nickname' \ ---data-urlencode 'nickName=0' -``` - -
-查看响应示例: - -```json -{ - "code": 40006, - "message": "昵称过短" -} -``` - -
- -查询昵称 `test` 是否被使用: - -```shell -curl -G 'https://passport.bilibili.com/web/generic/check/nickname' \ ---data-urlencode 'nickName=test' -``` - -
-查看响应示例: - -```json -{ - "code":40014, - "message":"昵称已存在" -} -``` - -
diff --git a/user/contract.md b/user/contract.md deleted file mode 100644 index 7080164..0000000 --- a/user/contract.md +++ /dev/null @@ -1,131 +0,0 @@ -# 加入老粉计划 - -> https://api.bilibili.com/x/v1/contract/add_contract - -*请求方式:POST* - -是否需要登录:`是` - -认证方式:Cookie(SESSDATA) - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|----------|-----|--------|-----|-----| -| aid | str | `空串` | | | -| up_mid | str | UP主UID | 必要 | | -| source | str | `4` | | | -| scene | str | `105` | | | -| platform | str | `web` | | | -| mobi_app | str | `pc` | | | -| csrf | str | 用户csrf | 必要 | | - -**json回复:** - -根对象: - -| 字段名 | 类型 | 内容 | 备注 | -|---------|-----|------|-------------------------| -| code | num | 响应码 | 0:成功
158001:`不满足条件` | -| message | str | 0 | | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象 - -| 字段名 | 类型 | 内容 | 备注 | -|---------------|------|-----------------------------------|-----| -| allow_message | bool | `true` | | -| input_text | str | `UP主加油!看好你噢` | | -| input_title | str | `感谢你对UP主的特别支持,“老粉”可期!私信留言鼓励下TA吧 ` | | - -**示例:** - -```shell -curl --location --request POST 'https://api.bilibili.com/x/v1/contract/add_contract' \ ---header 'Cookie: SESSDATA=xxx' \ ---header 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'up_mid=2' \ ---data-urlencode 'csrf=xxx' -``` - -
-点击查看 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "allow_message": true, - "input_text": "UP主加油!看好你噢", - "input_title": "感谢你对UP主的特别支持,“老粉”可期!私信留言鼓励下TA吧 " - } -} -``` - -
- -# 老粉计划发送留言 - -> https://api.bilibili.com/x/v1/contract/add_message - -*请求方式:POST* - -认证方式:Cookie (SESSDATA) - -**正文参数 (application/x-www-form-urlencoded):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|---------|-----|--------|-----|-----| -| aid | str | `空串` | | | -| up_mid | str | UP主UID | 必要 | | -| source | str | `4` | | | -| scene | str | `105` | | | -| content | str | 留言内容 | 必要 | | -| csrf | str | 用户csrf | 必要 | | - -**json回复:** - -根对象: - -| 字段名 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------| -| code | num | 响应码 | 0:成功
158005:您跟up主还不是契约关系 | -| message | str | 0 | | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象 - -| 字段名 | 类型 | 内容 | 备注 | -|---------------|-----|------------------|-----| -| success_toast | str | `提交成功,UP主已收到留言~` | | - -**示例:** - -```shell -curl --location --request POST 'https://api.bilibili.com/x/v1/contract/add_message' \ ---header 'Cookie: SESSDATA=xxx' \ ---header 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'up_mid=2' \ ---data-urlencode 'content=..' \ ---data-urlencode 'csrf=xxx' -``` - -
-点击查看 - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "success_toast": "提交成功,UP主已收到留言~" - } -} -``` - -
\ No newline at end of file diff --git a/user/info.md b/user/info.md deleted file mode 100644 index 9fc0c90..0000000 --- a/user/info.md +++ /dev/null @@ -1,1229 +0,0 @@ -# 用户基本信息 - - - -- [用户空间详细信息](#用户空间详细信息) -- [用户名片信息](#用户名片信息) -- [登录用户空间详细信息](#登录用户空间详细信息) -- [多用户详细信息](#多用户详细信息) - ---- - -## 用户空间详细信息 - -> https://api.bilibili.com/x/space/acc/info - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------------|------|------------|--------------------------------------------------------------------------------------------------| -| mid | num | mid | | -| name | str | 昵称 | | -| sex | str | 性别 | 男/女/保密 | -| face | str | 头像链接 | | -| face_nft | num | 是否为 nft 头像 | `0`不是nft头像
`1`是 nft 头像 | -| face_nft_type | num | | 0,1 | -| sign | str | 签名 | | -| rank | num | 用户权限等级 | 目前应该无任何作用
5000:0级未答题
10000:普通会员
20000:字幕君
25000:VIP
30000:真·职人
32000:管理员 | -| level | num | 当前等级 | 0-6级 | -| jointime | num | 注册时间 | 此接口返回恒为`0` | -| moral | num | 节操值 | 此接口返回恒为`0` | -| silence | num | 封禁状态 | 0:正常
1:被封 | -| coins | num | 硬币数 | 需要登录(Cookie)
只能查看自己的
默认为0 | -| fans_badge | bool | 是否具有粉丝勋章 | false:无
true:有 | -| fans_medal | obj | 粉丝勋章信息 | | -| official | obj | 认证信息 | | -| vip | obj | 会员信息 | | -| pendant | obj | 头像框信息 | | -| nameplate | obj | 勋章信息 | | -| user_honour_info | obj | | | -| is_followed | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录恒为false | -| top_photo | str | 主页头图链接 | | -| theme | obj | 空 | **作用尚不明确** | -| sys_notice | obj | 系统通知 | 无内容则为空对象
主要用于展示如用户争议、纪念账号等等 | -| live_room | obj | 直播间信息 | | -| birthday | str | 生日 | MM-DD
如设置隐私为空 | -| school | obj | 学校 | | -| profession | obj | 专业资质信息 | | -| tags | null | 个人标签 | | -| series | obj | | | -| is_senior_member | num | 是否为硬核会员 | 0:否
1:是 | -| mcn_info | null | | | -| gaia_res_type | num | | | -| gaia_data | null | | | -| is_risk | bool | | | -| elec | obj | 充电信息 | | -| contract | obj | 是否显示老粉计划 | | - -`rank`示例 - -| UID | rank | -|-----------|-------| -| 2 | 20000 | -| 16765 | 20000 | -| 15773384 | 20000 | -| 124416 | 20000 | -| 429736362 | 25000 | -| 424261768 | 25000 | -| 41273726 | 25000 | -| 15080107 | 25000 | -| 9847497 | 25000 | -| 4856007 | 25000 | -| 928123 | 25000 | -| 132704 | 25000 | -| 70093 | 25000 | -| 47291 | 25000 | -| 27380 | 25000 | -| 22445 | 25000 | -| 3351 | 25000 | -| 1101 | 25000 | -| 93066 | 30000 | -| 2443068 | 30000 | -| 46368 | 30000 | -| 11167 | 30000 | - -`profession`示例 - -| UID | -|------------| -| 654391 | -| 1440295 | -| 1785155 | -| 2990100 | -| 3875803 | - -`data`中的`official`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|------|-----------------------------------------| -| role | num | 认证类型 | 0:无
1 2 7 9:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 是否认证 | -1:无
0:个人认证
1:机构认证 | - -`data`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------------|-----|-----------|----------------------------------------------| -| type | num | 会员类型 | 0:无
1:月大会员
2:年度及以上大会员 | -| status | num | 会员状态 | 0:无
1:有 | -| due_date | num | 会员过期时间 | Unix时间戳(毫秒) | -| vip_pay_type | num | 支付类型 | 0:未支付(常见于官方账号)
1:已支付(以正常渠道获取的大会员均为此值) | -| theme_type | num | 0 | 作用尚不明确 | -| label | obj | 会员标签 | | -| avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | -| nickname_color | str | 会员昵称颜色 | 颜色码,一般为`#FB7299`,曾用于愚人节改变大会员配色 | -| role | num | 大角色类型 | 1:月度大会员
3:年度大会员
7:十年大会员
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:大会员
annual_vip:年度大会员
ten_annual_vip:十年大会员
hundred_annual_vip:百年大会员
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`中的`pendant`对象: - -**普通头像框的`image`与`image_enhance`内容相同** -**动态头像框的`image`为png静态图片,`image_enhance`为webp动态图片,`image_enhance_frame`为png逐帧序列** - -| 字段 | 类型 | 内容 | 备注 | -|---------------------|-----|--------------|------------| -| pid | num | 头像框id | | -| name | str | 头像框名称 | | -| image | str | 头像框图片url | | -| expire | num | 过期时间 | 此接口返回恒为`0` | -| image_enhance | str | 头像框图片url | | -| image_enhance_frame | str | 头像框图片逐帧序列url | | - -`data`中的`nameplate`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|---------|-----| -| nid | num | 勋章id | | -| name | str | 勋章名称 | | -| image | str | 勋章图标 | | -| image_small | str | 勋章图标(小) | | -| level | str | 勋章等级 | | -| condition | str | 获取条件 | | - -`data`中的`fans_medal`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|------|-----------|-----| -| show | bool | | | -| wear | bool | 是否佩戴了粉丝勋章 | | -| medal | obj | 粉丝勋章信息 | | - -`fans_medal`中的`medal`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------------|-----|--------------|------------------| -| uid | num | 此用户mid | | -| target_id | num | 粉丝勋章所属UP的mid | | -| medal_id | num | 粉丝勋章id | | -| level | num | 粉丝勋章等级 | | -| medal_name | str | 粉丝勋章名称 | | -| medal_color | num | 颜色 | | -| intimacy | num | 当前亲密度 | | -| next_intimacy | num | 下一等级所需亲密度 | | -| day_limit | num | 每日亲密度获取上限 | | -| today_feed | num | 今日已获得亲密度 | | -| medal_color_start | num | 粉丝勋章颜色 | 十进制数,可转为十六进制颜色代码 | -| medal_color_end | num | 粉丝勋章颜色 | 十进制数,可转为十六进制颜色代码 | -| medal_color_border | num | 粉丝勋章边框颜色 | 十进制数,可转为十六进制颜色代码 | -| is_lighted | num | | | -| light_status | num | | | -| wearing_status | num | 当前是否佩戴 | 0:未佩戴
1:已佩戴 | -| score | num | | | - -`data`中的`sys_notice`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|------|-----| -| id | num | id | | -| content | str | 显示文案 | | -| url | str | 跳转地址 | | -| notice_type | num | 提示类型 | 1,2 | -| icon | str | 前缀图标 | | -| text_color | str | 文字颜色 | | -| bg_color | str | 背景颜色 | | - -`sys_notice`示例 - -| id | content | url | notice_type | 示例用户 | -|-----|-------------------------------------------------|-----|-------------|-------------------------------------------------------------------------------------------------| -| 5 | 该用户存在争议行为,已冻结其帐号功能的使用 | | 1 | [82385070](https://space.bilibili.com/82385070) | -| 8 | 该用户存在较大争议,请谨慎甄别其内容 | | 1 | [28062215](https://space.bilibili.com/28062215) | -| 11 | 该账号涉及合约争议,暂冻结其账号功能使用。详见公告-> | | 1 | -| 16 | 该UP主内容存在争议,请注意甄别视频内信息 | | 1 | [382534165](https://space.bilibili.com/382534165) | -| 20 | 请允许我们在此献上最后的告别,以此纪念其在哔哩哔哩留下的回忆与足迹。请点此查看纪念账号相关说明 | | 2 | -| 22 | 该账号涉及合约诉讼,封禁其账号使用。 | | -| 24 | 该账号涉及合约争议,暂冻结其账号功能使用。 | | 1 | [291229008](https://space.bilibili.com/291229008) | -| 25 | 该用户涉及严重指控,暂冻结其账号功能使用 | | 1 | [81447581](https://space.bilibili.com/81447581) | -| 31 | 该用户涉及严重指控,暂冻结其账号功能使用 | | 1 | [22439273](https://space.bilibili.com/22439273) | -| 34 | 该用户涉及严重指控,暂冻结其账号功能使用 | | 1 | [1640486775](https://space.bilibili.com/1640486775) | -| 36 | 该账户存在争议,请谨慎甄别 | | 1 | [198297](https://space.bilibili.com/198297)
[18149131](https://space.bilibili.com/18149131) | - -`data`中的`live_room`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------|-----|------------|------------------| -| roomStatus | num | 直播间状态 | 0:无房间
1:有房间 | -| liveStatus | num | 直播状态 | 0:未开播
1:直播中 | -| url | str | 直播间网页 url | | -| title | str | 直播间标题 | | -| cover | str | 直播间封面 url | | -| watched_show | obj | | | -| roomid | num | 直播间 id(短号) | | -| roundStatus | num | 轮播状态 | 0:未轮播
1:轮播 | -| broadcast_type | num | 0 | | - -`live_room`中的`watched_show`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|------|---------------------|-----| -| switch | bool | ? | | -| num | num | total watched users | | -| text_small | str | | | -| text_large | str | | | -| icon | str | watched icon url | | -| icon_location | str | ? | | -| icon_web | str | watched icon url | | - -`data`中的`school`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|-------| -| name | str | 就读大学名称 | 没有则为空 | - -`data`中的`profession`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|------|----------------| -| name | str | 资质名称 | | -| department | str | 职位 | | -| title | str | 所属机构 | | -| is_show | num | 是否显示 | 0:不显示
1:显示 | - -`data`中的`user_honour_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|-------|------|-----| -| mid | num | 0 | | -| colour | str | null | | -| tags | array | null | | - -`data`中的`series`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------------|------|-----|-----| -| user_upgrade_status | num | (?) | | -| show_upgrade_window | bool | (?) | | - -`data`中的`elec`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------|-----|-----|-----| -| show_info | obj | | | - -`elec`中的`show_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|------|---------|------------------| -| show | bool | 是否开通了充电 | | -| state | num | 状态 | -1:未开通
1:已开通 | -| title | str | `空串` | | -| icon | str | `空串` | | -| jump_url | str | `空串` | | - -`data`中的`contract`对象: - -| 字段名 | 类型 | 内容 | 备注 | -|-------------------|------|-----------|---------------------------| -| is_display | bool | | true/false
在页面中未使用此字段 | -| is_follow_display | bool | 是否在显示老粉计划 | true:显示
false:不显示 | - -**示例:** - -查询用户`mid=2`的详细信息 - -```shell -curl -G 'https://api.bilibili.com/x/space/acc/info' \ ---data-urlencode 'mid=2' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 2, - "name": "碧诗", - "sex": "男", - "face": "https://i2.hdslb.com/bfs/face/ef0457addb24141e15dfac6fbf45293ccf1e32ab.jpg", - "face_nft": 0, - "face_nft_type": 0, - "sign": "https://kami.im 直男过气网红 # We Are Star Dust", - "rank": 20000, - "level": 6, - "jointime": 0, - "moral": 0, - "silence": 0, - "coins": 0, - "fans_badge": true, - "fans_medal": { - "show": true, - "wear": true, - "medal": { - "uid": 2, - "target_id": 335115, - "medal_id": 45408, - "level": 21, - "medal_name": "伍千万", - "medal_color": 1725515, - "intimacy": 1980, - "next_intimacy": 2000, - "day_limit": 250000, - "medal_color_start": 1725515, - "medal_color_end": 5414290, - "medal_color_border": 1725515, - "is_lighted": 1, - "light_status": 1, - "wearing_status": 1, - "score": 50001980 - } - }, - "official": { - "role": 2, - "title": "bilibili创始人(站长)", - "desc": "", - "type": 0 - }, - "vip": { - "type": 2, - "status": 1, - "due_date": 3909916800000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "十年大会员", - "label_theme": "ten_annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/activity-plat/static/20221008/0597543265563f522fad443825cff578/O9l2i8GdaZ.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/8u7iRTPE7N.png" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 7, - "avatar_subscript_url": "", - "tv_vip_status": 1, - "tv_vip_pay_type": 0 - }, - "pendant": { - "pid": 32257, - "name": "EveOneCat2", - "image": "https://i2.hdslb.com/bfs/garb/item/488870931b1bba66da36d22848f0720480d3d79a.png", - "expire": 0, - "image_enhance": "https://i2.hdslb.com/bfs/garb/item/5974f17f9d96a88bafba2f6d18d647a486e88312.webp", - "image_enhance_frame": "https://i2.hdslb.com/bfs/garb/item/4316a3910bb0bd6f2f1c267a3e9187f0b9fe5bd0.png" - }, - "nameplate": { - "nid": 10, - "name": "见习偶像", - "image": "https://i1.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png", - "image_small": "https://i1.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png", - "level": "普通勋章", - "condition": "所有自制视频总播放数>=10万" - }, - "user_honour_info": { - "mid": 0, - "colour": null, - "tags": [] - }, - "is_followed": false, - "top_photo": "http://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png", - "theme": {}, - "sys_notice": {}, - "live_room": { - "roomStatus": 1, - "liveStatus": 0, - "url": "https://live.bilibili.com/1024?broadcast_type=0&is_room_feed=0", - "title": "试图恰鸡", - "cover": "http://i0.hdslb.com/bfs/live/new_room_cover/96ee5bfd0279a0f18b190340334f43f473038288.jpg", - "roomid": 1024, - "roundStatus": 0, - "broadcast_type": 0, - "watched_show": { - "switch": true, - "num": 14, - "text_small": "14", - "text_large": "14人看过", - "icon": "https://i0.hdslb.com/bfs/live/a725a9e61242ef44d764ac911691a7ce07f36c1d.png", - "icon_location": "", - "icon_web": "https://i0.hdslb.com/bfs/live/8d9d0f33ef8bf6f308742752d13dd0df731df19c.png" - } - }, - "birthday": "09-19", - "school": { - "name": "" - }, - "profession": { - "name": "", - "department": "", - "title": "", - "is_show": 0 - }, - "tags": null, - "series": { - "user_upgrade_status": 3, - "show_upgrade_window": false - }, - "is_senior_member": 1, - "mcn_info": null, - "gaia_res_type": 0, - "gaia_data": null, - "is_risk": false, - "elec": { - "show_info": { - "show": true, - "state": 1, - "title": "", - "icon": "", - "jump_url": "" - } - } - } -} -``` - -
- -**查询到的信息解析如下:** - -**用户昵称为**:碧诗 - -**性别**:男 - -**用户的头像为**: - -https://i2.hdslb.com/bfs/face/ef0457addb24141e15dfac6fbf45293ccf1e32ab.jpg - - - -**等级**:6级 - -**生日**:09-19 - -**粉丝勋章状态**:拥有 - -**认证**:个人认证 - -**认证名称**: bilibili创始人(站长) - -**大会员类型**:年度 - -**大会员状态**:已开通 - -**电视大会员状态**:已开通 - -**头像框**:EveOneCat2 - -https://i2.hdslb.com/bfs/garb/item/5974f17f9d96a88bafba2f6d18d647a486e88312.webp - - - -**粉丝勋章**: 见习偶像 - -https://i1.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png - - - -**空间头图**: - -https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png - -![](https://i0.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png) - -## 用户名片信息 - -> https://api.bilibili.com/x/web-interface/card - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------------------- | ------ | ----------------------- | -| mid | num | 目标用户mid | 必要 | | -| photo | bool | 是否请求用户主页头图 | 非必要 | true:是
false:否 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | -------------- | ------------------------------------------------------------ | -| card | obj | 卡片信息 | | -| following | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录为false | -| archive_count | num | 用户稿件数 | | -| article_count | num | 0 | **作用尚不明确** | -| follower | num | 粉丝数 | | -| like_num | num | 点赞数 | | - -`data`中的`card`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ----- | -------------- | ------------------------------------------------------------ | -| mid | str | 用户mid | | -| approve | bool | false | **作用尚不明确** | -| name | str | 用户昵称 | | -| sex | str | 用户性别 | 男 女 保密 | -| face | str | 用户头像链接 | | -| DisplayRank | str | 0 | **作用尚不明确** | -| regtime | num | 0 | **作用尚不明确** | -| spacesta | num | 0 | **作用尚不明确** | -| birthday | str | 空 | **作用尚不明确** | -| place | str | 空 | **作用尚不明确** | -| description | str | 空 | **作用尚不明确** | -| article | num | 0 | **作用尚不明确** | -| attentions | array | 空 | **作用尚不明确** | -| fans | num | 粉丝数 | | -| friend | num | 关注数 | | -| attention | num | 关注数 | | -| level_info | obj | 等级 | | -| pendant | obj | 挂件 | | -| nameplate | obj | 勋章 | | -| Official | obj | 认证信息 | | -| official_verify | obj | 认证信息2 | | -| vip | obj | 大会员状态 | | -| space | obj | 主页头图 | | - -`card`中的`level_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | -------- | ---------------- | -| current_level | num | 当前等级 | 0-6级 | -| current_min | num | 0 | 作用尚不明确 | -| current_exp | num | 0 | **作用尚不明确** | -| next_exp | num | 0 | **作用尚不明确** | - -`card`中的`pendant`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | ---------------- | -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | **作用尚不明确** | - -`card`中的`nameplate`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------- | -------------------- | -| nid | num | 勋章id | **详细说明有待补充** | -| name | str | 勋章名称 | | -| image | str | 挂件图片url 正常 | | -| image_small | str | 勋章图片url 小 | | -| level | str | 勋章等级 | | -| condition | str | 勋章条件 | | - -`card`中的`Official`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ------------------------------------------------- | -| role | num | 认证类型 | 0:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 是否认证 | -1:无
0:认证 | - -`card`中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ------------------- | -| type | num | 是否认证 | -1:无
0:认证 | -| desc | str | 认证信息 | 无为空 | - -`card`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ---------- | ------------------------------------------------- | -| vipType | num | 大会员类型 | 0:无
1:月度大会员
2:年度及以上大会员 | -| dueRemark | str | 空 | **作用尚不明确** | -| accessStatus | num | 0 | **作用尚不明确** | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | **作用尚不明确** | -| theme_type | num | 0 | **作用尚不明确** | - -`card`中的`space`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------------- | ---- | -| s_img | str | 主页头图url 小图 | | -| l_img | str | 主页头图url 正常 | | - -**示列:** - -```shell -curl -G 'api.bilibili.com/x/web-interface/card' \ ---data-urlencode 'mid=2' \ ---data-urlencode 'photo=true' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "card": { - "mid": "2", - "name": "碧诗", - "approve": false, - "sex": "男", - "rank": "20000", - "face": "http://i2.hdslb.com/bfs/face/ef0457addb24141e15dfac6fbf45293ccf1e32ab.jpg", - "DisplayRank": "0", - "regtime": 0, - "spacesta": 0, - "birthday": "", - "place": "", - "description": "", - "article": 0, - "attentions": [], - "fans": 969999, - "friend": 234, - "attention": 234, - "sign": "kami.im 直男过气网红 # av362830 “We Are Star Dust”", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 10, - "name": "见习偶像", - "image": "http://i2.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png", - "image_small": "http://i2.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png", - "level": "普通勋章", - "condition": "所有自制视频总播放数\u003e=10万" - }, - "Official": { - "role": 2, - "title": "bilibili创始人(站长)", - "desc": "", - "type": 0 - }, - "official_verify": { - "type": 0, - "desc": "bilibili创始人(站长)" - }, - "vip": { - "type": 2, - "status": 1, - "due_date": 3896524800000, - "vip_pay_type": 0, - "theme_type": 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": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png", - "vipType": 2, - "vipStatus": 1 - } - }, - "space": { - "s_img": "http://i1.hdslb.com/bfs/space/768cc4fd97618cf589d23c2711a1d1a729f42235.png", - "l_img": "http://i1.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png" - } - }, - "following": true, - "archive_count": 37, - "article_count": 0, - "follower": 969999, - "like_num": 3547978 -} -``` - -
- -## 登录用户空间详细信息 - -> https://api.bilibili.com/x/space/myinfo - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------- | -| code | num | 返回值 | 0:成功
-101:未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------ | ------------------------ | -| mid | num | mid | | -| name | str | 昵称 | | -| sex | str | 性别 | 男 女 保密 | -| face | str | 头像图片url | | -| sign | str | 签名 | | -| rank | num | 10000 | **作用尚不明确** | -| level | num | 当前等级 | 0-6级 | -| jointime | num | 0 | **作用尚不明确** | -| moral | num | 节操 | 默认70 | -| silence | num | 封禁状态 | 0:正常
1:被封 | -| email_status | num | 已验证邮箱 | 0:未验证
1:已验证 | -| tel_status | num | 已验证手机号 | 0:未验证
1:已验证 | -| identification | num | 1 | **作用尚不明确** | -| vip | obj | 大会员状态 | | -| birthday | num | 生日 | 时间戳 | -| is_tourist | num | 0 | **作用尚不明确** | -| is_fake_account | num | 0 | **作用尚不明确** | -| pin_prompting | num | 0 | **作用尚不明确** | -| is_deleted | num | 0 | **作用尚不明确** | -| coins | num | 硬币数 | | -| following | num | 粉丝数 | | -| follower | num | 粉丝数 | | - -`data`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ---- | ---------------- | ----------------------------------------------- | -| type | num | 会员类型 | 0:无
1:月大会员
2:年度及以上大会员 | -| status | num | 会员状态 | 0:无
1:有 | -| due_date | num | 会员过期时间 | Unix时间戳(毫秒) | -| theme_type | num | 0 | 作用尚不明确 | -| label | obj | 会员标签 | | -| avatar_subscript | num | 是否显示会员图标 | 0:不显示
1:显示 | -| nickname_color | str | 会员昵称颜色 | 颜色码 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | ------------------------------------------------------------ | -| path | str | 空 | 作用尚不明确 | -| text | str | 会员名称 | | -| label_theme | str | 会员标签 | vip:大会员
annual_vip:年度大会员
ten_annual_vip:十年大会员
hundred_annual_vip:百年大会员 | - -`data`中的`pendant`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ----------- | -------------------- | -| pid | num | 挂件id | **详细说明有待补充** | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | **作用尚不明确** | - -`data`中的`nameplate`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------- | -------------------- | -| nid | num | 勋章id | **详细说明有待补充** | -| name | str | 勋章名称 | | -| image | str | 挂件图片url 正常 | | -| image_small | str | 勋章图片url 小 | | -| level | str | 勋章等级 | | -| condition | str | 勋章条件 | | - -`data`中的`Official`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------- | ------------------------------------------------- | -| role | num | 认证类型 | 0:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 是否认证 | -1:无
0:认证 | - -`data`中的`level_exp`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | -------- | ---------------- | -| current_level | num | 当前等级 | 0-6级 | -| current_min | num | 0 | 指当前等级从多少经验值开始 | -| current_exp | num | 0 | 当前账户的经验值 | -| next_exp | num | 0 | 下一个等级所需的经验值**(不是还需要多少)** | - -**示例:** - -```shell -curl -G 'api.bilibili.com/x/space/myinfo' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 293793435, - "name": "社会易姐QwQ", - "sex": "男", - "face": "http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", - "sign": "高考刚结束的普通技术宅一枚,喜欢MC和编程以及电子,是车车人也是术术人,粉丝群:1136462265", - "rank": 10000, - "level": 5, - "jointime": 0, - "moral": 70, - "silence": 0, - "email_status": 1, - "tel_status": 1, - "identification": 1, - "vip": { - "type": 2, - "status": 1, - "due_date": 1644163200000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png" - }, - "pendant": { - "pid": 2511, - "name": "初音未来13周年", - "image": "http://i0.hdslb.com/bfs/garb/item/4f8f3f1f2d47f0dad84f66aa57acd4409ea46361.png", - "expire": 0, - "image_enhance": "http://i0.hdslb.com/bfs/garb/item/fe0b83b53e2342b16646f6e7a9370d8a867decdb.webp", - "image_enhance_frame": "http://i0.hdslb.com/bfs/garb/item/127c507ec8448be30cf5f79500ecc6ef2fd32f2c.png" - }, - "nameplate": { - "nid": 4, - "name": "青铜殿堂", - "image": "http://i0.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png", - "image_small": "http://i0.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png", - "level": "普通勋章", - "condition": "单个自制视频总播放数\u003e=1万" - }, - "official": { - "role": 0, - "title": "", - "desc": "", - "type": -1 - }, - "birthday": 1015257600, - "is_tourist": 0, - "is_fake_account": 0, - "pin_prompting": 0, - "is_deleted": 0, - "in_reg_audit": 0, - "is_rip_user": false, - "profession": { - "id": 0, - "name": "", - "show_name": "" - }, - "level_exp": { - "current_level": 5, - "current_min": 10800, - "current_exp": 27125, - "next_exp": 28800 - }, - "coins": 9, - "following": 1122, - "follower": 1122 - } -} -``` - -
- -## 多用户详细信息 - -> https://api.vc.bilibili.com/account/v1/user/cards - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------------- | ------ | --------------------------------- | -| uids | nums | 目标用户的UID列表 | 必要 | 每个成员间用`,`分隔,最多50个成员 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ----------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
600007:超出批量获取用户信息限制 | -| msg | str | 错误信息 | 默认为空 | -| message | str | 错误信息 | 默认为空 | -| data | array | 信息本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---- | -| 0 | obj | 用户1 | | -| n | obj | 用户(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -基本同「[用户空间详细信息](#用户空间详细信息)」中的data对象 - -**示例:** - -查询用户`uids=1,2,3`的详细信息 - -```shell -curl -G 'https://api.vc.bilibili.com/account/v1/user/cards' \ ---data-urlencode 'uids=1,2,3' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "", - "message": "", - "data": [{ - "mid": 1, - "name": "bishi", - "sex": "男", - "face": "https://i1.hdslb.com/bfs/face/34c5b30a990c7ce4a809626d8153fa7895ec7b63.gif", - "sign": "", - "rank": 10000, - "level": 4, - "silence": 0, - "vip": { - "type": 2, - "status": 1, - "due_date": 1754496000000, - "vip_pay_type": 1, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/8d4f8bfc713826a5412a0a27eaaac4d6b9ede1d9.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "", - "tv_vip_status": 0, - "tv_vip_pay_type": 0, - "tv_due_date": 1633622400 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official": { - "role": 0, - "title": "", - "desc": "", - "type": -1 - }, - "birthday": 622137600, - "is_fake_account": 0, - "is_deleted": 0, - "in_reg_audit": 0, - "face_nft": 0, - "face_nft_new": 0, - "is_senior_member": 0 - }, { - "mid": 2, - "name": "碧诗", - "sex": "男", - "face": "https://i2.hdslb.com/bfs/face/ef0457addb24141e15dfac6fbf45293ccf1e32ab.jpg", - "sign": "https://kami.im 直男过气网红 # av362830 “We Are Star Dust”", - "rank": 20000, - "level": 6, - "silence": 0, - "vip": { - "type": 2, - "status": 1, - "due_date": 3901881600000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "十年大会员", - "label_theme": "ten_annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/adb599797dd171e2d3d6d012f448b49679258344.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/sGu57N6pgK.png" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 7, - "avatar_subscript_url": "", - "tv_vip_status": 0, - "tv_vip_pay_type": 0, - "tv_due_date": 1655481600 - }, - "pendant": { - "pid": 32257, - "name": "EveOneCat2", - "image": "https://i2.hdslb.com/bfs/garb/item/488870931b1bba66da36d22848f0720480d3d79a.png", - "expire": 0, - "image_enhance": "https://i2.hdslb.com/bfs/garb/item/5974f17f9d96a88bafba2f6d18d647a486e88312.webp", - "image_enhance_frame": "https://i2.hdslb.com/bfs/garb/item/4316a3910bb0bd6f2f1c267a3e9187f0b9fe5bd0.png" - }, - "nameplate": { - "nid": 10, - "name": "见习偶像", - "image": "https://i0.hdslb.com/bfs/face/e93dd9edfa7b9e18bf46fd8d71862327a2350923.png", - "image_small": "https://i1.hdslb.com/bfs/face/275b468b043ec246737ab8580a2075bee0b1263b.png", - "level": "普通勋章", - "condition": "所有自制视频总播放数>=10万" - }, - "official": { - "role": 2, - "title": "bilibili创始人(站长)", - "desc": "", - "type": 0 - }, - "birthday": 622137600, - "is_fake_account": 0, - "is_deleted": 0, - "in_reg_audit": 0, - "face_nft": 0, - "face_nft_new": 0, - "is_senior_member": 1 - }, { - "mid": 3, - "name": "囧囧倉", - "sex": "男", - "face": "https://i0.hdslb.com/bfs/face/d4de6a84557eea8f18510a3f61115d96832aa071.jpg", - "sign": "富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善。", - "rank": 10000, - "level": 5, - "silence": 0, - "vip": { - "type": 0, - "status": 0, - "due_date": 0, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/d7b702ef65a976b20ed854cbd04cb9e27341bb79.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/KJunwh19T5.png" - }, - "avatar_subscript": 0, - "nickname_color": "", - "role": 0, - "avatar_subscript_url": "", - "tv_vip_status": 0, - "tv_vip_pay_type": 0, - "tv_due_date": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 0, - "name": "", - "image": "", - "image_small": "", - "level": "", - "condition": "" - }, - "official": { - "role": 0, - "title": "", - "desc": "", - "type": -1 - }, - "birthday": 1262275200, - "is_fake_account": 0, - "is_deleted": 0, - "in_reg_audit": 0, - "face_nft": 0, - "face_nft_new": 0, - "is_senior_member": 0 - }] -} -``` - -
diff --git a/user/register.md b/user/register.md deleted file mode 100644 index daea592..0000000 --- a/user/register.md +++ /dev/null @@ -1,102 +0,0 @@ -# 用户注册 - - -## 人机验证 - -[完成人机验证(参考验证登录)](../login/login_action/readme.md#验证登录) - -完成后得到`key`, `challenge`, `validate`, `seccode`四个参数 - - -## 发送短信验证码 - -[发送短信验证码(参考短信登录)](../login/login_action/SMS.md#发送短信验证码(web端)) - -**注意不同的是这里type=1而非21**,推测此参数决定短信内容 - -```bash -curl 'https://passport.bilibili.com/web/sms/general/v2/send' \ - --data-urlencode 'key=6eeb28e7bbd64b389da2be3a2778c7e3' \ - --data-urlencode 'captchaType=6' \ - --data-urlencode 'type=1' \ - --data-urlencode 'cid=1' \ - --data-urlencode 'tel=13888888888' \ - --data-urlencode 'challenge=c52148f88a28b6011db52bb213483ee8' \ - --data-urlencode 'validate=a98841cd6ea58e1b1f5783fca73cddb6' \ - --data-urlencode 'seccode=a98841cd6ea58e1b1f5783fca73cddb6|jordan' -``` - -
-查看示例 - -```json -{ - "code": 0, - "message": "验证码短信已下发" -} -``` - -
- -## 提交注册请求 - -> https://passport.bilibili.com/web/reg/tel - -*请求方式:POST* - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| -------- | ---- | ---------------- | ------ | ------------------------------------------------------------ | -| cid | num | 国际冠字码 | 必要 | 可以从 [获取国际冠字码](../login/login_action/SMS.md#获取国际冠字码_web端) 接口中获取 | -| tel | num | 手机号码 | 必要 | | -| code | num | 短信验证码 | 必要 | | -| nickName | str | 昵称 | 必要 | | -| pwd | str | 密码 | 必要 | 密码为明文 | -| plat | num | 0 | 必要 | 平台? | -| gourl | str | 注册成功跳转地址 | 非必要 | 默认为主页`https://www.bilibili.com/` | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
1005:验证码错误
1007:验证码过期 | -| message | str | 错误信息 | 成功时无此字段 | -| data | obj | 信息本体 | 只在成功时存在 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------ | ---- | ---------- | ----------------------------- | -| redirectUrl | str | 跳转链接 | | -| hint | str | "注册成功" | 成功后不提示成功还能提示什么? | -| in_reg_audit | num | (?) | | - -```bash -curl 'https://passport.bilibili.com/web/reg/tel' \ - --data-urlencode 'plat=0' \ - --data-urlencode 'cid=1' \ - --data-urlencode 'tel=13888888888' \ - --data-urlencode 'code=121314' \ - --data-urlencode 'nickName=萌系小妹纸わ' - --data-urlencode 'pwd=Password1234' \ - --data-urlencode 'gourl=https://www.bilibili.com' -``` - -
-查看示例 - -```json -{ - "code": 0, - "data": { - "redirectUrl": "https://www.bilibili.com", - "hint": "注册成功", - "in_reg_audit": 0 - } -} -``` - -
\ No newline at end of file diff --git a/user/relation.md b/user/relation.md deleted file mode 100644 index c616cfb..0000000 --- a/user/relation.md +++ /dev/null @@ -1,2450 +0,0 @@ -# 用户关系相关 - -- [查询用户粉丝明细](#查询用户粉丝明细) -- [查询用户关注明细](#查询用户关注明细) -- [查询用户关注明细2](#查询用户关注明细2) -- [搜索关注明细](#搜索关注明细) -- [查询共同关注明细](#查询共同关注明细) -- [查询悄悄关注明细](#查询悄悄关注明细) -- [查询互相关注明细](#查询互相关注明细) -- [查询黑名单明细](#查询黑名单明细) -- [操作用户关系](#操作用户关系) -- [批量操作用户关系](#批量操作用户关系) -- [查询用户与自己关系_仅查关注](#查询用户与自己关系_仅查关注) -- [查询用户与自己关系_互相](#查询用户与自己关系_互相) -- [批量查询用户与自己关系](#批量查询用户与自己关系) -- [关注分组相关](#关注分组相关) - - [查询关注分组列表](#查询关注分组列表) - - [查询关注分组明细](#查询关注分组明细) - - [查询目标用户所在的分组](#查询目标用户所在的分组) - - [查询所有特别关注的mid](#查询所有特别关注的mid) - - [创建分组](#创建分组) - - [重命名分组](#重命名分组) - - [删除分组](#删除分组) - - [修改分组成员](#修改分组成员) - - [复制关注到分组](#复制关注到分组) - - [移动关注到分组](#移动关注到分组) - ---- - -## 查询用户粉丝明细 - - - -> https://api.bilibili.com/x/relation/followers - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -登录可看自己前1000名,其他用户可查看前250名(网页端请求时ps为20,所以直接查看只能看到前100名) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| vmid | num | 目标用户mid | 必要 | | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1
其他用户仅可查看前5页 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
22007:访问超过5页 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | -| total | num | 粉丝总数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 粉丝1 | | -| n | obj | 粉丝(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | -| mtime | num | 成为粉丝时间 | 时间戳
互关后刷新 | -| tag | null | | | -| special | num | 0 | | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
0:个人认证
1:机构认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取用户`mid=293793435`的粉丝明细 - -```shell -curl -G 'https://api.bilibili.com/x/relation/followers' \ ---data-urlencode 'vmid=293793435' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [{ - "mid": 387195656, - "attribute": 0, - "mtime": 1583839793, - "tag": null, - "special": 0, - "uname": "L_E_M_O_H_E", - "face": "https://i1.hdslb.com/bfs/face/8ec537db75eeb292faa8dc85a9ff8aba83148c86.jpg", - "sign": "暂时断更。。Back later", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }, { - "mid": 175989424, - "attribute": 0, - "mtime": 1583822019, - "tag": null, - "special": 0, - "uname": "哥本哈根iii", - "face": "https://i1.hdslb.com/bfs/face/e53c0fe9315176d48bd294b1f381f0da70131cd7.jpg", - "sign": "", - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }], - "re_version": 3857745402, - "total": 365 - } -} -``` - -
- -## 查询用户关注明细 - - - -> https://api.bilibili.com/x/relation/followings - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -登录可看自己全部,其他用户仅可查看前5页 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| vmid | num | 目标用户mid | 必要 | | -| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空
按照最常访问排列:attention | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1
其他用户仅可查看前5页 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
22007:访问超过5页
22115:用户已设置隐私,无法查看 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | -| total | num | 关注总数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 关注1 | | -| n | obj | 关注(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | 默认分组:null
存在至少一个分组:array | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`list`中的对象中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取用户`mid=293793435`的关注明细,按照关注顺序 - -```shell -curl -G 'https://api.bilibili.com/x/relation/followings' \ ---data-urlencode 'vmid=293793435' \ ---data-urlencode 'order_type=' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [{ - "mid": 14082, - "attribute": 2, - "mtime": 1584271945, - "tag": null, - "special": 0, - "uname": "山新", - "face": "https://i0.hdslb.com/bfs/face/74c82caee6d9eb623e56161ea8ed6d68afabfeae.jpg", - "sign": "都说了是天依爹地,不是妈咪。\r私信有点多回复不过来~商业合作啥的请移步Weibo私信@山新 哦哦哦~", - "official_verify": { - "type": 0, - "desc": "配音演员、声优。洛天依声源提供者。" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1601654400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }, { - "mid": 420831218, - "attribute": 2, - "mtime": 1584208169, - "tag": [207542], - "special": 0, - "uname": "支付宝Alipay", - "face": "https://i2.hdslb.com/bfs/face/aaf18aeb2d9822e28a590bd8d878572ca8c59e04.jpg", - "sign": "阿支来了,关注点赞转发投币四连走起!", - "official_verify": { - "type": 1, - "desc": "支付宝官方账号" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1585065600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }], - "re_version": 3228575555, - "total": 699 - } -} -``` - -
- -## 查询用户关注明细2 - - - -> https://app.biliapi.net/x/v2/relation/followings - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -登录可看自己全部,其他用户仅可查看前5页,可以获取已设置可见性隐私的关注列表 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| vmid | num | 目标用户mid | 必要 | | -| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空
按照最常访问排列:attention | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1
其他用户仅可查看前5页 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
22007:访问超过5页 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | -| total | num | 关注总数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 关注1 | | -| n | obj | 关注(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | 默认分组:null
存在至少一个分组:array | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`list`中的对象中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取用户`mid=293793435`的关注明细,按照关注顺序 - -```shell -curl -G 'https://app.biliapi.net/x/v2/relation/followings' \ ---data-urlencode 'vmid=293793435' \ ---data-urlencode 'order_type=' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [{ - "mid": 14082, - "attribute": 2, - "mtime": 1584271945, - "tag": null, - "special": 0, - "uname": "山新", - "face": "https://i0.hdslb.com/bfs/face/74c82caee6d9eb623e56161ea8ed6d68afabfeae.jpg", - "sign": "都说了是天依爹地,不是妈咪。\r私信有点多回复不过来~商业合作啥的请移步Weibo私信@山新 哦哦哦~", - "official_verify": { - "type": 0, - "desc": "配音演员、声优。洛天依声源提供者。" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1601654400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }, { - "mid": 420831218, - "attribute": 2, - "mtime": 1584208169, - "tag": [207542], - "special": 0, - "uname": "支付宝Alipay", - "face": "https://i2.hdslb.com/bfs/face/aaf18aeb2d9822e28a590bd8d878572ca8c59e04.jpg", - "sign": "阿支来了,关注点赞转发投币四连走起!", - "official_verify": { - "type": 1, - "desc": "支付宝官方账号" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1585065600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }], - "re_version": 3228575555, - "total": 699 - } -} -``` - -
- -## 搜索关注明细 - - - -> https://api.bilibili.com/x/relation/followings/search - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------- | -| access_key | str | APP登录Token | APP方式必要 | | -| vmid | str | 目标用户mid | 必要 | | -| name | str | 搜索关键词 | 必要 | | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1 | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | -| total | num | 关注总数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---------------- | -| 0 | obj | 共同关注1 | | -| n | obj | 共同关注(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ------------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | 默认分组:null
存在至少一个分组:array | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`list`中的对象中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -搜索我的关注列表中关键词`warma` - -```shell -curl -G 'https://api.bilibili.com/x/relation/followings/search' \ ---data-urlencode 'vmid=293793435' \ ---data-urlencode 'name=warma' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "mid": 53456, - "attribute": 2, - "mtime": 1586415053, - "tag": [ - -10 - ], - "special": 1, - "uname": "Warma", - "face": "https://i2.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg", - "sign": "我是沃玛,做点傻开心的视频。日常发在微博:@_warma_ ", - "official_verify": { - "type": 0, - "desc": "bilibili 知名UP主" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1637424000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - } - ], - "total": 1 - } -} -``` - -
- -## 查询共同关注明细 - - - -> https://api.bilibili.com/x/relation/same/followings - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------- | -| access_key | str | APP登录Token | APP方式必要 | | -| vmid | num | 目标用户mid | 必要 | | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | -| total | num | 关注总数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---------------- | -| 0 | obj | 共同关注1 | | -| n | obj | 共同关注(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ------------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | 默认分组:null
存在至少一个分组:array | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`list`中的对象中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取自己与用户`mid=2`的共同关注明细 - -```shell -curl -G 'https://api.bilibili.com/x/relation/same/followings' \ ---data-urlencode 'vmid=2' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "mid": 116683, - "attribute": 2, - "mtime": 1564627532, - "tag": null, - "special": 0, - "uname": "=咬人猫=", - "face": "https://i0.hdslb.com/bfs/face/8fad84a4470f3d894d8f0dc95555ab8f2cb10a83.jpg", - "sign": "面瘫女仆酱~小粗腿~事业线什么的!!吐槽你就输了!喵~", - "official_verify": { - "type": 0, - "desc": "bilibili 2019百大UP主、高能联盟成员" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1618934400000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }, - { - "mid": 517717593, - "attribute": 2, - "mtime": 1592126052, - "tag": [ - 207542 - ], - "special": 0, - "uname": "上海爱丽丝幻乐团", - "face": "https://i0.hdslb.com/bfs/face/851a9191cbe93e66304d7577c0f6f83834e52109.jpg", - "sign": "日本同人社团 上海爱丽丝幻乐团", - "official_verify": { - "type": 0, - "desc": "上海爱丽丝幻乐团官方账号" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1593792000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - } - ], - "re_version": 2498273968, - "total": 38 - } -} -``` - -
- -## 查询悄悄关注明细 - - - -> https://api.bilibili.com/x/relation/whispers - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------- | -| access_key | str | APP登录Token | APP方式必要 | | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 关注1 | | -| n | obj | 关注(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ------------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | 默认分组:null
存在至少一个分组:array | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`list`中的对象中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取悄悄关注明细 - -```shell -curl -G 'https://api.bilibili.com/x/relation/whispers' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "mid": 178429408, - "attribute": 1, - "mtime": 1605972105, - "tag": null, - "special": 0, - "uname": "老弟一号", - "face": "https://i2.hdslb.com/bfs/face/21426275f3d3149b96b88783275205ba574c09e3.jpg", - "sign": "萌新硬件玩家,前垃圾佬~(◦˙▽˙◦某宝店 老弟一号 粉丝群679540094商务合作V13869651328", - "official_verify": { - "type": 0, - "desc": "知识领域优质UP主" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1632499200000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - } - ], - "re_version": 2137574562 - } -} -``` - -
- -## 查询互相关注明细 - - - -> https://api.bilibili.com/x/relation/friends - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -查询与自己互关的用户明细,可看全部 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------- | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 互关1 | | -| n | obj | 互关(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ------------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 6:已互粉 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | 默认分组:null
存在至少一个分组:array | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`list`中的对象中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取互相关注明细 - -```shell -curl -G 'https://api.bilibili.com/x/relation/friends' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "mid": 293793435, - "attribute": 6, - "mtime": 1583817598, - "tag": [-10], - "special": 1, - "uname": "社会易姐QwQ", - "face": "https://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg", - "sign": "BAC项目负责人 | 带砖技术宅 | MC 编程 电子 | 车万众\u0026术术人 | 粉丝群1136462265 博客shakaianee.top", - "face_nft": 0, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "vipType": 2, - "vipDueDate": 1675872000000, - "dueRemark": "", - "accessStatus" :0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "avatar_subscript_url": "" - }, - "nft_icon": "", - "rec_reason": "", - "track_id": "" - } - ], - "re_version": 0 - } -} -``` - -
- -## 查询黑名单明细 - -> https://api.bilibili.com/x/relation/blacks - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | -------- | -| access_key | str | APP登录Token | APP方式必要 | | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页码 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | ------------ | ------------ | -| list | array | 明细列表 | | -| re_version | num | ??? | 作用尚不明确 | -| total | num | 黑名单总计数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | ---------------- | -| 0 | obj | 关注1 | | -| n | obj | 关注(n+1) | 按照关注顺序排列 | -| …… | obj | …… | …… | - -数组`list`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ------------ | ---------------------- | -| mid | num | 用户mid | | -| attribute | num | 关注属性 | 128:已拉黑 | -| mtime | num | 关注对方时间 | 时间戳
互关后刷新 | -| tag | null | | | -| special | num | 0 | | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -`list`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -`list`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------------------- | -| vipType | num | 会员类型 | 0:无
1:月度大会员
2:年度以上大会员 | -| vipDueDate | num | 会员到期时间 | 时间戳 毫秒 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -`vip`中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -获取黑名单明细 - -```shell -curl -G 'https://api.bilibili.com/x/relation/blacks' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "mid": 22179720, - "attribute": 128, - "mtime": 1603032789, - "tag": null, - "special": 0, - "uname": "咩2016", - "face": "https://i0.hdslb.com/bfs/face/41fe435a7e62eae605a5908652f32f3afff2ae74.jpg", - "sign": "", - "official_verify": { - "type": 0, - "desc": "" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }, - { - "mid": 16174624, - "attribute": 128, - "mtime": 1603026420, - "tag": null, - "special": 0, - "uname": "其实死亡没有那么痛", - "face": "https://i2.hdslb.com/bfs/face/79257f5a2e7194a71337ccca5927afba7706d316.jpg", - "sign": "等我,我马上就来", - "official_verify": { - "type": 0, - "desc": "" - }, - "vip": { - "vipType": 0, - "vipDueDate": 0, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - } - ], - "re_version": 897205356, - "total": 2 - } -} -``` - -
- -## 操作用户关系 - - - -> https://api.bilibili.com/x/relation/modify - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ---------------------- | -------------- | -------------------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| fid | num | 目标用户mid | 必要 | | -| act | num | 操作代码 | 必要 | **操作代码见下表** | -| re_src | num | 关注来源代码 | 必要 | 空间:11
视频:14
文章:115
活动页面:222 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -操作代码`act`: - -| 代码 | 含义 | -| ---- | ------------ | -| 1 | 关注 | -| 2 | 取关 | -| 3 | 悄悄关注 | -| 4 | 取消悄悄关注 | -| 5 | 拉黑 | -| 6 | 取消拉黑 | -| 7 | 踢出粉丝 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
22001:不能对自己进行此操作
22003:用户位于黑名单 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -关注`mid=14082`的用户 - -```shell -curl 'https://api.bilibili.com/x/relation/modify' \ ---data-urlencode 'fid=14082' \ ---data-urlencode 'act=1' \ ---data-urlencode 're_src=11' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 批量操作用户关系 - -> https://api.bilibili.com/x/relation/batch/modify - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -此接口只支持关注和拉黑操作 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ---------------------- | -------------- | ---------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| fids | nums | 目标用户mid | 必要 | 每个之间用`,`间隔 | -| act | num | 操作代码 | 必要 | 同上
仅可为1或5,故只能进行批量关注和拉黑 | -| re_src | num | 关注来源代码 | 必要 | 同上 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-111:csrf校验失败
-400:请求错误
22003:用户位于黑名单 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ----- | ------------- | ---- | -| failed_fids | array | 操作失败的mid | | - -`data`中的`failed_fids`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------ | ---- | -| 0 | num | 操作失败的mid 1 | | -| n | num | 操作失败的mid(n+1) | | -| …… | num | …… | …… | - -**示例:** - -批量关注`mid=1,2,3,4,5`的用户 - -```shell -curl 'https://api.bilibili.com/x/relation/batch/modify' \ ---data-urlencode 'fid=1,2,3,4,5' \ ---data-urlencode 'act=1' \ ---data-urlencode 're_src=11' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "failed_fids": [] - } -} -``` - -
- -## 查询用户与自己关系_仅查关注 - -> https://api.bilibili.com/x/relation - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| fid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---------------------------------------- | ------------ | --------------------------------------- | -| mid | num | 目标用户mid | | -| attribute | num | 关注属性 | 0:未关注
2:已关注
6:已互粉
128:拉黑 | -| mtime | num | 关注对方时间 | 时间戳
未关注为0 | -| tag | null默认分组
array存在至少一个分组 | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | - -`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------------- | ---- | -| 0 | num | 位于分组1的分组 | | -| n | num | 位于分组(n+1)的分组 | | -| …… | num | …… | …… | - -**示例:** - -可得对于`mid=258150656`的用户,在`2018/10/28 0:51:41`时关注,且设为特别关注,并位于为`-10`分组中 - -```shell -curl -G 'https://api.bilibili.com/x/relation' \ ---data-urlencode 'fid=258150656' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 258150656, - "attribute": 2, - "mtime": 1540659101, - "tag": [-10], - "special": 1 - } -} -``` - -
- -## 查询用户与自己关系_互相 - -> https://api.bilibili.com/x/space/acc/relation - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ------------------------ | ---- | -| relation | obj | 目标用户对于本用户的属性 | | -| be_relation | obj | 本用户对于目标用户的属性 | | - -`data`中的`relation`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---------------------------------------- | ------------ | -------------- | -| mid | num | 对方用户mid | | -| attribute | num | 关注属性 | 0:未关注
1:悄悄关注
2:已关注
6:已互粉
128:拉黑 | -| mtime | num | 关注对方时间 | 互关后刷新时间 | -| tag | null默认分组
array存在至少一个分组 | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | - -`data`中的`be_relation`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---------------------------------------- | ------------ | -------------- | -| mid | num | 自己的mid | | -| attribute | num | 关注属性 | 0:未关注
1:悄悄关注
2:已关注
6:已互粉
128:拉黑 | -| mtime | num | 成为粉丝时间 | 互关后刷新时间 | -| tag | null默认分组
array存在至少一个分组 | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | - -`be_relation`与`relation`中的`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -**示例:** - -可得对于`mid=15858903`的用户,在`2019/1/24 14:24:19`时关注了对方,且互相关注,自己将对方特别关注,并同时位于为`-10`和`194110`的分组中,对方也将自己设为特别关注,并同时位于为`-10`和`56502`的分组中(虽然我看不到) - -```shell -curl -G 'https://api.bilibili.com/x/space/acc/relation' \ ---data-urlencode 'mid=15858903' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "relation": { - "mid": 15858903, - "attribute": 6, - "mtime": 1548311059, - "tag": [-10, 194110], - "special": 1, - "is_followed": false - }, - "be_relation": { - "mid": 293793435, - "attribute": 6, - "mtime": 1548311059, - "tag": [56502, -10], - "special": 1, - "is_followed": false - } - } -} -``` - -
- -## 批量查询用户与自己关系 - -> https://api.bilibili.com/x/relation/relations - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| fids | nums | 目标用户mid | 必要 | 每个之间用`,`间隔 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---------- | ---- | -| {用户mid} | obj | 关注的用户 | 下同 | -| …… | obj | …… | | - -`{用户mid}`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | --------------------------------------- | ------------ | ------------------------------------------------------------ | -| mid | num | 目标用户mid | | -| attribute | num | 关注属性 | 0:未关注
1:悄悄关注
2:已关注
6:已互粉
128:拉黑 | -| mtime | num | 关注对方时间 | 时间戳
未关注为0 | -| tag | null默认分组
array存在至少一个分组 | 分组id | | -| special | num | 特别关注标志 | 0:否
1:是 | - -`tag`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------------- | ---- | -| 0 | num | 位于分组1的分组id | | -| n | num | 位于分组(n+1)的分组id | | -| …… | num | …… | …… | - -**示例:** - -批量查询`mid=1,2,3,4,5`的关系 - -```shell -curl -G 'https://api.bilibili.com/x/relation/relations' \ ---data-urlencode 'fid=258150656' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "1": { - "mid": 1, - "attribute": 2, - "mtime": 1601654227, - "tag": null, - "special": 0 - }, - "2": { - "mid": 2, - "attribute": 2, - "mtime": 1601654225, - "tag": null, - "special": 0 - } - } -} -``` - -
- -## 关注分组相关 - -### 查询关注分组列表 - -> https://api.bilibili.com/x/relation/tags - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 分组列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ---- | -| 0 | obj | 特别关注分组 | | -| 1 | obj | 默认分组 | | -| n | obj | 其他分组 | | -| …… | num | …… | …… | - -数组`data`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ---------------------------------- | -| tagid | num | 分组id | 特别关注恒为-10
默认分组恒为0 | -| name | str | 分组名称 | | -| count | num | 分组成员数 | | - -**示例:** - -查询所有的分组的名字以及id - -```shell -curl 'https://api.bilibili.com/x/relation/tags' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "tagid": -10, - "name": "特别关注", - "count": 16 - }, { - "tagid": 0, - "name": "默认分组", - "count": 536 - },{ - "tagid": 194111, - "name": "我的同学", - "count": 16 - }, - ………… - ] -} -``` - -
- -### 查询关注分组明细 - -> https://api.bilibili.com/x/relation/tag - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ------------------------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| tagid | num | 分组id | 必要 | 特别关注恒为-10
默认分组恒为0 | -| order_type | str | 排序方式 | 非必要 | 按照关注顺序排列:留空
按照最常访问排列:attention | -| ps | num | 每页项数 | 非必要 | 默认为50 | -| pn | num | 页数 | 非必要 | 默认为1 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
22104:该分组不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 成员列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---------------- | -| 0 | obj | 成员信息1 | | -| n | obj | 成员信息(n+1) | 按照添加顺序排序 | -| …… | obj | …… | …… | - -数组`data`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | ----------- | ---- | -| mid | num | 用户mid | | -| uname | str | 用户昵称 | | -| face | str | 用户头像url | | -| sign | str | 用户签名 | | -| official_verify | obj | 认证信息 | | -| vip | obj | 会员信息 | | - -数组`data`中的对象中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ------------------- | -| type | num | 用户认证类型 | -1:无
1:认证 | -| desc | str | 用户认证信息 | 无为空 | - -数组`data`中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | ------------ | ----------------------------------- | -| vipType | num | 大会员类型 | 0:无
1:月会员
2:年会员 | -| vipDueDate | num | 会员到期时间 | 毫秒 时间戳 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0无
1有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| themeType | num | 0 | 作用尚不明确 | -| label | obj | ??? | 作用尚不明确 | - -数组`data`中的对象中的`label`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ---- | ------------ | -| path | str | 空 | 作用尚不明确 | - -**示例:** - -以每页2项的方式获取了id为`207542`分组的第1页的粉丝明细,按照关注顺序 - -```shell -curl -G 'https://api.bilibili.com/x/relation/tag' \ ---data-urlencode 'tagid=207542' \ ---data-urlencode 'order_type=' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "mid": 420831218, - "uname": "支付宝Alipay", - "face": "https://i2.hdslb.com/bfs/face/aaf18aeb2d9822e28a590bd8d878572ca8c59e04.jpg", - "sign": "阿支来了,关注点赞转发投币四连走起!", - "official_verify": { - "type": 1, - "desc": "支付宝官方账号" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1585065600000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 1, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }, { - "mid": 125086406, - "uname": "MSI微星科技", - "face": "https://i1.hdslb.com/bfs/face/a844760e4e491677615b39399bc761e74c579bb4.jpg", - "sign": "你好,这里是微星显卡官方!专注显卡三十年,欢迎私信咨询或提问MSI", - "official_verify": { - "type": 1, - "desc": "微星科技官方账号" - }, - "vip": { - "vipType": 1, - "vipDueDate": 1540656000000, - "dueRemark": "", - "accessStatus": 0, - "vipStatus": 0, - "vipStatusWarn": "", - "themeType": 0, - "label": { - "path": "" - } - } - }] -} -``` - -
- -### 查询目标用户所在的分组 - -> https://api.bilibili.com/x/relation/tag/user - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| fid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------- | ---- | --------- | ---- | -| {加入的分组id 1} | str | 分组1名称 | | -| {加入的分组id n} | str | 分组n名称 | | -| …… | str | …… | | - -**示例:** - -查询用户`mid=319214221`存在的所有分组和名称 - -```shell -curl -G 'https://api.bilibili.com/x/relation/tag/user' \ ---data-urlencode 'fid=319214221' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "-10": "特别关注", - "194111": "我的同学" - } -} -``` - -
- -### 查询所有特别关注的mid - -> https://api.bilibili.com/x/relation/tag/special - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | -------- | ----------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 成员列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ---- | -| 0 | num | 成员1mid | | -| n | num | 成员(n+1)mid | | -| …… | num | …… | …… | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/relation/tag/special' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - 500716647, - 32832243, - 53456, - 25944552, - 301839556, - 427494870, - 319214221, - 31949159, - 382666849, - 258318451, - 15858903, - 54992199, - 3379951, - 392279807, - 23215368, - 258150656, - 20165629, - 22179720 - ] -} -``` - -
- -### 创建分组 - - - -> https://api.bilibili.com/x/relation/tag/create - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ---------------------- | -------------- | ---------- | -| access_key | str | APP登录Token | APP方式必要 | | -| tag | str | 分组名 | 必要 | 最长16字符 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22106:该分组已经存在
22103:分组名过长 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | -------------- | ---- | -| tagid | num | 创建的分组的id | | - -**示例:** - -创建了名为`测试`的分组,得到id为`216677` - -```shell -curl 'https://api.bilibili.com/x/relation/tag/create' \ ---data-urlencode 'tag=测试' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "tagid": 216677 - } -} -``` - -
- -### 重命名分组 - -> https://api.bilibili.com/x/relation/tag/update - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ---------------------- | -------------- | ---------- | -| access_key | str | APP登录Token | APP方式必要 | | -| tagid | num | 分组id | 必要 | | -| name | str | 新名称 | 必要 | 最长16字符 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22103:分组名过长
22104:该分组不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -把id为`194112`的分组更名为`膜法师` - -```shell -curl 'https://api.bilibili.com/x/relation/tag/update' \ ---data-urlencode 'tagid=194112' \ ---data-urlencode 'name=膜法师' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 删除分组 - - - -> https://api.bilibili.com/x/relation/tag/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ---------------------- | -------------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| tagid | num | 分组id | 必要 | | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -示例: - -删除分组id为`216699`的分组 - -```shell -curl 'https://api.bilibili.com/x/relation/tag/del' \ ---data-urlencode 'tagid=216699' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 修改分组成员 - - - -> https://api.bilibili.com/x/relation/tags/addUsers - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -如需删除分组中的成员,请将`tagids`设为0,即移动至默认分组,而不是取关 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| fids | nums | 目标用户mid | 必要 | 每个之间用`,`间隔 | -| tagids | nums | 分组id | 必要 | 每个之间用`,`间隔 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22104:无权限
22105:未关注 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -把关注用户`mid=205631797`同时添加分组关系到id为`-10`和`207542`的分组中 - -```shell -curl 'https://api.bilibili.com/x/relation/tags/addUsers' \ ---data-urlencode 'fids=205631797' \ ---data-urlencode 'tagids=-10,207542' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 复制关注到分组 - -> https://api.bilibili.com/x/relation/tags/copyUsers - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | ------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| fids | nums | 待复制的用户mid | 必要 | 每个之间用`,`间隔 | -| tagids | nums | 目标分组id | 必要 | 每个之间用`,`间隔 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22104:无权限
22105:未关注 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -把关注用户`mid=4856007`和`mid=326499679`同时复制到为`231305`的分组id中 - -```shell -curl 'https://api.bilibili.com/x/relation/tags/copyUsers' \ ---data-urlencode 'fids=4856007,326499679' \ ---data-urlencode 'tagids=231305' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
- -### 移动关注到分组 - -> https://api.bilibili.com/x/relation/tags/moveUsers - -*请求方式:POST* - -认证方式:Cookie(SESSDATA)或APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------ | ---- | ------------------------ | -------------- | ------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| beforeTagids | nums | 原分组id | 必要 | 每个之间用`,`间隔 | -| afterTagids | nums | 新分组id | 必要 | 每个之间用`,`间隔 | -| fids | nums | 待移动的用户mid | 必要 | 每个之间用`,`间隔 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-111:csrf校验失败
-101:账号未登录
-400:请求错误
22104:无权限
22105:未关注 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -把关注用户`mid=321173469`和`mid=327086920`同时从id为`207542`的分组移动到为`231305`的分组中 - -```shell -curl 'https://api.bilibili.com/x/relation/tags/moveUsers' \ ---data-urlencode 'beforeTagids=207542' \ ---data-urlencode 'afterTagids=23130' \ ---data-urlencode 'fids=321173469,327086920' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` - -
diff --git a/user/space.md b/user/space.md deleted file mode 100644 index 5a4f2eb..0000000 --- a/user/space.md +++ /dev/null @@ -1,4832 +0,0 @@ -# 用户空间相关 - -- [主页](#主页) - - [置顶视频](#置顶视频) - - [查询用户置顶视频](#查询用户置顶视频) - - [设置置顶视频](#设置置顶视频) - - [取消置顶视频](#取消置顶视频) - - [代表作视频](#代表作视频) - - [查询用户代表作视频列表](#查询用户代表作视频列表) - - [添加代表作视频](#添加代表作视频) - - [删除代表作视频](#删除代表作视频) - - [个人TAG](#个人TAG) - - [查看用户个人TAG](#查看用户个人TAG) - - [修改个人TAG](#修改个人TAG) - - [空间公告](#空间公告) - - [查看用户空间公告](#查看用户空间公告) - - [修改空间公告](#修改空间公告) - - [主页板块布局与权限](#主页板块布局与权限) - - [查询空间设置](#查询空间设置) - - [调整空间板块布局](#调整空间板块布局) - - [修改空间隐私权限](#修改空间隐私权限) - - [查询用户最近玩过的游戏](#查询用户最近玩过的游戏) - - [获取用户最近投币的视频明细](#获取用户最近投币的视频明细) - - [获取用户最近点赞的视频明细](#获取用户最近点赞的视频明细) -- [投稿](#投稿) - - [查询用户投稿视频明细](#查询用户投稿视频明细) - - [查询用户投稿相簿预览](#查询用户投稿相簿预览) - - [查询用户投稿相簿明细](#查询用户投稿相簿明细) -- [频道](#频道) - - [查询用户频道列表](#查询用户频道列表) - - [查询用户频道中的视频](#查询用户频道中的视频) - - [创建频道](#创建频道) - - [修改频道](#修改频道) - - [删除频道](#删除频道) - - [频道添加视频](#频道添加视频) - - [频道删除视频](#频道删除视频) - - [调整频道视频排序](#调整频道视频排序) - - [检查频道中有无失效视频](#检查频道中有无失效视频) -- [收藏](#收藏) - - [查询用户创建的视频收藏夹](#查询用户创建的视频收藏夹) - - [查询用户收藏的视频收藏夹](#查询用户收藏的视频收藏夹) -- [课程](#课程) - - [查询用户发布的课程列表](#查询用户发布的课程列表) -- [订阅](#订阅) - - [查询用户追番预览列表](#查询用户追番预览列表) - - [查询用户追番(追剧)明细](#查询用户追番(追剧)明细) - - [查询用户关注的TAG(话题)](#查询用户关注的TAG话题) - ---- - -## 主页 - - - -### 置顶视频 - -#### 查询用户置顶视频 - ->https://api.bilibili.com/x/space/top/arc - -*请求方式:GET* - -粉丝在其主页上可见 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|---------|-----|-----| -| vmid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
53016:没有置顶视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|------|-----------------|-------------------------------------------------------------------| -| aid | num | 稿件avid | | -| videos | num | 视频分P总数 | 默认为1 | -| tid | num | 分区tid | | -| tname | str | 子分区名称 | | -| copyright | num | 是否转载 | 1:原创
2:转载 | -| pic | str | 视频封面图片url | | -| title | str | 稿件标题 | | -| pubdate | num | 稿件发布时间 | 时间戳 | -| ctime | num | 用户提交稿件的时间 | 时间戳 | -| desc | str | 视频简介 | | -| state | num | 视频状态 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`state`备注 | -| attribute | num | 稿件属性位配置 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`attribute`备注 | -| duration | num | 视频总计持续时长(所有分P) | 单位为秒 | -| rights | obj | 视频属性标志 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`rights`对象 | -| owner | obj | 视频UP主信息 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`owner`对象 | -| stat | obj | 视频状态数 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`stat`对象 | -| dynamic | str | 视频同步发布的的动态的文字内容 | 无为空 | -| cid | num | 视频1P cid | | -| dimension | obj | 视频1P分辨率 | 略,见[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的`dimension`对象 | -| bvid | str | 稿件bvid | | -| reason | str | 置顶视频备注 | | -| inter_video | bool | 是否为合作视频 | false:否
true:是 | - -**示例:** - -查询用户`mid=23215368`的置顶视频 - -```shell -curl -G 'https://api.bilibili.com/x/space/top/arc' \ ---data-urlencode 'vmid=23215368' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "aid": 37896701, - "videos": 1, - "tid": 28, - "tname": "原创音乐", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/cc9e72822d68fffdd0406144f1b5348a13c89652.jpg", - "title": "燃烧吧!铃声!把主流手机铃声编成一首曲子", - "pubdate": 1544469671, - "ctime": 1544469671, - "desc": "各品牌的手机铃声大合奏,毫无违和感~", - "state": 0, - "attribute": 16768, - "duration": 208, - "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": 23215368, - "name": "Wayjon冰冰酱", - "face": "http://i2.hdslb.com/bfs/face/7c9715f1768191137eb7ebf91918ca0f99532012.jpg" - }, - "stat": { - "aid": 37896701, - "view": 1058237, - "danmaku": 16821, - "reply": 3725, - "favorite": 76888, - "coin": 100694, - "share": 17091, - "now_rank": 0, - "his_rank": 0, - "like": 90521, - "dislike": 0 - }, - "dynamic": "#编曲##FL##纯音乐#", - "cid": 66621209, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV18t411q7zz", - "reason": "", - "inter_video": false - } -} -``` - -
- -#### 设置置顶视频 - -> https://api.bilibili.com/x/space/top/arc/set - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-----|----------------------|--------|----------------------| -| aid | num | 置顶目标稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 置顶目标稿件bvid | 必要(可选) | avid与bvid任选一个 | -| reason | str | 置顶视频备注 | 非必要 | 置顶备注最大40字符
默认为空 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-304:未修改
-400:请求错误
53014:稿件已失效
53015:备注过长
53017:置顶非自己的稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -置顶视频`av98948772`/`BV1n741127LD` - -avid方式: - -```shell -curl 'https://api.bilibili.com/x/space/top/arc/set' \ ---data-urlencode 'aid=98948772' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl 'https://api.bilibili.com/x/space/top/arc/set' \ ---data-urlencode 'bvid=BV1n741127LD' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -#### 取消置顶视频 - -> https://api.bilibili.com/x/space/top/arc/cancel - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|----------------------|-----|-----| -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|--------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误(重复取消) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -```shell -curl 'https://api.bilibili.com/x/space/top/arc/cancel' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 代表作视频 - -#### 查询用户代表作视频列表 - -> https://api.bilibili.com/x/space/masterpiece - -*请求方式:GET* - -新访客在其主页上可见 - -最多可以设置3个 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|---------|-----|-----| -| vmid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------|-------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 代表作列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|------|------------------| -| 0 | obj | 代表作1 | 无则为空 | -| 1 | obj | 代表作2 | 无则为空 | -| 2 | obj | 代表作3 | 无则为空
最多设置3个 | - -`data`数组中的对象: - -同[查询用户置顶视频](#查询用户置顶视频)中的`data`对象 - -**示例:** - -查询用户`mid=23215368`的代表作视频列表 - -```shell -curl -G 'https://api.bilibili.com/x/space/masterpiece' \ ---data-urlencode 'vmid=23215368' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "aid": 37896701, - "videos": 1, - "tid": 28, - "tname": "原创音乐", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/cc9e72822d68fffdd0406144f1b5348a13c89652.jpg", - "title": "燃烧吧!铃声!把主流手机铃声编成一首曲子", - "pubdate": 1544469671, - "ctime": 1544469671, - "desc": "各品牌的手机铃声大合奏,毫无违和感~", - "state": 0, - "attribute": 16768, - "duration": 208, - "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": 23215368, - "name": "Wayjon冰冰酱", - "face": "http://i2.hdslb.com/bfs/face/7c9715f1768191137eb7ebf91918ca0f99532012.jpg" - }, - "stat": { - "aid": 37896701, - "view": 1058241, - "danmaku": 16821, - "reply": 3725, - "favorite": 76888, - "coin": 100694, - "share": 17091, - "now_rank": 0, - "his_rank": 0, - "like": 90521, - "dislike": 0 - }, - "dynamic": "#编曲##FL##纯音乐#", - "cid": 66621209, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV18t411q7zz", - "reason": "", - "inter_video": false - }, { - "aid": 39596658, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/431e51d0e40e3461e1c1b0f59c755ae8843b1adb.jpg", - "title": "MY2018 - 纪念我的2018年", - "pubdate": 1546328392, - "ctime": 1546328392, - "desc": "", - "state": 0, - "attribute": 16768, - "duration": 239, - "mission_id": 10996, - "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": 23215368, - "name": "Wayjon冰冰酱", - "face": "http://i2.hdslb.com/bfs/face/7c9715f1768191137eb7ebf91918ca0f99532012.jpg" - }, - "stat": { - "aid": 39596658, - "view": 1518, - "danmaku": 16, - "reply": 40, - "favorite": 22, - "coin": 60, - "share": 9, - "now_rank": 0, - "his_rank": 0, - "like": 112, - "dislike": 0 - }, - "dynamic": "#vlog##记录##生活记录#", - "cid": 69561078, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1Jt411B7La", - "reason": "", - "inter_video": false - }, { - "aid": 44721369, - "videos": 1, - "tid": 28, - "tname": "原创音乐", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/9887797402599c42f74a7624f3db4a92a0ebf465.jpg", - "title": "【铃声串烧系列】华米两开花;中华有为,国之荣耀!把主流手机铃声编成一首曲子", - "pubdate": 1551128445, - "ctime": 1551128445, - "desc": "把主流手机铃声编成一首曲子,这一版用华为的铃声作为主旋律,毫无违和感~伴随着2019mwc的开幕,希望国产厂商能获得全世界的目光,并且将属于中国人的科技自信传递到全世界!", - "state": 0, - "attribute": 16768, - "duration": 174, - "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": 23215368, - "name": "Wayjon冰冰酱", - "face": "http://i2.hdslb.com/bfs/face/7c9715f1768191137eb7ebf91918ca0f99532012.jpg" - }, - "stat": { - "aid": 44721369, - "view": 306757, - "danmaku": 7713, - "reply": 1520, - "favorite": 17216, - "coin": 16489, - "share": 2917, - "now_rank": 0, - "his_rank": 0, - "like": 21439, - "dislike": 0 - }, - "dynamic": "#铃声##纯音乐##音乐#【铃声串烧】Mix Ringtones!船新的版本来啦!这一版用华为的铃声作为主旋律,毫无违和感~伴随着2019mwc的开幕,希望国产厂商能获得全世界的目光,并且将属于中国人的科技自信传递到全世界!", - "cid": 78290138, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1vb411879C", - "reason": "", - "inter_video": false - }] -} -``` - -
- -#### 添加代表作视频 - -> https://api.bilibili.com/x/space/masterpiece/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -代表作上限为3个稿件 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-----|----------------------|--------|----------------------| -| aid | num | 置顶目标稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 置顶目标稿件bvid | 必要(可选) | avid与bvid任选一个 | -| reason | str | 代表作备注 | 非必要 | 置顶备注最大40字符
默认为空 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53014:稿件已失效
53015:备注过长
53017:置顶非自己的稿件
53019:达到上限
53020:已经存在该稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -添加视频`av94916552`/`BV1ZE411K7ux`到代表作列表 - -avid方式: - -```shell -curl 'https://api.bilibili.com/x/space/masterpiece/add' \ ---data-urlencode 'aid=94916552' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl 'https://api.bilibili.com/x/space/masterpiece/add' \ ---data-urlencode 'bvid=BV1ZE411K7ux' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -#### 删除代表作视频 - -> https://api.bilibili.com/x/space/masterpiece/cancel - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|----------------------|--------|---------------| -| aid | num | 要删除的目标稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 要删除的目标稿件bvid | 必要(可选) | avid与bvid任选一个 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53021:置顶列表中没有该视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -删除置顶视频`av59765630`/`BV1Yt41137T6` - -avid方式: - -```shell -curl 'api.bilibili.com/x/space/masterpiece/cancel' \ ---data-urlencode 'aid=59765630' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl 'https://api.bilibili.com/x/space/masterpiece/cancel' \ ---data-urlencode 'bvid=BV1Yt41137T6' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -### 个人TAG - -#### 查看用户个人TAG - -> https://api.bilibili.com/x/space/acc/tags - -*请求方式:GET* - -上限5条,且内容由用户自定义 - -带有转义 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------|------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 信息本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|------|---------| -| 0 | obj | 套了个娃 | 只有1项??? | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-------|---------|-----| -| mid | num | 目标用户mid | | -| tags | array | TAG名称 | | - -`data`数组中的对象中的`tags`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|----------|------| -| 0 | str | TAG1 | | -| n | str | TAG(n+1) | | -| …… | str | …… | | -| 4 | str | TAG5 | 上限5条 | - -**示例:** - -查看用户`mid=53456`的个人TAG - -```shell -curl -G 'https://api.bilibili.com/x/space/acc/tags' \ ---data-urlencode 'mid=53456' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "mid": 53456, - "tags": [ - "游戏", - "音乐", - "warma", - "搞笑", - "动画" - ] - } - ] -} -``` - -
- -#### 修改个人TAG - -> https://api.bilibili.com/x/space/acc/tags/set - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`存在且不为0 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|------|----------------------|-----|--------------------------------------------------------------------------------| -| tags | strs | 要设置的TAG内容 | 非必要 | 删除公告留空或省去即可
各TAG长度小于10字符
最多5个TAG
各TAG之间用","(%2C)分隔
重复TAG无效 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|----------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误(超出长度限制) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -修改个人TAG为`minecraft,技术宅,大佬,小哥哥,可爱` - -```shell -curl 'https://api.bilibili.com/x/space/acc/tags/set' \ ---data-urlencode 'tags=minecraft,技术宅,大佬,小哥哥,可爱' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx;DedeUserID=1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 空间公告 - -#### 查看用户空间公告 - -> https://api.bilibili.com/x/space/notice - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | str | 公告信息 | 无则为空 | - -**示例:** - -查看用户`mid=53456`的空间公告 - -```shell -curl -G 'https://api.bilibili.com/x/space/notice' \ ---data-urlencode 'mid=53456' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":"我的微博 @_warma_\n直播录像上传到:warma养鸽场\n头像画师是:微博@Dr-H_喵_\n横幅画师:@薬屋" -} -``` - -
- -#### 修改空间公告 - -> https://api.bilibili.com/x/space/notice/set - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-----|----------------------|-----|--------------------------| -| notice | str | 要设置的公告内容 | 非必要 | 删除公告留空或省去即可
少于150字符 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-304:未修改
-400:请求错误(超出长度限制) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | 作用尚不明确 | - -**示例:** - -修改个人空间公告为`鸽子` - -```shell -curl 'https://api.bilibili.com/x/space/notice/set' \ ---data-urlencode 'notice=鸽子' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 主页板块布局与权限 - -#### 查询空间设置 - -> https://space.bilibili.com/ajax/settings/getSettings - -*请求方式:GET* - -注:带有转义 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|-------------------------|---------------------------|----------------------| -| status | bool | 用户是否存在 | true:存在
false:不存在 | -| data | 用户存在时:obj
用户不存在时:str | 用户存在时:信息本体
用户不存在时:错误信息 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------------------|-------|------------|--------| -| privacy | obj | 空间隐私权限 | | -| index_order | array | 空间板块布局 | | -| theme | str | default主题? | 作用尚不明确 | -| theme_preview_img_path | str | 主题预览图路径? | 作用尚不明确 | -| toutu | obj | 空间头图 | | - -`privacy`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|---------|------------------------| -| bangumi | num | 追番及追剧 | 0:隐藏
1:公开
**下同** | -| bbq | num | 轻视频 | | -| channel | num | 频道 | | -| coins_video | num | 最近投币的视频 | | -| comic | num | 追漫 | | -| dress_up | num | 装扮 | | -| fav_video | num | 收藏夹 | | -| groups | num | 圈子? | 作用尚不明确 | -| likes_video | num | 最近点赞的视频 | | -| played_game | num | 最近玩过的游戏 | | -| tags | num | 订阅标签 | | -| user_info | num | 个人资料 | | - -`index_order`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|--------------------------| -| 0 | obj | 板块1 | 根据板块布局顺序排序
先左侧布局后右侧布局 | -| n | obj | 板块(n+1) | | -| …… | obj | …… | …… | - -`index_order`数组内对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|------|-----| -| id | num | 板块编号 | | -| name | str | 板块名称 | | - -`toutu`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|------------|-----------------------------------| -| sid | num | 空间头图ID | | -| expire | num | 到期时间? | 时间戳?
作用尚不明确 | -| s_img | str | 空间头图小图相对路径 | 完整url为`https://i0.hdslb.com/`+相对路径 | -| l_img | str | 空间头图相对路径 | **同上** | -| android_img | str | 空 | 注:**手机端头图与web端不同,需要用另一个api获取** | -| iphone_img | str | 空 | | -| ipad_img | str | 空 | | -| thumbnail_img | str | 缩略图 | | -| platform | num | 0 | 作用尚不明确 | - -**示例:** - -查看`mid=2`的空间设置 - -```shell -curl -G 'https://space.bilibili.com/ajax/settings/getSettings' \ ---data-urlencode 'mid=2' -``` - -
-查看响应示例: - -```json -{ - "status":true, - "data":{ - "privacy":{ - "bangumi":1, - "bbq":1, - "channel":1, - "coins_video":0, - "comic":1, - "dress_up":1, - "fav_video":0, - "groups":0, - "likes_video":0, - "played_game":1, - "tags":1, - "user_info":1 - }, - "index_order":[ - { - "id":1, - "name":"我的稿件" - }, - { - "id":8, - "name":"我的专栏" - }, - { - "id":7, - "name":"我的频道" - }, - { - "id":2, - "name":"我的收藏夹" - }, - { - "id":3, - "name":"订阅番剧" - }, - { - "id":4, - "name":"订阅标签" - }, - { - "id":5, - "name":"最近投币的视频" - }, - { - "id":6, - "name":"我的圈子" - }, - { - "id":9, - "name":"我的相簿" - }, - { - "id":21, - "name":"公告" - }, - { - "id":22, - "name":"直播间" - }, - { - "id":23, - "name":"个人资料" - }, - { - "id":24, - "name":"官方活动" - }, - { - "id":25, - "name":"最近玩过的游戏" - } - ], - "theme":"default", - "theme_preview_img_path":"", - "toutu":{ - "sid":1, - "expire":2861874560, - "s_img":"bfs/space/768cc4fd97618cf589d23c2711a1d1a729f42235.png", - "l_img":"bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png", - "android_img":"", - "iphone_img":"", - "ipad_img":"", - "thumbnail_img":"", - "platform":0 - } - } -} -``` - -
- -#### 调整空间板块布局 - -> https://space.bilibili.com/ajax/settings/setIndexOrder - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0,referer为 `.bilibili.com`域名下 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-------------|------|----------------------|-----|-----------------------------------------------| -| index_order | nums | 布局列表 | 必要 | 每个值之间用","(%2C)分隔
先左侧布局再右侧布局
值的意义见下表 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -布局参数`index_order`: - -| 值 | 含义 | -|-----|----------------------| -| 1 | (左侧)我的稿件 | -| 2 | (左侧)我的收藏夹 | -| 3 | (左侧)订阅番剧 | -| 4 | (左侧)订阅标签 | -| 5 | (左侧)最近投币的视频 | -| 6 | (左侧)我的圈子**(此板块被隐藏)** | -| 7 | (左侧)我的频道 | -| 8 | (左侧)我的专栏 | -| 9 | (左侧)我的相簿 | -| 21 | (右侧)公告 | -| 22 | (右侧)直播间 | -| 23 | (右侧)个人资料 | -| 24 | (右侧)官方活动 | -| 25 | (右侧)最近玩的游戏 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|------|------|---------------------------| -| ststus | bool | 操作结果 | true:操作成功
false:操作失败 | -| data | str | 错误信息 | 正确时无此项 | - -**示例:** - -调整空间布局为: - ->我的稿件 直播间 ->我的专栏 个人资料 ->订阅番剧 公告 ->我的收藏夹 官方活动 ->我的相簿 最近玩的游戏 ->最近投币的视频 ->订阅标签 ->我的频道 - -```shell -curl 'https://space.bilibili.com/ajax/settings/setIndexOrder' \ ---data-urlencode 'index_order=1,8,3,2,9,5,4,7,22,23,21,24,25,6' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;' \ --e 'https://www.bilibili.com' -``` - -
-查看响应示例: - -```json -{ - "status": true -} -``` - -
- -#### 修改空间隐私权限 - -> https://space.bilibili.com/ajax/settings/setPrivacy - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -鉴权方式:Cookie中`DedeUserID`及`DedeUserID__ckMd5`存在且不为0,referer为 `.bilibili.com`域名下 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-------------|------|----------------------|-----|----------------------------| -| fav_video | num | 收藏视频 | 非必要 | 0:隐藏
1:公开
**下同** | -| bangumi | num | 追番及追剧 | 非必要 | | -| tags | num | 关注的TAG | 非必要 | | -| coins_video | num | 投币的视频 | 非必要 | | -| user_info | num | 个人信息 | 非必要 | | -| played_game | num | 玩过的游戏 | 非必要 | | -| csrf | nstr | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|------|------|---------------------------| -| ststus | bool | 操作结果 | true:操作成功
false:操作失败 | -| data | str | 错误信息 | 正确时无此项 | - -**示例:** - -设置`关注的TAG`为隐藏 - -```shell -curl 'https://space.bilibili.com/ajax/settings/setPrivacy' \ ---data-urlencode 'tags=0' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx;DedeUserID=1;DedeUserID__ckMd5=1;' \ --e 'https://www.bilibili.com' -``` - -
-查看响应示例: - -```json -{ - "status": true -} -``` - -
- -### 查询用户最近玩过的游戏 - -> https://api.bilibili.com/x/space/lastplaygame - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------------------------|------|------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 隐藏时:null
公开时:array | 信息本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|----------| -| 0 | obj | 游戏1 | | -| n | obj | 游戏(n+1) | 项数为总计游戏数 | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|-----------|-----| -| website | str | 游戏主页链接url | | -| image | str | 游戏图片url | | -| name | str | 游戏名 | | - -**示例:** - -查询`mid=2`的最近玩过的游戏 - -```shell -curl -G 'https://api.bilibili.com/x/space/lastplaygame' \ ---data-urlencode 'mid=2' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "website": "https://game.bilibili.com/fgo/event_meihosou", - "image": "http://i0.hdslb.com/bfs/game/f7d4ee0877089e4079b8f0b4f5c95dd4ceba512a.png", - "name": "命运-冠位指定(Fate/GO)" - }, - { - "website": "https://game.bilibili.com/pcr/xxtix", - "image": "http://i0.hdslb.com/bfs/game/7922ecea5cc76fe3c8c177e1d4a6c8cf1c36a700.jpg", - "name": "公主连结Re:Dive" - }, - { - "website": "https://game.bilibili.com/dwbgx/", - "image": "http://i0.hdslb.com/bfs/game/6d5b2df70dfa987408d8d09110cdc327949885e3.png", - "name": "大王不高兴" - }, - { - "website": "https://game.bilibili.com/bangdream/1stanniversary-yxzx/", - "image": "http://i0.hdslb.com/bfs/game/4a7d0b7272dffe5a489ee935b6bd2d4f7d5f1257.png", - "name": "BanG Dream!" - }, - { - "website": "http://www.biligame.com/detail/?id=101772", - "image": "http://i0.hdslb.com/bfs/game/8e8b04e7bd2170c2ba2c9f563a62c72bac2eba2c.jpg", - "name": "明日方舟" - } - ] -} -``` - -
- -### 获取用户最近投币的视频明细 - -> https://api.bilibili.com/x/space/coin/video - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -如设置隐私查看自己的需要认证 仅包含最近投币的20个视频,如超过指定时间未投币(也许一个月),列表将为空 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| vmid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------------------------|------|------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 隐藏时:null
公开时:array | 信息本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 投币视频1 | | -| n | obj | 投币视频(n+1) | | -| …… | obj | …… | | - -`data`数组中的对象: - -基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 - -**示例:** - -查看用户`mid=15858903`的最近投币视频 - -```shell -curl -L -X GET 'https://api.bilibili.com/x/space/coin/video?vmid=15858903' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "aid": 259434557, - "videos": 1, - "tid": 218, - "tname": "喵星人", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/47d46ad72bf1898ebbfe7d82a9d972d4b53e61fc.jpg", - "title": "42度在家造溜冰场降温,猫上去直呼脚滑!", - "pubdate": 1660361400, - "ctime": 1660361407, - "desc": "刚开始真的觉得很难,不可能,学会理论知识后觉得,就这?太简单了,所以随便做做是成立的。就是学费有点贵,1w多……,我现在空调随便修!希望日后修空调能把这钱在挣回来!(溜冰场上期指路:BV1ga411f79y)\n萌宠区手工up主往期发明指路: \n猫力跑步发电机:BV1iy4y1a7Cb \n电动撸毛器:BV1H64y1v7gq\n戒烟头盔:BV1H64y1k7tz \n猫热能暖床器:BV1xF411i7tw \n全透明赏猫床:BV1Qb4y1C7sn \n写不完啦 还有很多,就要靠各位慢慢挖掘啦!", - "state": 0, - "duration": 501, - "mission_id": 859937, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 20951119, - "name": "蒂姆嘟嘟Tim", - "face": "http://i1.hdslb.com/bfs/face/9860c4c559fd2517b1fa92e592d3d71b95bb3ec2.jpg" - }, - "stat": { - "aid": 259434557, - "view": 1403311, - "danmaku": 5762, - "reply": 1295, - "favorite": 26633, - "coin": 100847, - "share": 4502, - "now_rank": 0, - "his_rank": 64, - "like": 130944, - "dislike": 0 - }, - "dynamic": "猫确实会两条腿滑冰!猫和老鼠诚不欺我", - "cid": 800970167, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 3702, - "short_link_v2": "https://b23.tv/BV1wa411Z77n", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220812a228chhkmeci9f0hizo6ivhzv_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1wa411Z77n", - "coins": 2, - "time": 1662182649, - "ip": "", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - } - ] -} -``` - -
- -### 获取用户最近点赞的视频明细 - -> https://api.bilibili.com/x/space/like/video - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -如设置隐私查看自己的需要认证 仅包含最近点赞的20个视频,也可能为空 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|---------|-----|-----| -| vmid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------------------------|------|------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 隐藏时:null
公开时:array | 信息本体 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 点赞视频1 | | -| n | obj | 点赞视频(n+1) | | -| …… | obj | …… | | - -`data`数组中的对象: - -基本同[获取视频详细信息(web端)](/video/info.md#获取视频详细信息(web端))中的data对象 - -**示例:** - -查看用户`mid=15858903`的最近投币视频 - -```shell -curl -L -X GET 'https://api.bilibili.com/x/space/like/video?vmid=15858903' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [ - { - "aid": 53516907, - "videos": 1, - "tid": 26, - "tname": "音MAD", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/3653400bb9a5996c9f0702d20fc431210dca0c5e.jpg", - "title": "喵内我回来了Brain Power", - "pubdate": 1558756227, - "ctime": 1558756227, - "desc": "在准备一个合作,所以一直没更新,O-oooooooooo AAAAE-A-A-I-A-U- JO-oooooooooooo AAE-O-A-A-U-U-A- E-eee-ee-eee AAAAE-A-E-I-E-A- JO-ooo-oo-oo-oo EEEEO-A-AAA-AAAA", - "state": 0, - "duration": 48, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 12466098, - "name": "不知道4576", - "face": "http://i0.hdslb.com/bfs/face/1361b4a2e686e9efa89fc0f1024985d0c44345c6.jpg" - }, - "stat": { - "aid": 53516907, - "view": 125484, - "danmaku": 258, - "reply": 441, - "favorite": 4268, - "coin": 3132, - "share": 859, - "now_rank": 0, - "his_rank": 0, - "like": 5767, - "dislike": 0 - }, - "dynamic": "#BRAIN POWER##音MAD##天使降临到我身边#", - "cid": 93639076, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1V4411s7Qr", - "bvid": "BV1V4411s7Qr", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 557851916, - "videos": 1, - "tid": 122, - "tname": "野生技能协会", - "copyright": 2, - "pic": "http://i1.hdslb.com/bfs/archive/fea0d9efa7e2dc8cd9960bd466f78b2ed84d907d.jpg", - "title": "请问:「宁可在屎山上不断堆代码,也不愿意优化项目需求」❓", - "pubdate": 1662441923, - "ctime": 1662441923, - "desc": "https://fishc.com.cn/thread-217312-1-1.html\n⬆️关于产品迭代的3个关键⬆️", - "state": 0, - "duration": 312, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 314076440, - "name": "鱼C-小甲鱼", - "face": "http://i2.hdslb.com/bfs/face/4543ce186f9b74e60a85e66c010187bd3be3d0e1.jpg" - }, - "stat": { - "aid": 557851916, - "view": 89834, - "danmaku": 245, - "reply": 164, - "favorite": 490, - "coin": 265, - "share": 570, - "now_rank": 0, - "his_rank": 0, - "like": 1601, - "dislike": 0 - }, - "dynamic": "【遇山开路 逢水搭桥】超完美产品是如何「迭代」出来的❓", - "cid": 825277912, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 4830, - "short_link_v2": "https://b23.tv/BV1pe4y1C7XD", - "up_from_v2": 20, - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220906qn22r4a6hff6vie1bodoftvgi_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1pe4y1C7XD", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 730007618, - "videos": 1, - "tid": 27, - "tname": "综合", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/1f65fd131db7eb81fd270e6ccb7257b68dfd60c4.jpg", - "title": "细!《猫和老鼠》中的小穿帮竟然有这么多!画师偷懒?", - "pubdate": 1661862565, - "ctime": 1661862565, - "desc": "BGM:超级马里奥世界\n 匈牙利狂想曲-李斯特\n Used to-James Carter", - "state": 0, - "duration": 338, - "mission_id": 779615, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 38968617, - "name": "大福咕咕", - "face": "http://i0.hdslb.com/bfs/face/e4a00d5409f1888c10e7382bf15df0fbd9f78ae8.jpg" - }, - "stat": { - "aid": 730007618, - "view": 8052558, - "danmaku": 6994, - "reply": 1905, - "favorite": 181436, - "coin": 113827, - "share": 5447, - "now_rank": 0, - "his_rank": 2, - "like": 698492, - "dislike": 0 - }, - "dynamic": "考虑到广大朋友们要开学了 直接提前更新!", - "cid": 819285197, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 371093, - "short_link_v2": "https://b23.tv/BV1kD4y1672t", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220830a238owa0pg6docs2wak8t6tg2_firsti.jpg", - "pub_location": "北京", - "bvid": "BV1kD4y1672t", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 886537437, - "videos": 2, - "tid": 22, - "tname": "鬼畜调教", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/db9314a8b2730ee95cb9cac7fc5054c770ea9c9f.jpg", - "title": "电棍:向♿奔去(修复版)", - "pubdate": 1612420280, - "ctime": 1612420280, - "desc": "原作@_Karasu_ \n拙劣的模仿 歌词有修改", - "state": 0, - "duration": 448, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 12771348, - "name": "DJRicher", - "face": "http://i0.hdslb.com/bfs/face/4a033640048238cb039add4e064804e227e87082.jpg" - }, - "stat": { - "aid": 886537437, - "view": 8790816, - "danmaku": 11516, - "reply": 50330, - "favorite": 106746, - "coin": 157098, - "share": 66553, - "now_rank": 0, - "his_rank": 0, - "like": 155180, - "dislike": 0 - }, - "dynamic": "", - "cid": 312766707, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1vK4y1p7F5", - "bvid": "BV1vK4y1p7F5", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 514421957, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/8570e2264c585ec47fa2f90f0fb41fcbe24082c1.jpg", - "title": "女子“巨乳症” 至Q杯,医生切除26斤赘乳", - "pubdate": 1660436958, - "ctime": 1660436958, - "desc": "网络", - "state": 0, - "duration": 157, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 153362257, - "name": "微胖委员会", - "face": "http://i1.hdslb.com/bfs/face/7bce12b8b5fef2f31d215dec94fc5fc18cdd41a2.jpg" - }, - "stat": { - "aid": 514421957, - "view": 1863705, - "danmaku": 1357, - "reply": 2953, - "favorite": 3091, - "coin": 95, - "share": 25867, - "now_rank": 0, - "his_rank": 0, - "like": 16315, - "dislike": 0 - }, - "dynamic": "", - "cid": 802910768, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1xg411k7L1", - "up_from_v2": 8, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220814qn1cm2zo6jetqmu2nvlcxssy1_firsti.jpg", - "pub_location": "江苏", - "bvid": "BV1xg411k7L1", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 259434557, - "videos": 1, - "tid": 218, - "tname": "喵星人", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/47d46ad72bf1898ebbfe7d82a9d972d4b53e61fc.jpg", - "title": "42度在家造溜冰场降温,猫上去直呼脚滑!", - "pubdate": 1660361400, - "ctime": 1660361407, - "desc": "刚开始真的觉得很难,不可能,学会理论知识后觉得,就这?太简单了,所以随便做做是成立的。就是学费有点贵,1w多……,我现在空调随便修!希望日后修空调能把这钱在挣回来!(溜冰场上期指路:BV1ga411f79y)\n萌宠区手工up主往期发明指路: \n猫力跑步发电机:BV1iy4y1a7Cb \n电动撸毛器:BV1H64y1v7gq\n戒烟头盔:BV1H64y1k7tz \n猫热能暖床器:BV1xF411i7tw \n全透明赏猫床:BV1Qb4y1C7sn \n写不完啦 还有很多,就要靠各位慢慢挖掘啦!", - "state": 0, - "duration": 501, - "mission_id": 859937, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 20951119, - "name": "蒂姆嘟嘟Tim", - "face": "http://i1.hdslb.com/bfs/face/9860c4c559fd2517b1fa92e592d3d71b95bb3ec2.jpg" - }, - "stat": { - "aid": 259434557, - "view": 1403315, - "danmaku": 5762, - "reply": 1295, - "favorite": 26633, - "coin": 100847, - "share": 4502, - "now_rank": 0, - "his_rank": 64, - "like": 130944, - "dislike": 0 - }, - "dynamic": "猫确实会两条腿滑冰!猫和老鼠诚不欺我", - "cid": 800970167, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 3702, - "short_link_v2": "https://b23.tv/BV1wa411Z77n", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220812a228chhkmeci9f0hizo6ivhzv_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1wa411Z77n", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 765765040, - "videos": 1, - "tid": 26, - "tname": "音MAD", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/f92297d237bc330e4c70bd7cb4b6a5988a4a35df.jpg", - "title": "向 先 辈 奔 去", - "pubdate": 1642843003, - "ctime": 1642843003, - "desc": "远野说大家听不出他的和声所以不愿意来了(迫真)\nBGM:夜に駆ける\nPV:BV1Ph411C7S5\n封面:@十人比白 \n其他作品:\n病 名 为 臭 BV1W3411Y7R3\nHomo KING BV1p3411Y7Qf\n先 辈 の 名 は BV1bF411p7W7\n野兽先辈的消失 BV1XL4y147KK", - "state": 0, - "duration": 119, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 26540403, - "name": "小王子擎天", - "face": "http://i0.hdslb.com/bfs/face/70723d05c4fcd3af47ac7e453bee06feea48b804.jpg" - }, - "stat": { - "aid": 765765040, - "view": 125123, - "danmaku": 168, - "reply": 384, - "favorite": 3518, - "coin": 878, - "share": 858, - "now_rank": 0, - "his_rank": 0, - "like": 6224, - "dislike": 0 - }, - "dynamic": "", - "cid": 490015078, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 185827, - "short_link_v2": "https://b23.tv/BV19r4y1Y7De", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220122a26mtv7cs4x1ga3329ew4cqhb_firsti.jpg", - "bvid": "BV19r4y1Y7De", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 599348400, - "videos": 1, - "tid": 218, - "tname": "喵星人", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/6c0b56f7b2a378e32c40c2ec7cf4a34cf6e42ad2.jpg", - "title": "打开前请先降低音量哦!!", - "pubdate": 1660007700, - "ctime": 1660007701, - "desc": "日常投食小猫咪\n视频里的是两个窝次的15只崽崽\n5月30日和6月1日出生\nliliya和Tessa的宝宝", - "state": 0, - "duration": 203, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 43099315, - "name": "颖姥姥的小猪喵", - "face": "http://i1.hdslb.com/bfs/face/6261098e074624891f5f1cdf35b4df64401c4307.jpg" - }, - "stat": { - "aid": 599348400, - "view": 5611104, - "danmaku": 14300, - "reply": 8180, - "favorite": 122270, - "coin": 45195, - "share": 126333, - "now_rank": 0, - "his_rank": 5, - "like": 536114, - "dislike": 0 - }, - "dynamic": "日常投食小猫咪\n视频里的是两个窝次的15只崽崽\n5月30日和6月1日出生\nliliya和Tessa的宝宝", - "cid": 797762429, - "dimension": { - "width": 1080, - "height": 1920, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1cB4y167B8", - "up_from_v2": 9, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220809a2ku7vu7oisum1632zs07p7dg_firsti.jpg", - "pub_location": "山东", - "bvid": "BV1cB4y167B8", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 472194944, - "videos": 1, - "tid": 162, - "tname": "绘画", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/aee4307632ecad127f60ae556cc5981f1a329c15.jpg", - "title": "有些画,不需要太清晰", - "pubdate": 1660817303, - "ctime": 1660817303, - "desc": "先画个狗头保命", - "state": 0, - "duration": 147, - "mission_id": 761022, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 28330240, - "name": "叶无趣", - "face": "http://i1.hdslb.com/bfs/face/9416d6dd723d271bdd805ccf2e44dc47436c5a07.jpg" - }, - "stat": { - "aid": 472194944, - "view": 2378719, - "danmaku": 6517, - "reply": 2815, - "favorite": 33778, - "coin": 24411, - "share": 11461, - "now_rank": 0, - "his_rank": 0, - "like": 209110, - "dislike": 0 - }, - "dynamic": "", - "cid": 807922809, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1DT411c7AD", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220819a213lvuk7uqfgh91m9lv1esx1_firsti.jpg", - "pub_location": "湖南", - "bvid": "BV1DT411c7AD", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 599779624, - "videos": 1, - "tid": 173, - "tname": "桌游棋牌", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/70800347ccbd019b678b41318c203b8fecb9aaec.jpg", - "title": "【雀魂汪汪录】第196期 谁能给我翻译翻译 什么叫做惊喜", - "pubdate": 1661394900, - "ctime": 1661252218, - "desc": "BGM可以通过网易云搜索【雀魂汪汪录BGM】就可以找到啦!\n雀魂汪汪录 周四中午见\n微博 @雀魂麻将majsoul\n——————————————————————————\n想要投稿的玩家~务必请通过邮箱来进行投稿~【请不要在评论区或是私信投稿,谢谢】\n邮箱地址:tg@catfoodstudio.com\n投稿最少需要注明【局目、内容、牌谱链接】哦!", - "state": 0, - "duration": 575, - "mission_id": 808212, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 353240497, - "name": "雀魂麻将majsoul", - "face": "http://i1.hdslb.com/bfs/face/053f02d2a7eb96884b1020ca20d6d02241df6099.jpg" - }, - "stat": { - "aid": 599779624, - "view": 187150, - "danmaku": 1958, - "reply": 516, - "favorite": 342, - "coin": 787, - "share": 646, - "now_rank": 0, - "his_rank": 0, - "like": 7429, - "dislike": 0 - }, - "dynamic": "#雀魂# #雀魂汪汪录# #立直麻将#", - "cid": 812183140, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 2739, - "short_link_v2": "https://b23.tv/BV1aB4y1z74J", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220823qn266np8ftodq2t2m2paam9xj_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1aB4y1z74J", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 685619632, - "videos": 1, - "tid": 17, - "tname": "单机游戏", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/750b5fabea1ff363d775ba58f95a23b5cb890be9.jpg", - "title": "多人群峦传说联机3:用木炭炉做出铜溶液,浇筑出铜镐和探矿镐!", - "pubdate": 1656756676, - "ctime": 1656756677, - "desc": "-", - "state": 0, - "duration": 268, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1771879421, - "name": "方块局安神", - "face": "http://i2.hdslb.com/bfs/face/c3781165f41f2b4d99e7beb1356105f624cc424e.jpg" - }, - "stat": { - "aid": 685619632, - "view": 215, - "danmaku": 0, - "reply": 2, - "favorite": 1, - "coin": 0, - "share": 0, - "now_rank": 0, - "his_rank": 0, - "like": 8, - "dislike": 0 - }, - "dynamic": "", - "cid": 761921385, - "dimension": { - "width": 1920, - "height": 864, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1MU4y1D7ND", - "up_from_v2": 35, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220702qndfrow9p4eq991lyl8em2v9w_firsti.jpg", - "pub_location": "宁夏", - "bvid": "BV1MU4y1D7ND", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 427974127, - "videos": 1, - "tid": 17, - "tname": "单机游戏", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/1f81be8fd2eec800e3134f24928b66b75c25a078.jpg", - "title": "多人群峦传说联机1:开局做出篝火和木炭窑!很快的进入陶器时代!", - "pubdate": 1656660681, - "ctime": 1656660682, - "desc": "-", - "state": 0, - "duration": 313, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1771879421, - "name": "方块局安神", - "face": "http://i2.hdslb.com/bfs/face/c3781165f41f2b4d99e7beb1356105f624cc424e.jpg" - }, - "stat": { - "aid": 427974127, - "view": 186, - "danmaku": 0, - "reply": 7, - "favorite": 1, - "coin": 2, - "share": 0, - "now_rank": 0, - "his_rank": 0, - "like": 7, - "dislike": 0 - }, - "dynamic": "", - "cid": 760818007, - "dimension": { - "width": 1920, - "height": 864, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1MG411x7Jh", - "up_from_v2": 35, - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220701qn3ejknxipb82r1a0hut5chj5_firsti.jpg", - "pub_location": "宁夏", - "bvid": "BV1MG411x7Jh", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 602112213, - "videos": 1, - "tid": 22, - "tname": "鬼畜调教", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/5edabb39c8ac3a3202111e8e60f8e45b8b3c180d.jpg", - "title": "你被百度骗了,呵呵", - "pubdate": 1660561467, - "ctime": 1660561467, - "desc": "分区和参与活动真的合理吗()\n很草的点子\n烂活", - "state": 0, - "duration": 62, - "mission_id": 738105, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 361685930, - "name": "啰嗦_Losso", - "face": "http://i2.hdslb.com/bfs/face/e26253ff660c19fdb953825aef990c30ad08c8dc.jpg" - }, - "stat": { - "aid": 602112213, - "view": 58957, - "danmaku": 112, - "reply": 231, - "favorite": 1401, - "coin": 514, - "share": 117, - "now_rank": 0, - "his_rank": 0, - "like": 9353, - "dislike": 0 - }, - "dynamic": "", - "cid": 804462941, - "dimension": { - "width": 828, - "height": 1792, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1yB4y1L7iG", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220815qn31gxoi0spl1yr35uq27n3u4_firsti.jpg", - "pub_location": "美国", - "bvid": "BV1yB4y1L7iG", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 856393020, - "videos": 1, - "tid": 238, - "tname": "运动综合", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/d7edbba4eb63bb9ceed978ae46e676cb3fdbaf6a.jpg", - "title": "极限难度!不碰其他球把45颗球打入洞中!海外知名桌球博主来B站啦!", - "pubdate": 1659105213, - "ctime": 1659105213, - "desc": "", - "state": 0, - "duration": 756, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1954176521, - "name": "桌球小哥genipool官方", - "face": "http://i2.hdslb.com/bfs/face/90ca22fa8c79d0d5042c7c24daf1ec574679a740.jpg" - }, - "stat": { - "aid": 856393020, - "view": 342876, - "danmaku": 365, - "reply": 159, - "favorite": 809, - "coin": 800, - "share": 283, - "now_rank": 0, - "his_rank": 0, - "like": 4266, - "dislike": 0 - }, - "dynamic": "", - "cid": 788065599, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV18V4y1E7zo", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220729qn15m1fxzexlmvq1j541qvx6r_firsti.jpg", - "pub_location": "福建", - "bvid": "BV18V4y1E7zo", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 728238452, - "videos": 1, - "tid": 232, - "tname": "科工机械", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/6613ccabbf0828d0071efbb2351818c3cab62725.jpg", - "title": "烧脑故障,家庭漏电维修图解", - "pubdate": 1657075740, - "ctime": 1657075740, - "desc": "-", - "state": 0, - "duration": 433, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 1985127693, - "name": "城阳电工电路", - "face": "http://i0.hdslb.com/bfs/face/faae5daababbf652d97faedab1a25d78b654fc44.jpg" - }, - "stat": { - "aid": 728238452, - "view": 138664, - "danmaku": 277, - "reply": 263, - "favorite": 681, - "coin": 601, - "share": 85, - "now_rank": 0, - "his_rank": 0, - "like": 9567, - "dislike": 0 - }, - "dynamic": "", - "cid": 765013281, - "dimension": { - "width": 1080, - "height": 1920, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV12S4y1E7rt", - "up_from_v2": 8, - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220706qn257g5ymn00jrq1tbc2y0k4s_firsti.jpg", - "pub_location": "山东", - "bvid": "BV12S4y1E7rt", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 556671285, - "videos": 1, - "tid": 173, - "tname": "桌游棋牌", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/02aa212793ebfdc5bd2b243109961d01ef74015f.jpg", - "title": "【整活向】麻将新手不常见错误示范——偷换牌山", - "pubdate": 1659761706, - "ctime": 1659761706, - "desc": "大家千万不要学习@肉目 的反面教材噢\n不然胡萝卜很快就被切光了", - "state": 0, - "duration": 61, - "mission_id": 808212, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 5256791, - "name": "凤鸣麻雀社", - "face": "http://i2.hdslb.com/bfs/face/79c578d5a00dc25498913187f1e2e7b63463b027.jpg" - }, - "stat": { - "aid": 556671285, - "view": 28016, - "danmaku": 17, - "reply": 62, - "favorite": 25, - "coin": 34, - "share": 22, - "now_rank": 0, - "his_rank": 0, - "like": 845, - "dislike": 0 - }, - "dynamic": "健康麻将 保护胡萝卜 从@肉目 做起\n玩儿花的手法是越来越熟练了 危险危险", - "cid": 795200966, - "dimension": { - "width": 1080, - "height": 1440, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV12e4y1D7mp", - "up_from_v2": 8, - "first_frame": "http://i0.hdslb.com/bfs/storyff/n220806a21h7h5icb0b5fv1v71d6cwu7_firsti.jpg", - "pub_location": "广东", - "bvid": "BV12e4y1D7mp", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 471592118, - "videos": 1, - "tid": 59, - "tname": "演奏", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/3f1fcd0461235f8881a86faaa1321744b251b26f.jpg", - "title": "有仪式感的植物大战僵尸", - "pubdate": 1659409876, - "ctime": 1659409876, - "desc": "-", - "state": 0, - "duration": 150, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 523219895, - "name": "上官画画", - "face": "http://i2.hdslb.com/bfs/face/a69355ca44c5343e202e1e1294245ba588e92e96.jpg" - }, - "stat": { - "aid": 471592118, - "view": 314596, - "danmaku": 302, - "reply": 630, - "favorite": 2532, - "coin": 2648, - "share": 1294, - "now_rank": 0, - "his_rank": 0, - "like": 20552, - "dislike": 0 - }, - "dynamic": "", - "cid": 791291889, - "dimension": { - "width": 960, - "height": 540, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1WT41177PD", - "up_from_v2": 36, - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220802qn3bbryqe32dploiilb7xtqft_firsti.jpg", - "pub_location": "浙江", - "bvid": "BV1WT41177PD", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 599162361, - "videos": 1, - "tid": 238, - "tname": "运动综合", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/bc086df16873a9bc619d625bc176359220062d79.jpg", - "title": "张镇辉台球正经教学【6个不太建议使用的技巧】15.0版本", - "pubdate": 1659690000, - "ctime": 1659690022, - "desc": "靓仔,用一句话证明你是老粉!!\n \n \n \n长按点赞,有彩蛋哟~", - "state": 0, - "duration": 119, - "mission_id": 846900, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 88895225, - "name": "张镇辉台球教学", - "face": "http://i2.hdslb.com/bfs/face/2af69641c86d3915440b28ef64214e112390c15c.jpg" - }, - "stat": { - "aid": 599162361, - "view": 2275313, - "danmaku": 23143, - "reply": 2608, - "favorite": 22825, - "coin": 15344, - "share": 3584, - "now_rank": 0, - "his_rank": 73, - "like": 243787, - "dislike": 0 - }, - "dynamic": "", - "cid": 794017093, - "dimension": { - "width": 2160, - "height": 3840, - "rotate": 0 - }, - "season_id": 39377, - "short_link_v2": "https://b23.tv/BV1CB4y1r7d5", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220805qn1xjr322hy7j1tc0t7ntj0r3_firsti.jpg", - "pub_location": "广东", - "bvid": "BV1CB4y1r7d5", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - }, - { - "aid": 729057411, - "videos": 1, - "tid": 59, - "tname": "演奏", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/365e41383e10a774d54b908c018e66a0f90bcc65.jpg", - "title": "今天练练脚下钢琴", - "pubdate": 1659322244, - "ctime": 1659322244, - "desc": "-", - "state": 0, - "duration": 16, - "mission_id": 741439, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 397865300, - "name": "Rhythm梦龙", - "face": "http://i2.hdslb.com/bfs/face/297f26c89a43d60619e552d5606e575d2a8406aa.jpg" - }, - "stat": { - "aid": 729057411, - "view": 17740, - "danmaku": 8, - "reply": 27, - "favorite": 74, - "coin": 37, - "share": 20, - "now_rank": 0, - "his_rank": 0, - "like": 1878, - "dislike": 0 - }, - "dynamic": "", - "cid": 790320365, - "dimension": { - "width": 1080, - "height": 1920, - "rotate": 0 - }, - "short_link_v2": "https://b23.tv/BV1zS4y1x7ZM", - "up_from_v2": 9, - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220801qn337b2rig3v6l23kyehiinaa_firsti.jpg", - "pub_location": "上海", - "bvid": "BV1zS4y1x7ZM", - "inter_video": false, - "resource_type": "ugc", - "subtitle": "" - } - ] - } -} -``` - -
- -## 投稿 - - - -### 查询用户投稿视频明细 - -> https://api.bilibili.com/x/space/wbi/arc/search - -> https://api.bilibili.com/x/space/arc/search (旧) - -PS:旧 api 存在一些不同,比如某些情况下,例如 mid=2 时如果没有设置 Cookie 则出现非法访问(-401),但新 api 不会。 - - -*请求方式:GET* - -**header字段:** - -必须要有 `user-agent`,且不能为 `空字符串`,以及含有 `python`、`node`、`curl` 等的字符串。 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|---------|-----|---------|-----|-------------------------------------------------------------| -| mid | num | 目标用户mid | 必要 | | -| order | str | 排序方式 | 非必要 | 默认为pubdate
最新发布:pubdate
最多播放:click
最多收藏:stow | -| tid | num | 筛选目标分区 | 非必要 | 默认为0
0:不进行分区筛选
分区tid为所筛选的分区 | -| keyword | str | 关键词筛选 | 非必要 | 用于使用关键词搜索该UP主视频稿件 | -| pn | num | 页码 | 非必要 | | -| ps | num | 每页项数 | 非必要 | 最小1,最大50,默认30 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|----------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截
-1200:被降级过滤的请求(一种意义不明的偶发状况) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------------|------|----------|-----| -| list | obj | 列表信息 | | -| page | obj | 页面信息 | | -| episodic_button | obj | “播放全部“按钮 | | -| is_risk | bool | | | -| gaia_res_type | num | | | -| gaia_data | | | | - -`data`中的`list`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-------|----------|-----| -| tlist | obj | 投稿视频分区索引 | | -| vlist | array | 投稿视频列表 | | - -`list`中的`tlist`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|--------|--------------| -| {tid} | obj | 该分区的详情 | 字段名为存在的分区tid | -| …… | obj | …… | 向下扩展 | - -`tlist`中的`{tid}`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|------------|-----| -| count | num | 投稿至该分区的视频数 | | -| name | str | 该分区名称 | | -| tid | num | 该分区tid | | - -`list`中的`vlist`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 投稿视频1 | | -| n | obj | 投稿视频(n+1) | | -| …… | obj | …… | …… | - -`list`中的`vlist`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------------|------|----------|--------------------------------------------------------------------------------| -| aid | num | 稿件avid | | -| author | str | 视频UP主 | 不一定为目标用户(合作视频) | -| bvid | str | 稿件bvid | | -| comment | num | 视频评论数 | | -| copyright | str | 空 | 作用尚不明确 | -| created | num | 投稿时间 | 时间戳 | -| description | str | 视频简介 | | -| hide_click | bool | false | 作用尚不明确 | -| is_pay | num | 0 | 作用尚不明确 | -| is_union_video | num | 是否为合作视频 | 0:否
1:是 | -| length | str | 视频长度 | MM:SS | -| mid | num | 视频UP主mid | 不一定为目标用户(合作视频) | -| pic | str | 视频封面 | | -| play | num | 视频播放次数 | 如果视频基本信息API对应的状态为-403视频访问权限不足,数据类型将变为str,如("play": "--",),于mid79发表的av5132474可见 | -| review | num | 0 | 作用尚不明确 | -| subtitle | str | 空 | 作用尚不明确 | -| title | str | 视频标题 | | -| typeid | num | 视频分区tid | | -| video_review | num | 视频弹幕数 | | -| is_steins_gate | num | 0 | | -| is_live_playback | num | 0 | | -| meta | | | | -| is_avoided | num | 0 | | -| attribute | num | 0 | | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|-------|-----| -| count | num | 总计稿件数 | | -| pn | num | 当前页码 | | -| ps | num | 每页项数 | | - -`data`中的`episodic_button`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|----------|-----| -| text | str | 按钮文字 | | -| uri | str | 全部播放页url | | - -**示例:** - -`pn`(页码)和`ps`(每页项数)只改变`vlist`中成员的多少与内容 - -以每页2项查询用户`mid=53456`的第1页投稿视频明细 - -```shell -curl -G 'https://api.bilibili.com/x/space/wbi/arc/search' \ ---data-urlencode 'mid=53456' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ ---user-agent 'go' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": { - "tlist": { - "1": { - "tid": 1, - "count": 41, - "name": "动画" - }, - "3": { - "tid": 3, - "count": 36, - "name": "音乐" - }, - "4": { - "tid": 4, - "count": 82, - "name": "游戏" - }, - "36": { - "tid": 36, - "count": 1, - "name": "知识" - }, - "160": { - "tid": 160, - "count": 49, - "name": "生活" - }, - "211": { - "tid": 211, - "count": 3, - "name": "美食" - }, - "217": { - "tid": 217, - "count": 2, - "name": "动物圈" - } - }, - "vlist": [ - { - "comment": 6729, - "typeid": 172, - "play": 2171260, - "pic": "http://i2.hdslb.com/bfs/archive/9fe04c2acb6678c9a8d1547db211e458ea70982c.jpg", - "subtitle": "", - "description": "好开心能和几千人一起看音乐会!真的震撼到我了,它给我带来的冲击感远超出了我的想象……光遇这场音乐会会一直持续到元旦哦,大家感兴趣的话也可以来试试吧~\n祝看得开心啦!", - "copyright": "1", - "title": "【warma】我尝试学习交朋友", - "review": 0, - "author": "Warma", - "mid": 53456, - "created": 1671163200, - "length": "23:58", - "video_review": 7931, - "aid": 433873134, - "bvid": "BV1nG411P7hf", - "hide_click": false, - "is_pay": 0, - "is_union_video": 0, - "is_steins_gate": 0, - "is_live_playback": 0, - "meta": null, - "is_avoided": 0, - "attribute": 0 - }, - { - "comment": 3380, - "typeid": 31, - "play": 811600, - "pic": "http://i2.hdslb.com/bfs/archive/7e6c6ec32a0db8684abd660d599644e9d1c43ee4.jpg", - "subtitle": "", - "description": "原曲:BV1iR4y1X7V9\n这首歌是今年生日的时候收到的礼物,真的太好听了!我也想翻唱试试~\n在翻唱中录了一些不一样的小音效,比如卡祖笛和竖笛,还录了些小配音……大家来听听看!\n谢谢原曲staff老师们做出这么有趣的作品,谢谢在这次翻唱中staff老师们的帮助(PV老师甚至根据翻唱版本把曲子的PV做了些修改,加了好多小细节,真的超用心!)\n祝听得开心啦~\n \n【staff表】\n原曲staff:详见BV1iR4y1X7V9\n翻唱:warma\n混音:白萝卜音乐工作室\nPV修改:@颜一bot \n封面:是根", - "copyright": "1", - "title": "【warma】来唱大家送我的歌!《夏天幻游日记》", - "review": 0, - "author": "Warma", - "mid": 53456, - "created": 1670558400, - "length": "02:59", - "video_review": 2343, - "aid": 733323002, - "bvid": "BV18D4y1Y7o6", - "hide_click": false, - "is_pay": 0, - "is_union_video": 0, - "is_steins_gate": 0, - "is_live_playback": 0, - "meta": null, - "is_avoided": 0, - "attribute": 0 - } - ] - }, - "page": { - "pn": 1, - "ps": 2, - "count": 214 - }, - "episodic_button": { - "text": "播放全部", - "uri": "//www.bilibili.com/medialist/play/53456?from=space" - }, - "is_risk": false, - "gaia_res_type": 0, - "gaia_data": null - } -} -``` - -
- -### 查询用户投稿相簿预览 - -> https://api.bilibili.com/x/space/album/index - -*请求方式:GET* - -所有类型的相簿 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|----------------------------| -| mid | num | 目标用户mid | 必要 | | -| ps | num | 获取的相簿量 | 非必要 | 默认为8 定义域 1-大于1700 (注意滥用风险) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------|------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 相簿列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 相簿内容1 | | -| n | obj | 相簿内容(n+1) | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-------|---------|--------| -| count | num | 总计图片数 | | -| ctime | num | 发布时间 | 时间戳 | -| description | str | 简介 | | -| doc_id | num | 相簿id | 非动态!!! | -| like | num | 点赞数 | | -| pictures | array | 图片内容 | | -| poster_uid | num | 上传用户mid | | -| title | str | 标题 | 动态内容无 | -| view | num | 浏览数 | | - -`data`数组中的对象中的`pictures`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|----------------| -| 0 | obj | 内容图片1 | | -| n | obj | 内容图片(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`pictures`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|-------|----------| -| img_height | num | 图片高度 | | -| img_size | num | 图片大小 | 单位为KByte | -| img_src | str | 图片url | | -| img_width | num | 图片宽度 | | - -**示例:** - -查询用户`mid=53456`的投稿相簿预览 - -```shell -curl -G 'https://api.bilibili.com/x/space/album/index' \ ---data-urlencode 'mid=53456' \ ---data-urlencode 'ps=2' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "doc_id": 60470424, - "poster_uid": 53456, - "title": "", - "description": "你醒啦![tv_大佬]\n之前说到过的百万粉纪念的视频已经定时在了今天下午七点,欢迎来看呀!", - "pictures": [{ - "img_src": "https://i0.hdslb.com/bfs/album/2840366e30bf7c0aba9da5adde1a771255a57bc7.jpg", - "img_width": 625, - "img_height": 134, - "img_size": 14 - }], - "count": 1, - "ctime": 1583444859, - "view": 1677521, - "like": 29974 - }, { - "doc_id": 58962388, - "poster_uid": 53456, - "title": "", - "description": "上次的那些写实儿童画发出来啦!可以打印下来辟邪[tv_大佬]", - "pictures": [{ - "img_src": "https://i0.hdslb.com/bfs/album/8acaf7c7897cb858cccab36c33a5e875adfef177.jpg", - "img_width": 2172, - "img_height": 3258, - "img_size": 2831 - }, { - "img_src": "https://i0.hdslb.com/bfs/album/1611b6b56d3d4328889a62b9f9bdc92e9d065532.jpg", - "img_width": 3456, - "img_height": 5184, - "img_size": 3024 - }, { - "img_src": "https://i0.hdslb.com/bfs/album/f3a30a2ef5b39711af8b945d54d85ffd1e932b8a.jpg", - "img_width": 1200, - "img_height": 757, - "img_size": 313 - }], - "count": 3, - "ctime": 1582881332, - "view": 1176646, - "like": 25734 - }] -} -``` - -
- -### 查询用户投稿相簿明细 - -> https://api.vc.bilibili.com/link_draw/v1/doc/doc_list - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----------|-----|---------|-----|-------------------------------------------------------------| -| uid | num | 目标用户mid | 必要 | | -| page_num | num | 页码 | 非必要 | 默认为0 | -| page_size | num | 每页项数 | 必要 | 默认为30 | -| biz | str | 查询类型 | 非必要 | 全部:all
绘画:draw
摄影:photo
日常:daily
默认为all | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------| -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-------|------|-----| -| items | array | 相簿列表 | | - -`items`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 相簿内容1 | | -| n | obj | 相簿内容(n+1) | | -| …… | obj | …… | …… | - -`items`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-------|---------|--------| -| count | num | 总计图片数 | | -| ctime | num | 发布时间 | 时间戳 | -| description | str | 简介 | | -| doc_id | num | 相簿id | 非动态!!! | -| like | num | 点赞数 | | -| pictures | array | 图片内容 | | -| poster_uid | num | 上传用户mid | | -| title | str | 标题 | 动态内容无 | -| view | num | 浏览数 | | - -`items`数组中的对象中的`pictures`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|----------------| -| 0 | obj | 内容图片1 | | -| n | obj | 内容图片(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`pictures`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|-------|----------| -| img_height | num | 图片高度 | | -| img_size | num | 图片大小 | 单位为KByte | -| img_src | str | 图片url | | -| img_width | num | 图片宽度 | | - -**示例:** - -查询用户`mid=53456`的投稿明细中的全部类型 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/doc_list' \ ---data-urlencode 'uid=2' \ ---data-urlencode 'page_num=1' \ ---data-urlencode 'page_size=2' \ ---data-urlencode 'biz=all' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "msg": "success", - "message": "success", - "data": { - "items": [{ - "doc_id": 59015720, - "poster_uid": 2, - "title": "", - "description": "6影是真的无脑,2个宝石都护不住(设计师:这真是太酷了)", - "pictures": [{ - "img_src": "http://i0.hdslb.com/bfs/album/8456f050ec8639c6e0cef36aba27bfdedc550590.jpg", - "img_width": 1824, - "img_height": 840, - "img_size": 1024 - }], - "count": 1, - "ctime": 1582894607, - "view": 707073, - "like": 7055 - }, { - "doc_id": 46853140, - "poster_uid": 2, - "title": "", - "description": "#年度报告# #新年Flag# https://www.bilibili.com/blackboard/timemachine2019.html\n决定了,这就是我的新年Flag!今年我一定要…", - "pictures": [{ - "img_src": "http://i0.hdslb.com/bfs/album/5b3ae76f79d7cf2501afc3ca7c7da509dcf0e38a.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 465 - }, { - "img_src": "http://i0.hdslb.com/bfs/album/87789fe9644337a1f7e6a0655a32584705af8bda.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 421 - }, { - "img_src": "http://i0.hdslb.com/bfs/album/f752d7f3bb7952f6c0013b3f48ddcb07060b4721.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 524 - }, { - "img_src": "http://i0.hdslb.com/bfs/active/7a52a411bccb716c8e67fe70e6c330d5209346de.jpg", - "img_width": 1125, - "img_height": 2184, - "img_size": 534 - }], - "count": 4, - "ctime": 1577966163, - "view": 833193, - "like": 5667 - }] - } -} -``` - -
- -## 频道 - - - -### 查询用户频道列表 - -> https://api.bilibili.com/x/space/channel/list - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|----------------------------| -| code | num | 返回值 | 0:成功 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | 无则为空 所有频道内均无视频则为空,此时code为0 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-------|-------|-----| -| count | num | 总计频道数 | | -| list | array | 频道列表 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|----------------| -| 0 | obj | 频道1 | | -| n | obj | 频道(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`data`中的`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|---------|------| -| cid | num | 频道id | | -| count | num | 频道内含视频数 | | -| cover | str | 封面图片url | | -| intro | str | 简介 | 无则为空 | -| mid | num | 创建用户mid | | -| mtime | num | 创建时间 | 时间戳 | -| name | str | 标题 | | - -**示例:** - -查询用户`mid=53456`的频道列表 - -```shell -curl -G 'https://api.bilibili.com/x/space/channel/list' \ ---data-urlencode 'mid=53456' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 6, - "list": [{ - "cid": 100249, - "mid": 53456, - "name": "【实况】动物之森", - "intro": "", - "mtime": 1579898830, - "count": 2, - "cover": "http://i1.hdslb.com/bfs/archive/6a7ed9483c34e839dfca981b9e2b94cd4c4efa0a.jpg" - }, { - "cid": 79323, - "mid": 53456, - "name": "忆雨", - "intro": "忆雨出现过的视频", - "mtime": 1562535222, - "count": 7, - "cover": "http://i2.hdslb.com/bfs/archive/1783e4f03042b282495799adda1cb56270cea647.jpg" - }, { - "cid": 79322, - "mid": 53456, - "name": "大画家", - "intro": "", - "mtime": 1562535122, - "count": 6, - "cover": "http://i0.hdslb.com/bfs/archive/9c85a14e805c6c23cb7a42e1dbef97821bb68960.jpg" - }, { - "cid": 77758, - "mid": 53456, - "name": "灭火器", - "intro": "", - "mtime": 1561270856, - "count": 4, - "cover": "http://i2.hdslb.com/bfs/archive/0073208d086b4ebe9cdc540e7664aa74b483aeb6.jpg" - }, { - "cid": 75696, - "mid": 53456, - "name": "沃玛小剧场", - "intro": "", - "mtime": 1559129460, - "count": 5, - "cover": "http://i2.hdslb.com/bfs/archive/db2b20ecdb6ed013fc3780b0e741ea88d46b5b40.jpg" - }, { - "cid": 170, - "mid": 53456, - "name": "爆炸电台", - "intro": "闲聊的电台", - "mtime": 1503298893, - "count": 7, - "cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg" - }] - } -} -``` - -
- - - -### 查询用户频道中的视频 - -> https://api.bilibili.com/x/space/channel/video - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|--------| -| mid | num | 目标用户mid | 必要 | | -| cid | num | 目标频道id | 必要 | | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页项数 | 非必要 | 默认为100 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|----------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无用户对应的频道 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|------|-----| -| list | obj | 频道信息 | | -| page | obj | 页面信息 | | - -`data`中的`list`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-------|---------|------| -| archives | array | 包含的视频列表 | | -| cid | num | 频道id | | -| count | num | 频道内含视频数 | | -| cover | str | 封面图片url | | -| intro | str | 简介 | 无则为空 | -| mid | num | 创建用户mid | | -| mtime | num | 创建时间 | 时间戳 | -| name | str | 标题 | | - -`list`中的`archives`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|----------------| -| 0 | obj | 视频1 | | -| n | obj | 视频(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | …… | - -`list`中的`archives`数组中的对象: - -基本同「[视频详细信息](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/video/info.md#视频详细信息(avid/bvid互转))」中的data对象 - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ---------- | ---- | -| count | num | 总计视频数 | | -| num | num | 当前页码 | | -| size | num | 每页项数 | | - -**示例:** - -查询用户`mid=53456`的频道`170`中的视频 - -```shell -curl -G 'https://api.bilibili.com/x/space/channel/video' \ ---data-urlencode 'mid=53456' \ ---data-urlencode 'cid=170' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": { - "cid": 170, - "mid": 53456, - "name": "爆炸电台", - "intro": "闲聊的电台", - "mtime": 1503298893, - "count": 7, - "cover": "http://i2.hdslb.com/bfs/archive/73d77bc6bb0d44b239fd4f5a2682fe3144e81692.jpg", - "archives": [{ - "aid": 87673204, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/5387bdcbbe4d5551adbf0ee2e607e4b7d3d8f2f0.jpg", - "title": "【warma爆炸电台】迟来的自我介绍【第八期】", - "pubdate": 1581244539, - "ctime": 1581244540, - "desc": "时隔半年的新的一期爆炸电台来啦,这是我的一系列杂谈聊天电台,这次因为多了很多新关注的朋友们,所以来做个自我介绍吧!\n画师:Dr-H_喵_ 动画:K_Lacid\n结尾提到的壁纸稍后在动态发原图,动态壁纸在steam那个壁纸软件的创意工坊里搜warma能找到\n\n往期的电台:\n第一期:av6786024 \n第三期:av13619263\n第四期:av18862091\n第五期:av25092410\n第六期:av42492515\n第七期:av62910468", - "state": 0, - "attribute": 16512, - "duration": 2388, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 53456, - "name": "Warma", - "face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg" - }, - "stat": { - "aid": 87673204, - "view": 1383542, - "danmaku": 88908, - "reply": 9237, - "favorite": 32929, - "coin": 68849, - "share": 5140, - "now_rank": 0, - "his_rank": 52, - "like": 116164, - "dislike": 0 - }, - "dynamic": "来做个自我介绍吧! #warma##沃玛##爆炸电台#", - "cid": 149793525, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1D7411t7Be", - "inter_video": false - }, { - "aid": 62910468, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/4bd598f71a144d4505e259b143c0de0bf27968b2.jpg", - "title": "【warma爆炸电台】居然收到了几千条问题!【第七期】", - "pubdate": 1565345410, - "ctime": 1565338559, - "desc": "时隔半年的爆炸电台第七期终于来啦!在这一期里回答了很多问题,祝看得开心!此外,就在昨天,50万订阅了…真的谢谢大家!\n也欢迎来看往期的电台:\n第一期:av6786024 (2016年10月)\n第二期:av10373352(2017年5月)\n第三期:av13619263(2017年8月)\n第四期:av18862091(2018年1月)\n第五期:av25092410(2018年6月)\n第六期:av42492515(2019年2月)", - "state": 0, - "attribute": 16512, - "duration": 1987, - "mission_id": 11740, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 53456, - "name": "Warma", - "face": "http://i1.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg" - }, - "stat": { - "aid": 62910468, - "view": 455277, - "danmaku": 19383, - "reply": 2108, - "favorite": 10507, - "coin": 19422, - "share": 1208, - "now_rank": 0, - "his_rank": 0, - "like": 31515, - "dislike": 0 - }, - "dynamic": "爆炸电台 第七期 来啦!", - "cid": 109284065, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "BV1gt411K7Ga", - "inter_video": false - }] - }, - "page": { - "count": 7, - "num": 1, - "size": 2 - } - } -} -``` - -
- -### 创建频道 - -> https://api.bilibili.com/x/space/channel/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -创建成功后会返回新建频道的id - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-------|-----|----------------------|-----|-----| -| name | str | 频道名 | 必要 | | -| intro | str | 频道简介 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53001:频道名字数超过限制
53002:频道简介字数超过限制
53004:创建的频道已经满额
53007:频道名称已经存在
53024:编辑内容命中敏感信息 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 数据本体 | 成功有此项 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----|-----|------|-----| -| cid | num | 频道id | | - -**示例:** - -创建名为`test1`的频道,简介为空 - -```shell -curl 'https://api.bilibili.com/x/space/channel/add' \ ---data-urlencode 'name=test1' \ ---data-urlencode 'intro=' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "cid": 138996 - } -} -``` - -
- -### 修改频道 - -> https://api.bilibili.com/x/space/channel/edit - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-------|-----|----------------------|-----|-----| -| cid | num | 频道id | 必要 | | -| name | str | 频道名 | 必要 | | -| intro | str | 频道简介 | 非必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|---------------------------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
53001:频道名字数超过限制
53002:频道简介字数超过限制
53007:频道名称已经存在
53024:编辑内容命中敏感信息 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -修改频道`138996`名称为`测试`,简介为`123456` - -```shell -curl 'https://api.bilibili.com/x/space/channel/edit' \ ---data-urlencode 'cid=138996' \ ---data-urlencode 'name=测试' \ ---data-urlencode 'intro=123456' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 删除频道 - -> https://api.bilibili.com/x/space/channel/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| cid | num | 需要删除的频道id | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -删除频道`138996` - -```shell -curl 'https://api.bilibili.com/x/space/channel/del' \ ---data-urlencode 'cid=138996' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 频道添加视频 - -> https://api.bilibili.com/x/space/channel/video/add - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -仅能添加自己是UP主的视频 - -如添加多个视频,仅会添加正确的 - -**注:完成后需要使用接口「查询用户频道中的视频」刷新** - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|------|----------------------|-----|----------------| -| cid | num | 频道id | 必要 | | -| aids | nums | 要添加的目标稿件avid | 必要 | 多个使用","(%2C)分隔 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------|------------|----------------------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项
53003:本频道里的视频已满
53006:提交视频已失效或频道里有(非该视频UP主) | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 出错稿件avid列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------------|-----| -| 0 | num | 出错稿件avid1 | | -| n | num | 出错稿件avid(n+1) | | -| …… | num | …… | …… | - -**示例:** - -向频道`138995`中添加视频`av583785685`和`av243322853` - -```shell -curl 'https://api.bilibili.com/x/space/channel/video/add' \ ---data-urlencode 'cid=138995' \ ---data-urlencode 'aids=583785685,243322853' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [] -} -``` - -
- -### 频道删除视频 - -> https://api.bilibili.com/x/space/channel/video/del - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**注:完成后需要使用接口「查询用户频道中的视频」刷新** - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|--------------|-----|-----| -| cid | num | 频道id | 必要 | | -| aid | num | 要删除的目标稿件avid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|-------------------------------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-404:无此项
53008:频道内没有视频
53009:频道内没有该视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -删除频道`138995`中的视频`av583785685` - -```shell -curl 'https://api.bilibili.com/x/space/channel/video/del' \ ---data-urlencode 'cid=138995' \ ---data-urlencode 'aid=583785685' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 调整频道视频排序 - -> https://api.bilibili.com/x/space/channel/video/sort - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|----------------------|-----|-----------------------------------------| -| cid | num | 频道id | 必要 | | -| aid | num | 要移动的目标稿件avid | 必要 | | -| to | num | 视频排序倒数位置 | 非必要 | 默认为1
1为列表底部,视频总数为首端
与显示顺序恰好相反 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|--------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -调整`138995`中的视频`av583785685`位置为倒数第2 - -```shell -curl 'https://api.bilibili.com/x/space/channel/video/sort' \ ---data-urlencode 'cid=138995' \ ---data-urlencode 'aid=583785685' \ ---data-urlencode 'to=2' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 检查频道中有无失效视频 - -> https://api.bilibili.com/x/space/channel/video/check - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|--------|-----|-----| -| cid | num | 目标频道id | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|-----------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
-404:无此项
53005:频道内有失效视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -检查频道`138995` - -```shell -curl -G 'https://api.bilibili.com/x/space/channel/video/check ---data-urlencode 'cid=138995' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 收藏 - - - -### 查询用户创建的视频收藏夹 - -> https://api.bilibili.com/x/v3/fav/folder/created/list-all - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -查看私有收藏夹时需要认证 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-----|---------|-----|-----| -| up_mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----------------------|------|---------------------| -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 隐藏时:null
公开时:obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----------------------------|---------|-----| -| count | num | 创建的收藏夹数 | | -| list | 无收藏夹时:null
有收藏夹时:array | 收藏夹列表 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|----------|----------------| -| 0 | obj | 收藏夹1 | | -| n | obj | 收藏夹(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | | - -`data`中的`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|-----------|-----------| -| id | num | 收藏夹mlid | | -| fid | num | 原始收藏夹mlid | 去除两位mid尾号 | -| mid | num | 创建用户mid | | -| attr | num | 收藏夹属性位配置 | | -| title | str | 收藏夹标题 | | -| fav_state | num | 0 | 作用尚不明确 | -| media_count | num | 收藏夹总计视频数 | | - -`attr`属性位二进制值表: - -| 位 | 内容 | 备注 | -|-----------|----------|----------------------| -| 0 | 是否为默认收藏夹 | 0:默认收藏夹
1:其他收藏夹 | -| 1 | 私有收藏夹 | 0:公开
1:私有 | -| 其他有待补充... | | | - -**示例:** - -查询用户`mid=7792521`的收藏夹列表 - -```shell -curl -G 'https://api.bilibili.com/x/v3/fav/folder/created/list-all' \ ---data-urlencode 'up_mid=7792521' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 5, - "list": [{ - "id": 44233921, - "fid": 442339, - "mid": 7792521, - "attr": 0, - "title": "默认收藏夹", - "fav_state": 0, - "media_count": 85 - }, { - "id": 936347621, - "fid": 9363476, - "mid": 7792521, - "attr": 22, - "title": "放假君的鬼畜私房歌", - "fav_state": 0, - "media_count": 2 - }, { - "id": 845218621, - "fid": 8452186, - "mid": 7792521, - "attr": 22, - "title": "♪一言不合就开唱♪", - "fav_state": 0, - "media_count": 4 - }, { - "id": 844998121, - "fid": 8449981, - "mid": 7792521, - "attr": 22, - "title": "个人作品精选", - "fav_state": 0, - "media_count": 25 - }, { - "id": 381779121, - "fid": 3817791, - "mid": 7792521, - "attr": 22, - "title": "鬼畜小课堂", - "fav_state": 0, - "media_count": 25 - }] - } -} -``` - -
- -### 查询用户收藏的视频收藏夹 - -> https://api.bilibili.com/x/v3/fav/folder/collected/list - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|--------|-----|---------|-----|--------------| -| ps | num | 每页项数 | 必要 | 定义域 1 - 大于70 | -| pn | num | 页码 | 必要 | | -| up_mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----------------------|------|---------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
40022:签名过长 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 隐藏时:null
公开时:obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----------------------------|---------|-----| -| count | num | 创建的收藏夹数 | | -| list | 无收藏夹时:null
有收藏夹时:array | 收藏夹列表 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|----------|----------------| -| 0 | obj | 收藏夹1 | | -| n | obj | 收藏夹(n+1) | 项数取决于`count`的值 | -| …… | obj | …… | | - -`data`中的`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|------------|----------------------------| -| id | num | 收藏夹ml | | -| fid | num | 原始收藏夹mlid | 去除两位mid尾号 | -| mid | num | 创建用户mid | | -| attr | num | 收藏夹属性 | 转换成8-bit二进制处理
详细说明见下表 | -| title | str | 收藏夹标题 | | -| cover | str | 收藏夹封面图片url | | -| upper | obj | 收藏夹创建用户信息 | | -| cover_type | num | 2 | 作用尚不明确 | -| intro | str | 空 | 作用尚不明确 | -| ctime | num | 创建时间 | 时间戳 | -| mtime | num | 审核时间 | 时间戳 | -| state | num | 0 | 作用尚不明确 | -| fav_state | num | 0 | 作用尚不明确 | -| media_count | num | 收藏夹总计视频数 | | - -`attr`属性二进制值表: - -| 其他有待补充... | 1:默认收藏夹 | 0:公开性 | -|-----------|----------------------|----------------| -| | 0:默认收藏夹
1:其他收藏夹 | 0:公开
1:私有 | - -`data`中的`list`数组中的对象中的`upper`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|--------| -| mid | num | 创建人mid | | -| name | str | 创建人昵称 | | -| face | str | 空 | 作用尚不明确 | - -**示例:** - -查询用户`mid=293793435`的收藏夹收藏列表 - -```shell -curl -G 'https://api.bilibili.com/x/v3/fav/folder/collected/list' \ ---data-urlencode 'up_mid=293793435' \ ---data-urlencode 'ps=20' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 2, - "list": [{ - "id": 496307088, - "fid": 4963070, - "mid": 412466388, - "attr": 22, - "title": "入站必刷", - "cover": "http://i0.hdslb.com/bfs/archive/baae2b4050363c0ab45465b7cf696b8304fdaca8.jpg", - "upper": { - "mid": 412466388, - "name": "热门菌", - "face": "" - }, - "cover_type": 2, - "intro": "", - "ctime": 1563394571, - "mtime": 1563394571, - "state": 0, - "fav_state": 0, - "media_count": 55 - }, { - "id": 381779121, - "fid": 3817791, - "mid": 7792521, - "attr": 22, - "title": "鬼畜小课堂", - "cover": "http://i2.hdslb.com/bfs/archive/09a668cfdb38fb3a85f905c10f48a2947e36a695.jpg", - "upper": { - "mid": 7792521, - "name": "还有一天就放假了", - "face": "" - }, - "cover_type": 2, - "intro": "", - "ctime": 1553700224, - "mtime": 1557291666, - "state": 0, - "fav_state": 0, - "media_count": 25 - }] - } -} -``` - -
- -## 课程 - - - -### 查询用户发布的课程列表 - -> https://api.bilibili.com/pugv/app/web/season/page - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-------| -| mid | num | 目标用户mid | 必要 | | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页项数 | 非必要 | 默认为20 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-------|------|-----| -| list | array | 课程列表 | | -| page | obj | 页面信息 | | - -`data`中的`page`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|------|---------|----------------------------| -| next | bool | 是否存在下一页 | false:最后一页
true:存在下一页 | -| num | num | 当前页码 | | -| size | num | 每页项数 | | -| total | num | 总计项数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|---------------| -| 0 | obj | 课程1 | | -| n | obj | 课程(n+1) | 按照目标用户的发布顺序排列 | -| …… | obj | …… | | - -`data`中的`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------|-----|---------|----------| -| cover | str | 课程封面url | | -| ep_count | num | 课程集数 | | -| link | str | 课程页面url | 手机版页面url | -| page | num | 1 | 作用尚不明确 | -| play | num | 课程播放数 | | -| season_id | num | 课程ssid | | -| status | str | 更新状态说明 | | -| subtitle | str | 课程副标题 | | -| title | str | 课程标题 | | - -**示例:** - -查询用户`mid=33683045`的课程发布列表 - -```shell -curl -G 'https://api.bilibili.com/pugv/app/web/season/page' \ ---data-urlencode 'mid=33683045' \ ---data-urlencode 'ps=5' \ ---data-urlencode 'pn=1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "items": [ - { - "cover": "http://i0.hdslb.com/bfs/archive/596575057885fff7f0ceff047437186cba459358.jpg", - "ep_count": 10, - "link": "https://m.bilibili.com/cheese/play/ss80", - "page": 1, - "play": 174467, - "season_id": 80, - "status": "共10期", - "subtitle": "百科全书式军事科普短视频系列", - "title": "《战忽知道》第一季" - }, - { - "cover": "http://i0.hdslb.com/bfs/archive/322aa94d27cece62d2a859caf71ac2426f29eee2.jpg", - "ep_count": 1, - "link": "https://m.bilibili.com/cheese/play/ss145", - "page": 1, - "play": 22155, - "season_id": 145, - "status": "更新至第1期", - "subtitle": "此课程为《局座:第四次工业革命来了》部分集数,请谨慎购买", - "title": "【体验课】局座讲5G:5G如何改变我们的生活?" - }, - { - "cover": "http://i0.hdslb.com/bfs/archive/b9794ac4507f8764e219df413b661b5faf499a19.jpg", - "ep_count": 10, - "link": "https://m.bilibili.com/cheese/play/ss113", - "page": 1, - "play": 49833, - "season_id": 113, - "status": "更新至第10期", - "subtitle": "百科全书式军事科普短视频系列", - "title": "《战忽知道》第二季" - }, - { - "cover": "http://i0.hdslb.com/bfs/archive/7351fcb33592a4bc7aac9f71d421b4b5ce0177d3.jpg", - "ep_count": 10, - "link": "https://m.bilibili.com/cheese/play/ss51", - "page": 1, - "play": 4981037, - "season_id": 51, - "status": "共10期", - "subtitle": "洞悉国际局势,学习战略思维", - "title": "局座的国际战略课" - }, - { - "cover": "http://i0.hdslb.com/bfs/archive/31e2a170b5a815e34f0537a2727b28f1b87dca18.jpg", - "ep_count": 10, - "link": "https://m.bilibili.com/cheese/play/ss121", - "page": 1, - "play": 30754, - "season_id": 121, - "status": "更新至第10期", - "subtitle": "百科全书式军事科普短视频系列", - "title": "《战忽知道》第三季" - } - ], - "page": { - "next": true, - "num": 1, - "size": 5, - "total": 8 - } - }, - "message": "success" -} -``` - -
- -## 订阅 - - - -### 查询用户追番预览列表 - -> https://space.bilibili.com/ajax/Bangumi/getList - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -如设置隐私查看自己的需要认证 - -带有转义,且只能获取最多15条 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|--------------------|----------------------|-----------------------| -| status | bool | 状态 | false:失败
true:成功 | -| data | 失败:str
成功:obj | 失败:错误信息
成功:信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|-------|--------|--------| -| count | num | 总计追番数 | | -| pages | num | 0 | 作用尚不明确 | -| result | array | 追番预览列表 | | - -`data`中的`result`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|---------------| -| 0 | obj | 追番1 | | -| n | obj | 追番(n+1) | 按照目标用户的关注顺序排列 | -| …… | obj | …… | | -| 14 | obj | 追番15 | 最后一项 | - -`data`中的`result`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------------|-----|-----------|-----------------------| -| brief | str | 简介 | | -| cover | str | 封面图片url | | -| evaluate | str | 空 | | -| favorites | num | 追番数 | | -| is_finish | num | 是否已完结 | 0:未完结
1:已完结 | -| last_ep_index | num | 0 | 作用尚不明确 | -| newest_ep_index | num | 最新一话 | 可能为0 | -| season_id | str | 番剧ssid | | -| share_url | str | 播放页面链接url | | -| title | str | 标题 | | -| total_count | num | 总计集数 | 未完结:-1
已完结:非0正整数 | - -**示例:** - -查看用户`mid=14082`的追番预览列表 - -```shell -curl -G 'https://space.bilibili.com/ajax/Bangumi/getList' \ ---data-urlencode 'mid=14082' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "status": true, - "data": { - "count": 25, - "pages": 0, - "result": [{ - "season_id": "29310", - "share_url": "http:\/\/bangumi.bilibili.com\/anime\/29310\/", - "title": "异度侵入 ID:INVADED", - "is_finish": 1, - "favorites": 3479220, - "newest_ep_index": 13, - "last_ep_index": 0, - "total_count": 13, - "cover": "http:\/\/i0.hdslb.com\/bfs\/bangumi\/image\/9bf9e66968f85b33ec3769a16c86b36dc984abbc.png", - "evaluate": "", - "brief": "本片讲述利用能检测出人们杀意的装置以及利用思想粒子做出的“井”,来探知事件真相的科幻故事。" - }, { - "season_id": "25739", - "share_url": "http:\/\/bangumi.bilibili.com\/anime\/25739\/", - "title": "关于我转生变成史莱姆这档事", - "is_finish": 1, - "favorites": 5518829, - "newest_ep_index": 0, - "last_ep_index": 0, - "total_count": 27, - "cover": "https:\/\/i0.hdslb.com\/bfs\/bangumi\/a4c0e0ccc44fe3949a734f546cf5bb07da925bad.png", - "evaluate": "", - "brief": "史莱姆生活,开始了。\n上班族的三上悟在道路上被歹徒给刺杀身亡后,回过神来发现自己转生到了异世界。\n不..." - }, - ………… - ] - } -} -``` - -
- -### 查询用户追番(追剧)明细 - -> https://api.bilibili.com/x/space/bangumi/follow/list - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -如设置隐私查看自己的需要认证 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|---------|-----|----------------| -| vmid | num | 目标用户mid | 必要 | | -| pn | num | 页码 | 非必要 | 默认为1 | -| ps | num | 每页项数 | 非必要 | 默认为15 定义域1-30 | -| type | num | 查询类型 | 必要 | 1:追番
2:追剧 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
53013:用户隐私设置未公开 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-------|-------|-----| -| list | array | 追番列表 | | -| pn | num | 当前页码 | | -| ps | num | 每页项数 | | -| total | num | 总计追番数 | | - -`data`中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|---------------| -| 0 | obj | 追番1 | | -| n | obj | 追番(n+1) | 按照目标用户的关注顺序排列 | -| …… | obj | …… | | - -`data`中的`list`数组中的对象: - -基本同「番剧详细信息」中的result对象(未完工) - -**示例:** - -查看用户`mid=14082`的追番明细 - -```shell -curl -G 'https://api.bilibili.com/x/space/bangumi/follow/list' \ ---data-urlencode 'vmid=14082' \ ---data-urlencode 'type=1' \ ---data-urlencode 'ps=2' \ ---data-urlencode 'pn=1' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "list": [{ - "season_id": 29310, - "media_id": 28224080, - "season_type": 1, - "season_type_name": "番剧", - "title": "异度侵入 ID:INVADED", - "cover": "http://i0.hdslb.com/bfs/bangumi/image/9bf9e66968f85b33ec3769a16c86b36dc984abbc.png", - "total_count": 13, - "is_finish": 1, - "is_started": 1, - "is_play": 1, - "badge": "会员专享", - "badge_type": 0, - "rights": { - "allow_review": 1, - "is_selection": 1, - "selection_style": 1 - }, - "stat": { - "follow": 3475768, - "view": 87500861, - "danmaku": 1334654, - "reply": 316632, - "coin": 835150, - "series_follow": 3475242, - "series_view": 87500861 - }, - "new_ep": { - "id": 307774, - "index_show": "全13话", - "cover": "http://i0.hdslb.com/bfs/archive/3dce2b856a7b0ea667aa288b51b7c0478fa56c4d.jpg", - "title": "13", - "long_title": "CHANNELEDⅡ", - "pub_time": "2020-03-23 00:30:00", - "duration": 1481000 - }, - "rating": { - "score": 9.8, - "count": 262589 - }, - "square_cover": "http://i0.hdslb.com/bfs/bangumi/image/664dbf039ec2da8dd982b697a108e28e87b9897e.jpg", - "season_status": 13, - "season_title": "TV", - "badge_ep": "会员", - "media_attr": 196608, - "season_attr": 0, - "evaluate": "本片讲述利用能检测出人们杀意的装置以及利用思想粒子做出的“井”,来探知事件真相的科幻故事。...", - "areas": [{ - "id": 2, - "name": "日本" - }], - "subtitle": "", - "first_ep": 307446, - "can_watch": 1, - "series": { - "series_id": 4760, - "title": "ID:INVADED", - "season_count": 1, - "new_season_id": 29310 - }, - "publish": { - "pub_time": "2020-01-06 00:30:00", - "pub_time_show": "敬请期待", - "release_date": "2020-01-06", - "release_date_show": "2020年1月6日" - }, - "mode": 2, - "section": [{ - "section_id": 39327, - "season_id": 29310, - "limit_group": 328, - "watch_platform": 15, - "copyright": "dujia", - "ban_area_show": 1 - }, { - "section_id": 39633, - "season_id": 29310, - "limit_group": 328, - "watch_platform": 15, - "type": 1, - "copyright": "dujia", - "title": "其他", - "ban_area_show": 1 - }, { - "section_id": 44101, - "season_id": 29310, - "limit_group": 316, - "watch_platform": 15, - "type": 4, - "copyright": "ugc", - "ban_area_show": 1 - }], - "url": "https://www.bilibili.com/bangumi/play/ss29310", - "follow_status": 2, - "is_new": 0, - "progress": "", - "both_follow": true - }, { - "season_id": 25739, - "media_id": 139252, - "season_type": 1, - "season_type_name": "番剧", - "title": "关于我转生变成史莱姆这档事", - "cover": "http://i0.hdslb.com/bfs/bangumi/a4c0e0ccc44fe3949a734f546cf5bb07da925bad.png", - "total_count": 27, - "is_finish": 1, - "is_started": 1, - "is_play": 1, - "badge": "会员专享", - "badge_type": 0, - "rights": { - "allow_review": 1, - "is_selection": 1, - "selection_style": 1 - }, - "stat": { - "follow": 5516519, - "view": 246739631, - "danmaku": 3802465, - "reply": 460225, - "coin": 1338958, - "series_follow": 5516535, - "series_view": 246739631 - }, - "new_ep": { - "id": 316957, - "index_show": "全27话", - "cover": "http://i0.hdslb.com/bfs/archive/81d07d1a478ce3a6209b557e14df9b9c78c42abb.jpg", - "title": "OAD03", - "long_title": "外传:利姆鲁的华丽教师生活 其一", - "pub_time": "2020-03-27 00:00:03", - "duration": 1493000 - }, - "rating": { - "score": 9.4, - "count": 83354 - }, - "square_cover": "http://i0.hdslb.com/bfs/bangumi/8d9f5b4a566d0547bc2e3f6f733b732a09c0d3d4.jpg", - "season_status": 13, - "season_title": "TV", - "badge_ep": "会员", - "media_attr": 0, - "season_attr": 0, - "evaluate": "史莱姆生活,开始了。\n上班族的三上悟在道路上被歹徒给刺杀身亡后,回过神来发现自己转生到了异世界。\n不过,自己居然是“史莱姆”!\n他在得到利姆鲁这个名字后开始了自己的史莱姆人生,随着与各个种族相处交流的...", - "areas": [{ - "id": 2, - "name": "日本" - }], - "subtitle": "", - "first_ep": 250460, - "can_watch": 1, - "series": { - "series_id": 4188, - "title": "关于我转生变成史莱姆这档事", - "season_count": 1, - "new_season_id": 25739 - }, - "publish": { - "pub_time": "2018-10-02 00:30:00", - "pub_time_show": "2018年10月02日00:30", - "release_date": "2018-10-02", - "release_date_show": "2018年10月2日" - }, - "mode": 2, - "section": [{ - "section_id": 34988, - "season_id": 25739, - "limit_group": 328, - "watch_platform": 15, - "copyright": "bilibili", - "ban_area_show": 1 - }], - "url": "https://www.bilibili.com/bangumi/play/ss25739", - "follow_status": 2, - "is_new": 0, - "progress": "", - "both_follow": true - }], - "pn": 1, - "ps": 2, - "total": 25 - } -} -``` - -
- -### 查询用户关注的TAG(话题) - -> https://space.bilibili.com/ajax/tags/getSubList - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -如设置隐私查看自己的需要认证 - -带有转义 - -只显示前100个 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|-----|-----|---------|-----|-----| -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|----------------------|------------------------|-----------------------| -| ststus | bool | 返回值 | false:错误
true:正确 | -| data | 错误时:str
正确时:obj | 错误时:错误信息
正确时:数据本体 | 正确时不返回错误信息 | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-------|---------|-----| -| tags | array | 关注TAG列表 | | -| count | num | 关注TAG的数 | | - -`data`中的`tags`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|------------|------| -| 0 | obj | 关注TAG1 | | -| n | obj | 关注TAG(n+1) | | -| …… | obj | …… | …… | -| 99 | obj | 关注TAG100 | 最后一项 | - -`data`中的`tags`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|---------------------|--------| -| archive_count | num | 0 | 作用尚不明确 | -| cover | str | TAG图片url | 无则为空 | -| name | str | TAG名 | | -| notify | num | 1 | 作用尚不明确 | -| tag_id | num | tag_id | | -| updated_ts | str | 1970-01-01 08:00:00 | 作用尚不明确 | - -**示例:** - -查询用户`mid=2`的关注TAG - -```shell -curl -G 'https://space.bilibili.com/ajax/tags/getSubList' \ ---data-urlencode 'mid=2' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "status": true, - "data": { - "tags": [{ - "name": "豪宅", - "cover": "", - "tag_id": 47637, - "notify": 1, - "archive_count": 0, - "updated_ts": "1970-01-01 08:00:00" - }, { - "name": "死亡搁浅", - "cover": "", - "tag_id": 1737239, - "notify": 1, - "archive_count": 0, - "updated_ts": "1970-01-01 08:00:00" - }, - ………… - ], - "count": 58 - } -} -``` - -
diff --git a/user/status_number.md b/user/status_number.md deleted file mode 100644 index ec56fe3..0000000 --- a/user/status_number.md +++ /dev/null @@ -1,311 +0,0 @@ -# 用户状态数 - -- [关系状态数](#关系状态数) -- [UP主状态数](#UP主状态数) -- [~~订阅&投稿状态数(已弃用)~~](#~~订阅&投稿状态数(已弃用)~~) -- [相簿投稿数](#相簿投稿数) - ---- - -## 关系状态数 -> https://api.bilibili.com/x/relation/stat - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| vmid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ----------- | ----------------------------------------------- | -| mid | num | 目标用户mid | | -| following | num | 关注数 | | -| whisper | num | 悄悄关注数 | 需要登录(Cookie或APP)
未登录或非自己恒为0 | -| black | num | 黑名单数 | 需要登录(Cookie或APP)
未登录或非自己恒为0 | -| follower | num | 粉丝数 | | - -**示例:** - -查询用户`mid=332704117`的关系状态数 - -```shell -curl -G 'https://api.bilibili.com/x/relation/stat' \ ---data-urlencode 'vmid=332704117' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "mid": 332704117, - "following": 32, - "whisper": 0, - "black": 0, - "follower": 919515 - } -} -``` - -
- -## UP主状态数 - -> https://api.bilibili.com/x/space/upstat - -*请求方式:GET* - -认证方式:Cookie(SESSDATA)或APP - -注:该接口需要**任意用户**登录,否则**不会返回任何数据** - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | ---------- | ----- | -| archive | obj | 视频播放量 | | -| article | obj | 专栏阅读量 | | -| likes | num | 获赞次数 | | - -`data`中的`archive`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----- | ---------- | ----- | -| view | num | 视频播放量 | | - -`data`中的`article`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----- | ---------- | ----- | -| view | num | 专栏阅读量 | | - -**示例:** - -查询用户`mid=456664753`的UP主状态数 - -```shell -curl -G 'https://api.bilibili.com/x/space/upstat' \ ---data-urlencode 'mid=456664753' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "archive": { - "view": 213567370 - }, - "article": { - "view": 3230808 - }, - "likes": 20295095 - } -} -``` - -
- -## ~~订阅&投稿状态数(已弃用)~~ - -
-查看折叠内容 -> https://api.bilibili.com/x/space/navnum - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| mid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ---------- | ------------ | -| video | num | 投稿视频数 | | -| bangumi | num | 追番数 | 无视隐私设置 | -| cinema | num | 追剧数 | 无视隐私设置 | -| channel | obj | 频道数 | | -| favourite | obj | 收藏夹数 | 无视隐私设置 | -| tag | num | 关注TAG数 | 无视隐私设置 | -| article | num | 投稿专栏数 | | -| playlist | num | 0 | 作用尚不明确 | -| album | num | 投稿相簿数 | | -| audio | num | 投稿音频数 | | -| pugv | num | 投稿课程数 | | - -`data`中的`channel`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----- | ---------- | ------------ | -| master | num | 频道数 | | -| guest | num | 频道数 | | - -`data`中的`favourite`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ------------ | --------------------------------------- | -| master | num | 全部收藏夹数 | 需要登录(SESSDATA)
只能查看自己的 | -| guest | num | 公开收藏夹数 | 无视隐私设置 | - -**示例:** - -查询用户`mid=239202390`的订阅&投稿状态数 - -```shell -curl -G 'https://api.bilibili.com/x/space/navnum' \ ---data-urlencode 'mid=239202390' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "video": 290, - "bangumi": 25, - "cinema": 13, - "channel": { - "master": 2, - "guest": 2 - }, - "favourite": { - "master": 6, - "guest": 6 - }, - "tag": 0, - "article": 1, - "playlist": 0, - "album": 150, - "audio": 4, - "pugv": 0 - } -} -``` - -
-
- -## 相簿投稿数 - -> https://api.vc.bilibili.com/link_draw/v1/doc/upload_count - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ----------- | ------ | ---- | -| uid | num | 目标用户mid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------- | -| code | num | 返回值 | 0:成功 | -| msg | str | 错误信息 | 默认为success | -| message | str | 错误信息 | 默认为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ---------------------- | ------------------ | -| all_count | num | 相簿总数 | 总数为以下三者之和 | -| draw_count | num | 发布绘画数 | | -| photo_count | num | 发布摄影数 | | -| daily_count | num | 发布日常(图片动态)数 | | - -**示例:** - - 查询用户`mid=53456`的投稿相簿数 - -```shell -curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/upload_count' \ ---data-urlencode 'uid=53456' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "msg":"success", - "message":"success", - "data":{ - "all_count":92, - "draw_count":5, - "photo_count":0, - "daily_count":87 - } -} -``` - -
diff --git a/video/appeal.md b/video/appeal.md deleted file mode 100644 index f3b4e65..0000000 --- a/video/appeal.md +++ /dev/null @@ -1,306 +0,0 @@ -# 稿件投诉 - ---- - -- [附件上传](#附件上传) -- [获取投诉类型](#获取投诉类型) -- [投诉稿件](#投诉稿件) - ---- - -## 附件上传 - -> 附件上传与视频封面上传共用一个api。 - -## 获取投诉类型 - -> https://api.bilibili.com/x/web-interface/archive/appeal/tags - -*请求类型:GET* - -**json回复:** - -| 参数名 | 类型 | 内容 | 备注 | -| ------- | ------------- | ---- | ------- | -| code | num | | 成功为0 | -| message | str | | 成功为0 | -| ttl | num | 1 | | -| data | List\ | | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | ------------------ | -| 0 | obj | 类型条目 1 | | -| n | obj | 类型条目 (n+1) | 按照指定的顺序排列 | -| …… | obj | …… | …… | - -`data`数组中的对象 - -| 项 | 类型 | 内容 | 备注 | -| -------- | ------------------------------ | ---------------- | -------- | -| tid | num | 类型tid | | -| business | num | | 意义不明 | -| weight | num | 权重 | | -| round | num | | 意义不明 | -| state | num | | 意义不明 | -| name | str | 类型名称 | | -| remark | str | 类型备注 | | -| ctime | str | | 意义不明 | -| mtime | str | | 意义不明 | -| controls | 拥有时:object
没有时:null | 详细信息填写提示 | | - -`data`数组中的对象中的`controls`对象: - -| 项 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------------- | -------- | -| tid | num | 同上 | | -| bid | num | | 意义不明 | -| name | str | 提示名称 | | -| title | str | 提示标题 | | -| component | str | 需要填入的类型 | | -| placeholder | str | 文本框占位符 | | -| required | num | 是否为必填 | | - -**示例:** - -```bash -curl --location --request GET 'https://api.bilibili.com/x/web-interface/archive/appeal/tags' -``` - -
- 查看响应示例 -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [ - { - "tid": 1, - "business": 1, - "weight": 1, - "round": 2, - "state": 1, - "name": "有其他问题", - "remark": "为帮助审核人员更快处理,请补充问题类型和出现位置等详细信息", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 9, - "business": 1, - "weight": 30, - "round": 2, - "state": 1, - "name": "引战", - "remark": "为帮助审核人员更快处理, 请补充引战的话题和出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 10, - "business": 1, - "weight": 20, - "round": 2, - "state": 1, - "name": "不能参加充电", - "remark": "为帮助审核人员更快处理, 请补充问题类型和出现位置等详细信息", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-23T11:35:28+08:00", - "controls": null - }, - { - "tid": 52, - "business": 1, - "weight": 35, - "round": 2, - "state": 1, - "name": "转载/自制类型错误", - "remark": "为帮助审核人员更快处理, 请补充原创作品出处", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": [ - { - "tid": 52, - "bid": 1, - "name": "出处", - "title": "原创视频出处", - "component": "link", - "placeholder": "请填写链接", - "required": 1 - } - ] - }, - { - "tid": 2, - "business": 1, - "weight": 100, - "round": 1, - "state": 1, - "name": "违法违禁", - "remark": "为帮助审核人员更快处理,补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 3, - "business": 1, - "weight": 90, - "round": 1, - "state": 1, - "name": "色情", - "remark": "为帮助审核人员更快处理,补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 4, - "business": 1, - "weight": 80, - "round": 1, - "state": 1, - "name": "低俗", - "remark": "为帮助审核人员更快处理,补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 5, - "business": 1, - "weight": 70, - "round": 1, - "state": 1, - "name": "赌博诈骗", - "remark": "为帮助审核人员更快处理,补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 6, - "business": 1, - "weight": 60, - "round": 1, - "state": 1, - "name": "血腥暴力", - "remark": "为帮助审核人员更快处理,补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 7, - "business": 1, - "weight": 50, - "round": 1, - "state": 1, - "name": "人身攻击", - "remark": "为帮助审核人员更快处理,补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 8, - "business": 1, - "weight": 40, - "round": 1, - "state": 1, - "name": "与站内其他视频撞车", - "remark": "为帮助审核人员更快处理, 请描述撞车信息", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-23T00:30:04+08:00", - "controls": [ - { - "tid": 8, - "bid": 1, - "name": "撞车对象", - "title": "撞车对象", - "component": "input", - "placeholder": "BVID", - "required": 1 - } - ] - }, - { - "tid": 10000, - "business": 1, - "weight": 10, - "round": 1, - "state": 1, - "name": "青少年不良信息", - "remark": "为帮助审核人员更快处理, 请补充违规内容出现位置", - "ctime": "2018-08-13T15:41:20+08:00", - "mtime": "2018-08-13T15:41:20+08:00", - "controls": null - }, - { - "tid": 10013, - "business": 1, - "weight": 37, - "round": 1, - "state": 1, - "name": "不良封面/标题", - "remark": "为帮助审核人员更快处理, 请描述详细信息", - "ctime": "2019-04-17T19:18:09+08:00", - "mtime": "2019-04-17T20:42:25+08:00", - "controls": null - } - ] -} -``` -
- -## 投诉稿件 - -> https://api.bilibili.com/x/web-interface/archive/appeal - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -**正文参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ------------------------ | -| csrf | str | csrf token(位于cookie) | 必要 | 在url params中 | -| jsonp | str | jsonp | 必要? | 意义不明,位于url params | -| aid | num | 稿件aid | 必要 | 位于request body | -| tid | num | 投诉理由tid | 必要 | 位于request body | -| desc | str | 投诉理由详细描述 | 必要 | 位于request body | -| attach | str | 附件(多个附件用逗号隔开 | 非必要 | 位于request body | - -**json回复:** - -| 参数名 | 类型 | 内容 | 备注 | -| ------- | ---- | ------ | ------- | -| code | num | 返回码 | 成功为0 | -| message | str | | 成功为0 | -| ttl | | 1 | | - -**示例:举报av号为61080066的视频,理由为人身攻击,描述为“xxxxx”,并附带了一个图片附件 - -```bash -curl --location --request POST 'https://api.bilibili.com/x/web-interface/archive/appeal?jsonp=jsonp&csrf=xxxx' \ ---form 'aid="61080066"' \ ---form 'tid="7"' \ ---form 'desc="xxxxx"' \ ---form 'attach="https://archive.biliimg.com/bfs/archive/xxxxx.png"' -``` - -
- 查看响应示例 -```json -{ - "code":0, - "message":"0", - "ttl":1 -} -``` -
diff --git a/video/attribute_data.md b/video/attribute_data.md deleted file mode 100644 index 2fd1665..0000000 --- a/video/attribute_data.md +++ /dev/null @@ -1,71 +0,0 @@ -# 视频属性数据说明 - -(PS:以下部分内容来源不明,且部分值前端不可见,有待验证) - -- [attribute字段值(视频属性位)](#attribute字段值视频属性位) -- [state字段值(稿件状态)](#state字段值稿件状态) - -## attribute字段值(稿件属性位) - -该字段为二进制标志位,多个标志请用`OR`运算叠加 - -| 位 | 内容 | 备注 | -| ---- | ---------------------- | ------------------------------------------------------------ | -| 0 | 禁止排行 | | -| 1 | 动态禁止 | 禁止APP推送动态 | -| 2 | 禁止网页输出 | | -| 3 | 禁止客户端列表 | | -| 4 | 搜索禁止 | 打全标题或av/bv号都搜索不到的那种 | -| 5 | 海外禁止 | | -| 6 | 禁止推荐 | 禁止被APP端天马列表推荐 | -| 7 | 是否显示“禁止转载“标志 | **注:未经作者授权 禁止转载** | -| 8 | 是否高清 | 视频清晰度>=1080P | -| 9 | 是否PGC稿件 | 番剧&影视 | -| 10 | 允许承包 | | -| 11 | 是否番剧 | | -| 12 | 是否私单 | 存在商业推广恰饭内容 | -| 13 | 是否限制地区 | 大多数番剧&影视 | -| 14 | 禁止其他人添加TAG | | -| 15 | ? | 大多数旧视频会有这个标志 | -| 16 | 跳转 | 番剧及影视av/bv->ep跳转 | -| 17 | 是否影视 | | -| 18 | 是否付费 | | -| 19 | 推送动态 | | -| 20 | 家长模式 | | -| 21 | 是否限制游客和外链 | 分为两种情况,默认全部网页限制referer跳转,但第二种未登录无法访问,可以通过未登陆b站访问http://api.bilibili.com/x/web-interface/view 返回的code为-403来判断 | -| 22 | ? | | -| 23 | ? | | -| 24 | 是否为联合投稿 | | -| 25 | ? | | -| 26 | ? | | -| 27 | ? | | -| 28 | ? | | -| 29 | 是否为互动视频 | | - -## state字段值(稿件状态) - -| 值 | 内容 | 备注 | -| ---- | ------------ | ---------- | -| 1 | 橙色通过 | | -| 0 | 开放浏览 | | -| -1 | 待审 | | -| -2 | 被打回 | | -| -3 | 网警锁定 | | -| -4 | 被锁定 | 视频撞车了 | -| -5 | 管理员锁定 | | -| -6 | 修复待审 | | -| -7 | 暂缓审核 | | -| -8 | 补档待审 | | -| -9 | 等待转码 | | -| -10 | 延迟审核 | | -| -11 | 视频源待修 | | -| -12 | 转储失败 | | -| -13 | 允许评论待审 | | -| -14 | 临时回收站 | | -| -15 | 分发中 | | -| -16 | 转码失败 | | -| -20 | 创建未提交 | | -| -30 | 创建已提交 | | -| -40 | 定时发布 | | -| -100 | 用户删除 | | - diff --git a/video/info.md b/video/info.md deleted file mode 100644 index fdd4b17..0000000 --- a/video/info.md +++ /dev/null @@ -1,3373 +0,0 @@ -# 视频基本信息 - - - -- [获取视频详细信息(web端)](#获取视频详细信息web端) -- [获取视频超详细信息(web端)](#获取视频超详细信息web端) -- [获取视频简介](#获取视频简介) -- [查询视频分P列表 (avid/bvid转cid)](#查询视频分p列表-avidbvid转cid) - ---- - -## 获取视频详细信息(web端) - -> https://api.bilibili.com/x/web-interface/view - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -限制游客访问的视频需要登录 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|--------|--------|---------------| -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-403:权限不足
-404:无视频
62002:稿件不可见
62004:稿件审核中 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------------|---------|-----------------|----------------------------------------------------| -| bvid | str | 稿件bvid | | -| aid | num | 稿件avid | | -| videos | num | 稿件分P总数 | 默认为1 | -| tid | num | 分区tid | | -| tname | str | 子分区名称 | | -| copyright | num | 视频类型 | 1:原创
2:转载 | -| pic | str | 稿件封面图片url | | -| title | str | 稿件标题 | | -| pubdate | num | 稿件发布时间 | 秒级时间戳 | -| ctime | num | 用户投稿时间 | 秒级时间戳 | -| desc | str | 视频简介 | | -| desc_v2 | array | 新版视频简介 | | -| state | num | 视频状态 | 详情见[属性数据文档](attribute_data.md#attribute字段值(稿件属性位)) | -| ~~attribute~~(已经弃用) | ~~num~~ | ~~稿件属性位配置~~ | 详情见[属性数据文档](attribute_data.md#state字段值(稿件状态)) | -| duration | num | 稿件总时长(所有分P) | 单位为秒 | -| forward | num | 撞车视频跳转avid | 仅撞车视频存在此字段 | -| mission_id | num | 稿件参与的活动id | | -| redirect_url | str | 重定向url | 仅番剧或影视视频存在此字段
用于番剧&影视的av/bv->ep | -| rights | obj | 视频属性标志 | | -| owner | obj | 视频UP主信息 | | -| stat | obj | 视频状态数 | | -| dynamic | str | 视频同步发布的的动态的文字内容 | | -| cid | num | 视频1P cid | | -| dimension | obj | 视频1P分辨率 | | -| premiere | | null | | -| teenage_mode | num | | | -| is_chargeable_season | bool | | | -| is_story | bool | | | -| no_cache | bool | | 作用尚不明确 | -| pages | array | 视频分P列表 | | -| subtitle | obj | 视频CC字幕信息 | | -| staff | array | 合作成员列表 | 非合作视频无此项 | -| is_season_display | bool | | | -| user_garb | obj | 用户装扮信息 | | -| honor_reply | obj | | | -| like_icon | str | | | - -`data`中的`desc_v2`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|--------|-----| -| 0 | obj | 新版简介内容 | | - -`desc_v2`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-----|------|-----| -| raw_text | str | 简介内容 |type=1时显示原文
type=2时显示'@'+raw_text+' '并链接至biz_id的主页| -| type | num | 类型 |1:普通,2:@他人| -| biz_id | num |被@用户的mid|=0,当type=1| - -`data`中的`rights`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------------|-----|--------------|--------| -| bp | num | 是否允许承包 | | -| elec | num | 是否支持充电 | | -| download | num | 是否允许下载 | | -| movie | num | 是否电影 | | -| pay | num | 是否PGC付费 | | -| hd5 | num | 是否有高码率 | | -| no_reprint | num | 是否显示“禁止转载”标志 | | -| autoplay | num | 是否自动播放 | | -| ugc_pay | num | 是否UGC付费 | | -| is_cooperation | num | 是否为联合投稿 | | -| ugc_pay_preview | num | 0 | 作用尚不明确 | -| no_background | num | 0 | 作用尚不明确 | -| clean_mode | num | 0 | 作用尚不明确 | -| is_stein_gate | num | 是否为互动视频 | | -| is_360 | num | 是否为全景视频 | | -| no_share | num | 0 | 作用尚不明确 | -| arc_pay | num | 0 | 作用尚不明确 | -| free_watch | num | 0 | 作用尚不明确 | - -`data`中的`owner`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|--------|-----| -| mid | num | UP主mid | | -| name | str | UP主昵称 | | -| face | str | UP主头像 | | - -`data`中的`stat`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|-----------|-------| -| aid | num | 稿件avid | | -| view | num | 播放数 | | -| danmaku | num | 弹幕数 | | -| reply | num | 评论数 | | -| favorite | num | 收藏数 | | -| coin | num | 投币数 | | -| share | num | 分享数 | | -| now_rank | num | 当前排名 | | -| his_rank | num | 历史最高排行 | | -| like | num | 获赞数 | | -| dislike | num | 点踩数 | 恒为`0` | -| evaluation | str | 视频评分 | | -| argue_msg | str | 警告/争议提示信息 | | - -`data`中的`pages`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|----------|---------| -| 0 | obj | 1P内容 | 无分P仅有此项 | -| n | obj | (n+1)P内容 | | -| …… | obj | …… | …… | - -`pages`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------|-----|-----------|---------------------------------------------| -| cid | num | 分P cid | | -| page | num | 分P序号 | 从1开始 | -| from | str | 视频来源 | vupload:普通上传(B站)
hunan:芒果TV
qq:腾讯 | -| part | str | 分P标题 | | -| duration | num | 分P持续时间 | 单位为秒 | -| vid | str | 站外视频vid | 仅站外视频有效 | -| weblink | str | 站外视频跳转url | 仅站外视频有效 | -| dimension | obj | 当前分P分辨率 | 部分较老视频无分辨率值 | - -`pages`数组中的对象中的`dimension`对象(同`data`中的`dimension`对象): - -| 字段 | 类型 | 内容 | 备注 | -|--------|-----|---------|----------------| -| width | num | 当前分P 宽度 | | -| height | num | 当前分P 高度 | | -| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | - -`subtitle`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|-------|----------|-----| -| allow_submit | bool | 是否允许提交字幕 | | -| list | array | 字幕列表 | | - -`subtitle`对象中的`list`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|---------|-----| -| 0 | obj | 字幕1 | | -| n | obj | 字幕(n+1) | | -| …… | obj | …… | …… | - -`list`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------------|------|---------------|-----| -| id | num | 字幕id | | -| lan | str | 字幕语言 | | -| lan_doc | str | 字幕语言名称 | | -| is_lock | bool | 是否锁定 | | -| author_mid | num | 字幕上传者mid | | -| subtitle_url | str | json格式字幕文件url | | -| author | obj | 字幕上传者信息 | | - -`list`数组中的对象中的`author`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----------------|-----|------------|--------| -| mid | num | 字幕上传者mid | | -| name | str | 字幕上传者昵称 | | -| sex | str | 字幕上传者性别 | 男 女 保密 | -| face | str | 字幕上传者头像url | | -| sign | str | 字幕上传者签名 | | -| rank | num | 10000 | 作用尚不明确 | -| birthday | num | 0 | 作用尚不明确 | -| is_fake_account | num | 0 | 作用尚不明确 | -| is_deleted | num | 0 | 作用尚不明确 | - -`staff`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 合作成员1 | | -| n | obj | 合作成员(n+1) | | -| …… | obj | …… | …… | - -`staff`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------|-----|---------|-----| -| mid | num | 成员mid | | -| title | str | 成员名称 | | -| name | str | 成员昵称 | | -| face | str | 成员头像url | | -| vip | obj | 成员大会员状态 | | -| official | obj | 成员认证信息 | | -| follower | num | 成员粉丝数 | | -| label_style | num | | | - -`staff`数组中的对象中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-----|--------|---------------------------| -| type | num | 成员会员类型 | 0:无
1:月会员
2:年会员 | -| status | num | 会员状态 | 0:无
1:有 | -| theme_type | num | 0 | | - -`staff`数组中的对象中的`official`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|--------|---------------------------------------| -| role | num | 成员认证级别 | 0:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 成员认证名 | 无为空 | -| desc | str | 成员认证备注 | 无为空 | -| type | num | 成员认证类型 | -1:无
0:有 | - -`data`中的`user_garb`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------------|-----|-------|-----| -| url_image_ani_cut | str | 某url? | | - -`data`中的`honor_reply`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-------|-----|-----| -| honor | array | | | - -`honor`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|----------------------|-----|-------------------------------------|-----| -| aid | num | 当前稿件aid | | -| type | num | 1:入站必刷收录
2:第?期每周必看
3:全站排行榜最高第?名
4:热门 | | -| desc | num | 描述 | | -| weekly_recommend_num | num | | | - -**示例:** - -获取视频`av85440373`/`BV117411r7R1`的基本信息 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/view' \ ---data-urlencode 'aid=85440373' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/view' \ ---data-urlencode 'bvid=BV117411r7R1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "bvid": "BV117411r7R1", - "aid": 85440373, - "videos": 1, - "tid": 28, - "tname": "原创音乐", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/ea0dd34bf41e23a68175680a00e3358cd249105f.jpg", - "title": "当我给拜年祭的快板加了电音配乐…", - "pubdate": 1580377255, - "ctime": 1580212263, - "desc": "【CB想说的】看完拜年祭之后最爱的一个节目!给有快板的部分简单加了一些不同风格的配乐hhh,感谢沃玛画的我!太可爱了哈哈哈哈哈哈哈!!!\n【Warma想说的】我画了打碟的CB,画风为了还原原版视频所以参考了四迹老师的画风,四迹老师的画真的太可爱啦!不过其实在画的过程中我遇到了一个问题,CB的耳机……到底是戴在哪个耳朵上呢?\n\n原版:av78977080\n编曲(配乐):Crazy Bucket\n人声(配音):Warma/谢拉\n曲绘:四迹/Warma\n动画:四迹/Crazy Bucket\n剧本:Mokurei-木灵君\n音频后期:DMYoung/纳兰寻风/Crazy Bucket\n包装:破晓天", - "desc_v2": [ - { - "raw_text": "【CB想说的】看完拜年祭之后最爱的一个节目!给有快板的部分简单加了一些不同风格的配乐hhh,感谢沃玛画的我!太可爱了哈哈哈哈哈哈哈!!!\n【Warma想说的】我画了打碟的CB,画风为了还原原版视频所以参考了四迹老师的画风,四迹老师的画真的太可爱啦!不过其实在画的过程中我遇到了一个问题,CB的耳机……到底是戴在哪个耳朵上呢?\n\n原版:av78977080\n编曲(配乐):Crazy Bucket\n人声(配音):Warma/谢拉\n曲绘:四迹/Warma\n动画:四迹/Crazy Bucket\n剧本:Mokurei-木灵君\n音频后期:DMYoung/纳兰寻风/Crazy Bucket\n包装:破晓天", - "type": 1, - "biz_id": 0 - } - ], - "state": 0, - "duration": 486, - "mission_id": 11838, - "rights": { - "bp": 0, - "elec": 0, - "download": 1, - "movie": 0, - "pay": 0, - "hd5": 1, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 1, - "ugc_pay_preview": 0, - "no_background": 0, - "clean_mode": 0, - "is_stein_gate": 0, - "is_360": 0, - "no_share": 0, - "arc_pay": 0, - "free_watch": 0 - }, - "owner": { - "mid": 66606350, - "name": "Crazy_Bucket_陈楒潼", - "face": "http://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg" - }, - "stat": { - "aid": 85440373, - "view": 2270927, - "danmaku": 11839, - "reply": 2619, - "favorite": 58725, - "coin": 71048, - "share": 9398, - "now_rank": 0, - "his_rank": 55, - "like": 155954, - "dislike": 0, - "evaluation": "", - "argue_msg": "" - }, - "dynamic": "进来就出不去了!!!\n#全民音乐UP主##CB##warma##电音##快板##拜年祭##诸神的奥运##编曲##Remix#", - "cid": 146044693, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "premiere": null, - "teenage_mode": 0, - "is_chargeable_season": false, - "is_story": false, - "no_cache": false, - "pages": [ - { - "cid": 146044693, - "page": 1, - "from": "vupload", - "part": "建议改成:建议改成:诸 神 的 电 音 节(不是)", - "duration": 486, - "vid": "", - "weblink": "", - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - } - } - ], - "subtitle": { - "allow_submit": false, - "list": [] - }, - "staff": [ - { - "mid": 66606350, - "title": "UP主", - "name": "Crazy_Bucket_陈楒潼", - "face": "http://i2.hdslb.com/bfs/face/c9af3b32cf74baec5a4b65af8ca18ae5ff571f77.jpg", - "vip": { - "type": 2, - "status": 1, - "due_date": 1674403200000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/8d4f8bfc713826a5412a0a27eaaac4d6b9ede1d9.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "", - "tv_vip_status": 0, - "tv_vip_pay_type": 0 - }, - "official": { - "role": 1, - "title": "bilibili 知名音乐UP主", - "desc": "", - "type": 0 - }, - "follower": 646111, - "label_style": 0 - }, - { - "mid": 53456, - "title": "曲绘", - "name": "Warma", - "face": "http://i2.hdslb.com/bfs/face/c1bbee6d255f1e7fc434e9930f0f288c8b24293a.jpg", - "vip": { - "type": 2, - "status": 1, - "due_date": 1706198400000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "年度大会员", - "label_theme": "annual_vip", - "text_color": "#FFFFFF", - "bg_style": 1, - "bg_color": "#FB7299", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/8d4f8bfc713826a5412a0a27eaaac4d6b9ede1d9.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/VEW8fCC0hg.png" - }, - "avatar_subscript": 1, - "nickname_color": "#FB7299", - "role": 3, - "avatar_subscript_url": "", - "tv_vip_status": 0, - "tv_vip_pay_type": 0 - }, - "official": { - "role": 1, - "title": "bilibili 知名UP主", - "desc": "", - "type": 0 - }, - "follower": 3670591, - "label_style": 0 - } - ], - "is_season_display": false, - "user_garb": { - "url_image_ani_cut": "" - }, - "honor_reply": { - "honor": [ - { - "aid": 85440373, - "type": 2, - "desc": "第45期每周必看", - "weekly_recommend_num": 45 - }, - { - "aid": 85440373, - "type": 3, - "desc": "全站排行榜最高第55名", - "weekly_recommend_num": 0 - }, - { - "aid": 85440373, - "type": 4, - "desc": "热门", - "weekly_recommend_num": 0 - } - ] - }, - "like_icon": "" - } -} -``` - -
- -视频标题为:`当我给拜年祭的快板加了电音配乐…` - -视频分区为:`tid=28(音乐->原创音乐)` - -视频时长:`486s` - -视频发布时间:`2020/1/30 17:40:55` - -视频投稿时间:`2020/1/28 19:51:3` - -视频分P为:`1` - -视频类型为:`1(原创)` - -视频UP主为:`66606350(Crazy_Bucket_陈楒潼)` - -视频简介为: - -`【CB想说的】看完拜年祭之后最爱的一个节目!给有快板的部分简单加了一些不同风格的配乐hhh,感谢沃玛画的我!太可爱了哈哈哈哈哈哈哈!!!\n【Warma想说的】我画了打碟的CB,画风为了还原原版视频所以参考了四迹老师的画风,四迹老师的画真的太可爱啦!不过其实在画的过程中我遇到了一个问题,CB的耳机……到底是戴在哪个耳朵上呢?\n\n原版:av78977080\n编曲(配乐):Crazy Bucket\n人声(配音):Warma/谢拉\n曲绘:四迹/Warma\n动画:四迹/Crazy Bucket\n剧本:Mokurei-木灵君\n音频后期:DMYoung/纳兰寻风/Crazy Bucket\n包装:破晓天` - -视频状态为:`0(开放浏览)` - -视频属性为: `显示“禁止转载“标志`、`高清`、`禁止其他人添加TAG`、`联合投稿视频` - -视频封面为: - -https://i1.hdslb.com/bfs/archive/ea0dd34bf41e23a68175680a00e3358cd249105f.jpg - -![](https://i1.hdslb.com/bfs/archive/ea0dd34bf41e23a68175680a00e3358cd249105f.jpg) - -## 获取视频超详细信息(web端) - -> https://api.bilibili.com/x/web-interface/view/detail - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -限制游客访问的视频需要登录 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|--------|--------|---------------| -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-403:权限不足
-404:无视频
62002:稿件不可见
62004:稿件审核中 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------|-------|---------|--------| -| View | obj | 视频基本信息 | | -| Card | obj | 视频UP主信息 | | -| Tags | array | 视频TAG信息 | | -| Reply | obj | 视频热评信息 | | -| Related | array | 推荐视频信息 | | -| Spec | null | ? | 作用尚不明确 | -| hot_share | obj | ? | 作用尚不明确 | -| elec | null | ? | 作用尚不明确 | -| recommend | null | ? | 作用尚不明确 | -| view_addit | obj | ? | 作用尚不明确 | - -`data`中的`View`对象: - -基本同「[获取视频详细信息(web端)](#获取视频详细信息(web端))」中的data对象 - -`data`中的`Card`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|------|---------|-----------------------------------------------------------| -| card | obj | UP主名片信息 | | -| space | obj | 主页头图 | | -| following | bool | 是否关注此用户 | true:已关注
false:未关注
需要登录(Cookie)
未登录为false | -| archive_count | num | 用户稿件数 | | -| article_count | num | 用户专栏数 | | -| follower | num | 粉丝数 | | -| like_num | num | UP主获赞次数 | | - -`Card`中的`card`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------------------|-------|------------|-----------------------------| -| mid | str | 用户mid | | -| name | str | 用户昵称 | | -| approve | bool | false | 作用尚不明确 | -| sex | str | 用户性别 | 男 女 保密 | -| rank | str | 10000 | 作用尚不明确 | -| face | str | 用户头像链接 | | -| face_nft | num | 是否为 nft 头像 | `0`不是nft头像
`1`是 nft 头像 | -| DisplayRank | str | 0 | 作用尚不明确 | -| regtime | num | 0 | 作用尚不明确 | -| spacesta | num | 0 | 作用尚不明确 | -| birthday | str | 空 | 作用尚不明确 | -| place | str | 空 | 作用尚不明确 | -| description | str | 空 | 作用尚不明确 | -| article | num | 0 | 作用尚不明确 | -| attentions | array | 空 | 作用尚不明确 | -| fans | num | 粉丝数 | | -| friend | num | 关注数 | | -| attention | num | 关注数 | | -| sign | str | 签名 | | -| level_info | obj | 等级 | | -| pendant | obj | 挂件 | | -| nameplate | obj | 勋章 | | -| Official | obj | 认证信息 | | -| official_verify | obj | 认证信息2 | | -| vip | obj | 大会员状态 | | -| is_senior_member | num | 是否为硬核会员 | 0:否
1:是 | - -`card`中的`level_info`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|------|--------| -| current_level | num | 当前等级 | 0-6级 | -| current_min | num | 0 | 作用尚不明确 | -| current_exp | num | 0 | 作用尚不明确 | -| next_exp | num | 0 | 作用尚不明确 | - -`card`中的`pendant`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|-----|---------|--------| -| pid | num | 挂件id | | -| name | str | 挂件名称 | | -| image | str | 挂件图片url | | -| expire | num | 0 | 作用尚不明确 | - -`card`中的`nameplate`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|------------|----------| -| nid | num | 勋章id | 详细说明有待补充 | -| name | str | 勋章名称 | | -| image | str | 挂件图片url 正常 | | -| image_small | str | 勋章图片url 小 | | -| level | str | 勋章等级 | | -| condition | str | 勋章条件 | | - -`card`中的`Official`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|------|---------------------------------------| -| role | num | 认证类型 | 0:无
1 2 7:个人认证
3 4 5 6:机构认证 | -| title | str | 认证信息 | 无为空 | -| desc | str | 认证备注 | 无为空 | -| type | num | 是否认证 | -1:无
0:认证 | - -`card`中的`official_verify`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-----|------|----------------| -| type | num | 是否认证 | -1:无
0:认证 | -| desc | str | 认证信息 | 无为空 | - -`card`中的`vip`对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------------|-----|-------|----------------------------------| -| vipType | num | 大会员类型 | 0:无
1:月度大会员
2:年度及以上大会员 | -| dueRemark | str | 空 | 作用尚不明确 | -| accessStatus | num | 0 | 作用尚不明确 | -| vipStatus | num | 大会员状态 | 0:无
1:有 | -| vipStatusWarn | str | 空 | 作用尚不明确 | -| theme_type | num | 0 | 作用尚不明确 | - -`Card`中的`space`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------|-----|------------|-----| -| s_img | str | 主页头图url 小图 | | -| l_img | str | 主页头图url 正常 | | - -`data`中的`Tags`数组: - -基本同「[获取视频TAG信息](tags.md#获取视频TAG信息)」中的data数组 - -`data`中的`Reply`对象: - -基本同「[获取评论区热评](../comment/list.md#获取评论区热评)」中的data对象 - -`data`中的`Related`数组: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|-----------|-----| -| 0 | obj | 推荐视频1 | | -| n | obj | 推荐视频(n+1) | | -| …… | obj | …… | …… | - -`Related`数组中的对象: - -基本同「[获取视频详细信息(web端)](#获取视频详细信息(web端))」中的data对象 - -`data`中的`hot_share`对象: - -| 字段 | 类型 | 内容 | 备注 | -|------|-------|-------|--------| -| show | bool | false | 作用尚不明确 | -| list | array | 空 | 作用尚不明确 | - -`data`中的`view_addit`对象: - -| 字段 | 类型 | 内容 | 备注 | -|-----|------|-------|--------| -| 63 | bool | false | 作用尚不明确 | -| 64 | bool | false | 作用尚不明确 | - -**示例:** - -获取视频`av170001`/`BV17x411w7KC`的详细信息 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/view/detail' \ ---data-urlencode 'aid=170001' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/view/detail' \ ---data-urlencode 'bvid=BV17x411w7KC' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "View": { - "bvid": "BV17x411w7KC", - "aid": 170001, - "videos": 10, - "tid": 193, - "tname": "MV", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/1ada8c32a9d168e4b2ee3e010f24789ba3353785.jpg", - "title": "【MV】保加利亚妖王AZIS视频合辑", - "pubdate": 1320850533, - "ctime": 1497380562, - "desc": "sina 保加利亚超级天王 Azis1999年出道。他的音乐融合保加利亚名族曲风chalga和pop、rap等元素,不过他惊艳的易装秀与浮夸的角色诠释才是他最为出名的地方 Azis与众多保加利亚天王天后级歌手都有过合作.06年,他作为Mariana Popova的伴唱,在欧洲半决赛上演唱了他们的参赛曲Let Me Cry 06年他被Velikite Balgari评为保加利亚有史以来最伟大的名人之一", - "desc_v2": [ - { - "raw_text": "sina 保加利亚超级天王 Azis1999年出道。他的音乐融合保加利亚名族曲风chalga和pop、rap等元素,不过他惊艳的易装秀与浮夸的角色诠释才是他最为出名的地方 Azis与众多保加利亚天王天后级歌手都有过合作.06年,他作为Mariana Popova的伴唱,在欧洲半决赛上演唱了他们的参赛曲Let Me Cry 06年他被Velikite Balgari评为保加利亚有史以来最伟大的名人之一", - "type": 1, - "biz_id": 0 - } - ], - "state": 0, - "duration": 2412, - "rights": { - "bp": 0, - "elec": 0, - "download": 1, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "clean_mode": 0, - "is_stein_gate": 0, - "is_360": 0, - "no_share": 0, - "arc_pay": 0, - "free_watch": 0 - }, - "owner": { - "mid": 122541, - "name": "冰封.虾子", - "face": "http://i0.hdslb.com/bfs/face/40c46ee74dd6ea33d46c38cd6083e6a1286aa482.gif" - }, - "stat": { - "aid": 170001, - "view": 42987414, - "danmaku": 908915, - "reply": 176677, - "favorite": 892097, - "coin": 276446, - "share": 619090, - "now_rank": 0, - "his_rank": 13, - "like": 861939, - "dislike": 0, - "evaluation": "", - "argue_msg": "" - }, - "dynamic": "", - "cid": 279786, - "dimension": { - "width": 512, - "height": 288, - "rotate": 0 - }, - "premiere": null, - "teenage_mode": 0, - "is_chargeable_season": false, - "is_story": false, - "no_cache": false, - "pages": [ - { - "cid": 279786, - "page": 1, - "from": "vupload", - "part": "Хоп", - "duration": 199, - "vid": "", - "weblink": "", - "dimension": { - "width": 512, - "height": 288, - "rotate": 0 - } - }, - { - "cid": 275431, - "page": 2, - "from": "vupload", - "part": "Imash li surce", - "duration": 205, - "vid": "", - "weblink": "", - "dimension": { - "width": 640, - "height": 360, - "rotate": 0 - } - }, - { - "cid": 279787, - "page": 3, - "from": "vupload", - "part": "No Kazvam Ti Stiga", - "duration": 308, - "vid": "", - "weblink": "", - "dimension": { - "width": 432, - "height": 324, - "rotate": 0 - } - }, - { - "cid": 280467, - "page": 4, - "from": "vupload", - "part": "Samo za teb", - "duration": 273, - "vid": "", - "weblink": "", - "dimension": { - "width": 360, - "height": 288, - "rotate": 0 - } - }, - { - "cid": 280468, - "page": 5, - "from": "vupload", - "part": "Tochno sega", - "duration": 241, - "vid": "", - "weblink": "", - "dimension": { - "width": 584, - "height": 360, - "rotate": 0 - } - }, - { - "cid": 280469, - "page": 6, - "from": "vupload", - "part": "Kak boli", - "duration": 336, - "vid": "", - "weblink": "", - "dimension": { - "width": 384, - "height": 288, - "rotate": 0 - } - }, - { - "cid": 274491, - "page": 7, - "from": "vupload", - "part": "Obicham Te", - "duration": 250, - "vid": "", - "weblink": "", - "dimension": { - "width": 402, - "height": 208, - "rotate": 0 - } - }, - { - "cid": 267410, - "page": 8, - "from": "vupload", - "part": "Mrazish", - "duration": 201, - "vid": "", - "weblink": "", - "dimension": { - "width": 540, - "height": 360, - "rotate": 0 - } - }, - { - "cid": 267714, - "page": 9, - "from": "vupload", - "part": "Няма накъде", - "duration": 201, - "vid": "", - "weblink": "", - "dimension": { - "width": 450, - "height": 360, - "rotate": 0 - } - }, - { - "cid": 270380, - "page": 10, - "from": "vupload", - "part": "Gadna poroda", - "duration": 198, - "vid": "", - "weblink": "", - "dimension": { - "width": 432, - "height": 324, - "rotate": 0 - } - } - ], - "subtitle": { - "allow_submit": false, - "list": [] - }, - "is_season_display": false, - "user_garb": { - "url_image_ani_cut": "" - }, - "honor_reply": { - "honor": [ - { - "aid": 170001, - "type": 3, - "desc": "全站排行榜最高第13名", - "weekly_recommend_num": 0 - } - ] - }, - "like_icon": "" - }, - "Card": { - "card": { - "mid": "122541", - "name": "冰封.虾子", - "approve": false, - "sex": "保密", - "rank": "10000", - "face": "http://i0.hdslb.com/bfs/face/40c46ee74dd6ea33d46c38cd6083e6a1286aa482.gif", - "face_nft": 0, - "face_nft_type": 0, - "DisplayRank": "0", - "regtime": 0, - "spacesta": 0, - "birthday": "", - "place": "", - "description": "", - "article": 0, - "attentions": [], - "fans": 66620, - "friend": 35, - "attention": 35, - "sign": "路亚钓鱼爱好者交流群411267154", - "level_info": { - "current_level": 6, - "current_min": 0, - "current_exp": 0, - "next_exp": 0 - }, - "pendant": { - "pid": 0, - "name": "", - "image": "", - "expire": 0, - "image_enhance": "", - "image_enhance_frame": "" - }, - "nameplate": { - "nid": 9, - "name": "出道偶像", - "image": "http://i1.hdslb.com/bfs/face/3f2d64f048b39fb6c26f3db39df47e6080ec0f9c.png", - "image_small": "http://i2.hdslb.com/bfs/face/90c35d41d8a19b19474d6bac672394c17b444ce8.png", - "level": "高级勋章", - "condition": "所有自制视频总播放数>=50万" - }, - "Official": { - "role": 0, - "title": "", - "desc": "", - "type": -1 - }, - "official_verify": { - "type": -1, - "desc": "" - }, - "vip": { - "type": 1, - "status": 0, - "due_date": 1493827200000, - "vip_pay_type": 0, - "theme_type": 0, - "label": { - "path": "", - "text": "", - "label_theme": "", - "text_color": "", - "bg_style": 0, - "bg_color": "", - "border_color": "", - "use_img_label": true, - "img_label_uri_hans": "", - "img_label_uri_hant": "", - "img_label_uri_hans_static": "https://i0.hdslb.com/bfs/vip/d7b702ef65a976b20ed854cbd04cb9e27341bb79.png", - "img_label_uri_hant_static": "https://i0.hdslb.com/bfs/activity-plat/static/20220614/e369244d0b14644f5e1a06431e22a4d5/KJunwh19T5.png" - }, - "avatar_subscript": 0, - "nickname_color": "", - "role": 0, - "avatar_subscript_url": "", - "tv_vip_status": 0, - "tv_vip_pay_type": 0, - "vipType": 1, - "vipStatus": 0 - }, - "is_senior_member": 0 - }, - "space": { - "s_img": "http://i1.hdslb.com/bfs/space/768cc4fd97618cf589d23c2711a1d1a729f42235.png", - "l_img": "http://i1.hdslb.com/bfs/space/cb1c3ef50e22b6096fde67febe863494caefebad.png" - }, - "following": false, - "archive_count": 387, - "article_count": 0, - "follower": 66620, - "like_num": 964504 - }, - "Tags": [ - { - "tag_id": 117552, - "tag_name": "保加利亚妖王", - "cover": "http://i0.hdslb.com/bfs/tag/6828dc0fe5037e1c483d55704f529135d961cb2b.jpg", - "head_cover": "", - "content": "  保加利亚超级天王 Azis\r\n  Azis生于1978年3月7日,1999年正式出道。他的音乐融合保加利亚名族曲风chalga和pop、rap等元素,不过他惊艳的易装秀与浮夸的角色诠释才是他最为出名的地方。", - "short_content": "", - "type": 3, - "state": 0, - "ctime": 1436866637, - "count": { - "view": 0, - "use": 9033, - "atten": 5573 - }, - "is_atten": 0, - "likes": 1161, - "hates": 0, - "attribute": 1, - "liked": 0, - "hated": 0, - "extra_attr": 0, - "music_id": "", - "tag_type": "old_channel", - "is_activity": false, - "color": "", - "alpha": 0, - "is_season": false, - "subscribed_count": 5573, - "archive_count": "-", - "featured_count": 0, - "jump_url": "" - }, - { - "tag_id": 112503, - "tag_name": "保加利亚", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 0, - "state": 0, - "ctime": 1436866637, - "count": { - "view": 0, - "use": 5350, - "atten": 161 - }, - "is_atten": 0, - "likes": 645, - "hates": 0, - "attribute": 1, - "liked": 0, - "hated": 0, - "extra_attr": 0, - "music_id": "", - "tag_type": "old_channel", - "is_activity": false, - "color": "", - "alpha": 0, - "is_season": false, - "subscribed_count": 161, - "archive_count": "-", - "featured_count": 0, - "jump_url": "" - }, - { - "tag_id": 2958988, - "tag_name": "Азис", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 1, - "state": 0, - "ctime": 1482071386, - "count": { - "view": 0, - "use": 35, - "atten": 59 - }, - "is_atten": 0, - "likes": 485, - "hates": 0, - "attribute": 1, - "liked": 0, - "hated": 0, - "extra_attr": 0, - "music_id": "", - "tag_type": "old_channel", - "is_activity": false, - "color": "", - "alpha": 0, - "is_season": false, - "subscribed_count": 59, - "archive_count": "-", - "featured_count": 0, - "jump_url": "" - }, - { - "tag_id": 2622213, - "tag_name": "azis", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 0, - "state": 0, - "ctime": 1473763704, - "count": { - "view": 0, - "use": 274, - "atten": 86 - }, - "is_atten": 0, - "likes": 420, - "hates": 0, - "attribute": 1, - "liked": 0, - "hated": 0, - "extra_attr": 0, - "music_id": "", - "tag_type": "old_channel", - "is_activity": false, - "color": "", - "alpha": 0, - "is_season": false, - "subscribed_count": 86, - "archive_count": "-", - "featured_count": 0, - "jump_url": "" - }, - { - "tag_id": 2512079, - "tag_name": "mv", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 0, - "state": 0, - "ctime": 1471434073, - "count": { - "view": 0, - "use": 73766, - "atten": 282 - }, - "is_atten": 0, - "likes": 384, - "hates": 0, - "attribute": 1, - "liked": 0, - "hated": 0, - "extra_attr": 0, - "music_id": "", - "tag_type": "old_channel", - "is_activity": false, - "color": "", - "alpha": 0, - "is_season": false, - "subscribed_count": 282, - "archive_count": "-", - "featured_count": 0, - "jump_url": "" - } - ], - "Reply": { - "page": { - "acount": 176677, - "count": 148385, - "num": 1, - "size": 3 - }, - "replies": [ - { - "rpid": 2509627306, - "oid": 170001, - "type": 1, - "mid": 7827964, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 148, - "rcount": 105, - "floor": 78866, - "state": 0, - "fansgrade": 0, - "attr": 1024, - "ctime": 1583941947, - "like": 8120, - "action": 0, - "content": { - "message": "刻在dna里的av号", - "plat": 0, - "device": "" - }, - "replies": null, - "assist": 0, - "show_follow": false - }, - { - "rpid": 1057984105, - "oid": 170001, - "type": 1, - "mid": 241215549, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 51, - "rcount": 43, - "floor": 62770, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1536388260, - "like": 11437, - "action": 0, - "content": { - "message": "这首歌的mv讲的是在未来的2050年,世界水资源缺乏,洗个澡都要缴纳大量的金钱并且还有预约,但有几个男人有幸掌握了部分水资源,为了节约水资源,他们洗澡的时候都在一起洗,哪怕这会让自己难堪,于是其中的妖王突然灵光一现创造出了这首《hop》来警示后人。", - "plat": 0, - "device": "" - }, - "replies": null, - "assist": 0, - "show_follow": false - }, - { - "rpid": 29939707, - "oid": 170001, - "type": 1, - "mid": 2923193, - "root": 0, - "parent": 0, - "dialog": 0, - "count": 41, - "rcount": 33, - "floor": 3125, - "state": 0, - "fansgrade": 0, - "attr": 0, - "ctime": 1430309717, - "like": 7924, - "action": 0, - "content": { - "message": "感觉好棒……女人都演绎不出来的那种妩媚……azis这种不分性别的妩媚真称得上艺术了虽然一般人接受起来很难", - "plat": 0, - "device": "" - }, - "replies": null, - "assist": 0, - "show_follow": false - } - ] - }, - "Related": [ - { - "aid": 34812433, - "videos": 1, - "tid": 130, - "tname": "音乐综合", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/149aed759c1231948c468c412f67c634e05a4974.jpg", - "title": "怎么办,妖王开始男人了", - "pubdate": 1540723612, - "ctime": 1540723612, - "desc": "QQ音乐", - "state": 0, - "duration": 303, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 229574099, - "name": "清尘埃落定", - "face": "http://i2.hdslb.com/bfs/face/4b34377580cf12eabe6bc568967dfe22f981c042.jpg" - }, - "stat": { - "aid": 34812433, - "view": 1053726, - "danmaku": 501, - "reply": 497, - "favorite": 4591, - "coin": 273, - "share": 732, - "now_rank": 0, - "his_rank": 0, - "like": 23321, - "dislike": 0 - }, - "dynamic": "#音乐选集##保加利亚#", - "cid": 60984624, - "dimension": { - "width": 640, - "height": 360, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1Qb411N7Ez", - "short_link_v2": "https://b23.tv/BV1Qb411N7Ez", - "up_from_v2": 8, - "bvid": "BV1Qb411N7Ez", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 543744396, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 2, - "pic": "http://i0.hdslb.com/bfs/archive/36f77d7478c18c95f50b9d9c22ba86fb58d0b760.jpg", - "title": "当van听到了hop会发生什么?", - "pubdate": 1610800809, - "ctime": 1610800809, - "desc": "vanbilibili直播间\nvan一边看mv一边把歌听完的……说这mv太奇怪猎奇了", - "state": 0, - "duration": 231, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 390902077, - "name": "花街----", - "face": "http://i1.hdslb.com/bfs/face/54221846311730ce79129ba3c1f3580c7f072182.jpg" - }, - "stat": { - "aid": 543744396, - "view": 483187, - "danmaku": 336, - "reply": 466, - "favorite": 4281, - "coin": 289, - "share": 3316, - "now_rank": 0, - "his_rank": 0, - "like": 14116, - "dislike": 0 - }, - "dynamic": "", - "cid": 283284930, - "dimension": { - "width": 720, - "height": 1520, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1wv4y1f7wX", - "short_link_v2": "https://b23.tv/BV1wv4y1f7wX", - "bvid": "BV1wv4y1f7wX", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 54864793, - "videos": 2, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/c3231251ade65cdb35f40f96b9651f13d4355fc4.jpg", - "title": "全B站模仿保加利亚妖王最像的人", - "pubdate": 1559913751, - "ctime": 1559913020, - "desc": "求点赞! 求关注! 求投币! \n模型:平安夜的噩梦&@i-fox\n动作自制(做的太渣了,想要的就拿走吧)\n 链接:https://pan.baidu.com/s/1kZZHiAY4_pIwds1F_CCj1A \n 提取码:g1yp", - "state": 0, - "duration": 218, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 93755540, - "name": "空梦゛", - "face": "http://i2.hdslb.com/bfs/face/00ac5eec49917b23353a015a3af5af109f82721f.jpg" - }, - "stat": { - "aid": 54864793, - "view": 904172, - "danmaku": 1863, - "reply": 574, - "favorite": 2390, - "coin": 646, - "share": 400, - "now_rank": 0, - "his_rank": 0, - "like": 14770, - "dislike": 0 - }, - "dynamic": "#搞笑视频##恶搞##保加利亚妖王#", - "cid": 95953526, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1o4411K7Sp", - "short_link_v2": "https://b23.tv/BV1o4411K7Sp", - "bvid": "BV1o4411K7Sp", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 98749955, - "videos": 1, - "tid": 122, - "tname": "野生技能协会", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/ff7765a1b049b72dd5acf1f74c8897f4807fd03d.png", - "title": "【打脸01】AV号为啥改成BV号?AV170001为例!AV号BV号有啥区别?", - "pubdate": 1585046601, - "ctime": 1585046601, - "desc": "欢迎收看lzr的打脸频道(雾)\n三连三连三连 \r\nUP为了这个视频连杭盖作业都没写\r\n球球你们了QAQ\r\n附:这个视频av号 av98749955", - "state": 0, - "duration": 335, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 24644307, - "name": "阿穆尔的小熊", - "face": "http://i0.hdslb.com/bfs/face/bff7059fcf5455e57c608a71522dab3e19220b59.jpg" - }, - "stat": { - "aid": 98749955, - "view": 18610, - "danmaku": 53, - "reply": 119, - "favorite": 121, - "coin": 27, - "share": 15, - "now_rank": 0, - "his_rank": 0, - "like": 500, - "dislike": 0 - }, - "dynamic": "", - "cid": 168567572, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1f7411m7XK", - "short_link_v2": "https://b23.tv/BV1f7411m7XK", - "bvid": "BV1f7411m7XK", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 370010949, - "videos": 2, - "tid": 138, - "tname": "搞笑", - "copyright": 2, - "pic": "http://i1.hdslb.com/bfs/archive/8339e4a40c1a10cfb0e0abe0bc4ef6ecbd61a45f.jpg", - "title": "黑人抬棺原版视频", - "pubdate": 1585735296, - "ctime": 1585735296, - "desc": "up主关于本条视频收入的说明戳:BV1YK41157dT\n转载自https://www.youtube.com/watch?v=b3Y_9bTRGVg\n其他:抖棺(肩)舞:BV1kt4y127Ee\n苏卡棺裂:BV1GZ4y1x7mZ\n我是比划,感谢您的观看感谢点赞感谢一切!改天一定陪老铁好好比划比划!(咕)\n(建议大家戳一下宝藏2p)", - "state": 0, - "duration": 200, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 479724334, - "name": "比划大魔王", - "face": "http://i1.hdslb.com/bfs/face/910e60494f7deff1b3bdcf1eaaead6779d77bac5.jpg" - }, - "stat": { - "aid": 370010949, - "view": 60997787, - "danmaku": 448899, - "reply": 47839, - "favorite": 982387, - "coin": 422190, - "share": 763221, - "now_rank": 0, - "his_rank": 2, - "like": 1769280, - "dislike": 0 - }, - "dynamic": "", - "cid": 172423516, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1NZ4y1j7nw", - "short_link_v2": "https://b23.tv/BV1NZ4y1j7nw", - "bvid": "BV1NZ4y1j7nw", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 7250151, - "videos": 1, - "tid": 130, - "tname": "音乐综合", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/86af45f48db9f136411d11362870394787779d93.jpg", - "title": "我要唤醒你们曾一度被170001所支配的恐惧", - "pubdate": 1480076771, - "ctime": 1497436787, - "desc": "视频的一段脱节了 嗯 没了", - "state": 0, - "duration": 211, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 37333418, - "name": "ZLYHX", - "face": "http://i2.hdslb.com/bfs/face/69e68acd37fc2a5085f44fdf9982029ec85e8abe.jpg" - }, - "stat": { - "aid": 7250151, - "view": 170228, - "danmaku": 244, - "reply": 84, - "favorite": 561, - "coin": 80, - "share": 1806, - "now_rank": 0, - "his_rank": 0, - "like": 1572, - "dislike": 0 - }, - "dynamic": "", - "cid": 11852714, - "dimension": { - "width": 640, - "height": 360, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1ws411s7Xz", - "short_link_v2": "https://b23.tv/BV1ws411s7Xz", - "bvid": "BV1ws411s7Xz", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 668672894, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/78376377b1db7026dc63a6f6a8c41cba7992c5cc.jpg", - "title": "有人跟我要网站,我把AV170001给了他", - "pubdate": 1593448525, - "ctime": 1593448525, - "desc": "有人跟我要网站,我让他下了个B站,还让他去搜AV170001", - "state": 0, - "duration": 23, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 488613042, - "name": "蒹葭3588", - "face": "http://i0.hdslb.com/bfs/face/475c9add5bc619091d8979cfe7f4a7ab5af2c865.jpg" - }, - "stat": { - "aid": 668672894, - "view": 37693, - "danmaku": 4, - "reply": 54, - "favorite": 16, - "coin": 2, - "share": 3, - "now_rank": 0, - "his_rank": 0, - "like": 296, - "dislike": 0 - }, - "dynamic": "#哲学##AV##妖王#", - "cid": 207235285, - "dimension": { - "width": 1080, - "height": 1920, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1Ka4y1e7k3", - "short_link_v2": "https://b23.tv/BV1Ka4y1e7k3", - "bvid": "BV1Ka4y1e7k3", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 631557307, - "videos": 1, - "tid": 193, - "tname": "MV", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/eafb857ea914589e3830a218d3820e063fb1751c.jpg", - "title": "Hop(高清无水印)", - "pubdate": 1625921694, - "ctime": 1625920960, - "desc": "https://m.youtube.com/watch?v=P9sQZLtsfp8", - "state": 0, - "duration": 231, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 404880090, - "name": "忆-画", - "face": "http://i0.hdslb.com/bfs/face/member/noface.jpg" - }, - "stat": { - "aid": 631557307, - "view": 600212, - "danmaku": 5332, - "reply": 627, - "favorite": 7258, - "coin": 1405, - "share": 16012, - "now_rank": 0, - "his_rank": 0, - "like": 13572, - "dislike": 0 - }, - "dynamic": "", - "cid": 367618065, - "dimension": { - "width": 1280, - "height": 576, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1Qb4y1r7ig", - "short_link_v2": "https://b23.tv/BV1Qb4y1r7ig", - "up_from_v2": 35, - "bvid": "BV1Qb4y1r7ig", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 456093155, - "videos": 1, - "tid": 59, - "tname": "演奏", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/9c160af2907ba2c161d565a99e61032ba72868ff.png", - "title": "太羞耻了!敢于琴行挑战演奏《Hop》!", - "pubdate": 1592883074, - "ctime": 1592883074, - "desc": "太羞耻了!敢于琴行挑战演奏《Hop》! Hop改编版", - "state": 0, - "duration": 168, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 13677047, - "name": "Piano莱特", - "face": "http://i2.hdslb.com/bfs/face/edf6a0ae7dfe9adb5e8d5e813a69455554931c73.jpg" - }, - "stat": { - "aid": 456093155, - "view": 1268344, - "danmaku": 3608, - "reply": 1772, - "favorite": 14046, - "coin": 7240, - "share": 4737, - "now_rank": 0, - "his_rank": 0, - "like": 70590, - "dislike": 0 - }, - "dynamic": "", - "cid": 204234033, - "dimension": { - "width": 3840, - "height": 2160, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1r5411W71r", - "short_link_v2": "https://b23.tv/BV1r5411W71r", - "bvid": "BV1r5411W71r", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 56261839, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/2ecd40c61c6031fda0ece8c098724b9bc88ff89d.jpg", - "title": "当你开启了青少年模式并搜索av170001会发生什么事", - "pubdate": 1561080121, - "ctime": 1561080121, - "desc": "我莫得简介", - "state": 0, - "duration": 80, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 305523767, - "name": "空城玄亦", - "face": "http://i2.hdslb.com/bfs/face/a5838c33eeb1b19f04a2967d26bb8b323834ca5e.jpg" - }, - "stat": { - "aid": 56261839, - "view": 553812, - "danmaku": 728, - "reply": 593, - "favorite": 754, - "coin": 386, - "share": 78, - "now_rank": 0, - "his_rank": 0, - "like": 6616, - "dislike": 0 - }, - "dynamic": "#AV170001##妖王##HOP#", - "cid": 98331390, - "dimension": { - "width": 1920, - "height": 960, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV15441137Xd", - "short_link_v2": "https://b23.tv/BV15441137Xd", - "up_from_v2": 8, - "pub_location": "浙江", - "bvid": "BV15441137Xd", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 88606863, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/f6d607625938ba5bdada81f7ae4c59e43852d57c.jpg", - "title": "妖王被黑得最惨的一次!用营销号的方式打开av170001", - "pubdate": 1581565668, - "ctime": 1581565669, - "desc": "素材:av170001\n点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞点赞", - "state": 0, - "duration": 60, - "mission_id": 12642, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 322628997, - "name": "湖畔者_Lynn", - "face": "http://i0.hdslb.com/bfs/face/a43fffdd14e81e992e570fce859351e7bace0ee8.jpg" - }, - "stat": { - "aid": 88606863, - "view": 826873, - "danmaku": 3047, - "reply": 5059, - "favorite": 6072, - "coin": 3274, - "share": 3742, - "now_rank": 0, - "his_rank": 0, - "like": 83644, - "dislike": 0 - }, - "dynamic": "#bilibili新星计划##HOP##AV170001#", - "cid": 151362415, - "dimension": { - "width": 1920, - "height": 1072, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1E741137Pb", - "short_link_v2": "https://b23.tv/BV1E741137Pb", - "bvid": "BV1E741137Pb", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 200010082, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/588c51ca3f8f309abeab0e5aaa4ab60dcb3e15a6.jpg", - "title": "还记得AV17001的内容吗?", - "pubdate": 1585492555, - "ctime": 1585492555, - "desc": "-", - "state": 0, - "duration": 428, - "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, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 243683327, - "name": "可爱的豹二A6", - "face": "http://i2.hdslb.com/bfs/face/1b8debc465485bc84db4d0c0936ed7692b185b5b.jpg" - }, - "stat": { - "aid": 200010082, - "view": 30797, - "danmaku": 4, - "reply": 31, - "favorite": 19, - "coin": 6, - "share": 15, - "now_rank": 0, - "his_rank": 0, - "like": 282, - "dislike": 0 - }, - "dynamic": "#AV170001##保加利亚妖王##全程高能#", - "cid": 171166760, - "dimension": { - "width": 2160, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1hz411h7KH", - "short_link_v2": "https://b23.tv/BV1hz411h7KH", - "bvid": "BV1hz411h7KH", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 5164105, - "videos": 1, - "tid": 193, - "tname": "MV", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/149aed759c1231948c468c412f67c634e05a4974.jpg", - "title": "保加利亚妖王AZIS单曲HABIBI新版MV", - "pubdate": 1467381090, - "ctime": 1497380583, - "desc": "www.youtube.com/watch?v=ZmyVZRLOw3M AZIS - HABIBI (latino version) _ Азис - Хабиби (латино версия)", - "state": 0, - "duration": 266, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 122541, - "name": "冰封.虾子", - "face": "http://i0.hdslb.com/bfs/face/40c46ee74dd6ea33d46c38cd6083e6a1286aa482.gif" - }, - "stat": { - "aid": 5164105, - "view": 633795, - "danmaku": 2134, - "reply": 811, - "favorite": 7371, - "coin": 1639, - "share": 3328, - "now_rank": 0, - "his_rank": 0, - "like": 9908, - "dislike": 0 - }, - "dynamic": "", - "cid": 8392273, - "dimension": { - "width": 640, - "height": 360, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1zs411v7K5", - "short_link_v2": "https://b23.tv/BV1zs411v7K5", - "bvid": "BV1zs411v7K5", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 85804489, - "videos": 1, - "tid": 27, - "tname": "综合", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/d513318c0e5fa55580b7a1f47b6ce5c8fd8959d2.jpg", - "title": "av170001回来了!'!", - "pubdate": 1580391994, - "ctime": 1580391994, - "desc": "-", - "state": 0, - "duration": 20, - "mission_id": 12642, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 251852454, - "name": "胡桃老婆赛高哒", - "face": "http://i0.hdslb.com/bfs/face/b91aa1a2c50d9273d6c4c8cbf340ca34e8829642.jpg" - }, - "stat": { - "aid": 85804489, - "view": 54551, - "danmaku": 5, - "reply": 83, - "favorite": 31, - "coin": 6, - "share": 5, - "now_rank": 0, - "his_rank": 0, - "like": 190, - "dislike": 0 - }, - "dynamic": "#bilibili新星计划##AV170001##保加利亚妖王#", - "cid": 146661863, - "dimension": { - "width": 720, - "height": 1440, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1N7411B7Bq", - "short_link_v2": "https://b23.tv/BV1N7411B7Bq", - "bvid": "BV1N7411B7Bq", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 626849708, - "videos": 1, - "tid": 26, - "tname": "音MAD", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/701dd594c9060c7f6aaffc634ba8694288f02e45.jpg", - "title": "调音师的准确率已达170001%", - "pubdate": 1598149834, - "ctime": 1598102271, - "desc": "自制【猫鼠电音】Hop\n原曲:Hop-Azis(其音乐融合保加利亚名族曲风chalga和pop、rap等元素)\n感觉以前做音mad只为了还原原曲 太呆板无趣\n于是就做了这样一次尝试以求改观\n使用此标题已经过 @球球特别大 允许\n\n#猫鼠电音#5", - "state": 0, - "duration": 91, - "mission_id": 14023, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 34611143, - "name": "致明笑笑", - "face": "http://i2.hdslb.com/bfs/face/b8fd466c7a64a2f2baf0f38f1ff5a1ab8fc1e1fb.jpg" - }, - "stat": { - "aid": 626849708, - "view": 144490, - "danmaku": 370, - "reply": 388, - "favorite": 2865, - "coin": 1616, - "share": 387, - "now_rank": 0, - "his_rank": 0, - "like": 11937, - "dislike": 0 - }, - "dynamic": "#鬼畜大赏2020-音MAD##猫和老鼠##保加利亚妖王#", - "cid": 227521154, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1Xt4y1U79t", - "short_link_v2": "https://b23.tv/BV1Xt4y1U79t", - "bvid": "BV1Xt4y1U79t", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 257143502, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/105015bbeab86dd32e8341ff2a53276f1ab5d7a2.jpg", - "title": "在b站最没存在感的国家是谁?各国相关最高播放的视频是什么?", - "pubdate": 1654327813, - "ctime": 1654327813, - "desc": "本来视频是按播放统计,但撒贝宁/马里奥/黑山大叔 比 贝宁/马里/黑山 还火2333333,所以以标签为准。\n估计视频播放过不了1万5 ;)", - "state": 0, - "duration": 661, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 544503411, - "name": "沙琪玛er", - "face": "http://i0.hdslb.com/bfs/face/b03c633eb227556b38930aab4d6cb94ab463cd2f.jpg" - }, - "stat": { - "aid": 257143502, - "view": 163449, - "danmaku": 1384, - "reply": 572, - "favorite": 2073, - "coin": 769, - "share": 111, - "now_rank": 0, - "his_rank": 0, - "like": 9576, - "dislike": 0 - }, - "dynamic": "估计播放过不了1万5 ;)", - "cid": 737740549, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 462986, - "short_link": "https://b23.tv/BV18Y411g7co", - "short_link_v2": "https://b23.tv/BV18Y411g7co", - "first_frame": "http://i1.hdslb.com/bfs/storyff/n220604a23d6t17is08tz01wjsgiyhzg_firsti.jpg", - "bvid": "BV18Y411g7co", - "season_type": 1, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 627815773, - "videos": 1, - "tid": 27, - "tname": "综合", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/0d16d4fb0ec25f0c4dd2fff7f0a7de3ac789e5b7.jpg", - "title": "【开启新世界的大门】整活派派反被整——被「HOP」震惊到神隐", - "pubdate": 1605237196, - "ctime": 1605237196, - "desc": "20201112B限\n--\n翻译:長門準\n时轴:PY\n校对:長門準\n剪辑:PY\n------------------------------------------------------\n箱推粉丝7群:1132670270\n审核群:685228392", - "state": 0, - "duration": 392, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 421347849, - "name": "白百合リリィOfficial", - "face": "http://i0.hdslb.com/bfs/face/236f74251b9ac820908db1e0d2f09d46057cb7fe.jpg" - }, - "stat": { - "aid": 627815773, - "view": 270692, - "danmaku": 711, - "reply": 227, - "favorite": 2203, - "coin": 1044, - "share": 250, - "now_rank": 0, - "his_rank": 0, - "like": 9924, - "dislike": 0 - }, - "dynamic": "", - "cid": 255272814, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV13t4y1v7XG", - "short_link_v2": "https://b23.tv/BV13t4y1v7XG", - "bvid": "BV13t4y1v7XG", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 91287627, - "videos": 1, - "tid": 22, - "tname": "鬼畜调教", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/07e972b7324b68facb2e3139821b477ab9f0e792.jpg", - "title": "我不信这么高♂雅的作品破不了100播放量?!", - "pubdate": 1582518913, - "ctime": 1582518913, - "desc": "爱咋咋地!!!!!!!不限流就烧高香了!!!!!!", - "state": 0, - "duration": 107, - "mission_id": 12868, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 4915107, - "name": "初音ミつ", - "face": "http://i0.hdslb.com/bfs/face/14887f1d272b1417484a109509c25835e6b0c0d5.jpg" - }, - "stat": { - "aid": 91287627, - "view": 5231099, - "danmaku": 9183, - "reply": 11975, - "favorite": 82502, - "coin": 69857, - "share": 8328, - "now_rank": 0, - "his_rank": 38, - "like": 397712, - "dislike": 0 - }, - "dynamic": "#鬼畜调教##VAN##罗西尼#", - "cid": 155876336, - "dimension": { - "width": 720, - "height": 576, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV127411M7HC", - "short_link_v2": "https://b23.tv/BV127411M7HC", - "bvid": "BV127411M7HC", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 327580733, - "videos": 1, - "tid": 17, - "tname": "单机游戏", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/014591d2f7f129c660bca88e6c5d38638a2a1ea7.jpg", - "title": "当我的世界种子输入AV170001会怎么样?", - "pubdate": 1585207605, - "ctime": 1585207605, - "desc": "给三连啊!\n\n♂♂♂♂\n♂♂♂♂\n♂♂♂♂\n♂♂♂♂♂♂♂♂\n♂♂♂♂", - "state": 0, - "duration": 102, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 416313100, - "name": "永不言弃的电路猫", - "face": "http://i1.hdslb.com/bfs/face/d70d22d6edc68bfc5d9c6a644de4513a8751eace.jpg" - }, - "stat": { - "aid": 327580733, - "view": 154520, - "danmaku": 329, - "reply": 424, - "favorite": 743, - "coin": 55, - "share": 30, - "now_rank": 0, - "his_rank": 0, - "like": 10134, - "dislike": 0 - }, - "dynamic": "#AV170001##我的世界##HOP#", - "cid": 169645787, - "dimension": { - "width": 640, - "height": 480, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1RA41187Tq", - "short_link_v2": "https://b23.tv/BV1RA41187Tq", - "bvid": "BV1RA41187Tq", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 4033926, - "videos": 1, - "tid": 22, - "tname": "鬼畜调教", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/f004d589847c604f5e3800ce99bced09ec7e20af.jpg", - "title": "【电音单曲】我是papi酱", - "pubdate": 1457267935, - "ctime": 1497423784, - "desc": "自制 这个集鬼畜与才华于一身的女人,成功地引起了我的注意。", - "state": 0, - "duration": 156, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 375375, - "name": "伊丽莎白鼠", - "face": "http://i0.hdslb.com/bfs/face/6c36ec15f6d7ddd9bdb558511521bd0256779e1c.jpg" - }, - "stat": { - "aid": 4033926, - "view": 43805807, - "danmaku": 468795, - "reply": 91630, - "favorite": 680262, - "coin": 716611, - "share": 194916, - "now_rank": 0, - "his_rank": 1, - "like": 882426, - "dislike": 0 - }, - "dynamic": "", - "cid": 6505773, - "dimension": { - "width": 640, - "height": 360, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1hs411Q7zf", - "short_link_v2": "https://b23.tv/BV1hs411Q7zf", - "bvid": "BV1hs411Q7zf", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 497521129, - "videos": 1, - "tid": 138, - "tname": "搞笑", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/593078d6f292fc241f6b68437976b74b5d601365.jpg", - "title": "当老师在钉钉放起hop♂", - "pubdate": 1586053391, - "ctime": 1586050521, - "desc": "妖王的直播: hop已结束。在直播过程中,观看人的摄像头全程关闭(仅连麦功能时可选择开启),感谢观看直播。直播回放正在生成中,稍后在“群设置-直播回放”中查看, 查看详情", - "state": 0, - "duration": 166, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 353603699, - "name": "群束竹令", - "face": "http://i2.hdslb.com/bfs/face/34b63faea602e0cd212f874de9db9ad4e01df9dc.jpg" - }, - "stat": { - "aid": 497521129, - "view": 286263, - "danmaku": 1269, - "reply": 306, - "favorite": 1682, - "coin": 165, - "share": 620, - "now_rank": 0, - "his_rank": 0, - "like": 13048, - "dislike": 0 - }, - "dynamic": "#HOP##钉钉#", - "cid": 174065931, - "dimension": { - "width": 1536, - "height": 720, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1rK41177Qd", - "short_link_v2": "https://b23.tv/BV1rK41177Qd", - "bvid": "BV1rK41177Qd", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 3904091, - "videos": 1, - "tid": 238, - "tname": "运动综合", - "copyright": 2, - "pic": "http://i1.hdslb.com/bfs/archive/2cccf431ac5677c38535ac421daa5818443e258b.jpg", - "title": "冬钓250磅重的巨型鲶鱼", - "pubdate": 1455981826, - "ctime": 1497380578, - "desc": "youtube GOLIATH CATFISH 250 POUND 8 FEET IN WINTER DRIFT AND LIVE BAIT", - "state": 0, - "duration": 406, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 122541, - "name": "冰封.虾子", - "face": "http://i0.hdslb.com/bfs/face/40c46ee74dd6ea33d46c38cd6083e6a1286aa482.gif" - }, - "stat": { - "aid": 3904091, - "view": 1655057, - "danmaku": 2747, - "reply": 1810, - "favorite": 3206, - "coin": 204, - "share": 2175, - "now_rank": 0, - "his_rank": 0, - "like": 15779, - "dislike": 0 - }, - "dynamic": "", - "cid": 6280020, - "dimension": { - "width": 640, - "height": 360, - "rotate": 0 - }, - "season_id": 627981, - "short_link": "https://b23.tv/BV1es411972g", - "short_link_v2": "https://b23.tv/BV1es411972g", - "bvid": "BV1es411972g", - "season_type": 1, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 926574462, - "videos": 1, - "tid": 65, - "tname": "网络游戏", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/4449df3efd8d007176a9eedb5dfb35a1dc89af48.jpg", - "title": "当毛子遇到混血超模(2)", - "pubdate": 1596097538, - "ctime": 1596097539, - "desc": "抖音\n抖音...", - "state": 0, - "duration": 30, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 543863677, - "name": "DJStevenAV", - "face": "http://i1.hdslb.com/bfs/face/b88800a78b68eacb48e9b48421b6c39c1bc9dc5b.jpg" - }, - "stat": { - "aid": 926574462, - "view": 565826, - "danmaku": 168, - "reply": 310, - "favorite": 4240, - "coin": 475, - "share": 2877, - "now_rank": 0, - "his_rank": 0, - "like": 9847, - "dislike": 0 - }, - "dynamic": "#茄子##吃鸡##美女#", - "cid": 218351947, - "dimension": { - "width": 720, - "height": 1280, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1BT4y1j7EV", - "short_link_v2": "https://b23.tv/BV1BT4y1j7EV", - "bvid": "BV1BT4y1j7EV", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 718913090, - "videos": 1, - "tid": 27, - "tname": "综合", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/6567760d676268e2bf2e2c57486085a31427ed79.jpg", - "title": "【咩栗】镇 站 之 宝", - "pubdate": 1636448401, - "ctime": 1636448403, - "desc": "可以关注一下可爱的小羊和小狼呀~\n小羊主页:https://space.bilibili.com/745493\n小狼主页:https://space.bilibili.com/617459493\n⚡️☀️\n微博@电击咩阿栗\n微博@呜米嗷呜\n⚡️☀️\n网易云@咩栗\n网易云@呜米", - "state": 0, - "duration": 188, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 674421433, - "name": "呜米咩栗的草原日常", - "face": "http://i1.hdslb.com/bfs/face/5566e3a4786959527a72545f908b5664693a2945.jpg" - }, - "stat": { - "aid": 718913090, - "view": 289956, - "danmaku": 188, - "reply": 455, - "favorite": 2984, - "coin": 679, - "share": 195, - "now_rank": 0, - "his_rank": 0, - "like": 14988, - "dislike": 0 - }, - "dynamic": "咩栗,不可以。", - "cid": 436835160, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV14Q4y1S7HU", - "short_link_v2": "https://b23.tv/BV14Q4y1S7HU", - "first_frame": "http://i0.hdslb.com/bfs/storyff/n211105a23d8ue6bh0m1ed1cu6yztac5_firsti.jpg", - "bvid": "BV14Q4y1S7HU", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 243979418, - "videos": 1, - "tid": 17, - "tname": "单机游戏", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/4be3a91598103a9d599d62ac77659b75c1d2c54b.jpg", - "title": "[缝合怪]HOP?哈哈哈奇怪的缝合生物增加了!(二)", - "pubdate": 1594986846, - "ctime": 1594986846, - "desc": "奇怪的生物...增加了??!\n这期连更几个创意搞笑小视频,连载上个视频的creeper用到的奥利奥的梗\n反正开心就对啦,之后明天再更一期这类似的小视频,然后这周视频时长就算达标咯\n狐圈:201928737\n“快来养老qwq”", - "state": 0, - "duration": 23, - "mission_id": 13752, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 289475254, - "name": "碧月狐", - "face": "http://i1.hdslb.com/bfs/face/4492716a1211a20b63015d84a9860b3424e9eca7.jpg" - }, - "stat": { - "aid": 243979418, - "view": 886939, - "danmaku": 516, - "reply": 301, - "favorite": 9412, - "coin": 1819, - "share": 2487, - "now_rank": 0, - "his_rank": 0, - "like": 41875, - "dislike": 0 - }, - "dynamic": "#沙雕日常##Minecraft##我的世界#", - "cid": 213532895, - "dimension": { - "width": 1280, - "height": 720, - "rotate": 0 - }, - "season_id": 11746, - "short_link": "https://b23.tv/BV1xv411q7fJ", - "short_link_v2": "https://b23.tv/BV1xv411q7fJ", - "bvid": "BV1xv411q7fJ", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 590060816, - "videos": 1, - "tid": 22, - "tname": "鬼畜调教", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/509fda71291eda10687fa839a5f89c6054bed167.png", - "title": "保 加 利 亚 瓜 王", - "pubdate": 1629954067, - "ctime": 1629954067, - "desc": "哥儿俩生妖王", - "state": 0, - "duration": 79, - "mission_id": 105577, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 64827416, - "name": "城之悠二", - "face": "http://i2.hdslb.com/bfs/face/032a0ec32dcd880eeb0850e7a03d0990445c9697.jpg" - }, - "stat": { - "aid": 590060816, - "view": 858513, - "danmaku": 1487, - "reply": 1282, - "favorite": 17119, - "coin": 13288, - "share": 7838, - "now_rank": 0, - "his_rank": 0, - "like": 67325, - "dislike": 0 - }, - "dynamic": "", - "cid": 396779777, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1eq4y1D7H8", - "short_link_v2": "https://b23.tv/BV1eq4y1D7H8", - "up_from_v2": 2, - "first_frame": "http://i2.hdslb.com/bfs/storyff/n210826139etterlwdx0a2fsl8bfjlk7_firsti.jpg", - "bvid": "BV1eq4y1D7H8", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 74910522, - "videos": 1, - "tid": 21, - "tname": "日常", - "copyright": 2, - "pic": "http://i1.hdslb.com/bfs/archive/89dcc6be0083463aab31b22d31032270e363c019.jpg", - "title": "保加利亚妖王用中文数数", - "pubdate": 1573152882, - "ctime": 1573152882, - "desc": "https://www.youtube.com/watch?v=E68duawIQ7I\n一个意义不明的视频?", - "state": 0, - "duration": 10, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 122541, - "name": "冰封.虾子", - "face": "http://i0.hdslb.com/bfs/face/40c46ee74dd6ea33d46c38cd6083e6a1286aa482.gif" - }, - "stat": { - "aid": 74910522, - "view": 88597, - "danmaku": 20, - "reply": 223, - "favorite": 314, - "coin": 54, - "share": 90, - "now_rank": 0, - "his_rank": 0, - "like": 2426, - "dislike": 0 - }, - "dynamic": "迷之更新? #azis##保加利亚妖王##中文#", - "cid": 128148307, - "dimension": { - "width": 608, - "height": 1080, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1jE411q77T", - "short_link_v2": "https://b23.tv/BV1jE411q77T", - "bvid": "BV1jE411q77T", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 755494777, - "videos": 2, - "tid": 193, - "tname": "MV", - "copyright": 2, - "pic": "http://i1.hdslb.com/bfs/archive/e3986406217f03ce31ca46852164c0279a406ecd.png", - "title": "Rick Astley - Never Gonna Give You Up", - "pubdate": 1606492404, - "ctime": 1606492405, - "desc": "ISRC CN-E20-20-453-08/V.J6 XVCD-20153\n出自于BV1nW4y1C7T5的P9", - "state": 0, - "duration": 427, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 313290585, - "name": "作死君-", - "face": "http://i0.hdslb.com/bfs/face/f917350f82a8cb1ba4c211a28d0e281cb3457206.jpg" - }, - "stat": { - "aid": 755494777, - "view": 628308, - "danmaku": 328, - "reply": 501, - "favorite": 6767, - "coin": 682, - "share": 498, - "now_rank": 0, - "his_rank": 0, - "like": 30748, - "dislike": 0 - }, - "dynamic": "", - "cid": 425587380, - "dimension": { - "width": 960, - "height": 720, - "rotate": 0 - }, - "short_link": "https://b23.tv/BV1er4y1c7yZ", - "short_link_v2": "https://b23.tv/BV1er4y1c7yZ", - "up_from_v2": 2, - "first_frame": "http://i2.hdslb.com/bfs/storyff/n2110151395pbo9g2l5ka1arlotq4yxi_firsti.jpg", - "bvid": "BV1er4y1c7yZ", - "season_type": 0, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - }, - { - "aid": 299723213, - "videos": 1, - "tid": 171, - "tname": "电子竞技", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/5eb1a2b31854985136c140403db76bd915af8168.jpg", - "title": "⚡️内 格 夫 の 嘲 讽⚡️", - "pubdate": 1654141500, - "ctime": 1654141501, - "desc": "", - "state": 0, - "duration": 89, - "mission_id": 683731, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0, - "arc_pay": 0, - "pay_free_watch": 0 - }, - "owner": { - "mid": 91542133, - "name": "邪神_Karasu_", - "face": "http://i1.hdslb.com/bfs/face/e1684c4d561628ca2baa326caefe9c7cc88e6b7d.jpg" - }, - "stat": { - "aid": 299723213, - "view": 307870, - "danmaku": 232, - "reply": 192, - "favorite": 1759, - "coin": 596, - "share": 352, - "now_rank": 0, - "his_rank": 0, - "like": 18974, - "dislike": 0 - }, - "dynamic": "", - "cid": 735728100, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "season_id": 223572, - "short_link": "https://b23.tv/BV12F411G7GC", - "short_link_v2": "https://b23.tv/BV12F411G7GC", - "first_frame": "http://i2.hdslb.com/bfs/storyff/n220601a23cewjt7ozvrxwifaipjgy3m_firsti.jpg", - "pub_location": "贵州", - "bvid": "BV12F411G7GC", - "season_type": 1, - "is_ogv": false, - "ogv_info": null, - "rcmd_reason": "" - } - ], - "Spec": null, - "hot_share": { - "show": false, - "list": [] - }, - "elec": null, - "recommend": null, - "view_addit": { - "63": false, - "64": false - } - } -} -``` - -
- -## 获取视频简介 - -> https://api.bilibili.com/x/web-interface/archive/desc - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|--------|--------|---------------| -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|--------------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
62002:稿件不可见 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | str | 简介内容 | | - -**示例:** - -查看视频(教主的咕鸽)`av39330059`/`BV1Bt411z799`的简介 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/archive/desc' \ ---data-urlencode 'aid=39330059' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/archive/desc' \ ---data-urlencode 'bvid=BV1Bt411z799' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": "1.小朋友们大家好,我是你们爷爷最喜欢的超威一列姆!\r\n2.在过去的一年里,我创作了无数脍炙人口的歌曲,常常被人夸赞高产似雌豚。\r\n3.接下来的日子里我会一如既往地勤勉创作,争取继续保持现在的产量,文体两开花。\r\n4.我感觉照这个势头和速度下去别说日常更新不在话下,连出张新专辑都指日可待了啊。\r\n5.也感谢你们一如既往的支持和鼓励,我会注意身体,不把自己累垮掉的。\r\n6.我个人不建议你们在评论区里艾特任何UP主,我真的不建议,当然你们非要这么做我也没办法的。" -} -``` - -
- -## 查询视频分P列表 (avid/bvid转cid) - -> https://api.bilibili.com/x/player/pagelist - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------|-----|--------|--------|---------------| -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -|---------|-------|------|-----------------------------------| -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 分P列表 | | - -数组`data`: - -| 项 | 类型 | 内容 | 备注 | -|-----|-----|----------|---------| -| 0 | obj | 1P内容 | 无分P仅有此项 | -| n | obj | (n+1)P内容 | | -| …… | obj | …… | …… | - -数组`data`中的对象: - -| 字段 | 类型 | 内容 | 备注 | -|-------------|-----|-----------|---------------------------------------------| -| cid | num | 当前分P cid | | -| page | num | 当前分P | | -| from | str | 视频来源 | vupload:普通上传(B站)
hunan:芒果TV
qq:腾讯 | -| part | str | 当前分P标题 | | -| duration | num | 当前分P持续时间 | 单位为秒 | -| vid | str | 站外视频vid | | -| weblink | str | 站外视频跳转url | | -| dimension | obj | 当前分P分辨率 | 有部分视频无法获取分辨率 | -| first_frame | str | 分P封面 | | - -数组`data`中的对象中的`dimension`对象: - -| 字段 | 类型 | 内容 | 备注 | -|--------|-----|---------|----------------| -| width | num | 当前分P 宽度 | | -| height | num | 当前分P 高度 | | -| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | - -**示例:** - -查询视频`av13502509`/`BV1ex411J7GE`的分P列表 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/pagelist' \ ---data-urlencode 'aid=13502509' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/pagelist' \ ---data-urlencode 'bvid=BV1ex411J7GE' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "cid": 66445301, - "page": 1, - "from": "vupload", - "part": "00. 宣传短片", - "duration": 33, - "vid": "", - "weblink": "", - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - } - }, { - "cid": 35039663, - "page": 2, - "from": "vupload", - "part": "01. 火柴人与动画师", - "duration": 133, - "vid": "", - "weblink": "", - "dimension": { - "width": 1484, - "height": 1080, - "rotate": 0 - } - }, { - "cid": 35039678, - "page": 3, - "from": "vupload", - "part": "02. 火柴人与动画师 II", - "duration": 210, - "vid": "", - "weblink": "", - "dimension": { - "width": 1484, - "height": 1080, - "rotate": 0 - } - }, { - "cid": 35039693, - "page": 4, - "from": "vupload", - "part": "03. 火柴人与动画师 III", - "duration": 503, - "vid": "", - "weblink": "", - "dimension": { - "width": 992, - "height": 720, - "rotate": 0 - } - }, - ………… - ] -} -``` - -
diff --git a/video/interact_video.md b/video/interact_video.md deleted file mode 100644 index 2d5bb63..0000000 --- a/video/interact_video.md +++ /dev/null @@ -1,375 +0,0 @@ -# 互动视频信息 - -注:互动视频分P与普通视频分P不互通 - ---- - -- [获取互动视频模块详细信息](#获取互动视频模块详细信息) - ---- - -## 获取互动视频模块详细信息 - -> https://api.bilibili.com/x/stein/edgeinfo_v2 - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------- | ---- | -------- | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| graph_version | num | 剧情图id | 必要 | 位于`player.so`中 | -| edge_id | num | 模块编号 | 非必要 | 0或留空为起始模块 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频
99003:剧情图被修改已失效
99077:请输入aid/bvid | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ----- | ------------------- | ------------------------------------------------ | -| title | str | 视频模块(分P)标题 | | -| edge_id | num | 当前模块id | | -| story_list | array | 进度回溯信息 | 未登录仅有起始模块 | -| edges | obj | 当前模块信息 | | -| preload | obj | 预加载的分P | | -| hidden_vars | array | 变量列表 | 无变量时不存在此项 | -| is_leaf | num | 是否为结束模块 | 0:当前模块为普通模块
1:当前模块为结束模块 | -| no_tutorial | num | 禁止记录选择 | 1:禁止
非禁止时无此项 | -| no_backtracking | num | 禁止进度回溯 | 1:禁止
非禁止时无此项 | -| no_evaluation | num | 禁止结尾评分 | 1:禁止
非禁止时无此项 | - -`data`中的`story_list`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ---- | -| 0 | obj | 回溯第一项模块 | | -| n | obj | 回溯第(n+1)项模块 | | -| …… | obj | …… | …… | - -`story_list`数组中的对象: - -| 项 | 类型 | 内容 | 备注 | -| ---------- | ---- | ---------------- | ----------------------------- | -| node_id | num | 模块编号 | | -| edge_id | num | **同上** | | -| title | str | 模块(分P)标题 | | -| cid | num | 模块(分P)cid | | -| start_pos | num | 记录播放开始位置 | 单位为毫秒 | -| cover | str | 分P封面url | | -| is_current | num | 是否为当前模块 | 1:是
仅为当前模块时存在 | -| cursor | num | 进度序号 | 从0开始向上增长 | - -`data`中的`edges`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------------- | ------------------------ | -| dimension | obj | 当前分P分辨率 | 有部分视频无法获取分辨率 | -| questions | array | 问题 | 结束模块无此项 | -| skin | obj | 问题外观 | | - -`edges`中的`dimension`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------------- | -------------------- | -| width | num | 当前分P 宽度 | | -| height | num | 当前分P 高度 | | -| rotate | num | 是否将宽高对换 | 0:正常
1:对换 | -| sar | str | ??? | 作用尚不明确 | - -`edges`中的`questions`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| 0 | obj | 套了个娃 | | - -`edges`中的`questions`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | ---------------- | ------------------------------------------------------------ | -| id | num | ??? | 作用尚不明确 | -| type | num | 选项显示模式 | 0:不显示选项
1:底部选项模式
2:坐标定点模式
3:???
127:??? | -| start_time_r | num | 300 或 duration | 作用尚不明确 | -| duration | num | 回答限时 | 单位为毫秒
不限时为`-1` | -| pause_video | num | 是否暂停播放视频 | 0:不暂停
1:暂停播放 | -| title | str | 空 | 作用尚不明确 | -| choices | array | 选项列表 | | -| fade_in_time | num | 选项淡入时间 | 毫秒 | -| fade_out_time | num | 选项淡出时间 | 毫秒 | - -`questions`数组中的对象中的`choices`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------- | ---- | -| 0 | obj | 第一选项 | | -| n | obj | 第(n+1)选项 | | -| …… | obj | …… | …… | - -`questions`数组中的对象中的`choices`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ---- | -------------------- | ------------------------------------- | -| id | num | 选项所跳转的模块id | | -| platform_action | str | 跳转信息文字 | JUMP+{所跳转的模块编号}+{所跳转的cid} | -| native_action | str | 点击后对变量运算语句 | 每项间用分号隔开
无为空 | -| condition | str | 选项出现条件判断语句 | 无为空 | -| cid | num | 选项所跳转分P的cid | | -| x | num | 选项出现的x坐标 | 仅坐标模式有此项 | -| y | num | 选项出现的y坐标 | 仅坐标模式有此项 | -| text_align | num | 选项文本对齐方式 | | -| option | str | 选项文字 | | -| selected | obj | 选择动画信息 | | -| submited | obj | 提交动画信息 | | -| is_default | num | 是否为默认选项 | 1:是
非默认选项无此项 | -| is_hidden | num | 是否为隐藏选项 | 1:是
非隐藏选项无此项 | - -`edges`中的`skin`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------------ | ---- | ------------------- | ---------------- | -| choice_image | str | 选项组件外观图片url | | -| title_text_color | str | 文字颜色 | 以下均为RGBA格式 | -| title_shadow_color | str | 文字阴影颜色 | | -| title_shadow_offset_x | num | 文字阴影x偏移 | | -| title_shadow_offset_y | num | 文字阴影y偏移 | | -| title_shadow_radius | num | 文字阴影半径 | | -| progressbar_color | str | 倒计时条颜色 | | -| progressbar_shadow_color | str | 倒计时条阴影颜色 | | - -`data`中的`preload`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ----- | ----------- | ---- | -| video | array | 预加载的分P | | - -`preload`中的`video`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ------------------------------------ | -| 0 | obj | 预加载第一项 | 预加载的内容为当前所有选项的跳转视频 | -| n | obj | 预加载第(n+1)项 | | -| …… | obj | …… | …… | - -`preload`中的`video`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | -------- | ---- | -| aid | num | 稿件avid | | -| cid | num | 分P cid | | - -`data`中的`hidden_vars`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 第一个变量 | | -| n | obj | 第(n+1)个变量 | | -| …… | obj | …… | …… | - -`data`中的`hidden_vars`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ------------ | -------------------------- | -| value | num | 变量值 | 随机值为随机整数 | -| id | str | 变量编号 | | -| id_v2 | str | 变量编号 | 语句中一般使用这种 | -| type | num | 变量类型 | 1:普通变量
2:随机值 | -| is_show | num | 是否展示变量 | 0:否
1:是 | -| name | str | 变量名 | | -| skip_overwrite | num | 0 | 作用尚不明确 | - -**示例:** - -查询互动视频`av73267982`下剧情图`155446`模块`5556092`的信息 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/stein/edgeinfo_v2' \ ---data-urlencode 'aid=73267982' \ ---data-urlencode 'graph_version=155446' \ ---data-urlencode 'edge_id=5556092' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/stein/edgeinfo_v2' \ ---data-urlencode 'bvid=BV1UE411y7Wy' \ ---data-urlencode 'graph_version=155446' \ ---data-urlencode 'edge_id=5556092' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "title": "4", - "edge_id": 5556092, - "story_list": [ - { - "node_id": 1, - "edge_id": 1, - "title": "0 片头", - "cid": 127486603, - "start_pos": 27000, - "cover": "http://i0.hdslb.com/bfs/steins-gate/127486603_screenshot.jpg", - "cursor": 0 - }, - { - "node_id": 5556092, - "edge_id": 5556092, - "title": "4", - "cid": 125499378, - "start_pos": 82000, - "cover": "http://i0.hdslb.com/bfs/steins-gate/125499378_screenshot.jpg", - "is_current": 1, - "cursor": 15 - } - ], - "edges": { - "dimension": { - "width": 1920, - "height": 1000, - "rotate": 0, - "sar": "" - }, - "questions": [ - { - "id": 0, - "type": 2, - "start_time_r": 300, - "duration": -1, - "pause_video": 1, - "title": "", - "choices": [ - { - "id": 5556133, - "platform_action": "JUMP 5556133 125499249", - "native_action": "", - "condition": "$H7g_64_PG2EVS>=1.00 && $H7g_64_PG2EVS<=80.00", - "cid": 125499249, - "x": 947, - "y": 499, - "text_align": 2, - "option": "A <你已成为杀手> 试图砍死萌新 (成功率20%)", - "is_default": 1 - }, - { - "id": 5556134, - "platform_action": "JUMP 5556134 125502707", - "native_action": "", - "condition": "$H7g_64_PG2EVS>=81.00 && $H7g_64_PG2EVS<=100.00", - "cid": 125502707, - "x": 949, - "y": 502, - "text_align": 2, - "option": "B <你已成为杀手> 试图砍死萌新 (成功率20%)" - }, - { - "id": 5556135, - "platform_action": "JUMP 5556135 125499249", - "native_action": "", - "condition": "", - "cid": 125499249, - "x": 120, - "y": 145, - "text_align": 2, - "option": "C 直接【砍杀失败】" - } - ] - } - ], - "skin": { - "choice_image": "https://i0.hdslb.com/bfs/app/db0ae7700d4fb1416c8b305bcfb6f0948f818cc9.png", - "title_text_color": "d8fbffff", - "title_shadow_color": "00000033", - "title_shadow_offset_y": 1, - "title_shadow_radius": 1, - "progressbar_color": "ffffffff", - "progressbar_shadow_color": "000000cc" - } - }, - "preload": { - "video": [ - { - "aid": 73267982, - "cid": 125499249 - }, - { - "aid": 73267982, - "cid": 125502707 - } - ] - }, - "hidden_vars": [ - { - "value": 97, - "id": "v-H7g@PG2EVS", - "id_v2": "$H7g_64_PG2EVS", - "type": 2, - "is_show": 0, - "name": "随机值", - "skip_overwrite": 0 - }, - { - "value": 0, - "id": "v-YWB6dk1oCP", - "id_v2": "$YWB6dk1oCP", - "type": 1, - "is_show": 1, - "name": "达成假结局次数", - "skip_overwrite": 0 - }, - { - "value": 0, - "id": "v-Zh4JACIiId", - "id_v2": "$Zh4JACIiId", - "type": 1, - "is_show": 1, - "name": "死亡次数", - "skip_overwrite": 0 - }, - { - "value": 0, - "id": "v-a2vplaQlsP", - "id_v2": "$a2vplaQlsP", - "type": 1, - "is_show": 1, - "name": "达成真结局次数", - "skip_overwrite": 0 - }, - { - "value": 1, - "id": "v-lMQqQ994Sk", - "id_v2": "$lMQqQ994Sk", - "type": 1, - "is_show": 1, - "name": "循环编号", - "skip_overwrite": 0 - } - ], - "is_leaf": 0 - } -} -``` - -
\ No newline at end of file diff --git a/video/like_coin_fav.md b/video/like_coin_fav.md deleted file mode 100644 index 16d07d9..0000000 --- a/video/like_coin_fav.md +++ /dev/null @@ -1,830 +0,0 @@ -# 视频点赞&投币&收藏&分享 - -- [视频点赞&投币&收藏&分享](#视频点赞投币收藏分享) - - [点赞](#点赞) - - [点赞视频(web端)](#点赞视频web端) - - [点赞视频(APP端)](#点赞视频app端) - - [判断视频是否被点赞(双端)](#判断视频是否被点赞双端) - - [点踩](#点踩) - - [点踩视频(APP端)](#点踩视频app端) - - [投币](#投币) - - [投币视频(web端)](#投币视频web端) - - [投币视频(APP端)](#投币视频app端) - - [判断视频是否被投币(双端)](#判断视频是否被投币双端) - - [收藏](#收藏) - - [收藏视频(双端)](#收藏视频双端) - - [判断视频是否被收藏(双端)](#判断视频是否被收藏双端) - - [一键三连](#一键三连) - - [一键三连视频(web端)](#一键三连视频web端) - - [一键三连视频(APP端)](#一键三连视频app端) - - [分享](#分享) - - [分享视频 (Web端)](#分享视频-web端) - ---- - -## 点赞 - - - -### 点赞视频(web端) - -> https://api.bilibili.com/x/web-interface/archive/like - -*请求方式:POST* - -认证方式:仅可Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------------ | ---------------------- | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| like | num | 操作方式 | 必要 | 1:点赞
2:取消赞 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
65004:取消点赞失败
65006:重复点赞 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -点赞视频`av79677524`/`BV1uJ411r7hL` - -avid方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/archive/like' \ ---data-urlencode 'aid=79677524' \ ---data-urlencode 'like=1' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/archive/like' \ ---data-urlencode 'bvid=BV1uJ411r7hL' \ ---data-urlencode 'like=1' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -### 点赞视频(APP端) - -> https://app.bilibili.com/x/v2/view/like - -*请求方式:POST* - -认证方式:仅可APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num | 稿件avid | 必要 | | -| like | num | 操作方式 | 必要 | 0:点赞
1:取消赞 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
10003:不存在该稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------ | ---- | -| toast | str | 提示信息内容 | | - -**示例:** - -点赞视频`av79677524` - -```shell -curl 'https://app.bilibili.com/x/v2/view/like' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'aid=79677524' \ ---data-urlencode 'like=0' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "toast": "点赞收到!视频可能推荐哦" - } -} -``` - -
- -### 判断视频是否被点赞(双端) - -> https://api.bilibili.com/x/web-interface/archive/has/like - -*请求方式:GET* - -认证方式:APP或Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ------------ | ------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | num | 被点赞标志 | 0:未点赞
1:已点赞 | - -**示例:** - -视频`av39330059`/`BV1Bt411z799`的状态为已点赞 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/archive/has/like' \ ---data-urlencode 'aid=39330059' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl -G 'api.bilibili.com/x/web-interface/archive/has/like' \ ---data-urlencode 'bvid=BV1Bt411z799' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": 1 -} -``` - -
- -## 点踩 - -### 点踩视频(App端) - -> https://app.biliapi.net/x/v2/view/dislike - -*请求方式:POST* - -认证方式:仅可App - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -|------------|-----|-----------|-----|-----------------| -| access_key | str | APP Token | 必要 | | -| aid | num | 视频aid | 必要 | | -| dislike | num | 操作类型 | 必要 | 0:点踩
1:取消点踩 | - -**json回复:** - -| 字段 | 类型 | 内容 | 备注 | -|---------|-----|------|-----------------------------------------------------------------------------------------| -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
-404:啥都木有
65005:取消踩失败 未点踩过
65007:已踩过 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -点踩视频 - -```shell -curl -L -X POST 'https://app.biliapi.net/x/v2/view/dislike' \ --H 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'aid=xxx' \ ---data-urlencode 'dislike=0' -``` - -取消点踩 - -```shell -curl -L -X POST 'https://app.biliapi.net/x/v2/view/dislike' \ --H 'Content-Type: application/x-www-form-urlencoded' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'aid=xxx' \ ---data-urlencode 'dislike=1' -``` - -## 投币 - - - - -### 投币视频(web端) - -> https://api.bilibili.com/x/web-interface/coin/add - -*请求方式:POST* - -认证方式:仅可Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------------ | ------------ | --------------------------------------- | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| multiply | num | 投币数量 | 必要 | 上限为2 | -| select_like | num | 是否附加点赞 | 非必要 | 0:不点赞
1:同时点赞
默认为0 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34004:投币间隔太短
34005:超过投币上限 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ----------------------------------------------------- | -| like | bool | 是否点赞成功 | true:成功
false:失败
已赞过则附加点赞失败 | - -**示例:** - -为视频`av90671873`/`BV1N7411A7wC`投币2枚 - -avid方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/coin/add' \ ---data-urlencode 'aid=90671873' \ ---data-urlencode 'select_like=1' \ ---data-urlencode 'multiply=2' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/coin/add' \ ---data-urlencode 'bvid=BV1N7411A7wC' \ ---data-urlencode 'select_like=1' \ ---data-urlencode 'multiply=2' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "like": true - } -} -``` - -
- -### 投币视频(APP端) - -> https://app.bilibili.com/x/v2/view/coin/add - -*请求方式:POST* - -认证方式:仅可APP - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------ | ----------- | --------------------------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num | 稿件avid | 必要 | | -| multiply | num | 投币数量 | 必要 | 上限为2 | -| select_like | num | 附加点赞 | 非必要 | 0:不点赞
1:同时点赞
默认为0 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-102:账号被封停
-104:硬币不足
-400:请求错误
10003:不存在该稿件
34002:不能给自己投币
34003:非法的投币数量
34004:投币间隔太短
34005:超过投币上限 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------ | ----------------------------------------------------- | -| like | bool | 是否点赞成功 | true:成功
false:失败
已赞过则附加点赞失败 | - -为视频`av90671873`投币2枚 - -```shell -curl 'https://app.bilibili.com/x/v2/view/coin/add' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'aid=90671873' \ ---data-urlencode 'select_like=1' \ ---data-urlencode 'multiply=2' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "like": true - } -} -``` - -
- -### 判断视频是否被投币(双端) - -> https://api.bilibili.com/x/web-interface/archive/coins - -*请求方式:GET* - -认证方式:APP或Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ------------ | ------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | --------- | -| multiply | num | 投币枚数 | 未投币为0 | - -**示例:** - -视频`av37896701`/`BV18t411q7zz`的投币数为2枚 - -avid方式: - -```shell -curl -G 'api.bilibili.com/x/web-interface/archive/coins' \ ---data-urlencode 'aid=37896701' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl -G 'api.bilibili.com/x/web-interface/archive/coins' \ ---data-urlencode 'bvid=BV18t411q7zz' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "multiply": 2 - } -} -``` - -
- -## 收藏 - - - -### 收藏视频(双端) - -> https://api.bilibili.com/medialist/gateway/coll/resource/deal -> -> https://api.bilibili.com/x/v3/fav/resource/deal - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -鉴权方式:Cookie方式时需要验证referer为 `.bilibili.com`域名下 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------------- | ---- | ------------------------ | -------------- | ------------------------------ | -| access_key | str | APP登录Token | APP方式必要 | | -| rid | num | 稿件avid | 必要 | | -| type | num | 必须为2 | 必要 | | -| add_media_ids | nums | 需要加入的收藏夹mlid | 非必要 | 同时添加多个,用`,`(%2C)分隔 | -| del_media_ids | nums | 需要取消的收藏夹mlid | 非必要 | 同时取消多个,用`,`(%2C)分隔 | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
-403:访问权限不足
10003:不存在该稿件
11201:已经收藏过了
11202:已经取消收藏了
11203:达到收藏上限
72010017:参数错误 | -| message | str | 错误信息 | 正确为success | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | -------------------- | ----------------------- | -| prompt | bool | 是否为未关注用户收藏 | false:否
true:是 | - -**示例:** - -将视频`av49166435`添加到收藏夹`49166435`中 - -Cookie方式: - -```shell -curl 'https://api.bilibili.com/medialist/gateway/coll/resource/deal' \ ---data-urlencode 'rid=90671873' \ ---data-urlencode 'type=2' \ ---data-urlencode 'add_media_ids=49166435' \ ---data-urlencode 'del_media_ids=' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' \ --e 'https://www.bilibili.com' -``` - -APP方式: - -```shell -curl 'https://api.bilibili.com/medialist/gateway/coll/resource/deal' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'rid=90671873' \ ---data-urlencode 'type=2' \ ---data-urlencode 'add_media_ids=49166435' \ ---data-urlencode 'del_media_ids=' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "data": { - "prompt": false - }, - "message": "success" -} -``` - -
- -### 判断视频是否被收藏(双端) - -> https://api.bilibili.com/x/v2/fav/video/favoured - -*请求方式:GET* - -认证方式:APP或Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | -------- | ------------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num或str | 稿件avid或稿件bvid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-101:账号未登录 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -data 对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | -------- | ------------------------------- | -| count | num | 1 | 作用尚不明确 | -| favoured | bool | 是否收藏 | true:已收藏
false:未收藏 | - -**示例:** - -视频`av46281123`/`BV1Bb411H7Dv`的状态为已收藏 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/v2/fav/video/favoured' \ ---data-urlencode 'aid=46281123' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/v2/fav/video/favoured' \ ---data-urlencode 'aid=BV1Bb411H7Dv' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "count": 1, - "favoured": true - } -} -``` - -
- -## 一键三连 - - - -### 一键三连视频(web端) - -> https://api.bilibili.com/x/web-interface/archive/like/triple - -*请求方式:POST* - -认证方式:仅可Cookie(SESSDATA) - -同时点赞投币收藏视频,收藏于默认收藏夹中 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------------------------------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误
10003:不存在该稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------ | --------------------------- | -| like | bool | 是否点赞成功 | true:成功
false:失败 | -| coin | bool | 是否投币成功 | true:成功
false:失败 | -| fav | bool | 是否收藏成功 | true:成功
false:失败 | -| multiply | num | 投币枚数 | 默认为2 | - -**示例:** - -将视频`av91003840`/`BV1Wj411f79U`一键三连 - -avid方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/archive/like/triple' \ ---data-urlencode 'aid=91003840' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl 'https://api.bilibili.com/x/web-interface/archive/like/triple' \ ---data-urlencode 'bvid=BV1Wj411f79U' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "like": true, - "coin": true, - "fav": true, - "multiply": 2 - } -} -``` - -
- -### 一键三连视频(APP端) - -> https://app.bilibili.com/x/v2/view/like/triple - -*请求方式:POST* - -认证方式:仅可APP - -同时点赞投币收藏视频,收藏于默认收藏夹中 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------ | ----------- | ---- | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num | 稿件avid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | -------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-400:请求错误
10003:不存在该稿件 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------ | --------------------------- | -| like | bool | 是否点赞成功 | true:成功
false:失败 | -| coin | bool | 是否投币成功 | true:成功
false:失败 | -| fav | bool | 是否收藏成功 | true:成功
false:失败 | -| multiply | num | 投币枚数 | 默认为2 | - -**示例:** - -将视频`av91003840`一键三连 - -```shell -curl 'https://app.bilibili.com/x/v2/view/like/triple' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'aid=91003840' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "like": true, - "coin": true, - "fav": true, - "multiply": 2 - } -} -``` - -
- -## 分享 - -### 分享视频 (Web端) - -> https://api.bilibili.com/x/web-interface/share/add - -*请求方式:POST* - -认证方式 csrf token - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | ---------- | ------------------------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | num | 当前分享数 | | - - -**示例:** - -分享视频`BV1oA411776z` - -```shell -curl 'https://api.bilibili.com/x/web-interface/share/add' \ ---data-urlencode 'csrf=xxx' \ ---data-urlencode 'bvid=BV1oA411776z' -``` - -
-查看响应示例: - -```json -{ - "code":0, - "message":"0", - "ttl":1, - "data":19 -} -``` - -
diff --git a/video/online.md b/video/online.md deleted file mode 100644 index c4623c3..0000000 --- a/video/online.md +++ /dev/null @@ -1,146 +0,0 @@ -# 视频在线人数 - -- [获取视频在线人数_web端](#获取视频在线人数_web端) -- [获取视频在线人数_APP端](#获取视频在线人数_APP端) - -## 获取视频在线人数_web端 - -> https://api.bilibili.com/x/player/online/total - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ---------- | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| cid | num | 视频cid | 必要 | 用于选择目标分P | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | ----------------- | ----------- | -| total | str | 所有终端总计人数 | 例如`10万+` | -| count | str | web端实时在线人数 | | -| show_switch | obj | 数据显示控制 | | - -`data`中的`show_switch`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | --------------------- | ---- | -| total | bool | 展示所有终端总计人数 | | -| count | bool | 展示web端实时在线人数 | | - -**示例:** - -查询视频`av759949922`/`BV1y64y1q757`中1P(`392402545`)的在线人数 - -```shell -curl -G 'https://api.bilibili.com/x/player/online/total' \ ---data-urlencode 'aid=759949922' \ ---data-urlencode 'cid=392402545' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "total": "9.4万+", - "count": "50953", - "show_switch": { - "total": true, - "count": true - } - } -} -``` - -
- -## 获取视频在线人数_APP端 - -> https://app.bilibili.com/x/v2/view/video/online - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ----------- | --------------- | -| aid | num | 稿件avid | 必要 | | -| appkey | str | APP密钥 | APP方式必要 | | -| cid | num | 视频cid | 必要 | 用于选择目标分P | -| ts | num | 当前时间戳 | APP方式必要 | | -| sign | str | APP签名 | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ---------------- | ---- | -| online | obj | 所有终端总计人数 | | - -`data`中的`show_switch`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ---- | ---------------- | ----------------- | -| online | str | 所有终端总计人数 | 例如`10万+人在看` | - -**示例:** - -查询视频`av759949922`/`BV1y64y1q757`中1P(`392402545`)的在线人数 - -```shell -curl -G 'https://app.bilibili.com/x/v2/view/video/online' \ ---data-urlencode 'aid=759949922' \ ---data-urlencode 'appkey=1d8b6e7d45233436' \ ---data-urlencode 'cid=392402545' \ ---data-urlencode 'ts=0' \ ---data-urlencode 'sign=172dfd9941a01275eb93ce6246cd8556' -``` - -
-查看响应示例: - - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "online": { - "total_text": "8.8万+人在看" - } - } -} -``` - -
\ No newline at end of file diff --git a/video/pbp.md b/video/pbp.md deleted file mode 100644 index b6b34a3..0000000 --- a/video/pbp.md +++ /dev/null @@ -1,75 +0,0 @@ -# 高能进度条 - -高能进度条反应了在时域上,单位时间内弹幕发送量的变化趋势 - -并用曲线顶点表示在进度条上,实现可视化 - ---- - -- [获取弹幕趋势顶点列表](#获取弹幕趋势顶点列表) - ---- - -## 获取弹幕趋势顶点列表 - -> https://bvc.bilivideo.com/pbp/data - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| cid | num | 视频cid | 必要 | | -| aid | num | 稿件avid | 非必要 | | -| bvid | num | 稿件bvid | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------- | ---- | ------------ | ---------------------------- | -| step_sec | num | 采样间隔时间 | 单位为秒
由视频时长决定 | -| tagstr | str | ??? | 作用尚不明确 | -| events | obj | 数据本体 | | -| debug | str | 调试信息 | json字串 | - -`events`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | ---------- | ---- | -| default | array | 顶点值列表 | | - -`events`对象中的数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------- | -------------------------------- | -| 0 | num | 顶点1 | | -| n | num | 顶点(n+1) | 顶点个数由视频时长和采样时间决定 | -| …… | num | …… | …… | - -**示例:** - -获取视频`cid=3724723`的获取弹幕趋势顶点列表 - -```shell -curl -G 'https://api.bilibili.com/pbp/data' \ ---data-urlencode 'cid=3724723' -``` - -
-查看响应示例: - -```json -{ - "step_sec": 3, - "tagstr": "pbphide_0&client_&innersign_0&group_eg&nocheck_0&version_&pbphide_0", - "events": { - "default": [0, 8853, 8011, 8043.5, 8602.5, 9377, 18838, 9645, 10396, 10672.5, 10316.5, 9987, 9524, 9040, 9081, 8747, 8517, 8559.5, 8220.5, 8133, 7164, 5626, 4992, 4628.5, 4570.5, 4473.5, 4681.5, 4365.5, 3811.5, 3813, 3883, 4059.5, 4103.5, 4227.5, 4330.5, 4096.5, 4228.5, 4337, 5017, 5897, 6220, 5711.5, 4871.5, 4533, 4364, 3976, 4012, 3985, 3658, 3540, 3789, 3646, 3045, 2769, 2587, 2488.5, 2402.5, 2521.5, 2508.5, 2763.5, 2941.5, 3685.5, 3337.5, 2457, 2313, 2322.5, 2480.5, 2595, 2520, 2173.5, 2058.5, 2268.5, 2312.5, 2847, 1083, 1.5, 2.5, 0, 0, 2] - }, - "debug": "{\"max_time\":237,\"zero_points_ratio\":0.025,\"total_dm\":1000,\"event_count\":400147}" -} -``` - -
diff --git a/video/recommend.md b/video/recommend.md deleted file mode 100644 index d02e3c8..0000000 --- a/video/recommend.md +++ /dev/null @@ -1,294 +0,0 @@ -# 视频推荐 - -- [获取单视频推荐列表(web端)](#获取单视频推荐列表web端) - ---- - -## 获取单视频推荐列表(web端) - -> https://api.bilibili.com/x/web-interface/archive/related - -*请求方式:GET* - -最多获取40条推荐视频 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ---------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | 推荐列表 | | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 推荐视频1 | | -| n | obj | 推荐视频(n+1) | | -| …… | obj | …… | …… | -| 39 | obj | 推荐视频40 | | - -`data`数组中的对象: - -基本同「[获取视频详细信息(web端)](info.md#获取视频详细信息(web端))」中的data对象 - -**示例:** - -查询视频`av7`/`BV1xx411c7m9`的推荐视频列表 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/archive/related' \ ---data-urlencode 'aid=7' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/archive/related' \ ---data-urlencode 'bvid=BV1xx411c7m9' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "aid": 21322566, - "videos": 1, - "tid": 124, - "tname": "趣味科普人文", - "copyright": 1, - "pic": "http://i2.hdslb.com/bfs/archive/37f383ac35d386af1fc578108ad643e5952ff66a.jpg", - "title": "bilibili上市宣传视频", - "pubdate": 1522205992, - "ctime": 1522205994, - "desc": "今天晚上9点30分(北京时间),bilibili将在美国纳斯达克(NASDAQ)证券交易所挂牌上市。", - "state": 0, - "attribute": 16768, - "duration": 155, - "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": 208259, - "name": "陈睿", - "face": "http://i2.hdslb.com/bfs/face/8920e6741fc2808cce5b81bc27abdbda291655d3.png" - }, - "stat": { - "aid": 21322566, - "view": 2129084, - "danmaku": 51108, - "reply": 18119, - "favorite": 46524, - "coin": 85223, - "share": 16669, - "now_rank": 0, - "his_rank": 1, - "like": 95621, - "dislike": 0 - }, - "dynamic": "今天晚上9点30分(北京时间),bilibili将在美国纳斯达克(NASDAQ)证券交易所挂牌上市。", - "cid": 35063529, - "dimension": { - "width": 1920, - "height": 1080, - "rotate": 0 - }, - "bvid": "" - }, { - "aid": 271, - "videos": 1, - "tid": 53, - "tname": "", - "copyright": 1, - "pic": "http://i1.hdslb.com/bfs/archive/a5980672f3d03e8292148748a63de99cd45679d3.jpg", - "title": "弹幕测试专用", - "pubdate": 1249886475, - "ctime": 1497344798, - "desc": "给职人发射弹幕定位用.", - "state": 0, - "attribute": 32768, - "duration": 4558, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 2, - "name": "碧诗", - "face": "http://i1.hdslb.com/bfs/face/3e60b20604b6fdc7d081eb6a1ec72aa47c5a3964.jpg" - }, - "stat": { - "aid": 271, - "view": 2532266, - "danmaku": 699214, - "reply": 10224, - "favorite": 34927, - "coin": 9712, - "share": 3586, - "now_rank": 0, - "his_rank": 182, - "like": 27257, - "dislike": 0 - }, - "dynamic": "", - "cid": 3659795, - "dimension": { - "width": 0, - "height": 0, - "rotate": 0 - }, - "bvid": "" - }, { - "aid": 106, - "videos": 1, - "tid": 26, - "tname": "音MAD", - "copyright": 2, - "pic": "http://i2.hdslb.com/bfs/archive/34d8fdf08d1fe28c229dec2fd122815a1d012908.jpg", - "title": "最终鬼畜蓝蓝路", - "pubdate": 1350316631, - "ctime": 1497348932, - "desc": "sm2057168 把这个音mad的图腾和支柱从UP的怒火中搬出来重新立好,这是我所能做的最后的事情了。", - "state": 0, - "attribute": 32768, - "duration": 318, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 0, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 8839, - "name": "TSA", - "face": "http://i0.hdslb.com/bfs/face/0ef5daf622bf4789034b3c15147a45e11c48c9b3.jpg" - }, - "stat": { - "aid": 106, - "view": 7607070, - "danmaku": 212896, - "reply": 41521, - "favorite": 200705, - "coin": 51673, - "share": 38049, - "now_rank": 0, - "his_rank": 22, - "like": 148550, - "dislike": 0 - }, - "dynamic": "", - "cid": 3635863, - "dimension": { - "width": 0, - "height": 0, - "rotate": 0 - }, - "bvid": "" - }, { - "aid": 50025934, - "videos": 1, - "tid": 122, - "tname": "野生技术协会", - "copyright": 1, - "pic": "http://i0.hdslb.com/bfs/archive/af534399612085dbd916381b3377b18c765fab2d.png", - "title": "B站又一位Lv9的up诞生了", - "pubdate": 1555829289, - "ctime": 1555829289, - "desc": "要不关注一下?", - "state": 0, - "attribute": 16512, - "duration": 45, - "rights": { - "bp": 0, - "elec": 0, - "download": 0, - "movie": 0, - "pay": 0, - "hd5": 0, - "no_reprint": 1, - "autoplay": 1, - "ugc_pay": 0, - "is_cooperation": 0, - "ugc_pay_preview": 0, - "no_background": 0 - }, - "owner": { - "mid": 174161216, - "name": "血色红茶Xenomprph", - "face": "http://i1.hdslb.com/bfs/face/5a5ececb9b7a688751024c60063ba5853bed7e1e.jpg" - }, - "stat": { - "aid": 50025934, - "view": 159595, - "danmaku": 62, - "reply": 153, - "favorite": 301, - "coin": 1059, - "share": 55, - "now_rank": 0, - "his_rank": 0, - "like": 1219, - "dislike": 0 - }, - "dynamic": "", - "cid": 87577929, - "dimension": { - "width": 2560, - "height": 1440, - "rotate": 0 - }, - "bvid": "" - }, - ………… - ] -} -``` - -
diff --git a/video/report.md b/video/report.md deleted file mode 100644 index 9ae8f91..0000000 --- a/video/report.md +++ /dev/null @@ -1,149 +0,0 @@ -# 视频观看数据上报 - -- [上报观看进度(双端)](#上报观看进度双端) -- [上报视频播放心跳(web端)](#上报视频播放心跳web端) - ---- - -## 上报观看进度(双端) - -> https://api.bilibili.com/x/v2/history/report - -*请求方式:POST* - -认证方式:APP或Cookie(SESSDATA) - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ---------- | ---- | ------------------------ | -------------- | --------------------- | -| access_key | str | APP登录Token | APP方式必要 | | -| aid | num | 稿件avid | 必要 | | -| cid | num | 视频cid | 必要 | 用于识别分P | -| progress | num | 观看进度 | 非必要 | 单位为秒
默认为0 | -| platform | str | 平台标识 | 非必要 | 可为android | -| csrf | str | CSRF Token(位于cookie) | Cookie方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-101:账号未登录
-111:csrf校验失败
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -记录视频`av13662970`(`cid=126654047`)的观看记录位于`1248`秒 - -Cookie方式: - -```shell -curl 'https://api.bilibili.com/x/v2/history/report' \ ---data-urlencode 'aid=13662970' \ ---data-urlencode 'cid=126654047' \ ---data-urlencode 'progress=1248' \ ---data-urlencode 'platform=android' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -APP方式: - -```shell -curl 'https://api.bilibili.com/x/v2/history/report' \ ---data-urlencode 'access_key=xxx' \ ---data-urlencode 'aid=13662970' \ ---data-urlencode 'cid=126654047' \ ---data-urlencode 'progress=1248' \ ---data-urlencode 'platform=android' -``` - - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 上报视频播放心跳(web端) - -> https://api.bilibili.com/x/click-interface/web/heartbeat - -*请求方式:POST* - -认证方式:仅可Cookie(SESSDATA) - -默认间隔15秒一次 - -亦可记录播放历史 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ----------- | ---- | ------------------------ | ------------ | ------------------------------------------------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| cid | num | 视频cid | 非必要 | 用于识别分P | -| epid | num | 番剧epid | 非必要 | | -| sid | num | 番剧ssid | 非必要 | | -| mid | num | 当前用户mid | 非必要 | | -| played_time | num | 视频播放进度 | 非必要 | 单位为秒
默认为0 | -| realtime | num | 总计播放时间 | 非必要 | 单位为秒 | -| start_ts | num | 开始播放时刻 | 非必要 | 时间戳 | -| type | num | 视频类型 | 非必要 | 3:投稿视频
4:剧集
10:课程 | -| sub_type | num | 剧集副类型 | 非必要 | 当`type=4`时本参数有效
1:番剧
2:电影
3:纪录片
4:国创
5:电视剧
7:综艺 | -| dt | num | 2 | 非必要 | | -| play_type | num | 播放动作 | 非必要 | 0:播放中
1:开始播放
2:暂停
3:继续播放 | -| csrf | str | CSRF Token(位于cookie) | 非必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | --------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -上报一次视频`av2`/`BV1xx411c7mD`的心跳数据 - -```shell -curl 'api.bilibili.com/x/click-interface/web/heartbeat' \ ---data-urlencode 'aid=2' \ ---data-urlencode 'bvid=BV1xx411c7mD' \ ---data-urlencode 'cid=62131' \ ---data-urlencode 'played_time=60' \ ---data-urlencode 'realtime=60' \ ---data-urlencode 'start_ts=1592720840' \ ---data-urlencode 'type=3' \ ---data-urlencode 'dt=2' \ ---data-urlencode 'play_type=0' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
diff --git a/video/snapshot.md b/video/snapshot.md deleted file mode 100644 index a596c42..0000000 --- a/video/snapshot.md +++ /dev/null @@ -1,329 +0,0 @@ -# 视频快照 - -快照的截取时间根据视频画面变化程度决定,各视频不相同 - -截取时间表的时间根据视频画面变化程度决定,各每个视频不相同 - -截取时间表的时间和快照一一对应,并按照从左到右 从上到下的顺序排布 - ---- - -- [获取视频快照(web端)](#获取视频快照web端) -- [获取视频快照(APP端)](#获取视频快照app端) -- [获取视频快照(web端)(用于封面预览)](#获取视频快照web端用于封面预览) -- [图片拼版](#图片拼版) -- [bin格式截取时间表](#bin格式截取时间表) - ---- - -## 获取视频快照(web端) -> https://api.bilibili.com/x/player/videoshot - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------ | ------------ | ----------------------------------- | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | -| cid | num | 分P cid | 非必要 | 默认为1P | -| index | num | json数组截取时间表 | 非必要 | 1:需要
0:不需要
默认为0 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------ | -| code | num | 返回值 | 0:成功
40001:请求错误
40003:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | ---------------------- | --------- | -| pvdata | str | bin格式截取时间表url | | -| img_x_len | num | 每行图片数 | 一般为10 | -| img_y_len | num | 每列图片数 | 一般为10 | -| img_x_size | num | 每张图片长 | 一般为160 | -| img_y_size | num | 每张图片宽 | 一般为90 | -| image | array | 图片拼版 | | -| index | array | json数组格式截取时间表 | 无为空 | - -`data`中的`image`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | -------------------------- | -| 0 | str | 图片拼版1 url | | -| n | str | 图片拼版(n+1) url | 第一张拼版占满时延续第二张 | -| …… | str | …… | …… | - -`data`中的`index`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | --------------- | -| 0 | num | 恒为0 | | -| 1 | num | 图片1 截取时间 | 视频0秒截取时间 | -| n | num | 图片n 截取时间 | 单位为秒 | -| …… | num | …… | 单位为秒 | - -**示例:** - -获取视频`av26273789`/`BV1os411H7wm`的快照 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/videoshot' \ ---data-urlencode 'aid=26273789' \ ---data-urlencode 'index=1' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/videoshot' \ ---data-urlencode 'bvid=BV1os411H7wm' \ ---data-urlencode 'index=1' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "pvdata": "//i0.hdslb.com/bfs/videoshot/49075258.bin", - "img_x_len": 10, - "img_y_len": 10, - "img_x_size": 160, - "img_y_size": 90, - "image": ["//i0.hdslb.com/bfs/videoshot/49075258.jpg", "//i0.hdslb.com/bfs/videoshot/49075258-1.jpg"], - "index": [0, 0, 8, 14, 19, 25, 34, 40, 46, 56, 63, 70, 80, 87, 93, 100, 109, 117, 124, 133, 142, 148, 156, 164, 171, 179, 184, 192, 198, 206, 214, 223, 232, 239, 246, 254, 261, 269, 275, 283, 289, 299, 305, 310, 315, 322, 330, 339, 348, 358, 364, 371, 376, 382, 391, 404, 413, 421, 426, 434, 441, 452, 458, 463, 473, 479, 491, 497, 504, 514, 521, 528, 533, 540, 546, 552, 558, 567, 575, 586, 591, 602, 609, 615, 623, 629, 639, 647, 653, 658, 664, 670, 675, 684, 691, 698, 713, 724, 729, 737, 743, 754, 762, 772, 779, 784, 797, 803, 810, 817, 825, 834, 845, 851, 857, 867, 878, 888, 896, 903, 909, 914, 919, 928, 935, 944, 958, 970, 977, 988, 996, 1004, 1011, 1018, 1026, 1035, 1041, 1048, 1055, 1063, 1073, 1079, 1086, 1095, 1106, 1111, 1124, 1135, 1147, 1153, 1159, 1165, 1171, 1184, 1198, 1209, 1215, 1221, 1228, 1236, 1242, 1253, 1258, 1269, 1276, 1284, 1289, 1300, 1306, 1315, 1321, 1328, 1340, 1347, 1354, 1361, 1366, 1371, 1383, 1390, 1396, 1403, 1415] - } -} -``` - -
- -## 获取视频快照(APP端) - -> https://app.bilibili.com/x/v2/view/video/shot - -*请求方式:GET* - -鉴权方式:appkey - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------- | ----------- | ---- | -| aid | num | 稿件avid | 必要 | | -| appkey | str | APP密钥 | APP方式必要 | | -| cid | num | 分P cid | 必要 | | -| ts | num | 当前时间戳 | APP方式必要 | | -| sign | str | APP签名 | APP方式必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
10008:稿件的缩略图不存在 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | -------------------- | --------- | -| pvdata | str | bin格式截取时间表url | | -| img_x_len | num | 每行图片数 | 一般为10 | -| img_y_len | num | 每列图片数 | 一般为10 | -| img_x_size | num | 每张图片长 | 一般为160 | -| img_y_size | num | 每张图片宽 | 一般为90 | -| image | array | 图片拼版 | | - -`data`中的`image`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | -------------------------- | -| 0 | str | 图片拼版1 url | | -| n | str | 图片拼版(n+1) url | 第一张拼版占满时延续第二张 | -| …… | str | …… | …… | - -示例: - -获取视频`av26273789`(`cid=49075258`)的快照 - -```shell -curl -G 'https://app.bilibili.com/x/v2/view/video/shot' \ ---data-urlencode 'appkey=1d8b6e7d45233436' \ ---data-urlencode 'aid=26273789' \ ---data-urlencode 'cid=49075258' \ ---data-urlencode 'ts=0' \ ---data-urlencode 'sign=06c0a4f2ede21984313552bd9439db18' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "pvdata": "https://i0.hdslb.com/bfs/videoshot/49075258.bin", - "img_x_len": 10, - "img_y_len": 10, - "img_x_size": 160, - "img_y_size": 90, - "image": [ - "https://i0.hdslb.com/bfs/videoshot/49075258.jpg", - "https://i0.hdslb.com/bfs/videoshot/49075258-1.jpg" - ] - } -} -``` - -
- -## 获取视频快照(web端)(用于封面预览) - -> https://api.bilibili.com/pvideo - -*请求方式:GET* - -内容与「获取视频快照1」加参数index=1相同,但url带有转义,仅限第1P - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| aid | num | 稿件avid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------------------------- | -| code | num | 返回值 | 0:成功
40001:请求错误
-404:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ----- | ---------------------- | --------- | -| pvdata | str | bin格式截取时间表url | | -| img_x_len | num | 每行图片数 | 一般为10 | -| img_y_len | num | 每列图片数 | 一般为10 | -| img_x_size | num | 每张图片长 | 一般为160 | -| img_y_size | num | 每张图片宽 | 一般为90 | -| image | array | 图片拼版 | | -| index | array | json数组格式截取时间表 | 无为空 | - -`data`中的`image`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | -------------------------- | -| 0 | str | 图片拼版1 url | | -| n | str | 图片拼版(n+1) url | 第一张拼版占满时延续第二张 | -| …… | str | …… | …… | - -`data`中的`index`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | --------------- | -| 0 | num | 恒为0 | | -| 1 | num | 图片1 截取时间 | 视频0秒截取时间 | -| n | num | 图片n 截取时间 | 单位为秒 | -| …… | num | …… | 单位为秒 | - -**示例:** - -获取视频`av26273789`的快照 - -```shell -curl -G 'https://api.bilibili.com/pvideo' \ ---data-urlencode 'aid=26273789' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "pvdata": "\/\/i0.hdslb.com\/bfs\/videoshot\/49075258.bin", - "img_x_len": 10, - "img_y_len": 10, - "img_x_size": 160, - "img_y_size": 90, - "image": ["\/\/i0.hdslb.com\/bfs\/videoshot\/49075258.jpg", "\/\/i0.hdslb.com\/bfs\/videoshot\/49075258-1.jpg"], - "index": [0, 0, 8, 14, 19, 25, 34, 40, 46, 56, 63, 70, 80, 87, 93, 100, 109, 117, 124, 133, 142, 148, 156, 164, 171, 179, 184, 192, 198, 206, 214, 223, 232, 239, 246, 254, 261, 269, 275, 283, 289, 299, 305, 310, 315, 322, 330, 339, 348, 358, 364, 371, 376, 382, 391, 404, 413, 421, 426, 434, 441, 452, 458, 463, 473, 479, 491, 497, 504, 514, 521, 528, 533, 540, 546, 552, 558, 567, 575, 586, 591, 602, 609, 615, 623, 629, 639, 647, 653, 658, 664, 670, 675, 684, 691, 698, 713, 724, 729, 737, 743, 754, 762, 772, 779, 784, 797, 803, 810, 817, 825, 834, 845, 851, 857, 867, 878, 888, 896, 903, 909, 914, 919, 928, 935, 944, 958, 970, 977, 988, 996, 1004, 1011, 1018, 1026, 1035, 1041, 1048, 1055, 1063, 1073, 1079, 1086, 1095, 1106, 1111, 1124, 1135, 1147, 1153, 1159, 1165, 1171, 1184, 1198, 1209, 1215, 1221, 1228, 1236, 1242, 1253, 1258, 1269, 1276, 1284, 1289, 1300, 1306, 1315, 1321, 1328, 1340, 1347, 1354, 1361, 1366, 1371, 1383, 1390, 1396, 1403, 1415] - } -} -``` - -
- -## 图片拼版 - -以160x90像素为一张,横向10张,纵向10张,从左到右从上到下进行裁剪 - -图1为0s,图2为8s,图3为14s,以此类推…… - -示例拼版图片url:http://i0.hdslb.com/bfs/videoshot/49075258.jpg - -![](https://i0.hdslb.com/bfs/videoshot/49075258.jpg) - -## bin格式截取时间表 - -bin的内容为uint16数组(2Byte对齐),与json数组一一对应 - -第0项恒为0,从第1项开始作为截取图片的时间(秒) - -示例bin格式截取时间表:http://i0.hdslb.com/bfs/videoshot/49075258.bin - -hex内容如下: - -``` -00000000 00 00 00 00 00 08 00 0e 00 13 00 19 00 22 00 28 |.............".(| -00000010 00 2e 00 38 00 3f 00 46 00 50 00 57 00 5d 00 64 |...8.?.F.P.W.].d| -00000020 00 6d 00 75 00 7c 00 85 00 8e 00 94 00 9c 00 a4 |.m.u.|..........| -00000030 00 ab 00 b3 00 b8 00 c0 00 c6 00 ce 00 d6 00 df |................| -00000040 00 e8 00 ef 00 f6 00 fe 01 05 01 0d 01 13 01 1b |................| -00000050 01 21 01 2b 01 31 01 36 01 3b 01 42 01 4a 01 53 |.!.+.1.6.;.B.J.S| -00000060 01 5c 01 66 01 6c 01 73 01 78 01 7e 01 87 01 94 |.\.f.l.s.x.~....| -00000070 01 9d 01 a5 01 aa 01 b2 01 b9 01 c4 01 ca 01 cf |................| -00000080 01 d9 01 df 01 eb 01 f1 01 f8 02 02 02 09 02 10 |................| -00000090 02 15 02 1c 02 22 02 28 02 2e 02 37 02 3f 02 4a |.....".(...7.?.J| -000000a0 02 4f 02 5a 02 61 02 67 02 6f 02 75 02 7f 02 87 |.O.Z.a.g.o.u....| -000000b0 02 8d 02 92 02 98 02 9e 02 a3 02 ac 02 b3 02 ba |................| -000000c0 02 c9 02 d4 02 d9 02 e1 02 e7 02 f2 02 fa 03 04 |................| -000000d0 03 0b 03 10 03 1d 03 23 03 2a 03 31 03 39 03 42 |.......#.*.1.9.B| -000000e0 03 4d 03 53 03 59 03 63 03 6e 03 78 03 80 03 87 |.M.S.Y.c.n.x....| -000000f0 03 8d 03 92 03 97 03 a0 03 a7 03 b0 03 be 03 ca |................| -00000100 03 d1 03 dc 03 e4 03 ec 03 f3 03 fa 04 02 04 0b |................| -00000110 04 11 04 18 04 1f 04 27 04 31 04 37 04 3e 04 47 |.......'.1.7.>.G| -00000120 04 52 04 57 04 64 04 6f 04 7b 04 81 04 87 04 8d |.R.W.d.o.{......| -00000130 04 93 04 a0 04 ae 04 b9 04 bf 04 c5 04 cc 04 d4 |................| -00000140 04 da 04 e5 04 ea 04 f5 04 fc 05 04 05 09 05 14 |................| -00000150 05 1a 05 23 05 29 05 30 05 3c 05 43 05 4a 05 51 |...#.).0.<.C.J.Q| -00000160 05 56 05 5b 05 67 05 6e 05 74 05 7b 05 87 |.V.[.g.n.t.{..| -``` diff --git a/video/status_number.md b/video/status_number.md deleted file mode 100644 index 222c5a1..0000000 --- a/video/status_number.md +++ /dev/null @@ -1,202 +0,0 @@ -# 视频状态数 - -- [视频状态数(仅avid)](#视频状态数仅avid) -- [视频状态数(bvid/avid)](#视频状态数bvid/avid) - ---- - -## 视频状态数(仅avid) -> https://api.bilibili.com/archive_stat/stat - -*请求方式:GET* - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------ | ---- | -| aid | num | 稿件avid | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ----------------------------------------------- | -| code | num | 返回值 | 0:成功
40001:请求错误
40003:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------------------------ | ------------------------------ | -------------------- | -| aid | num | 稿件avid | | -| view | 正常:num
屏蔽:str | 正常:播放次数
屏蔽:"--" | | -| danmaku | num | 弹幕条数 | | -| reply | num | 评论条数 | | -| favorite | num | 收藏人数 | | -| coin | num | 投币枚数 | | -| share | num | 分享次数 | | -| now_rank | num | 0 | 作用尚不明确 | -| his_rank | num | 历史最高排行 | | -| like | num | 获赞次数 | | -| dislike | num | 0 | 作用尚不明确 | -| no_reprint | num | 禁止转载标志 | 0:无
1:禁止 | -| copyright | num | 版权标志 | 1:自制
2:转载 | - -**示例:** - -查询视频`av91572143`的状态数 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/archive_stat/stat' \ ---data-urlencode 'aid=91572143' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "aid": 91572143, - "view": 2236510, - "danmaku": 37856, - "reply": 5723, - "favorite": 131317, - "coin": 143389, - "share": 44598, - "now_rank": 0, - "his_rank": 4, - "like": 264314, - "dislike": 0, - "no_reprint": 1, - "copyright": 1 - } -} -``` - -
- -## 视频状态数(bvid/avid) - -> https://api.bilibili.com/x/web-interface/archive/stat - -*请求方式:GET* - -此接口请求头中UA值存在`python`字串,会返回-412错误 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ------------------------------------------------------------ | -| code | num | 返回值 | 0:成功
-400:请求错误
-412:请求被拦截
40003:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | obj | 信息本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------------------------ | ------------------------------ | -------------------- | -| aid | num | 稿件avid | | -| bvid | str | 稿件bvid | | -| view | 正常:num
屏蔽:str | 正常:播放次数
屏蔽:"--" | | -| danmaku | num | 弹幕条数 | | -| reply | num | 评论条数 | | -| favorite | num | 收藏人数 | | -| coin | num | 投币枚数 | | -| share | num | 分享次数 | | -| now_rank | num | 0 | 作用尚不明确 | -| his_rank | num | 历史最高排行 | | -| like | num | 获赞次数 | | -| dislike | num | 0 | 作用尚不明确 | -| no_reprint | num | 禁止转载标志 | 0:无
1:禁止 | -| copyright | num | 版权标志 | 1:自制
2:转载 | -| argue_msg | str | 警告信息 | 默认为空 | -| evaluation | str | 视频评分 | 默认为空 | - -**示例:** - -查询视频`av2271112`/`BV1es411D7sW`的状态数 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/archive/stat' \ ---data-urlencode 'aid=2271112' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/archive/stat' \ ---data-urlencode 'bvid=BV1es411D7sW' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "aid": 2271112, - "bvid": "BV1es411D7sW", - "view": 26408224, - "danmaku": 161919, - "reply": 52825, - "favorite": 892560, - "coin": 599649, - "share": 240573, - "like": 628592, - "now_rank": 0, - "his_rank": 4, - "no_reprint": 0, - "copyright": 1, - "argue_msg": "", - "evaluation": "" - } -} -``` - -
- -当UA为`2333python2333`时,则无法访问此接口: - -```shell -curl -G 'https://api.bilibili.com/x/web-interface/archive/stat' \ ---data-urlencode 'aid=2271112' \ --A '2333python2333' -``` - -
-查看响应示例: - -```json -{ - "code":-412, - "message":"请求被拦截", - "ttl":1, - "data":null -} -``` - -
diff --git a/video/tags.md b/video/tags.md deleted file mode 100644 index bd911bd..0000000 --- a/video/tags.md +++ /dev/null @@ -1,316 +0,0 @@ -# 视频TAG - -- [获取视频TAG信息](#获取视频TAG信息) -- [点赞&取消点赞视频TAG](#点赞&取消点赞视频TAG) -- [点踩&取消点踩视频TAG](#点踩&取消点踩视频TAG) - ---- - -## 获取视频TAG信息 - -> https://api.bilibili.com/x/tag/archive/tags - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | -------- | ------------ | ------------------ | -| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 | -| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ------ | -------- | ---------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | array | TAG列表 | 无TAG为空 | - -`data`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | -------------- | ---- | -| 0 | obj | 第1个TAG | | -| n | obj | 第(n+1)个TAG | | -| …… | obj | …… | …… | - -`data`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ---- | -------------- | ------------------------------------------------------------ | -| tag_id | num | tag_id | | -| tag_name | str | TAG名称 | | -| cover | str | TAG图片url | | -| head_cover | str | TAG页面头图url | | -| content | str | TAG介绍 | | -| short_content | str | TAG简介 | | -| type | num | ??? | | -| state | num | 0 | | -| ctime | num | 创建时间 | 时间戳 | -| count | obj | 状态数 | | -| is_atten | num | 是否关注 | 0:未关注
1:已关注
需要登录(Cookie)
未登录为0 | -| likes | num | 0 | 作用尚不明确 | -| hates | num | 0 | 作用尚不明确 | -| attribute | num | 0 | 作用尚不明确 | -| liked | num | 是否已经点赞 | 0:未点赞
1:已点赞
需要登录(Cookie)
未登录为0 | -| hated | num | 是否已经点踩 | 0:未点踩
1:已点踩
需要登录(Cookie)
未登录为0 | -| extra_attr | num | ? ? ? | | - -`data`数组中的对象中的`count`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ---- | ------------- | ------------ | -| view | num | 0 | 作用尚不明确 | -| use | num | 视频添加TAG数 | | -| atten | num | TAG关注 | | - -**示例:** - -查询视频`av89772773`/`BV1M741177Kg`的TAG - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/tag/archive/tags' \ ---data-urlencode 'aid=89772773' \ --b 'SESSDATA=xxx' -``` - -bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/tag/archive/tags' \ ---data-urlencode 'bvid=BV1M741177Kg' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": [{ - "tag_id": 12620189, - "tag_name": "异度侵入", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 1, - "state": 0, - "ctime": 1576235749, - "count": { - "view": 0, - "use": 6392, - "atten": 8938 - }, - "is_atten": 1, - "likes": 1, - "hates": 0, - "attribute": 0, - "liked": 0, - "hated": 0 - }, { - "tag_id": 7520816, - "tag_name": "bilibili新星计划", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 4, - "state": 0, - "ctime": 1529717850, - "count": { - "view": 0, - "use": 1967314, - "atten": 65082 - }, - "is_atten": 0, - "likes": 0, - "hates": 0, - "attribute": 0, - "liked": 0, - "hated": 0 - }, { - "tag_id": 707, - "tag_name": "ED", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 3, - "state": 0, - "ctime": 1436866637, - "count": { - "view": 0, - "use": 62646, - "atten": 75642 - }, - "is_atten": 1, - "likes": 0, - "hates": 0, - "attribute": 0, - "liked": 0, - "hated": 0 - }, { - "tag_id": 1394, - "tag_name": "动漫", - "cover": "http://i0.hdslb.com/bfs/tag/d08c5fe17ceb793e7ce95d9c67392743b33b46d0.jpg", - "head_cover": "", - "content": " “动漫”是动画和漫画的合称与缩写。在其他语言相当少用。随着现代传媒技术的发展,动画(animation或anime)和漫画(comics,manga;特别是故事性漫画)之间联系日趋紧密,两者常被合而为“动漫”。\n  由于漫画本身的发展形成了现代故事漫画的表现形式,将影视艺术融入漫画之中,使得漫画与动画更容易结合,影视艺术独特的地方在于它能通过镜头的推拉摇移和片段剪辑的蒙太奇技巧来表达想法和感受。漫画正是吸收了影视艺术的这两个特点。当讲述的故事越发复杂、人物越发丰富的时候,传统单线式叙事的方法就越行不通,蒙太奇的介入就成为一种需要了;当漫画家在传统表现手段中无法找到更合适的抒发感情的方法的时候,当读者需要作品有更强的冲击力和表现力的时候,各种镜头的灵活运用就成为一种必需了。一部现代故事漫画往往集远、中、近、特四种镜头于一身,漫画家往往能熟练地运用镜头的移动和各种蒙太奇剪接,对故事特定部分的情绪和氛围进行渲染。这就是现代故事漫画容易和动画结合的一个原因,因为它天生就像动画的分镜头剧本,读者在看漫画时如同在看一部电影。正是有着这样的相似性所以如今将动画和漫画合称为“动漫”。", - "short_content": "", - "type": 3, - "state": 0, - "ctime": 1436866637, - "count": { - "view": 0, - "use": 1134143, - "atten": 113030 - }, - "is_atten": 0, - "likes": 0, - "hates": 0, - "attribute": 0, - "liked": 0, - "hated": 0 - }, { - "tag_id": 13289329, - "tag_name": "异度侵入ed原图", - "cover": "", - "head_cover": "", - "content": "", - "short_content": "", - "type": 1, - "state": 0, - "ctime": 1581948411, - "count": { - "view": 0, - "use": 3, - "atten": 0 - }, - "is_atten": 0, - "likes": 0, - "hates": 0, - "attribute": 0, - "liked": 0, - "hated": 0 - }] -} -``` - -
- -## 点赞&取消点赞视频TAG - -> https://api.bilibili.com/x/tag/archive/like2 - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -重复请求为取消 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| aid | num | 稿件avid | 必要 | | -| tag_id | num | tag_id | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -为视频`av89772773`的TAG`12620189`点赞 - -```shell -curl 'https://api.bilibili.com/x/tag/archive/like2' \ ---data-urlencode 'aid=89772773' \ ---data-urlencode 'tag_id=12620189' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
- -## 点踩&取消点踩视频TAG - -> https://api.bilibili.com/x/tag/archive/hate2 - -*请求方式:POST* - -认证方式:Cookie(SESSDATA) - -重复访问为取消 - -**正文参数( application/x-www-form-urlencoded ):** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ------------------------ | ------ | ---- | -| aid | num | 稿件avid | 必要 | | -| tag_id | num | tag_id | 必要 | | -| csrf | str | CSRF Token(位于cookie) | 必要 | | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ---- | -------- | ---------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | - -**示例:** - -为视频`av89772773`的TAG`7520816`点踩 - -```shell -curl 'https://pi.bilibili.com/x/tag/archive/hate2' \ ---data-urlencode 'aid=89772773' \ ---data-urlencode 'tag_id=7520816' \ ---data-urlencode 'csrf=xxx' \ --b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1 -} -``` - -
diff --git a/video/video_zone.md b/video/video_zone.md deleted file mode 100644 index bf32ca6..0000000 --- a/video/video_zone.md +++ /dev/null @@ -1,318 +0,0 @@ -# 视频分区一览 - -用于通过稿件 avid 判断所在的分区,或推荐分区视频等....... - -亦可用于更深♂入了解B站的分区 - ---- - -## 动画 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| -------------- | ---------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 动画(主分区) | douga | 1 | | [/v/douga](https://www.bilibili.com/v/douga) | -| MAD·AMV | mad | 24 | 具有一定创作度的动/静画二次创作视频 | [/v/douga/mad](https://www.bilibili.com/v/douga/mad) | -| MMD·3D | mmd | 25 | 使用mmd(mikumikudance)和其他3d建模类软件制作的视频 | [/v/douga/mmd](https://www.bilibili.com/v/douga/mmd) | -| 短片·手书·配音 | voice | 47 | 追求个人特色和创意表达的自制动画短片、手书(绘)及acgn相关配音 | [/v/douga/voice](https://www.bilibili.com/v/douga/voice) | -| 手办·模玩 | garage_kit | 210 | 手办模玩的测评、改造或其他衍生内容 | [/v/douga/garage_kit](https://www.bilibili.com/v/douga/garage_kit) | -| 特摄 | tokusatsu | 86 | 特摄相关衍生视频 | [/v/douga/tokusatsu](https://www.bilibili.com/v/douga/tokusatsu) | -| 动漫杂谈 | acgntalks | 253 | 以谈话形式对ACGN文化圈进行的鉴赏、吐槽、评点、解说、推荐、科普等内容 | [/v/douga/acgntalks](https://www.bilibili.com/v/douga/acgntalks) | -| 综合 | other | 27 | 以动画及动画相关内容为素材,包括但不仅限于音频替换、恶搞改编、排行榜等内容 | [/v/douga/other](https://www.bilibili.com/v/douga/other) | - -## 番剧 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|---------|-------------|-----|----------------------------------------------|----------------------------------------------------------------------| -| 番剧(主分区) | anime | 13 | | [/anime](https://www.bilibili.com/anime) | -| 资讯 | information | 51 | 以动画/轻小说/漫画/杂志为主的资讯内容,PV/CM/特报/冒头/映像/预告 | [/v/anime/information](https://www.bilibili.com/v/anime/information) | -| 官方延伸 | offical | 152 | 以动画番剧及声优为主的EVENT/生放送/DRAMA/RADIO/LIVE/特典/冒头等 | [/v/anime/offical](https://www.bilibili.com/v/anime/offical) | -| 完结动画 | finish | 32 | 已完结TV/WEB动画及其独立系列,旧剧场版/OVA/SP/未放送 | [/v/anime/finish](https://www.bilibili.com/v/anime/finish) | -| 连载动画 | serial | 33 | 连载中TV/WEB动画,新剧场版/OVA/SP/未放送/小剧场 | [/v/anime/serial](https://www.bilibili.com/v/anime/serial) | - -## 国创 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|---------|-------------|-----|----------------------|------------------------------------------------------------------------------| -| 国创(主分区) | guochuang | 167 | | [/guochuang](https://www.bilibili.com/guochuang) | -| 国产动画 | chinese | 153 | 国产连载动画,国产完结动画 | [/v/guochuang/chinese](https://www.bilibili.com/v/guochuang/chinese) | -| 国产原创相关 | original | 168 | 以国产动画、漫画、小说为素材的二次创作 | [/v/guochuang/original](https://www.bilibili.com/v/guochuang/original) | -| 布袋戏 | puppetry | 169 | 布袋戏以及相关剪辑节目 | [/v/guochuang/puppetry](https://www.bilibili.com/v/guochuang/puppetry) | -| 资讯 | information | 170 | 原创国产动画、漫画的相关资讯、宣传节目等 | [/v/guochuang/information](https://www.bilibili.com/v/guochuang/information) | -| 动态漫·广播剧 | motioncomic | 195 | 国产动态漫画、有声漫画、广播剧 | [/v/guochuang/motioncomic](https://www.bilibili.com/v/guochuang/motioncomic) | - -## 音乐 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ---------------- | -------------- | ------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 音乐(主分区) | music | 3 | | [/v/music](https://www.bilibili.com/v/music) | -| 原创音乐 | original | 28 | 原创歌曲及纯音乐,包括改编、重编曲及remix | [/v/music/original](https://www.bilibili.com/v/music/original) | -| 翻唱 | cover | 31 | 对曲目的人声再演绎视频 | [/v/music/cover](https://www.bilibili.com/v/music/cover) | -| VOCALOID·UTAU | vocaloid | 30 | 以vocaloid等歌声合成引擎为基础,运用各类音源进行的创作 | [/v/music/vocaloid](https://www.bilibili.com/v/music/vocaloid) | -| 演奏 | perform | 59 | 乐器和非传统乐器器材的演奏作品 | [/v/music/perform](https://www.bilibili.com/v/music/perform) | -| MV | mv | 193 | 为音乐作品配合拍摄或制作的音乐录影带(music video),以及自制拍摄、剪辑、翻拍mv | [/v/music/mv](https://www.bilibili.com/v/music/mv) | -| 音乐现场 | live | 29 | 音乐表演的实况视频,包括官方/个人拍摄的综艺节目、音乐剧、音乐节、演唱会等 | [/v/music/live](https://www.bilibili.com/v/music/live) | -| 音乐综合 | other | 130 | 所有无法被收纳到其他音乐二级分区的音乐类视频 | [/v/music/other](https://www.bilibili.com/v/music/other) | -| 乐评盘点 | commentary | 243 | 音乐类新闻、盘点、点评、reaction、榜单、采访、幕后故事、唱片开箱等 | [/v/music/commentary](https://www.bilibili.com/v/music/commentary) | -| 音乐教学 | tutorial | 244 | 以音乐教学为目的的内容 | [/v/music/tutorial](https://www.bilibili.com/v/music/tutorial) | -| ~~电音~~(已下线) | ~~electronic~~ | ~~194~~ | ~~以电子合成器、音乐软体等产生的电子声响制作的音乐~~ | ~~/v/music/electronic~~ | - -## 舞蹈 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------ | ------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 舞蹈(主分区) | dance | 129 | | [/v/dance](https://www.bilibili.com/v/dance) | -| 宅舞 | otaku | 20 | 与acg相关的翻跳、原创舞蹈 | [/v/dance/otaku](https://www.bilibili.com/v/dance/otaku) | -| 舞蹈综合 | three_d | 154 | 收录无法定义到其他舞蹈子分区的舞蹈视频 | [/v/dance/three_d](https://www.bilibili.com/v/dance/three_d) | -| 舞蹈教程 | demo | 156 | 镜面慢速,动作分解,基础教程等具有教学意义的舞蹈视频 | [/v/dance/demo](https://www.bilibili.com/v/dance/demo) | -| 街舞 | hiphop | 198 | 收录街舞相关内容,包括赛事现场、舞室作品、个人翻跳、freestyle等 | [/v/dance/hiphop](https://www.bilibili.com/v/dance/hiphop) | -| 明星舞蹈 | star | 199 | 国内外明星发布的官方舞蹈及其翻跳内容 | [/v/dance/star](https://www.bilibili.com/v/dance/star) | -| 中国舞 | china | 200 | 传承中国艺术文化的舞蹈内容,包括古典舞、民族民间舞、汉唐舞、古风舞等 | [/v/dance/china](https://www.bilibili.com/v/dance/china) | - -## 游戏 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------ | ----------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 游戏(主分区) | game | 4 | | [/v/game](https://www.bilibili.com/v/game) | -| 单机游戏 | stand_alone | 17 | 以所有平台(pc、主机、移动端)的单机或联机游戏为主的视频内容,包括游戏预告、cg、实况解说及相关的评测、杂谈与视频剪辑等 | [/v/game/stand_alone](https://www.bilibili.com/v/game/stand_alone) | -| 电子竞技 | esports | 171 | 具有高对抗性的电子竞技游戏项目,其相关的赛事、实况、攻略、解说、短剧等视频。 | [/v/game/esports](https://www.bilibili.com/v/game/esports) | -| 手机游戏 | mobile | 172 | 以手机及平板设备为主要平台的游戏,其相关的实况、攻略、解说、短剧、演示等视频。 | [/v/game/mobile](https://www.bilibili.com/v/game/mobile) | -| 网络游戏 | online | 65 | 由网络运营商运营的多人在线游戏,以及电子竞技的相关游戏内容。包括赛事、攻略、实况、解说等相关视频 | [/v/game/online](https://www.bilibili.com/v/game/online) | -| 桌游棋牌 | board | 173 | 桌游、棋牌、卡牌对战等及其相关电子版游戏的实况、攻略、解说、演示等视频。 | [/v/game/board](https://www.bilibili.com/v/game/board) | -| GMV | gmv | 121 | 由游戏素材制作的mv视频。以游戏内容或cg为主制作的,具有一定创作程度的mv类型的视频 | [/v/game/gmv](https://www.bilibili.com/v/game/gmv) | -| 音游 | music | 136 | 各个平台上,通过配合音乐与节奏而进行的音乐类游戏视频 | [/v/game/music](https://www.bilibili.com/v/game/music) | -| Mugen | mugen | 19 | 以mugen引擎为平台制作、或与mugen相关的游戏视频 | [/v/game/mugen](https://www.bilibili.com/v/game/mugen) | - -## 知识 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ---------------------------------------------- | ----------------- | ------ | ------------------------------------------------------ | ------------------------------------------------------------ | -| 知识(主分区) | knowledge | 36 | | [/v/knowledge](https://www.bilibili.com/v/knowledge) | -| 科学科普 | science | 201 | 回答你的十万个为什么 | [/v/knowledge/science](https://www.bilibili.com/v/knowledge/science) | -| 社科·法律·心理(~~原社科人文、原趣味科普人文~~) | social_science | 124 | 基于社会科学、法学、心理学展开或个人观点输出的知识视频 | [/v/knowledge/social_science](https://www.bilibili.com/v/knowledge/social_science) | -| 人文历史 | humanity_history | 228 | 看看古今人物,聊聊历史过往,品品文学典籍 | [/v/knowledge/humanity_history](https://www.bilibili.com/v/knowledge/humanity_history) | -| 财经商业 | business | 207 | 说金融市场,谈宏观经济,一起畅聊商业故事 | [/v/knowledge/finance](https://www.bilibili.com/v/knowledge/finance) | -| 校园学习 | campus | 208 | 老师很有趣,学生也有才,我们一起搞学习 | [/v/knowledge/campus](https://www.bilibili.com/v/knowledge/campus) | -| 职业职场 | career | 209 | 职业分享、升级指南,一起成为最有料的职场人 | [/v/knowledge/career](https://www.bilibili.com/v/knowledge/career) | -| 设计·创意 | design | 229 | 天马行空,创意设计,都在这里 | [/v/knowledge/design](https://www.bilibili.com/v/knowledge/design) | -| 野生技术协会 | skill | 122 | 技能党集合,是时候展示真正的技术了 | [/v/knowledge/skill](https://www.bilibili.com/v/knowledge/skill) | -| ~~演讲·公开课~~(已下线) | ~~speech_course~~ | ~~39~~ | ~~涨知识的好地方,给爱学习的你~~ | ~~/v/technology/speech_course~~ | -| ~~星海~~(已下线) | ~~military~~ | ~~96~~ | ~~军事类内容的圣地~~ | ~~/v/technology/military~~ | -| ~~机械~~(已下线) | ~~mechanical~~ | ~~98~~ | ~~机械设备展示或制作视频~~ | ~~/v/technology/mechanical~~ | - -## 科技(~~原数码分区~~) - -新:旧: - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------------------------- | ------------------- | ------- | ---------------------------------------------------------- | ------------------------------------------------------------ | -| 科技(主分区) | tech | 188 | | [/v/tech](https://www.bilibili.com/v/tech) | -| 数码(~~原手机平板~~) | digital | 95 | 科技数码产品大全,一起来做发烧友 | [/v/tech/digital](https://www.bilibili.com/v/tech/digital) | -| 软件应用 | application | 230 | 超全软件应用指南 | [/v/tech/application](https://www.bilibili.com/v/tech/application) | -| 计算机技术 | computer_tech | 231 | 研究分析、教学演示、经验分享......有关计算机技术的都在这里 | [/v/tech/computer_tech](https://www.bilibili.com/v/tech/computer_tech) | -| 科工机械 (~~原工业·工程·机械~~) | industry | 232 | 前方高能,机甲重工即将出没 | [/v/tech/industry](https://www.bilibili.com/v/tech/industry) | -| 极客DIY | diy | 233 | 炫酷技能,极客文化,硬核技巧,准备好你的惊讶 | [/v/tech/diy](https://www.bilibili.com/v/tech/diy) | -| ~~电脑装机~~(已下线) | ~~pc~~ | ~~189~~ | ~~电脑、笔记本、装机配件、外设和软件教程等相关视频~~ | ~~/v/digital/pc~~ | -| ~~摄影摄像~~(已下线) | ~~photography~~ | ~~190~~ | ~~摄影摄像器材、拍摄剪辑技巧、拍摄作品分享等相关视频~~ | ~~/v/digital/photography~~ | -| ~~影音智能~~(已下线) | ~~intelligence_av~~ | ~~191~~ | ~~影音设备、智能产品等相关视频~~ | ~~/v/digital/intelligence_av~~ | - -## 运动 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------ | ------------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 运动(主分区) | sports | 234 | | [/v/sports](https://www.bilibili.com/v/sports) | -| 篮球 | basketball | 235 | 与篮球相关的视频,包括但不限于篮球赛事、教学、评述、剪辑、剧情等相关内容 | [/v/sports/basketball](https://www.bilibili.com/v/sports/basketball) | -| 足球 | football | 249 | 与足球相关的视频,包括但不限于足球赛事、教学、评述、剪辑、剧情等相关内容 | [/v/sports/football](https://www.bilibili.com/v/sports/football) | -| 健身 | aerobics | 164 | 与健身相关的视频,包括但不限于瑜伽、crossfit、健美、力量举、普拉提、街健等相关内容 | [/v/sports/aerobics](https://www.bilibili.com/v/sports/aerobics) | -| 竞技体育 | athletic | 236 | 与竞技体育相关的视频,包括但不限于乒乓、羽毛球、排球、赛车等竞技项目的赛事、评述、剪辑、剧情等相关内容 | [/v/sports/culture](https://www.bilibili.com/v/sports/culture) | -| 运动文化 | culture | 237 | 与运动文化相关的视频,包络但不限于球鞋、球衣、球星卡等运动衍生品的分享、解读,体育产业的分析、科普等相关内容 | [/v/sports/culture](https://www.bilibili.com/v/sports/culture) | -| 运动综合 | comprehensive | 238 | 与运动综合相关的视频,包括但不限于钓鱼、骑行、滑板等日常运动分享、教学、Vlog等相关内容 | [/v/sports/comprehensive](https://www.bilibili.com/v/sports/comprehensive) | - -## 汽车 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| -------------------- | ---------------- | ------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 汽车(主分区) | car | 223 | | [/v/car](https://www.bilibili.com/v/car) | -| 赛车 | racing | 245 | f1等汽车运动相关 | [/v/car/racing](https://www.bilibili.com/v/car/racing) | -| 改装玩车 | modifiedvehicle | 246 | 汽车文化及改装车相关内容,包括改装车、老车修复介绍、汽车聚会分享等内容 | [/v/car/modifiedvehicle](https://www.bilibili.com/v/car/modifiedvehicle) | -| 新能源车 | newenergyvehicle | 247 | 新能源汽车相关内容,包括电动汽车、混合动力汽车等车型种类,包含不限于新车资讯、试驾体验、专业评测、技术解读、知识科普等内容 | [/v/car/newenergyvehicle](https://www.bilibili.com/v/car/newenergyvehicle) | -| 房车 | touringcar | 248 | 房车及营地相关内容,包括不限于产品介绍、驾驶体验、房车生活和房车旅行等内容 | [/v/car/touringcar](https://www.bilibili.com/v/car/touringcar) | -| 摩托车 | motorcycle | 240 | 骑士们集合啦 | [/v/car/motorcycle](https://www.bilibili.com/v/car/motorcycle) | -| 购车攻略 | strategy | 227 | 丰富详实的购车建议和新车体验 | [/v/car/strategy](https://www.bilibili.com/v/car/strategy) | -| 汽车生活 | life | 176 | 分享汽车及出行相关的生活体验类视频 | [/v/car/life](https://www.bilibili.com/v/car/life) | -| ~~汽车文化~~(已下线) | ~~culture~~ | ~~224~~ | ~~车迷的精神圣地,包括汽车赛事、品牌历史、汽车改装、经典车型和汽车模型等~~ | ~~/v/car/culture~~ | -| ~~汽车极客~~(已下线) | ~~geek~~ | ~~225~~ | ~~汽车硬核达人聚集地,包括DIY造车、专业评测和技术知识分享~~ | ~~/v/car/geek~~ | -| ~~智能出行~~(已下线) | ~~smart~~ | ~~226~~ | ~~探索新能源汽车和未来智能出行的前沿阵地~~ | ~~/v/car/smart~~ | - -## 生活 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------------ | -------------- | ------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 生活(主分区) | life | 160 | | [/v/life](https://www.bilibili.com/v/life) | -| 搞笑 | funny | 138 | 各种沙雕有趣的搞笑剪辑,挑战,表演,配音等视频 | [/v/life/funny](https://www.bilibili.com/v/life/funny) | -| 出行 | travel | 250 | 为达到观光游览、休闲娱乐为目的的远途旅行、中近途户外生活、本地探店 | [/v/life/travel](https://www.bilibili.com/v/life/travel) | -| 三农 | rurallife | 251 | 分享美好农村生活 | [/v/life/rurallife](https://www.bilibili.com/v/life/rurallife) | -| 家居房产 | home | 239 | 与买房、装修、居家生活相关的分享 | [/v/life/home](https://www.bilibili.com/v/life/home) | -| 手工 | handmake | 161 | 手工制品的制作过程或成品展示、教程、测评类视频 | [/v/life/handmake](https://www.bilibili.com/v/life/handmake) | -| 绘画 | painting | 162 | 绘画过程或绘画教程,以及绘画相关的所有视频 | [/v/life/painting](https://www.bilibili.com/v/life/painting) | -| 日常 | daily | 21 | 记录日常生活,分享生活故事 | [/v/life/daily](https://www.bilibili.com/v/life/daily) | -| ~~美食圈~~(重定向) | ~~food~~ | ~~76~~ | ~~美食鉴赏&料理制作教程~~ | ~~/v/life/food~~ | -| ~~动物圈~~(重定向) | ~~animal~~ | ~~75~~ | ~~萌萌的动物都在这里哦~~ | ~~/v/life/animal~~ | -| ~~运动~~(重定向) | ~~sports~~ | ~~163~~ | ~~运动相关的记录、教程、装备评测和精彩瞬间剪辑视频~~ | ~~/v/life/sports~~ | -| ~~汽车~~(重定向) | ~~automobile~~ | ~~176~~ | ~~专业汽车资讯,分享车生活~~ | ~~/v/life/automobile~~ | -| ~~其他~~(已下线) | ~~other~~ | ~~174~~ | ~~对于分区归属不明的视频进行归纳整合的特定分区~~ | ~~/v/life/other~~ | - -## 美食 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| -------------------------------- | ----------- | ---- | -------------------------------- | ------------------------------------------------------------ | -| 美食(主分区) | food | 211 | | [/v/food](https://www.bilibili.com/v/food) | -| 美食制作(~~原[生活]->[美食圈]~~) | make | 76 | 学做人间美味,展示精湛厨艺 | [/v/food/make](https://www.bilibili.com/v/food/make) | -| 美食侦探 | detective | 212 | 寻找美味餐厅,发现街头美食 | [/v/food/detective](https://www.bilibili.com/v/food/detective) | -| 美食测评 | measurement | 213 | 吃货世界,品尝世间美味 | [/v/food/measurement](https://www.bilibili.com/v/food/measurement) | -| 田园美食 | rural | 214 | 品味乡野美食,寻找山与海的味道 | [/v/food/rural](https://www.bilibili.com/v/food/rural) | -| 美食记录 | record | 215 | 记录一日三餐,给生活添一点幸福感 | [/v/food/record](https://www.bilibili.com/v/food/record) | - -## 动物圈 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| -------------- | ---------------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 动物圈(主分区) | animal | 217 | | [/v/animal](https://www.bilibili.com/v/animal) | -| 喵星人 | cat | 218 | 喵喵喵喵喵 | [/v/animal/cat](https://www.bilibili.com/v/animal/cat) | -| 汪星人 | dog | 219 | 汪汪汪汪汪 | [/v/animal/dog](https://www.bilibili.com/v/animal/dog) | -| 大熊猫 | panda | 220 | 芝麻汤圆营业中 | [/v/animal/panda](https://www.bilibili.com/v/animal/panda) | -| 野生动物 | wild_animal | 221 | 内有“猛兽”出没 | [/v/animal/wild_animal](https://www.bilibili.com/v/animal/wild_animal) | -| 爬宠 | reptiles | 222 | 鳞甲有灵 | [/v/animal/reptiles](https://www.bilibili.com/v/animal/reptiles) | -| 动物综合 | animal_composite | 75 | 收录除上述子分区外,其余动物相关视频以及非动物主体或多个动物主体的动物相关延伸内容 | [/v/animal/animal_composite](https://www.bilibili.com/v/animal/animal_composite) | - -## 鬼畜 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------ | --------------- | ---- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 鬼畜(主分区) | kichiku | 119 | | [/v/kichiku](https://www.bilibili.com/v/kichiku) | -| 鬼畜调教 | guide | 22 | 使用素材在音频、画面上做一定处理,达到与bgm一定的同步感 | [/v/kichiku/guide](https://www.bilibili.com/v/kichiku/guide) | -| 音MAD | mad | 26 | 使用素材音频进行一定的二次创作来达到还原原曲的非商业性质稿件 | [/v/kichiku/mad/v/kichiku/mad](https://www.bilibili.com/v/kichiku/mad) | -| 人力VOCALOID | manual_vocaloid | 126 | 将人物或者角色的无伴奏素材进行人工调音,使其就像VOCALOID一样歌唱的技术 | [/v/kichiku/manual_vocaloid](https://www.bilibili.com/v/kichiku/manual_vocaloid) | -| 鬼畜剧场 | theatre | 216 | 使用素材进行人工剪辑编排的有剧情的作品 | [/v/kichiku/theatre](https://www.bilibili.com/v/kichiku/theatre) | -| 教程演示 | course | 127 | 鬼畜相关的科普和教程演示 | [/v/kichiku/course](https://www.bilibili.com/v/kichiku/course) | - -## 时尚 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------------ | ------------ | ------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| 时尚(主分区) | fashion | 155 | | [/v/fashion](https://www.bilibili.com/v/fashion) | -| 美妆护肤 | makeup | 157 | 彩妆护肤、美甲美发、仿妆、医美相关内容分享或产品测评 | [/v/fashion/makeup](https://www.bilibili.com/v/fashion/makeup) | -| 仿妆cos | cos | 252 | 对二次元、三次元人物角色进行模仿、还原、展示、演绎的内容 | [/v/fashion/cos](https://www.bilibili.com/v/fashion/cos) | -| 穿搭 | clothing | 158 | 穿搭风格、穿搭技巧的展示分享,涵盖衣服、鞋靴、箱包配件、配饰(帽子、钟表、珠宝首饰)等 | [/v/fashion/clothing](https://www.bilibili.com/v/fashion/clothing) | -| 时尚潮流 | catwalk | 159 | 时尚街拍、时装周、时尚大片,时尚品牌、潮流等行业相关记录及知识科普 | [/v/fashion/catwalk](https://www.bilibili.com/v/fashion/catwalk) | -| ~~健身~~(重定向) | ~~aerobics~~ | ~~164~~ | ~~器械、有氧、拉伸运动等,以达到强身健体、减肥瘦身、形体塑造目的~~ | ~~/v/fashion/aerobics~~ | -| ~~风尚标~~(已下线) | ~~trends~~ | ~~192~~ | ~~时尚明星专访、街拍、时尚购物相关知识科普~~ | ~~/v/fashion/trends~~ | - -## 资讯 - -**注:该分区无排名功能** - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|---------|-------------|-----|------------------------|----------------------------------------------------------------------------| -| 资讯(主分区) | information | 202 | | [/v/information](https://www.bilibili.com/v/information) | -| 热点 | hotspot | 203 | 全民关注的时政热门资讯 | [/v/information/hotspot](https://www.bilibili.com/v/information/hotspot) | -| 环球 | global | 204 | 全球范围内发生的具有重大影响力的事件动态 | [/v/information/global](https://www.bilibili.com/v/information/global) | -| 社会 | social | 205 | 日常生活的社会事件、社会问题、社会风貌的报道 | [/v/information/social](https://www.bilibili.com/v/information/social) | -| 综合 | multiple | 206 | 除上述领域外其它垂直领域的综合资讯 | [/v/information/multiple](https://www.bilibili.com/v/information/multiple) | - -## ~~广告~~(已下线) - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|-------------|--------|---------|-----|--------------| -| ~~广告(主分区)~~ | ~~ad~~ | ~~165~~ | | ~~/v/ad~~ | -| ~~广告~~(已下线) | ~~ad~~ | ~~166~~ | | ~~/v/ad/ad~~ | - -## 娱乐 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|------------------|-----------|---------|------------------------|--------------------------------------------------------------| -| 娱乐(主分区) | ent | 5 | | [/v/ent](https://www.bilibili.com/v/ent) | -| 综艺 | variety | 71 | 所有综艺相关,全部一手掌握! | [/v/ent/variety](https://www.bilibili.com/v/ent/variety) | -| 娱乐杂谈 | talker | 241 | 娱乐人物解读、娱乐热点点评、娱乐行业分析 | [/v/ent/talker](https://www.bilibili.com/v/ent/talker) | -| 粉丝创作 | fans | 242 | 粉丝向创作视频 | [/v/ent/fans](https://www.bilibili.com/v/ent/fans) | -| 明星综合 | celebrity | 137 | 娱乐圈动态、明星资讯相关 | [/v/ent/celebrity](https://www.bilibili.com/v/ent/celebrity) | -| ~~Korea相关~~(已下线) | ~~korea~~ | ~~131~~ | ~~Korea相关音乐、舞蹈、综艺等视频~~ | ~~/v/ent/korea~~ | - -## 影视 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -| ------------ | ------------ | ---- | -------------------------------- | ------------------------------------------------------------ | -| 影视(主分区) | cinephile | 181 | | [/v/cinephile](https://www.bilibili.com/v/cinephile) | -| 影视杂谈 | cinecism | 182 | 影视评论、解说、吐槽、科普等 | [/v/cinephile/cinecism](https://www.bilibili.com/v/cinephile/cinecism) | -| 影视剪辑 | montage | 183 | 对影视素材进行剪辑再创作的视频 | [/v/cinephile/montage](https://www.bilibili.com/v/cinephile/montage) | -| 小剧场 | shortfilm | 85 | 有场景、有剧情的演绎类内容 | [/v/cinephile/shortfilm](https://www.bilibili.com/v/cinephile/shortfilm) | -| 预告·资讯 | trailer_info | 184 | 影视类相关资讯,预告,花絮等视频 | [/v/cinephile/trailer_info](https://www.bilibili.com/v/cinephile/trailer_info) | - -## 纪录片 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|----------|-------------|-----|-----------------------------------------------|----------------------------------------------------------------------------| -| 纪录片(主分区) | documentary | 177 | | [/documentary](https://www.bilibili.com/documentary) | -| 人文·历史 | history | 37 | 除宣传片、影视剪辑外的,人文艺术历史纪录剧集或电影、预告、花絮、二创、5分钟以上纪录短片 | [/v/documentary/history](https://www.bilibili.com/v/documentary/history) | -| 科学·探索·自然 | science | 178 | 除演讲、网课、教程外的,科学探索自然纪录剧集或电影、预告、花絮、二创、5分钟以上纪录短片 | [/v/documentary/science](https://www.bilibili.com/v/documentary/science) | -| 军事 | military | 179 | 除时政军事新闻外的,军事纪录剧集或电影、预告、花絮、二创、5分钟以上纪录短片 | [/v/documentary/military](https://www.bilibili.com/v/documentary/military) | -| 社会·美食·旅行 | travel | 180 | 除VLOG、风光摄影外的,社会美食旅行纪录剧集或电影、预告、花絮、二创、5分钟以上纪录短片 | [/v/documentary/travel](https://www.bilibili.com/v/documentary/travel) | - -## 电影 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|---------|---------|-----|-----|--------------------------------------------------------------| -| 电影(主分区) | movie | 23 | | [/movie](https://www.bilibili.com/movie) | -| 华语电影 | chinese | 147 | | [/v/movie/chinese](https://www.bilibili.com/v/movie/chinese) | -| 欧美电影 | west | 145 | | [/v/movie/west](https://www.bilibili.com/v/movie/west) | -| 日本电影 | japan | 146 | | [/v/movie/japan](https://www.bilibili.com/v/movie/japan) | -| 其他国家 | movie | 83 | | [/v/movie/movie](https://www.bilibili.com/v/movie/movie) | - -## 电视剧 - - - -| 名称 | 代号 | tid | 简介 | url路由 | -|----------|----------|-----|-----|----------------------------------------------------------| -| 电视剧(主分区) | tv | 11 | | [/tv](https://www.bilibili.com/tv) | -| 国产剧 | mainland | 185 | | [/v/tv/mainland](https://www.bilibili.com/v/tv/mainland) | -| 海外剧 | overseas | 187 | | [/v/tv/overseas](https://www.bilibili.com/v/tv/overseas) | diff --git a/video/videostream_url.md b/video/videostream_url.md deleted file mode 100644 index 8dd4dae..0000000 --- a/video/videostream_url.md +++ /dev/null @@ -1,1288 +0,0 @@ -# 视频流URL - - - -视频为 DASH 或 MP4 流媒体,需调用取流 API 传参视频 id 获取 - -- [qn视频清晰度标识](#qn视频清晰度标识) -- [fnver视频流版本标识](#fnver视频流版本标识) -- [fnval视频流格式标识](#fnval视频流格式标识) -- [视频伴音音质代码](#视频伴音音质代码) -- [获取视频流地址_web端](#获取视频流地址_web端) -- [视频取流说明](#视频取流说明) - ---- - -## qn视频清晰度标识 - -**注:该值在 DASH 格式下无效,因为 DASH 格式会取到所有分辨率的流地址** - -| 值 | 含义 | 备注 | -| ---- | -------------- | ------------------------------------------------------------ | -| 6 | 240P 极速 | 仅 MP4 格式支持
仅`platform=html5`时有效 | -| 16 | 360P 流畅 | | -| 32 | 480P 清晰 | | -| 64 | 720P 高清 | WEB 端默认值
B站前端需要登录才能选择,但是直接发送请求可以不登录就拿到 720P 的取流地址
**无 720P 时则为 720P60** | -| 74 | 720P60 高帧率 | 登录认证 | -| 80 | 1080P 高清 | TV 端与 APP 端默认值
登录认证 | -| 112 | 1080P+ 高码率 | 大会员认证 | -| 116 | 1080P60 高帧率 | 大会员认证 | -| 120 | 4K 超清 | 需要`fnval&128=128`且`fourk=1`
大会员认证 | -| 125 | HDR 真彩色 | 仅支持 DASH 格式
需要`fnval&64=64`
大会员认证 | -| 126 | 杜比视界 | 仅支持 DASH 格式
需要`fnval&512=512`
大会员认证 | -| 127 | 8K 超高清 | 仅支持 DASH 格式
需要`fnval&1024=1024`
大会员认证 | - -例如:请求 1080P+ 的视频,则`qn=112` - -## fnver视频流版本标识 - -目前该值恒为 0,即`fnver=0` - -## fnval视频流格式标识 - -该代码为二进制属性位,如需组合功能需要使用`OR`运算结合一下数值 - -目前 FLV 格式已下线,应避免使用`fnval=0` - -| 值 | 含义 | 备注 | -| ---- | ------------------ | ------------------------------------------------------------ | -| ~~0~~ | ~~FLV 格式~~ | FLV 格式已下线
~~仅 H.264 编码
部分老视频存在分段现象
与 MP4、DASH 格式互斥~~ | -| 1 | MP4 格式 | 仅 H.264 编码
与 ~~FLV~~、DASH 格式互斥 | -| 16 | DASH 格式 | 与 MP4、~~FLV~~ 格式互斥 | -| 64 | 是否需求 HDR 视频 | 需求 DASH 格式
仅 H.265 编码
需要`qn=125`
大会员认证 | -| 128 | 是否需求 4K 分辨率 | 该值与`fourk`字段协同作用
需要`qn=120`
大会员认证 | -| 256 | 是否需求杜比音频 | 需求 DASH 格式
大会员认证 | -| 512 | 是否需求杜比视界 | 需求 DASH 格式
大会员认证 | -| 1024 | 是否需求 8K 分辨率 | 需求 DASH 格式
需要`qn=127`
大会员认证 | -| 2048 | 是否需求 AV1 编码 | 需求 DASH 格式 | - -例如:请求 DASH 格式,且需要 HDR 的视频流,则`fnval=16|64=80` - -## 视频编码代码 - -| 值 | 含义 | 备注 | -| ---- | ---------- | ---------------- | -| 7 | AVC 编码 | 8K 视频不支持该格式 | -| 12 | HEVC 编码 | | -| 13 | AV1 编码 | | - -## 视频伴音音质代码 - -| 值 | 含义 | -| ----- | ---- | -| 30216 | 64K | -| 30232 | 132K | -| 30280 | 192K | -| 30250 | 杜比全景声 | -| 30251 | Hi-Res无损 | - -## 获取视频流地址_web端 - -> https://api.bilibili.com/x/player/playurl - -*请求方式:GET* - -认证方式:Cookie(SESSDATA) - ---- - -关于视频流会员鉴权: - -- 获取 720P 及以上清晰度视频时需要登录(Cookie) - -- 获取高帧率(1080P60)/ 高码率(1080P+)/ HDR / 杜比视界 视频时需要有大会员的账号登录(Cookie) - -- 获取会员专属视频时需要登录(Cookie) - -- 部分特殊视频(如平台宣传片、活动视频等)不需要大会员账号认证 - ---- - -获取 url 有效时间为 120min,超时失效需要重新获取 - -~~部分视频会有分段,需要特别注意~~(FLV 格式已下线,不可能出现分段 - -若视频有分P,仅为单P视频的 url,换P则需传参对应 CID 重新获取 - -**url参数:** - -| 参数名 | 类型 | 内容 | 必要性 | 备注 | -| ------ | ---- | ---------------- | ------------ | ------------------------------------------------------------ | -| avid | num | 稿件 avid | 必要(可选) | avid 与 bvid 任选一个 | -| bvid | str | 稿件 bvid | 必要(可选) | avid 与 bvid 任选一个 | -| cid | num | 视频 cid | 必要 | | -| qn | num | 视频清晰度选择 | 非必要 | 未登录默认 32(480P),登录后默认 64(720P)
含义见 [上表](#qn视频清晰度标识)
**DASH 格式时无效** | -| fnval | num | 视频流格式标识 | 非必要 | 默认值为`1`(MP4 格式)
含义见 [上表](#fnval视频流格式标识) | -| fnver | num | 0 | 非必要 | | -| fourk | num | 是否允许 4K 视频 | 非必要 | 画质最高 1080P:0(默认)
画质最高 4K:1 | -| session | str | | 非必要 | 从视频播放页的 HTML 中获取 | -| otype | str | | 非必要 | 固定为`json` | -| type | str | | 非必要 | 目前为空 | -| platform | str | | 非必要 | pc:web播放(默认值,视频流存在 referer鉴权)
html5:移动端 HTML5 播放(仅支持 MP4 格式,清晰度最高 360P,无 referer 鉴权可以直接使用`video`标签播放) | - -**json回复:** - -根对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------- | ----------------------------- | -------- | ---------------------------------------------- | -| code | num | 返回值 | 0:成功
-400:请求错误
-404:无视频 | -| message | str | 错误信息 | 默认为0 | -| ttl | num | 1 | | -| data | 有效时:obj
无效时:null | 数据本体 | | - -`data`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------------ | ----- | ----------------------------------------------- | ----------------------------------------------- | -| from | str | `local`? | | -| result | str | `suee`? | | -| message | str | 空? | | -| quality | num | 清晰度标识 | 含义见 [上表](#qn视频清晰度标识) | -| format | str | 视频格式 | `mp4`/`flv` | -| timelength | num | 视频长度 | 单位为毫秒
不同分辨率 / 格式可能有略微差异 | -| accept_format | str | 支持的全部格式 | 每项用`,`分隔 | -| accept_description | array | 支持的清晰度列表(文字说明) | | -| accept_quality | array | 支持的清晰度列表(代码) | 含义见 [上表](#qn视频清晰度标识) | -| video_codecid | num | 默认选择视频流的编码id | 含义见 [上表](#视频编码代码) | -| seek_param | str | `start`? | | -| seek_type | str | `offset`(DASH / FLV)?
`second`(MP4)? | | -| durl | array | 视频分段流信息 | **注:仅 FLV / MP4 格式存在此字段** | -| dash | obj | DASH 流信息 | **注:仅 DASH 格式存在此字段** | -| support_formats | array | 支持格式的详细信息 | | -| high_format | null | (?) | | -| last_play_time | num | 上次播放进度 | 毫秒值 | -| last_play_cid | num | 上次播放分P的 cid | | - -`data`中的`accept_description`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | str | 分辨率名称1 | | -| n | str | 分辨率名称(n+1) | | -| …… | str | …… | | - -`data`中的`accept_quality`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | -------------------------------- | -| 0 | num | 分辨率代码1 | 含义见 [上表](#qn视频清晰度标识) | -| n | num | 分辨率代码(n+1) | | -| …… | num | …… | | - -`data`中的`support_formats`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | obj | 播放格式详细信息1 | | -| n | obj | 播放格式详细信息(n+1) | | -| …… | obj | …… | | - -`support_formats`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------ | ------------ | ---------------------------------- | -| quality | num | 视频清晰度代码 | 含义见 [上表](#qn视频清晰度标识) | -| format | str | 视频格式 | | -| new_description | str | 格式描述 | | -| display_desc | str | 格式描述 | | -| superscript | str | (?) | | -| codecs | array | 可用编码格式列表 | | - -`support_formats`中的`codecs`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | --------------- | ---- | -| 0 | str | 例:av01.0.13M.08.0.110.01.01.01.0 | 使用AV1编码 | -| 1 | str | 例子:avc1.640034 | 使用AVC编码 | -| 2 | str | 例子:hev1.1.6.L153.90 | 使用HEVC编码 | - -由于 MP4 / ~~FLV~~ 与 DASH 格式的返回结构不同,以下内容需要分类讨论`durl`与`dash`字段的内容 - - ---- - -### FLV/MP4格式 - -`data`中的`durl`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ----------------- | ------------------------- | -| 0 | obj | 视频分段 1 信息 | **目前由于 FLV 格式已经下线,不会存在分段现象,故无需关心** | -| n | obj | 视频分段 (n+1) 信息 | | -| …… | obj | …… | | - -`durl`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ------ | ------------ | ---------------------------------- | -| order | num | 视频分段序号 | 某些视频会分为多个片段(从1顺序增长) | -| length | num | 视频长度 | 单位为毫秒 | -| size | num | 视频大小 | 单位为 Byte | -| ahead | str | (?) | | -| vhead | str | (?) | | -| url | str | 默认流 URL | **注意 unicode 转义符**
有效时间为120min | -| backup_url | array | 备用视频流 | | - -`durl`数组中的对象中的`backup_url`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------------- | --------------------------------------------- | -| 0 | str | 备用流 URL 1 | **注意 unicode 转义符**
有效时间为120min | -| n | str | 备用流 URL (n+1) | | -| …… | str | …… | | - -**示例:** - -**视频无分段时:** - -获取视频`av99999999`/`BV1y7411Q7Eq`中的 1P(cid=`171776208`)的视频流 URL,清晰度为 1080P+,使用 FLV 方式获取 - -avid方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/playurl' \ - --data-urlencode 'avid=99999999' \ - --data-urlencode 'cid=171776208' \ - --data-urlencode 'qn=112' \ - --data-urlencode 'fnval=0' \ - --data-urlencode 'fnver=0' \ - --data-urlencode 'fourk=1' \ - -b 'SESSDATA=xxx' -``` - - bvid方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/playurl' \ - --data-urlencode 'bvid=BV1y7411Q7Eq' \ - --data-urlencode 'cid=171776208' \ - --data-urlencode 'qn=112' \ - --data-urlencode 'fnval=0' \ - --data-urlencode 'fnver=0' \ - --data-urlencode 'fourk=1' \ - -b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "from": "local", - "result": "suee", - "message": "", - "quality": 64, - "format": "flv720", - "timelength": 283801, - "accept_format": "hdflv2,flv,flv720,flv480,mp4", - "accept_description": [ - "高清 1080P+", - "高清 1080P", - "高清 720P", - "清晰 480P", - "流畅 360P" - ], - "accept_quality": [ - 112, - 80, - 64, - 32, - 16 - ], - "video_codecid": 7, - "seek_param": "start", - "seek_type": "offset", - "durl": [ - { - "order": 1, - "length": 283801, - "size": 70486426, - "ahead": "", - "vhead": "", - "url": "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-64.flv?e=ig8euxZM2rNcNbNMnwdVhwdlhbK3hwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1662808778&gen=playurlv2&os=cosbv&oi=3719461929&trid=31dc1934e77141bfbdf5ae88aca0b29fu&mid=0&platform=pc&upsig=a4d5f1713e1ba313041d034a958c2414&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=0,3&agrr=1&bw=249068&logo=80000000", - "backup_url": [ - "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-64.flv?e=ig8euxZM2rNcNbNMnwdVhwdlhbK3hwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1662808778&gen=playurlv2&os=cosbv&oi=3719461929&trid=31dc1934e77141bfbdf5ae88aca0b29fu&mid=0&platform=pc&upsig=a4d5f1713e1ba313041d034a958c2414&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&agrr=1&bw=249068&logo=40000000", - "https://upos-sz-mirrorcosb.bilivideo.com/upgcxcode/08/62/171776208/171776208_nb2-1-64.flv?e=ig8euxZM2rNcNbNMnwdVhwdlhbK3hwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1662808778&gen=playurlv2&os=cosbbv&oi=3719461929&trid=31dc1934e77141bfbdf5ae88aca0b29fu&mid=0&platform=pc&upsig=7b8a6924948864944815ec0748cc108f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&agrr=1&bw=249068&logo=40000000" - ] - } - ], - "support_formats": [ - { - "quality": 112, - "format": "hdflv2", - "new_description": "1080P 高码率", - "display_desc": "1080P", - "superscript": "高码率", - "codecs": null - }, - { - "quality": 80, - "format": "flv", - "new_description": "1080P 高清", - "display_desc": "1080P", - "superscript": "", - "codecs": null - }, - { - "quality": 64, - "format": "flv720", - "new_description": "720P 高清", - "display_desc": "720P", - "superscript": "", - "codecs": null - }, - { - "quality": 32, - "format": "flv480", - "new_description": "480P 清晰", - "display_desc": "480P", - "superscript": "", - "codecs": null - }, - { - "quality": 16, - "format": "mp4", - "new_description": "360P 流畅", - "display_desc": "360P", - "superscript": "", - "codecs": null - } - ], - "high_format": null, - "last_play_time": 0, - "last_play_cid": 0 - } -} -``` - -
- -**视频有分段时:** - -以下内容无参考价值,仅做历史保存 - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "from": "local", - "result": "suee", - "message": "", - "quality": 16, - "format": "flv360", - "timelength": 1437918, - "accept_format": "flv,flv720,flv480,flv360", - "accept_description": [ - "高清 1080P", - "高清 720P", - "清晰 480P", - "流畅 360P" - ], - "accept_quality": [ - 80, - 64, - 32, - 16 - ], - "video_codecid": 7, - "seek_param": "start", - "seek_type": "offset", - "durl": [ - { - "order": 1, - "length": 364417, - "size": 23018310, - "ahead": "", - "vhead": "", - "url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/98/24/872498/872498-1-15.flv?e=ig8euxZM2rNcNbRB7zUVhoM17WuBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=hwbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=f99db2dc9b8c65c245515b29b9ca8b16&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", - "backup_url": [ - "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-1-15.flv?e=ig8euxZM2rNcNbRB7zUVhoM17WuBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=74d0d62697364346f88d9c39430ce23c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" - ] - }, - { - "order": 2, - "length": 364395, - "size": 23694756, - "ahead": "", - "vhead": "", - "url": "http://upos-sz-mirrorcos.bilivideo.com/upgcxcode/98/24/872498/872498-2-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=cosbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=308c87c55f3325bdaac2a3e8632948ee&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", - "backup_url": [ - "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-2-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=eb8f043e0f36f82ab9c62fd002143438&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" - ] - }, - { - "order": 3, - "length": 352333, - "size": 22835734, - "ahead": "", - "vhead": "", - "url": "http://upos-sz-mirrorhw.bilivideo.com/upgcxcode/98/24/872498/872498-3-15.flv?e=ig8euxZM2rNcNbRjhwdVhoM17bdVhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=hwbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=2685b7649f4bb6eb90f986f125432d78&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", - "backup_url": [ - "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-3-15.flv?e=ig8euxZM2rNcNbRjhwdVhoM17bdVhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=922543bfb26184f901187bf9c39c69b2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" - ] - }, - { - "order": 4, - "length": 356773, - "size": 23466279, - "ahead": "", - "vhead": "", - "url": "http://upos-sz-mirrorkodo.bilivideo.com/upgcxcode/98/24/872498/872498-4-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=kodobv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=9d29707faf012797ef2b6de21523fcf2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=80000000", - "backup_url": [ - "http://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/98/24/872498/872498-4-15.flv?e=ig8euxZM2rNcNbRjhbUVhoM17bNBhwdEto8g5X10ugNcXBlqNxHxNEVE5XREto8KqJZHUa6m5J0SqE85tZvEuENvNo8g2ENvNo8i8o859r1qXg8xNEVE5XREto8GuFGv2U7SuxI72X6fTr859r1qXg8gNEVE5XREto8z5JZC2X2gkX5L5F1eTX1jkXlsTXHeux_f2o859IB_&uipk=5&nbs=1&deadline=1589874109&gen=playurl&os=ks3cbv&oi=1965551630&trid=ceac015d41e04a7b90ec972db710524fu&platform=pc&upsig=9ad4524d31c8d9695ae07b400b73ed29&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=293793435&logo=40000000" - ] - } - ] - } -} -``` - -
- ---- - -### DASH格式 - -`data`中的`dash`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------------- | ----- | ---------- | ------------ | -| duration | num | 视频长度 | 秒值 | -| minBufferTime | num | 1.5? | | -| min_buffer_time | num | 1.5? | | -| video | array | 视频流信息 | | -| audio | array | 伴音流信息 | | -| dolby | obj | 杜比全景声伴音信息 | | -| flac | obj | 无损音轨伴音信息 | | - -`dash`中的`video`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------------------- | ---- | -| 0 | obj | 视频码流 1 | 同一清晰度可拥有 H.264 / H.265 / AV1 多种码流
**HDR 仅支持 H.265** | -| n | obj | 视频码流(n+1) | | -| …… | obj | …… | | - -`dash`中的`audio`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------- | ---- | -| 0 | obj | 清晰度1 | | -| n | obj | 清晰度(n+1) | | -| …… | obj | …… | | - -`video`及`audio`数组中的对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ----- | --------------------- | ----------------------------------------------- | -| id | num | 音视频清晰度代码 | 参考上表
[qn视频清晰度标识](#qn视频清晰度标识)
[视频伴音音质代码](#视频伴音音质代码) | -| baseUrl | str | 默认流 URL | **注意 unicode 转义符**
有效时间为 120min | -| base_url | str | **同上** | | -| backupUrl | array | 备用流 URL | | -| backup_url | array | **同上** | | -| bandwidth | num | 所需最低带宽 | 单位为 Byte | -| mimeType | str | 格式 mimetype 类型 | | -| mime_type | str | **同上** | | -| codecs | str | 编码/音频类型 | eg:`avc1.640032` | -| width | num | 视频宽度 | 单位为像素
**仅视频流存在该字段** | -| height | num | 视频高度 | 单位为像素
**仅视频流存在该字段** | -| frameRate | str | 视频帧率 | **仅视频流存在该字段** | -| frame_rate | str | **同上** | | -| sar | str | Sample Aspect Ratio(单个像素的宽高比) | 音频流该值恒为空 | -| startWithSap | num | Stream Access Point(流媒体访问位点) | 音频流该值恒为空 | -| start_with_sap | num | **同上** | | -| SegmentBase | obj | 见下表 | url 对应 m4s 文件中,头部的位置
音频流该值恒为空 | -| segment_base | obj | **同上** | | -| codecid | num | 码流编码标识代码 | 含义见 [上表](视频编码代码)
音频流该值恒为`0` | - -`video`数组中的对象中的`backup_url`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ---------------- | --------------------------------------------- | -| 0 | str | 备用流 URL 1 | **注意 unicode 转义符**
有效时间为120min | -| n | str | 备用流 URL (n+1) | | -| …… | str | …… | | - -`video`数组中的对象中的`SegmentBase`对象: - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | ---------------------------- | ------------------------------------------------------------ | -| initialization | str | `${init_first}-${init_last}` | eg:`0-821`
ftyp (file type) box 加上 moov box 在 m4s 文件中的范围(单位为 bytes)
如 0-821 表示开头 820 个字节 | -| index_range | str | `${sidx_first}-${sidx_last}` | eg:`822-1309`
sidx (segment index) box 在 m4s 文件中的范围(单位为 bytes)
sidx 的核心是一个数组,记录了各关键帧的时间戳及其在文件中的位置,
其作用是索引 (拖进度条) | - -> 常规 MP4 文件的索引信息放在 moov box 中,其中包含每一帧 (不止是关键帧) 的一些信息。在 DASH 方式下,关键帧信息移到了 sidx box 里,其他的则分散到了各个 moof (movie fragment) box 中。 - -对这里的文件结构感兴趣的,可以参考标准文档 [ISO/IEC 14496-12](https://www.iso.org/standard/83102.html),如果不想那么深入的话可以百度「[MP4 文件结构](https://baike.baidu.com/item/mp4/9218018)」 - -`dash`中的`dolby`对象: - -此项为”杜比视界“视频独有 - -| 字段 | 类型 | 内容 | 备注 | -| -------------- | ---- | --------------------------------------------- | ------------------------------------------------------------ | -| type | num | 杜比音效类型 | 1:普通杜比音效
2:全景杜比音效 | -| audio | array | 杜比伴音流列表 | | - -`dolby`对象中的`audio`数组: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------------ | ----------------------------------------------- | -| 0 | obj | 杜比伴音流信息 | 同上文 DASH 流中`video`及`audio`数组中的对象 | - -`dash`中的`flac`对象: - -| 项 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------------ | ----------------------------------------------- | -| display | bool | 是否在播放器显示切换Hi-Res无损音轨按钮 | | -| audio | obj | 音频流信息 | 同上文 DASH 流中`video`及`audio`数组中的对象 | - -**示例:** - -获取视频`av969628065`/`BV1rp4y1e745`中的 1P(cid=`244954665`)的视频流 URL,使用 DASH 方式获取 - -avid 方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/playurl' \ - --data-urlencode 'avid=969628065' \ - --data-urlencode 'cid=244954665' \ - --data-urlencode 'qn=0' \ - --data-urlencode 'fnval=80' \ - --data-urlencode 'fnver=0' \ - --data-urlencode 'fourk=1' \ - -b 'SESSDATA=xxx' -``` - - bvid 方式: - -```shell -curl -G 'https://api.bilibili.com/x/player/playurl' \ - --data-urlencode 'bvid=BV1rp4y1e745' \ - --data-urlencode 'cid=244954665' \ - --data-urlencode 'qn=0' \ - --data-urlencode 'fnval=80' \ - --data-urlencode 'fnver=0' \ - --data-urlencode 'fourk=1' \ - -b 'SESSDATA=xxx' -``` - -
-查看响应示例: - -```json -{ - "code": 0, - "message": "0", - "ttl": 1, - "data": { - "from": "local", - "result": "suee", - "message": "", - "quality": 64, - "format": "flv720_p60", - "timelength": 346410, - "accept_format": "hdflv2,hdflv2,flv_p60,flv,flv720_p60,flv480,mp4", - "accept_description": [ - "真彩 HDR", - "超清 4K", - "高清 1080P60", - "高清 1080P", - "高清 720P60", - "清晰 480P", - "流畅 360P" - ], - "accept_quality": [ - 125, - 120, - 116, - 80, - 64, - 32, - 16 - ], - "video_codecid": 7, - "seek_param": "start", - "seek_type": "offset", - "dash": { - "duration": 347, - "minBufferTime": 1.5, - "min_buffer_time": 1.5, - "video": [ - { - "id": 125, - "baseUrl": "https://cn-jxjj-ct-01-01.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30125.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=bcache&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=f144133cabdfca56ae3cb14e208aebe1&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&cdnid=4261&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=1726751&logo=80000000", - "base_url": "https://cn-jxjj-ct-01-01.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30125.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=bcache&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=f144133cabdfca56ae3cb14e208aebe1&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&cdnid=4261&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=1726751&logo=80000000", - "backupUrl": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30125.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=adf8ac03ae8aaf0e18c0f4c3f0ff267c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=1726751&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30125.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=cffdcf6daf7f55c58bdb97737694363f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=1726751&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30125.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=adf8ac03ae8aaf0e18c0f4c3f0ff267c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=1726751&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30125.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=cffdcf6daf7f55c58bdb97737694363f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=1726751&logo=40000000" - ], - "bandwidth": 13799375, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.2.4.L156.90", - "width": 3840, - "height": 1920, - "frameRate": "125", - "frame_rate": "125", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1066", - "indexRange": "1067-1926" - }, - "segment_base": { - "initialization": "0-1066", - "index_range": "1067-1926" - }, - "codecid": 12 - }, - { - "id": 120, - "baseUrl": "https://cn-jxjj-ct-01-01.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30120.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=bcache&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=704c0a56e544a9e5ba42813960780304&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&cdnid=4261&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=2124046&logo=80000000", - "base_url": "https://cn-jxjj-ct-01-01.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30120.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=bcache&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=704c0a56e544a9e5ba42813960780304&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&cdnid=4261&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=2124046&logo=80000000", - "backupUrl": [ - "https://upos-sz-mirrorcoso1.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30120.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=coso1bv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=56ddf7293e93985ff0abdc8de74ddbea&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=2124046&logo=40000000", - "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30120.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=cosbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e35a421cf5209011191984cab0336ade&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=2124046&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirrorcoso1.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30120.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=coso1bv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=56ddf7293e93985ff0abdc8de74ddbea&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=2124046&logo=40000000", - "https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30120.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=cosbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e35a421cf5209011191984cab0336ade&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=2124046&logo=40000000" - ], - "bandwidth": 16974415, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "avc1.640034", - "width": 3840, - "height": 1920, - "frameRate": "111.111", - "frame_rate": "111.111", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-995", - "indexRange": "996-1855" - }, - "segment_base": { - "initialization": "0-995", - "index_range": "996-1855" - }, - "codecid": 7 - }, - { - "id": 120, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30121.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=3d82b0f3589f2bde1d020c19a050aca8&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=594581&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30121.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=3d82b0f3589f2bde1d020c19a050aca8&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=594581&logo=A0000001", - "backupUrl": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30121.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=05403d92efb1f978bf95b03375760ee2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=594581&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30121.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=21828db787701f87944fd56a27b0ed06&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=594581&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30121.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=05403d92efb1f978bf95b03375760ee2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=594581&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30121.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=21828db787701f87944fd56a27b0ed06&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=594581&logo=40000000" - ], - "bandwidth": 4751624, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.1.6.L156.90", - "width": 3840, - "height": 1920, - "frameRate": "111.111", - "frame_rate": "111.111", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1159", - "indexRange": "1160-2019" - }, - "segment_base": { - "initialization": "0-1159", - "index_range": "1160-2019" - }, - "codecid": 12 - }, - { - "id": 116, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30116.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=4437f5c280e855acb05fbbc32f895574&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=651301&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30116.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=4437f5c280e855acb05fbbc32f895574&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=651301&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30116.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=874e438aebbead2b5a379f6c57d5501d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=651301&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30116.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=874e438aebbead2b5a379f6c57d5501d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=651301&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30116.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=874e438aebbead2b5a379f6c57d5501d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=651301&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30116.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=874e438aebbead2b5a379f6c57d5501d&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=651301&logo=40000000" - ], - "bandwidth": 5204909, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "avc1.640032", - "width": 2160, - "height": 1080, - "frameRate": "62.500", - "frame_rate": "62.500", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-996", - "indexRange": "997-1856" - }, - "segment_base": { - "initialization": "0-996", - "index_range": "997-1856" - }, - "codecid": 7 - }, - { - "id": 116, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30106.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=12dc56f1d7f019826fb120c6e0be1670&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=129647&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30106.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=12dc56f1d7f019826fb120c6e0be1670&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=129647&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30106.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=bc2f8140b3ef558b5982b71f2cef2c47&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=129647&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30106.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=bc2f8140b3ef558b5982b71f2cef2c47&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=129647&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30106.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=bc2f8140b3ef558b5982b71f2cef2c47&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=129647&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30106.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=bc2f8140b3ef558b5982b71f2cef2c47&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=129647&logo=40000000" - ], - "bandwidth": 1036030, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.1.6.L150.90", - "width": 2160, - "height": 1080, - "frameRate": "58.824", - "frame_rate": "58.824", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1158", - "indexRange": "1159-2018" - }, - "segment_base": { - "initialization": "0-1158", - "index_range": "1159-2018" - }, - "codecid": 12 - }, - { - "id": 80, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=377af91003514e9563155a4c87d21fca&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=329117&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=377af91003514e9563155a4c87d21fca&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=329117&logo=A0000001", - "backupUrl": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=aa662c302ff974b8a7ff24f48688465a&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=329117&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c652d684ccbccee35432aa2c77f551d3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=329117&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=aa662c302ff974b8a7ff24f48688465a&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=329117&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30080.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c652d684ccbccee35432aa2c77f551d3&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=329117&logo=40000000" - ], - "bandwidth": 2630160, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "avc1.640032", - "width": 2160, - "height": 1080, - "frameRate": "29.412", - "frame_rate": "29.412", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-996", - "indexRange": "997-1856" - }, - "segment_base": { - "initialization": "0-996", - "index_range": "997-1856" - }, - "codecid": 7 - }, - { - "id": 80, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=64cffd4fb74b13f6bc0a2467a151e998&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=120853&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=64cffd4fb74b13f6bc0a2467a151e998&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=120853&logo=A0000001", - "backupUrl": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=d02def5348a0cc0c76eadf6c323c0cb2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=120853&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=da259f0651e828005700c6cc57d9b4b7&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=120853&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=d02def5348a0cc0c76eadf6c323c0cb2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=120853&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30077.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=da259f0651e828005700c6cc57d9b4b7&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=120853&logo=40000000" - ], - "bandwidth": 965710, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.1.6.L150.90", - "width": 2160, - "height": 1080, - "frameRate": "30.303", - "frame_rate": "30.303", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1158", - "indexRange": "1159-2018" - }, - "segment_base": { - "initialization": "0-1158", - "index_range": "1159-2018" - }, - "codecid": 12 - }, - { - "id": 64, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30074.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=046aefbf748f9a2cfb1f6319e35952ae&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=219847&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30074.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=046aefbf748f9a2cfb1f6319e35952ae&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=219847&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30074.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=028507c6f34713e9300e367ce0ef574f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=219847&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30074.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=028507c6f34713e9300e367ce0ef574f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=219847&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30074.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=028507c6f34713e9300e367ce0ef574f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=219847&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30074.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=028507c6f34713e9300e367ce0ef574f&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=219847&logo=40000000" - ], - "bandwidth": 1756920, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "avc1.640028", - "width": 1440, - "height": 720, - "frameRate": "62.500", - "frame_rate": "62.500", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-994", - "indexRange": "995-1854" - }, - "segment_base": { - "initialization": "0-994", - "index_range": "995-1854" - }, - "codecid": 7 - }, - { - "id": 64, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30076.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=764e4d4e7bc28c908a7da3ad741b2b53&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=126306&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30076.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=764e4d4e7bc28c908a7da3ad741b2b53&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=126306&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30076.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=1702a3c8c1e1a4d309e39b196465e903&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=126306&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30076.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=1702a3c8c1e1a4d309e39b196465e903&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=126306&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30076.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=1702a3c8c1e1a4d309e39b196465e903&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=126306&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30076.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=1702a3c8c1e1a4d309e39b196465e903&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=126306&logo=40000000" - ], - "bandwidth": 1009331, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.1.6.L120.90", - "width": 1440, - "height": 720, - "frameRate": "58.824", - "frame_rate": "58.824", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1159", - "indexRange": "1160-2019" - }, - "segment_base": { - "initialization": "0-1159", - "index_range": "1160-2019" - }, - "codecid": 12 - }, - { - "id": 32, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e251d9fa3d4369ace719b082eba78280&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=98889&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e251d9fa3d4369ace719b082eba78280&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=98889&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=5d48dd328f14b134c11d278c7d901794&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=98889&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=5d48dd328f14b134c11d278c7d901794&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=98889&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=5d48dd328f14b134c11d278c7d901794&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=98889&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30032.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=5d48dd328f14b134c11d278c7d901794&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=98889&logo=40000000" - ], - "bandwidth": 790280, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "avc1.64001F", - "width": 960, - "height": 480, - "frameRate": "29.412", - "frame_rate": "29.412", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-994", - "indexRange": "995-1854" - }, - "segment_base": { - "initialization": "0-994", - "index_range": "995-1854" - }, - "codecid": 7 - }, - { - "id": 32, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=6b4c4b1192085276a29f276a1acd1bc9&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=36592&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=6b4c4b1192085276a29f276a1acd1bc9&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=36592&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=ade18a577cc6f16f39396e9275939846&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=36592&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=ade18a577cc6f16f39396e9275939846&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=36592&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=ade18a577cc6f16f39396e9275939846&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=36592&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30033.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=ade18a577cc6f16f39396e9275939846&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=36592&logo=40000000" - ], - "bandwidth": 292405, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.1.6.L120.90", - "width": 960, - "height": 480, - "frameRate": "30.303", - "frame_rate": "30.303", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1157", - "indexRange": "1158-2017" - }, - "segment_base": { - "initialization": "0-1157", - "index_range": "1158-2017" - }, - "codecid": 12 - }, - { - "id": 16, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c6bf79e46e41fbf9e0792028448796b2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=25561&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9x2-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c6bf79e46e41fbf9e0792028448796b2&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=25561&logo=A0000001", - "backupUrl": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c2ac7e3dfb9ea6506b0f7b6abee76b21&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=25561&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=25d5ffbb285c281922818dfce1c46351&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=25561&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c2ac7e3dfb9ea6506b0f7b6abee76b21&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=25561&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9x2-1-30011.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=25d5ffbb285c281922818dfce1c46351&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=25561&logo=40000000" - ], - "bandwidth": 204255, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "hev1.1.6.L120.90", - "width": 720, - "height": 360, - "frameRate": "30.303", - "frame_rate": "30.303", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1157", - "indexRange": "1158-2017" - }, - "segment_base": { - "initialization": "0-1157", - "index_range": "1158-2017" - }, - "codecid": 12 - }, - { - "id": 16, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=84e198e866f75a6eda22a54e869c9c19&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=44249&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=84e198e866f75a6eda22a54e869c9c19&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=44249&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=3fc57769d6f587c3c62db6406b2dea71&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=44249&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=3fc57769d6f587c3c62db6406b2dea71&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=44249&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=3fc57769d6f587c3c62db6406b2dea71&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=44249&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30016.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=3fc57769d6f587c3c62db6406b2dea71&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=44249&logo=40000000" - ], - "bandwidth": 353623, - "mimeType": "video/mp4", - "mime_type": "video/mp4", - "codecs": "avc1.64001E", - "width": 720, - "height": 360, - "frameRate": "29.412", - "frame_rate": "29.412", - "sar": "1:1", - "startWithSap": 1, - "start_with_sap": 1, - "SegmentBase": { - "Initialization": "0-1003", - "indexRange": "1004-1863" - }, - "segment_base": { - "initialization": "0-1003", - "index_range": "1004-1863" - }, - "codecid": 7 - } - ], - "audio": [ - { - "id": 30280, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e983f8b4dc35aa8469dc0742d0371e19&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=41220&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e983f8b4dc35aa8469dc0742d0371e19&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=41220&logo=A0000001", - "backupUrl": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=71b057cb7399c7f7e94932446696c479&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=41220&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e876c0a1b414c68f1e8a8c986e9de72e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=41220&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-estgoss.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=upos&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=71b057cb7399c7f7e94932446696c479&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=41220&logo=40000000", - "https://upos-sz-mirrorali.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30280.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=alibv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=e876c0a1b414c68f1e8a8c986e9de72e&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=41220&logo=40000000" - ], - "bandwidth": 329376, - "mimeType": "audio/mp4", - "mime_type": "audio/mp4", - "codecs": "mp4a.40.2", - "width": 0, - "height": 0, - "frameRate": "", - "frame_rate": "", - "sar": "", - "startWithSap": 0, - "start_with_sap": 0, - "SegmentBase": { - "Initialization": "0-907", - "indexRange": "908-1779" - }, - "segment_base": { - "initialization": "0-907", - "index_range": "908-1779" - }, - "codecid": 0 - }, - { - "id": 30216, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c61129748923407b50d98357e2925ec5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=8419&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=c61129748923407b50d98357e2925ec5&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=8419&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=733c928a078ae018899ebf9de87eecf4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=8419&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=733c928a078ae018899ebf9de87eecf4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=8419&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=733c928a078ae018899ebf9de87eecf4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=8419&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30216.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=733c928a078ae018899ebf9de87eecf4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=8419&logo=40000000" - ], - "bandwidth": 67279, - "mimeType": "audio/mp4", - "mime_type": "audio/mp4", - "codecs": "mp4a.40.2", - "width": 0, - "height": 0, - "frameRate": "", - "frame_rate": "", - "sar": "", - "startWithSap": 0, - "start_with_sap": 0, - "SegmentBase": { - "Initialization": "0-941", - "indexRange": "942-1813" - }, - "segment_base": { - "initialization": "0-941", - "index_range": "942-1813" - }, - "codecid": 0 - }, - { - "id": 30232, - "baseUrl": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=6682acc0dc48f4ac7d397861c537feab&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=16615&logo=A0000001", - "base_url": "https://xy125x75x230x185xy.mcdn.bilivideo.cn:4483/upgcxcode/65/46/244954665/244954665_f9-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=mcdn&oi=606633952&trid=000077eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=6682acc0dc48f4ac7d397861c537feab&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&mcdnid=1002708&bvc=vod&nettype=0&orderid=0,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=16615&logo=A0000001", - "backupUrl": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=80a5d0e507dddbe424c2394593bd9324&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=16615&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=80a5d0e507dddbe424c2394593bd9324&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=16615&logo=40000000" - ], - "backup_url": [ - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=80a5d0e507dddbe424c2394593bd9324&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=16615&logo=40000000", - "https://upos-sz-mirror08ct.bilivideo.com/upgcxcode/65/46/244954665/244954665_f9-1-30232.m4s?e=ig8euxZM2rNcNbdlhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1674133321&gen=playurlv2&os=08ctbv&oi=606633952&trid=77eca41ddc4a4dc6926e971dfacc597cu&mid=293793435&platform=pc&upsig=80a5d0e507dddbe424c2394593bd9324&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&buvid=EC1BD8EA-88F6-4951-BF27-2CFE3450C78F167646infoc&build=0&agrr=0&bw=16615&logo=40000000" - ], - "bandwidth": 132768, - "mimeType": "audio/mp4", - "mime_type": "audio/mp4", - "codecs": "mp4a.40.2", - "width": 0, - "height": 0, - "frameRate": "", - "frame_rate": "", - "sar": "", - "startWithSap": 0, - "start_with_sap": 0, - "SegmentBase": { - "Initialization": "0-907", - "indexRange": "908-1779" - }, - "segment_base": { - "initialization": "0-907", - "index_range": "908-1779" - }, - "codecid": 0 - } - ], - "dolby": { - "type": 0, - "audio": null - }, - "flac": null - }, - "support_formats": [ - { - "quality": 125, - "format": "hdflv2", - "new_description": "HDR 真彩", - "display_desc": "HDR", - "superscript": "", - "codecs": [ - "hev1.2.4.L156.90" - ] - }, - { - "quality": 120, - "format": "hdflv2", - "new_description": "4K 超清", - "display_desc": "4K", - "superscript": "", - "codecs": [ - "avc1.640034", - "hev1.1.6.L156.90" - ] - }, - { - "quality": 116, - "format": "flv_p60", - "new_description": "1080P 60帧", - "display_desc": "1080P", - "superscript": "60帧", - "codecs": [ - "avc1.640032", - "hev1.1.6.L150.90" - ] - }, - { - "quality": 80, - "format": "flv", - "new_description": "1080P 高清", - "display_desc": "1080P", - "superscript": "", - "codecs": [ - "avc1.640032", - "hev1.1.6.L150.90" - ] - }, - { - "quality": 64, - "format": "flv720_p60", - "new_description": "720P 60帧", - "display_desc": "720P", - "superscript": "60帧", - "codecs": [ - "avc1.640028", - "hev1.1.6.L120.90" - ] - }, - { - "quality": 32, - "format": "flv480", - "new_description": "480P 清晰", - "display_desc": "480P", - "superscript": "", - "codecs": [ - "avc1.64001F", - "hev1.1.6.L120.90" - ] - }, - { - "quality": 16, - "format": "mp4", - "new_description": "360P 流畅", - "display_desc": "360P", - "superscript": "", - "codecs": [ - "avc1.64001E", - "hev1.1.6.L120.90" - ] - } - ], - "high_format": null, - "last_play_time": 0, - "last_play_cid": 0 - } -} -``` - -
- -## 视频取流说明 - -关于拉流: - -1. MP4 / ~~FLV~~ 格式仅需拉视频流,DASH 格式需同时拉视频与伴音流 -2. 如 DASH 格式需要杜比或无损的伴音,需要取对应`dolby`或`flac`字段中的流 -3. **注意 Unicode 转义符** - -~~关于分段:~~ - -~~FLV 格式可能产生分段情况,将`$.data.durl[1-n].url`或`$.data.durl[1-n].backup_url[0]`中的内容作为 URL 进行 GET 请求进行分段播放,如需下载需要合并~~(FLV 格式已下线,不会存在分段现象) - -关于鉴权: - -1. WEB 端取流需要验证防盗链,即`referer`为 `.bilibili.com`域名下且 UA 不能为空 -2. APP 端也需要验证防盗链,即 UA 需要含有`Mozilla/5.0 BiliDroid/*.*.* (bbcallen@gmail.com)`(*为版本) -3. 如`referer`或 UA 错误的情况会被判定为盗链,返回`403 Forbidden`故无法取流 -4. 若传`platform=html5`参数取流,则不会进行防盗链验证,即可通过 HTML 标签`