feat: rich text nodes for opus or dynamic

This commit is contained in:
SessionHu 2025-07-08 11:08:21 +08:00
parent ffba417582
commit 45ecbeda36
No known key found for this signature in database
GPG Key ID: 9E7E64C25FE3301A
3 changed files with 425 additions and 82 deletions

View File

@ -277,48 +277,9 @@
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| rich_text_nodes | array | 富文本节点列表 | [富文本节点类型](./dynamic_enum.md#富文本节点类型) |
| rich_text_nodes | array | 富文本节点列表 | [富文本节点类型](../opus/rich_text_nodes.md#富文本节点类型) |
| text | str | 动态的文字内容 | |
`data.items[n].modules.module_dynamic.desc.rich_text_nodes[o]`:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| orig_text | str | 原始文本 | |
| text | str | 替换后的文本 | |
| type | str | 节点类型 | [富文本节点类型](./dynamic_enum.md#富文本节点类型) |
| emoji | obj | 表情信息 | |
| jump_url | str | 跳转URL | |
| rid | str | 关联id | |
| goods | obj | 商品信息 | |
| icon_name | str | 图标名称 | `taobao` |
| pics | arr | 图片信息 | |
`data.items[n].modules.module_dynamic.desc.rich_text_nodes[o].emoji`:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| icon_url | str | 表情图片URL | |
| size | num | 表情尺寸 | `1` `2` |
| text | str | 表情的文字代码 | |
| type | num | 表情类型 | `1` `2` `3` |
`data.items[n].modules.module_dynamic.desc.rich_text_nodes[o].goods`:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| jump_url | str | 跳转URL | |
| type | num | `1` | |
`data.items[n].modules.module_dynamic.desc.rich_text_nodes[o].pics[p]`:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| height | num | 高度 | |
| size | num | 大小? | 单位为 K |
| src | str | 图片 URL | |
| width | num | 宽度 | |
`data.items[n].modules.module_dynamic.major`:
| 字段 | 类型 | 内容 | 备注 |
@ -584,28 +545,9 @@
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| rich_text_nodes | array | 富文本节点列表 | [富文本节点类型](./dynamic_enum.md#富文本节点类型) |
| rich_text_nodes | array | 富文本节点列表 | [富文本节点类型](../opus/rich_text_nodes.md#富文本节点类型) |
| text | str | 评论内容 | |
`data.items[n].modules.module_interaction.items[o].desc.rich_text_nodes`数组中的:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| orig_text | str | 原始文本 | |
| rid | str | 关联ID | 用户UID |
| text | str | 替换后文本 | |
| type | str | 富文本节点类型 | [富文本节点类型](./dynamic_enum.md#富文本节点类型) |
| emoji | obj | 表情信息 | |
`data.items[n].modules.module_interaction.items[o].desc.rich_text_nodes[n].emoji`:
| 字段 | 类型 | 内容 | 备注 |
| --- | --- | --- | --- |
| icon_url | str | 表情图片URL | |
| size | num | 表情尺寸 | `1` `2` |
| text | str | 表情的文字代码 | |
| type | num | 表情类型 | `1` `2` `3` |
`data.items[n].modules.module_fold`:
| 字段 | 类型 | 内容 | 备注 |

View File

@ -29,28 +29,7 @@
## 富文本节点类型
| 类型 | 说明 | 示例 |
|---------------------------------|------|-----------------------------------------------------------------|
| RICH_TEXT_NODE_TYPE_NONE | | |
| RICH_TEXT_NODE_TYPE_TEXT | 文字节点 | [721295772787671059](https://t.bilibili.com/721295772787671059) |
| RICH_TEXT_NODE_TYPE_AT | @用户 | [721296515797090324](https://t.bilibili.com/721296515797090324) |
| RICH_TEXT_NODE_TYPE_LOTTERY | 互动抽奖 | [720907383182721040](https://t.bilibili.com/720907383182721040) |
| RICH_TEXT_NODE_TYPE_VOTE | 投票 | [721203899129659408](https://t.bilibili.com/721203899129659408) |
| RICH_TEXT_NODE_TYPE_TOPIC | 话题 | [721188862459641879](https://t.bilibili.com/721188862459641879) |
| RICH_TEXT_NODE_TYPE_GOODS | 商品链接 | [721282703208480790](https://t.bilibili.com/721282703208480790) |
| RICH_TEXT_NODE_TYPE_BV | 视频链接 | [716752002311258165](https://t.bilibili.com/716752002311258165) |
| RICH_TEXT_NODE_TYPE_AV | | |
| RICH_TEXT_NODE_TYPE_EMOJI | 表情 | [716751108968546393](https://t.bilibili.com/716751108968546393) |
| RICH_TEXT_NODE_TYPE_USER | | |
| RICH_TEXT_NODE_TYPE_CV | | |
| RICH_TEXT_NODE_TYPE_VC | | |
| RICH_TEXT_NODE_TYPE_VIEW_PICTURE | 查看图片 | [1069394178937454662](https://t.bilibili.com/1069394178937454662) |
| RICH_TEXT_NODE_TYPE_WEB | 网页链接 | [716751027361022055](https://t.bilibili.com/716751027361022055) |
| RICH_TEXT_NODE_TYPE_TAOBAO | | |
| RICH_TEXT_NODE_TYPE_MAIL | 邮箱地址 | [721314095109767220](https://t.bilibili.com/721314095109767220) |
| RICH_TEXT_NODE_TYPE_OGV_SEASON | 剧集信息 | [721282046064853080](https://t.bilibili.com/721282046064853080) |
| RICH_TEXT_NODE_TYPE_OGV_EP | | |
| RICH_TEXT_NODE_TYPE_SEARCH_WORD | | |
参见 [图文富文本节点类型](../opus/rich_text_nodes.md#富文本节点类型)
## 作者类型

View File

@ -0,0 +1,422 @@
# 富文本节点
补充: 已知动态与图文接口获取结果的富文本节点与发送时的 `type` 等有关
## 富文本节点类型
| 类型 | 说明 | type | biz_id | 示例 |
| ---- | ---- | ---- | ------ | ---- |
| RICH_TEXT_NODE_TYPE_NONE | | | | |
| RICH_TEXT_NODE_TYPE_TEXT | 文字节点 | 1 | 空 | [106514206257210983](https://t.bilibili.com/106514206257210983) |
| RICH_TEXT_NODE_TYPE_AT | @用户 | 2 | 用户 mid (UID) | [721296515797090324](https://t.bilibili.com/721296515797090324) |
| RICH_TEXT_NODE_TYPE_LOTTERY | 互动抽奖 | 3 | 抽奖 id | [720907383182721040](https://t.bilibili.com/720907383182721040) |
| RICH_TEXT_NODE_TYPE_VOTE | 投票 | 4 | 投票 id | [721203899129659408](https://t.bilibili.com/721203899129659408) |
| RICH_TEXT_NODE_TYPE_TOPIC | 话题 | | | [721188862459641879](https://t.bilibili.com/721188862459641879) |
| RICH_TEXT_NODE_TYPE_GOODS | 商品链接 | | | [721282703208480790](https://t.bilibili.com/721282703208480790) |
| RICH_TEXT_NODE_TYPE_BV | 视频链接 | | | [716752002311258165](https://t.bilibili.com/716752002311258165) |
| RICH_TEXT_NODE_TYPE_AV | | | | |
| RICH_TEXT_NODE_TYPE_EMOJI | 表情 | 9 | 空 | [1069394178937454662](https://t.bilibili.com/1069394178937454662) |
| RICH_TEXT_NODE_TYPE_CV | 专栏 | | | |
| RICH_TEXT_NODE_TYPE_VIEW_PICTURE | 查看图片 | | | [1069394178937454662](https://t.bilibili.com/1069394178937454662) |
| RICH_TEXT_NODE_TYPE_WEB | 网页链接 | | | [716751027361022055](https://t.bilibili.com/716751027361022055) |
| RICH_TEXT_NODE_TYPE_TAOBAO | | | | |
| RICH_TEXT_NODE_TYPE_MAIL | 邮箱地址 | | | ~~721314095109767220~~ |
| RICH_TEXT_NODE_TYPE_OGV_SEASON | 剧集信息 | | | ~~721282046064853080~~ |
| RICH_TEXT_NODE_TYPE_OGV_EP | | | | |
## 富文本节点对象
### RICH_TEXT_NODE_TYPE_TEXT
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| orig_text | string | 原始文本 | |
| text | string | 显示文本 | 一般与 `orig_text` 内容相同 |
| type | string | `RICH_TEXT_NODE_TYPE_TEXT` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"orig_text": "【洛天依·共鸣宝石收藏家】设定也分享给大家~",
"text": "【洛天依·共鸣宝石收藏家】设定也分享给大家~",
"type": "RICH_TEXT_NODE_TYPE_TEXT"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-05-31T06:17:54.444957389Z -->
## RICH_TEXT_NODE_TYPE_AT
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| orig_text | string | 原始文本 | |
| rid | string | 用户 mid (UID) | |
| text | string | 显示文本 | 一般与 `orig_text` 内容相同 |
| type | string | `RICH_TEXT_NODE_TYPE_AT` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"orig_text": "@wuziqian211 ",
"rid": "425503913",
"text": "@wuziqian211 ",
"type": "RICH_TEXT_NODE_TYPE_AT"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-05-31T06:30:26.964891633Z -->
## RICH_TEXT_NODE_TYPE_LOTTERY
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| orig_text | string | 原始文本 | 一般为 `互动抽奖` |
| rid | string | 抽奖 id | |
| text | string | 显示文本 | 一般为 `互动抽奖` |
| type | string | `RICH_TEXT_NODE_TYPE_LOTTERY` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"orig_text": "互动抽奖",
"rid": "116067",
"text": "互动抽奖",
"type": "RICH_TEXT_NODE_TYPE_LOTTERY"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-05-31T06:36:33.119611702Z -->
## RICH_TEXT_NODE_TYPE_VOTE
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| orig_text | string | 原始文本 | |
| rid | string | 抽奖 id | |
| text | string | 显示文本 | 一般与 `orig_text` 一致 |
| type | string | `RICH_TEXT_NODE_TYPE_VOTE` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"orig_text": "次の文の ★ に入る最もよいものを一つ選びなさい。",
"rid": "3925886",
"text": "次の文の ★ に入る最もよいものを一つ選びなさい。",
"type": "RICH_TEXT_NODE_TYPE_VOTE"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-06-21T09:22:09.663974022Z -->
## RICH_TEXT_NODE_TYPE_TOPIC
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| jump_url | string | 跳转 URL | 无协议头 |
| orig_text | string | 原始文本 | |
| text | string | 显示文本 | 一般与 `orig_text` 一致 |
| type | string | `RICH_TEXT_NODE_TYPE_TOPIC ` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"jump_url": "//search.bilibili.com/all?keyword=ASOUL%E7%9A%84%E5%A5%87%E5%A6%99%E5%AE%87%E5%AE%99",
"orig_text": "#ASOUL的奇妙宇宙#",
"text": "#ASOUL的奇妙宇宙#",
"type": "RICH_TEXT_NODE_TYPE_TOPIC"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-06-21T10:15:12.713774343Z -->
## RICH_TEXT_NODE_TYPE_GOODS
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| goods | object | 商品信息 | |
| icon_name | string | 图标名称 | `shop` `taobao` |
| jump_url | string | 跳转 URL | |
| orig_text | string | 原始文本 | |
| rid | string | | |
| text | string | 显示文本 | 一般与 `orig_text` 一致 |
| type | string | `RICH_TEXT_NODE_TYPE_GOODS` | |
`goods` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| jump_url | string | 跳转 URL | 一般与根对象下的 `jump_url` 相同 |
| type | number | `1` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"goods": {
"jump_url": "https://s.click.taobao.com/t?e=m%3D2%26s%3DhRVW5Ol4GrZw4vFB6t2Z2ueEDrYVVa64XoO8tOebS%2BdRAdhuF14FMcvdLjw%2BYA8F1aH1Hk3GeOgLhuv3v%2BUO0FVeaszYyErWfp5XqHpg%2Bfwn9kK7XrZu6WxZ8BPtnRZfqGXK58Jc1%2BhtJfOipEYQaSY0lFm97JITUXK%2FCnFktAT05J9EjZ4Cg6Q6sZp7gNLmb4%2BNtrBbTSxr7mxbAs%2BuXGY7X5f4YTwUTi8eJkfcZdQxNgzykgJnxNGRxz%2FytfH1UnsQ1Sg4FG%2Fgk553RHFro7zDM6tzzB%2FwUFU78FEla0%2F6liDBUuxx%2BfRWY0eqeyPKGJZJ34Yh7cK34L0nA6HzjPrdYgTMW7Qubh8ReVU%2F9k2Huec2Q%2B1T%2BJwkZZwMWMdb2FGsw09L73Dq%2F8VFknkEdmd1Il7G%2BufOO%2FbGmELtDp4hhQs2DjqgEA%3D%3D&union_lens=lensId:TAPI@1674460806@212ccf35_0bed_185dda43d7a_a840@01",
"type": 1
},
"icon_name": "taobao",
"jump_url": "https://s.click.taobao.com/t?e=m%3D2%26s%3DhRVW5Ol4GrZw4vFB6t2Z2ueEDrYVVa64XoO8tOebS%2BdRAdhuF14FMcvdLjw%2BYA8F1aH1Hk3GeOgLhuv3v%2BUO0FVeaszYyErWfp5XqHpg%2Bfwn9kK7XrZu6WxZ8BPtnRZfqGXK58Jc1%2BhtJfOipEYQaSY0lFm97JITUXK%2FCnFktAT05J9EjZ4Cg6Q6sZp7gNLmb4%2BNtrBbTSxr7mxbAs%2BuXGY7X5f4YTwUTi8eJkfcZdQxNgzykgJnxNGRxz%2FytfH1UnsQ1Sg4FG%2Fgk553RHFro7zDM6tzzB%2FwUFU78FEla0%2F6liDBUuxx%2BfRWY0eqeyPKGJZJ34Yh7cK34L0nA6HzjPrdYgTMW7Qubh8ReVU%2F9k2Huec2Q%2B1T%2BJwkZZwMWMdb2FGsw09L73Dq%2F8VFknkEdmd1Il7G%2BufOO%2FbGmELtDp4hhQs2DjqgEA%3D%3D&union_lens=lensId:TAPI@1674460806@212ccf35_0bed_185dda43d7a_a840@01",
"orig_text": "​啊脑袋周边抱枕",
"rid": "688066082845462528",
"text": "​啊脑袋周边抱枕",
"type": "RICH_TEXT_NODE_TYPE_GOODS"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-06-26T07:02:47.615135239Z -->
## RICH_TEXT_NODE_TYPE_BV
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| jump_url | string | 跳转 URL | |
| orig_text | string | 原始文本 | |
| rid | string | 视频 bvid | |
| text | string | 显示文本 | 视频标题 |
| type | string | `RICH_TEXT_NODE_TYPE_BV` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"jump_url": "https://www.bilibili.com/video/BV1xx411c7mD/",
"orig_text": "https://www.bilibili.com/video/BV1xx411c7mD/",
"rid": "BV1xx411c7mD",
"text": "字幕君交流场所",
"type": "RICH_TEXT_NODE_TYPE_BV"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-06-26T08:32:48.72598344Z -->
## RICH_TEXT_NODE_TYPE_EMOJI
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| emoji | object | 表情信息 | |
| orig_text | string | 原始文本 | |
| text | string | 显示文本 | 一般与 `orig_text` 一致 |
| type | string | `RICH_TEXT_NODE_TYPE_EMOJI` | |
`emoji` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| icon_url | string | 表情图片 URL | |
| size | number | 表情尺寸 | 1: small<br />2: middle |
| text | string | 表情的文字代码 | 一般与根对象的 `text` 一致 |
| type | number | 表情类型 | `1` `2` `3` |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"emoji": {
"icon_url": "https://i0.hdslb.com/bfs/emote/5ce649d5f716566db41dbf68c2e319517516d321.png",
"size": 2,
"text": "[热词系列_干杯]",
"type": 1
},
"orig_text": "[热词系列_干杯]",
"text": "[热词系列_干杯]",
"type": "RICH_TEXT_NODE_TYPE_EMOJI"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-06-26T08:55:14.905420218Z -->
## RICH_TEXT_NODE_TYPE_CV
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| jump_url | string | 跳转 URL | 无协议名 |
| orig_text | string | 原始文本 | |
| rid | string | 专栏 CV 号 | |
| text | string | 显示文本 | |
| type | string | `RICH_TEXT_NODE_TYPE_CV` | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"jump_url": "//www.bilibili.com/read/cv1/",
"orig_text": "1",
"rid": "1",
"text": "未知的光",
"type": "RICH_TEXT_NODE_TYPE_CV"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-07-07T14:41:24.567461392Z -->
## RICH_TEXT_NODE_TYPE_VIEW_PICTURE
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| jump_url | string | | |
| orig_text | string | 原始文本 | |
| pics | object[] | 图片信息 | |
| rid | string | 本条动态 id | |
| text | string | 显示文本 | 一般与 `orig_text` 一致 |
| type | string | `RICH_TEXT_NODE_TYPE_VIEW_PICTURE ` | |
`pics[]` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| height | number | 高度 | |
| size | number | 大小? | 单位为 K |
| src | string | 图片 URL | |
| width | number | 宽度 | |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"jump_url": "//www.bilibili.com/read/cv/",
"orig_text": "查看图片",
"pics": [
{
"height": 4000,
"size": 4218.501,
"src": "http://i0.hdslb.com/bfs/new_dyn/d13a5793f7101824e9c9181ebc4df1a936081646.png",
"width": 6411
}
],
"rid": "1069394178937454662",
"text": "查看图片",
"type": "RICH_TEXT_NODE_TYPE_VIEW_PICTURE"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-07-07T14:46:47.413456738Z -->
## RICH_TEXT_NODE_TYPE_WEB
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| jump_url | string | 跳转 URL | |
| orig_text | string | 原始文本 | |
| style | object \| null | 样式信息 | |
| text | string | 显示文本 | |
| type | string | `RICH_TEXT_NODE_TYPE_WEB` | |
`style` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| font_level | string | 字体等级 | `regular` |
| font_size | number | 字体大小 | `17` |
**示例:**
<details>
<summary>查看示例:</summary>
```json
{
"jump_url": "https://api.bilibili.com/x/web-interface/nav",
"orig_text": "https://api.bilibili.com/x/web-interface/nav",
"style": {
"font_level": "regular",
"font_size": 17
},
"text": "网页链接",
"type": "RICH_TEXT_NODE_TYPE_WEB"
}
```
```json
{
"jump_url": "//www.bilibili.com/video/av1",
"orig_text": "//www.bilibili.com/video/av1",
"style": null,
"text": "av1",
"type": "RICH_TEXT_NODE_TYPE_WEB"
}
```
</details>
<!-- Generated by json-apidoc-gen @ 2025-07-07T14:55:11.26399889Z -->
## RICH_TEXT_NODE_TYPE_OGV_SEASON
参考 [RICH_TEXT_NODE_TYPE_BV](#rich-text-node-type-bv)
## RICH_TEXT_NODE_TYPE_OGV_EP
参考 [RICH_TEXT_NODE_TYPE_BV](#rich-text-node-type-bv)
## RICH_TEXT_NODE_TYPE_AV
参考 [RICH_TEXT_NODE_TYPE_BV](#rich-text-node-type-bv)