B站直播投票选项添加接口开发:基于哔哩哔哩-API收集整理的互动功能实现

B站直播投票选项添加接口开发:基于哔哩哔哩-API收集整理的互动功能实现

【免费下载链接】bilibili-API-collect 哔哩哔哩-API收集整理【不断更新中....】 【免费下载链接】bilibili-API-collect 项目地址: https://gitcode.com/GitHub_Trending/bi/bilibili-API-collect

直播互动是提升观众参与度的关键手段,而投票功能作为其中的重要组成部分,能够有效增强主播与观众之间的实时互动。本文将基于哔哩哔哩-API收集整理项目,详细介绍如何开发B站直播投票选项添加接口,帮助开发者快速实现这一互动功能。

接口开发准备

在进行B站直播投票选项添加接口开发前,需要先了解相关的API文档和项目结构。哔哩哔哩-API收集整理项目中,关于直播投票的详细信息可以在docs/live/live_vote.md中找到,该文档包含了查询投票信息、创建投票、中断投票等相关接口的定义和使用方法。

项目结构概览

哔哩哔哩-API收集整理项目的结构清晰,便于开发者查找和使用所需的API接口。其中,直播相关的API文档主要集中在docs/live/目录下,除了投票功能外,还有弹幕、礼物、直播数据等多个方面的接口定义,为直播功能的全面开发提供了丰富的资源。

创建直播投票接口详解

创建直播投票接口是实现投票选项添加功能的核心,通过该接口可以设置投票的问题、选项、持续时间等关键信息。

接口基本信息

创建直播投票接口的URL为https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/createVote,请求方法为POST,认证方式为Cookie(SESSDATA),鉴权方式要求Cookie中bili_jct的值正确并与csrf相同。

参数说明

该接口的正文参数(application/x-www-form-urlencoded)如下表所示:

参数名类型内容必要性备注
room_idnum直播间id必要必须为登录信息对应的直播间
durationnum持续时间必要必须为整数,目前范围0<d<10
questionstr投票问题必要
option_astr选项A必要
option_bstr选项B必要
template_idnum投票模板id非必要
live_keystr直播场次key非必要需要更多信息
sub_session_keystr(?)非必要需要更多信息
csrf_tokenstrCSRF Token(位于cookie)非必要
csrfstrCSRF Token(位于cookie)必要
visit_idstr(?)非必要作用尚不明确

请求示例

以下是使用curl命令发送创建直播投票请求的示例:

curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/createVote' \
  --data-urlencode 'room_id=3' \
  --data-urlencode 'duration=1' \
  --data-urlencode 'question=abcdef' \
  --data-urlencode 'option_a=A' \
  --data-urlencode 'option_b=B' \
  --data-urlencode 'csrf=xxx' \
  -b 'SESSDATA=xxx;bili_jct=xxx'

响应示例

接口调用成功后,会返回如下响应:

{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data":{
    "interaction_id":120008099262976
  }
}

其中,interaction_id为创建的投票互动id,可用于后续的查询、中断等操作。

查询投票信息接口

创建投票后,需要能够查询投票的实时信息,以便了解投票的进行状态和结果。查询投票信息接口的URL为https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/votePanel,请求方法为GET,认证方式为Cookie(SESSDATA)。

参数说明

该接口的url参数如下:

参数名类型内容必要性备注
room_idnum直播间id必要必须为登录信息对应的直播间

响应示例

查询投票信息接口的响应包含投票状态、问题、选项、持续时间等详细信息,示例如下:

{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": {
    "vote_info": {
      "status": 4,
      "question": "醒醒",
      "options": [
        {
          "idx": 1,
          "desc": "醒",
          "percent": 0.5
        },
        {
          "idx": 2,
          "desc": "睡",
          "percent": 0.5
        }
      ],
      "duration": 600000,
      "result": 1,
      "result_text": "平局",
      "etime_str": "08-31 15:44",
      "left_duration": 549660,
      "interaction_id": 120122595433984
    },
    "templates": [
      {
        "template_id": 54339003518976,
        "question": "哪边赢",
        "option_a": "左",
        "option_b": "右"
      }
    ]
  }
}

中断直播投票接口

当需要提前结束投票时,可以使用中断直播投票接口。该接口的URL为https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/terminateVote,请求方法为POST,认证方式为Cookie(SESSDATA),鉴权方式要求Cookie中bili_jct的值正确并与csrf相同。

参数说明

接口的正文参数如下:

参数名类型内容必要性备注
interaction_idnum投票互动id必要必须为该登录信息创建的投票
room_idnum直播间id必要必须为登录信息对应的直播间
csrf_tokenstrCSRF Token(位于cookie)非必要
csrfstrCSRF Token(位于cookie)必要
visit_idstr(?)非必要作用尚不明确

请求示例

curl 'https://api.live.bilibili.com/xlive/app-room/v1/dm/interaction/terminateVote' \
  --data-urlencode 'interaction_id=120122595433984' \
  --data-urlencode 'room_id=1' \
  --data-urlencode 'csrf=xxx' \
  -b 'SESSDATA=xxx;bili_jct=xxx'

响应示例

{
  "code": 0,
  "message": "0",
  "ttl": 1,
  "data": null
}

投票状态说明

在投票信息和直播信息流DM_INTERACTION的类型101等地方会使用投票状态,目前已发现的投票状态如下表所示:

| 值 | 含义 | 备注 | | -- | ---- | ---- | | 0 | | 键名 NONE | | 1 | 等待审核 | 键名 WAITING_AUDIT | | 2 | 审核失败 | 键名 AUDIT_FAILED | | 4 | 投票进行中 | 键名 DURING | | 5 | 投票结束 | 键名 END | | 6 | | 键名 STOP |

直播投票主播侧界面

B站提供了专门的直播投票主播侧界面,URL为https://live.bilibili.com/p/html/live-app-guessing-game/anchor_vote.html,但直接访问此页面可能存在部分功能不可用的情况,需要传入直播间id作为URL查询参数。

直播投票主播侧界面示意图

通过以上接口的组合使用,开发者可以完整地实现B站直播投票选项添加及相关的互动功能,为直播增添更多趣味性和互动性。在实际开发过程中,还需要注意接口的认证和鉴权,确保请求的安全性和合法性。同时,参考docs/live/live_vote.md中的详细文档,可以获取更多关于接口的细节和最新更新信息。

【免费下载链接】bilibili-API-collect 哔哩哔哩-API收集整理【不断更新中....】 【免费下载链接】bilibili-API-collect 项目地址: https://gitcode.com/GitHub_Trending/bi/bilibili-API-collect

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值