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":{}
+}
+```
+
+
+