From ad82eb03854553e230d449e4546cfdc97be17892 Mon Sep 17 00:00:00 2001 From: SessionHu <102411014+SessionHu@users.noreply.github.com> Date: Mon, 21 Jul 2025 12:54:02 +0800 Subject: [PATCH] feat(dynamic/publish.md): update create dyn close #1283 --- docs/dynamic/publish.md | 377 +++------------------------------------- 1 file changed, 28 insertions(+), 349 deletions(-) diff --git a/docs/dynamic/publish.md b/docs/dynamic/publish.md index f72871d..a86dbab 100644 --- a/docs/dynamic/publish.md +++ b/docs/dynamic/publish.md @@ -320,6 +320,8 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ **正文参数 (application/json):** +根对象: + | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | | dyn_req | object | 请求本体 | 必要 | | @@ -329,15 +331,15 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ | 参数名 | 类型 | 内容 | 必要性 | 备注 | | --- | --- | --- | --- | --- | | attach_card | object | 特殊卡片 | 非必要 | 如直播预约等 | -| content | object | 动态内容 | 必要 | | +| content | object | 动态内容 | 非必要 | | | meta | object | 元信息 | 非必要 | 大概是来源信息 | -| scene | number | 动态类型? | 必要 | 纯文本: 1
带图: 2 | -| pics | array | 携带图片 | 非必要 | 最多九个 | +| scene | number | 动态类型? | 必要 | 纯文本: 1 (实际同 2)
带图: 2
4: 转发 | +| pics | object[] | 携带图片 | 非必要 | 最多九个 | | topic | object | 话题 | 非必要 | | | option | object | 互动设置 | 非必要 | 没有此项时默认开启评论区 | | upload_id | string | 客户端生成的 | 非必要 | 内容为`发送人mid`+`当前秒级时间戳`+`四位随机整数`,中间用`_`隔开 | -`dyn_req` 对象的 `meta` 对象: +`dyn_req.meta` 对象: 大概是来源信息, 示例见下 @@ -350,41 +352,30 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ } ``` -`dyn_req` 对象的 `content` 对象: +`dyn_req.content` 对象: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | -------- | ----- | -------------------- | ------ | ---- | -| contents | array | 动态组件对象有序数组 | 必要 | | +| contents | object[] | 动态组件对象有序数组 | 必要 | | -`contents` 数组内每一个动态组件对象: +`dyn_req.content.contents[]` 对象: -```jsonc -{ - "raw_text": "ui上直接显示的字符串", - "type": 组件类型id, - "biz_id": "动态组件的内容id转字符串,比如投票id" -} -``` +| 参数名 | 类型 | 内容 | 必要性 | 备注 | +| ------ | ---- | ---- | ------ | ---- | +| raw_text | string | 文本 | 必要 | | +| type | number | 组件类型 id | 不必要 | 参见 [富文本节点类型](../opus/rich_text_nodes.md) | +| biz_id | string | 动态组件的内容id转字符串 | 不必要 | 参见 [富文本节点类型](../opus/rich_text_nodes.md) | -动态组件类型: - -| 组件名 | type | `biz_id`含义 | -| ------ | ---- | ------------ | -| 纯文本 | 1 | 空 | -| AT人 | 2 | AT人的mid | -| 表情 | 9 | 空 | -| 投票 | 4 | 投票id | - -`dyn_req` 对象的 `topic` 对象: +`dyn_req.topic` 对象: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------------- | ---- | ------- | ------ | -------------------------- | -| from_source | string | 来源id? | 必要 | 网页版直接选为 `dyn.web.list` | -| from_topic_id | number | 0 | 必要 | | +| from_source | string | 来源id? | 不必要 | 网页版直接选为 `dyn.web.list` | +| from_topic_id | number | 0 | 不必要 | | | id | number | 话题id | 必要 | | -| name | string | 话题名 | 必要 | | +| name | string | 话题名 | 不必要 | | -`dyn_req` 对象的 `pics` 数组的每一项对象: +`dyn_req.pics[]` 对象: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ---------- | ----- | ---------------- | ------ | ------------------------------------------------------------ | @@ -393,14 +384,14 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ | img_size | float | 图片文件大小(KB) | 非必要 | | | img_src | string | 图片 URL | 必要 | | -`dyn_req`对象的`option`对象: +`dyn_req.option` 对象: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ----------------- | ---- | ------------ | ------ | --------------- | | up_choose_comment | number | 精选评论flag | 非必要 | 1: 开启 | | close_comment | number | 关闭评论flag | 非必要 | 同上, 上二选一 | -`dyn_req`对象的`topic`对象: +`dyn_req.topic` 对象: | 参数名 | 类型 | 内容 | 必要性 | 备注 | | ------------- | ---- | ------------ | ------ | -------- | @@ -419,9 +410,7 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ | message | string | 错误信息 | 成功为空 | | data | object | 数据本体 | | -`data`对象: - -当Cookie中含有任意的`buvid3`时,比较干净简洁: +`data` 对象: | 字段 | 类型 | 内容 | 备注 | | --- | --- | --- | --- | @@ -429,326 +418,16 @@ curl 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create' \ | message | string | 错误信息 | | | dyn_id | number | 动态 id | | | dyn_id_str | string | 动态 id | 字符串格式 | -| dyn_type | number | 动态类型 | 不带图片: 4
带图片: 2
其他请参考 get_dynamic_detail.md | -| \_gt_ | number | 0 | | +| dyn_type | number | 动态类型 | 1: 转发
2: 图文 | +| share_window | object | 分享提示 | 当 Cookie 不存在 `buvid3` 时存在 | -**警告:下面的内容又乱又杂,而且绝大多数情况用不到,我建议大家用这个接口的时候随便带一个buvid3的cookie屏蔽掉它们算了.** +`data.share_window` 对象: -当Cookie中不含有`buvid3`时,较上述字段多出一个`fake_card`对象,大概是移动端用的卡片: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ---- | ---- | ------------ | -| fake_card | object | 0 | 又多又乱又杂 | - -`fake_card`对象: - -| 字段 | 类型 | 内容 | 备注 | -| --------- | ----- | ------------ | ------------------------------------------------------------ | -| card_type | number | 卡片类型 | 不带图片: 4
带图片: 2
其他请参考 [获取特定动态卡片信息](get_dynamic_detail.md) | -| modules | array | 卡片组件列表 | | -| extend | object | 其他杂项信息 | | - -`fake_card`对象的`modules`数组中每一项对象: - -| 字段 | 类型 | 内容 | 备注 | -| ----------- | ---- | -------- | -------------------------------------------- | -| module_type | number | 组件类型 | 1: 作者信息
3: 动态内容
其他有待发现 | -| ModuleItem | object | 卡片组件 | | - -`ModuleItem`对象与`module_type`对应关系: - -| module_type | `ModuleItem`含有的唯一一个key | 备注 | -| ----------- | ----------------------------- | ----------------------- | -| 1 | module_author | 作者信息 | -| 3 | module_desc | 动态内容 | -| 4 | module_dynamic | 携带图片等 | -| 9 | module_stat | 不明,貌似一直都是空对象 | - - `ModuleItem`内`module_author`: - -| 字段 | 类型 | 内容 | 备注 | -| ---------------- | ---- | -------------------------------- | ------------------------------------------------ | -| mid | number | 发送者mid | | -| ptime_label_text | string | 发送时间(人类可读形式)肯定是刚刚 | | -| author | object | 作者详细信息 | 请参考[用户基本信息](../user/info.md),不再赘述.. | - - `ModuleItem`内`module_desc`: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ----- | -------------- | ---- | -| desc | array | 动态组件列表 | | -| text | string | 动态纯文本形式 | | - -`module_desc`的`desc`数组: - -| 项 | 类型 | 备注 | -| ---- | ---- | ------------------- | -| 0 | object | 第0个动态组件 | -| n | object | 第n+1个动态组件组件 | -| ... | object | ... | - -`desc`数组的每一项: - -| 字段 | 类型 | 内容 | 备注 | -| ---- | ---- | ------------------------------------------------ | ----------------------------- | -| text | string | 该组件对外显示的纯文本 | 对应请求时该组件的`raw_text` | -| type | number | 组件类型 | 对应请求时该组件的`type` | -| rid | string | 组件内容的id,例如@人的mid | 根据需要出现,比如纯文本就没有 | -| uri | string | b站自定义`bilibili://`协议链接,用于@人点击跳转等 | 根据需要出现,比如纯文本就没有 | - - `ModuleItem`内`module_dynamic`: - -| 字段 | 类型 | 内容 | 备注 | -| ---------- | ---- | ------------------ | -------------------- | -| type | number | 不知道是什么的类型 | 5: 图片
其他未知 | -| ModuleItem | object | 组件? | 怎么还有套娃的? | - -当`module_dynamic`的`type`字段为`5`时: - -`module_dynamic`的`ModuleItem`有唯一key`dyn_draw`: - -| 字段 | 类型 | 内容 | 备注 | -| ----- | ----- | -------------------------------- | ------------------------------------------------ | -| items | array | 图片数组 | 与请求部分`dyn_req.pics`一致 | -| id | number | 这条图片动态所对应的相簿`doc_id` | 可以参考本文档的[相簿基本信息](../album/info.md) | - -`fake_card`的`extend`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------------- | ----- | ---------------------------------------------- | ---------------------------------------- | -| dyn_id_str | string | 动态id字符串形式 | | -| business_id | string | 未知 | 根据情况出现 | -| orif_img_url | string | 封面图url(如果有) | | -| share_type | string | 一般为3 | 未知 | -| share_scene | string | 一般为dynamic | 未知 | -| is_fast_share | bool | 一般为true | 未知 | -| dyn_type | number | 动态类型 | 不带图片: 4
带图片: 2
其他待探索 | -| uid | number | 发送者mid | | -| card_url | string | b站自定义`bilibili://`协议链接,指向该条动态 | | -| desc | array | 动态组件列表,重复了一遍`module_desc`的desc数组 | | -| reply | object | 评论区相关 | | - -`extend`的`reply`对象: - -| 字段 | 类型 | 内容 | 备注 | -| ------ | ----- | ------------------------------------------------- | ---- | -| uri | string | b站自定义`bilibili://`协议链接,指向该条动态评论区 | | -| params | array | 未知 | | +| 字段 | 类型 | 内容 | 备注 | +| ---- | ---- | ---- | ---- | +| main_title | string | `分享后会获得更多曝光,快去分享吧` | | **示例:** - -
-Cookie 不带 `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" - } - ] - } - } - } - } -} -``` - -
Cookie 带 `buvid3`: