diff --git a/README.md b/README.md index e3d243c..916c092 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,6 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接 - [ ] [大会员中心](vip/center.md) - [ ] [大会员签到](vip/clockin.md) - [ ] [大会员操作](vip/action.md) - - [ ] [视频](video) - [x] [视频分区一览 (分区代码)](video/video_zone.md) - [x] [基本信息](video/info.md) @@ -171,11 +170,10 @@ B站 API 采用 C/S 结构,大多数接口为 REST API 和 gRPC,少部分接 - [ ] [动态基本信息](dynamic/basicInfo.md) - [ ] [发送 & 转载动态](dynamic/publish.md) - [ ] [根据关键字搜索用户(at 别人时的填充列表)](dynamic/atlist.md) - - [ ] [删除动态](dynamic/delete.md) + - [ ] [操作](dynamic/action.md) - [ ] 动态列表 - [x] [特定话题动态列表](/dynamic/tag_dynamics.md) - [ ] [动态内容](/dynamic/get_dynamic_detail.md) - - [ ] 操作 - [ ] [相簿](album) - [x] [基本信息](album/info.md) - [x] [相簿列表](album/list.md) diff --git a/dynamic/action.md b/dynamic/action.md new file mode 100644 index 0000000..9f45494 --- /dev/null +++ b/dynamic/action.md @@ -0,0 +1,109 @@ + + +# 动态操作 + +- [删除动态](#删除动态) +- [删除定时发送动态](#删除草稿) + +## 删除动态 + +> 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/basicInfo.md b/dynamic/basicInfo.md index cee7a10..ce7ef7c 100644 --- a/dynamic/basicInfo.md +++ b/dynamic/basicInfo.md @@ -8,10 +8,11 @@ --> # 动态基本信息 -- 动态基本信息 +- 单条动态基本信息 - [动态转发列表](#动态转发列表) - [动态评论列表](../comment/list.md) - [动态点赞列表](#动态点赞列表) +- [获取草稿箱(定时发送)列表](#获取草稿列表) ## 动态转发列表 @@ -1556,3 +1557,39 @@ curl -G 'https://api.vc.bilibili.com/dynamic_like/v1/dynamic_like/spec_item_like } } ``` + +## 获取草稿列表 + +> 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/delete.md b/dynamic/delete.md deleted file mode 100644 index aed21b3..0000000 --- a/dynamic/delete.md +++ /dev/null @@ -1,45 +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}} -``` - -
diff --git a/dynamic/publish.md b/dynamic/publish.md index 84c9279..a9d868e 100644 --- a/dynamic/publish.md +++ b/dynamic/publish.md @@ -1,8 +1,11 @@ # 发布动态 -+ [为图片动态上传图片](#为图片动态上传图片) - -+ [发表纯文本动态](#发表纯文本动态) +- [发布动态](#发布动态) + - [为图片动态上传图片](#为图片动态上传图片) + - [创建投票](#创建投票) + - [发表纯文本动态](#发表纯文本动态) + - [发表复杂动态](#发表复杂动态) + - [立即发布定时动态](#立即发布定时动态) --- @@ -72,6 +75,80 @@ curl 'https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs' \ +## 创建投票 + +> 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 @@ -98,7 +175,28 @@ curl 'https://api.bilibili.com/x/dynamic/feed/draw/upload_bfs' \ 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":用户实际经度数值}}} +{ + "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单个对象(注意用的时候是数组出现): @@ -207,3 +305,577 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ ``` + + + +## 发表复杂动态 + + + +> 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":{} +} +``` + +
+