Sign inSign up

eric1008818/biligo-live-ws

By eric1008818

•Updated over 3 years ago
Archived

Image
0

2.1K

eric1008818/biligo-live-ws repository overview

⁠biligo-live-ws

以 bili-go⁠ 为核心, 基于 JSON string 序列化 的 B站 WebSocket 监控服务器。

⁠简介

根据个人开发经验,每次开发与B站直播WS相关的项目时,都要烦恼自己所使用的编程语言有没有相关的B站WS处理库,如果没有的话更要自己实作一个,当中的 binary 处理和解压程序可谓相当麻烦。

⁠连线即用

打开后,透过 POST 请求输入你的订阅房间列表,然后连入WS后即可开始接收JSON数据,无需binary处理。

你也可以连入 WebSocket 之后才输入你的订阅

⁠即时增减

可以透过 PUT 请求即时新增和删除批量房间号,此举不需要透过重连 WebSocket 来刷新

⁠无需后端

透过直接存取公共 API 地址,可直接在前端获取B站直播数据而无需自架或开发后端。

⁠直接使用

目前的公共 API 地址:

执行 GET / 后 显示

{
  "status": "working"
}

则代表服务正常运行。

可供测试的前端地址: https://eric2788.github.io/biligo-live-ws⁠

⁠使用方式
⁠头规格
HeaderValue
Content-Typeapplication/x-www-form-urlencoded
Authorization非必填,辨识ID,一个IP多程序用的时候防止混淆;不填则用 anonymous
⁠注意

如果标明了 Authorization,则连入 websocket 时需要传入 query string ?id={辨识ID}

假设你设置订阅时传入头

{
  "Content-Type": "application/x-www-form-urlencoded",
  "Authorization": "abc"
}

连入 WS 则需要使用

wss://blive.chu77.xyz/ws?id=abc

⁠步骤
  1. 透过 POST /subscribe 透过 subscribes key 递交你的订阅列表 (数组)

    例如

    subscribes=545&subscribes=114514
    

    成功后将返回成功订阅(无效的房间会被忽略)的真实房间号列表 (数组)

    [
      573893
    ]
    

    注意,如果订阅后五分钟内没有连入 WebSocket, 将会自动清除订阅列表数据(断线后也会开始计时)

  2. 透过 POST /validate 检查是否一切准备就绪(非必要)

    此请求会检查你的订阅列表是否为空,如果为空将返回 400 错误,否则返回 200

  3. 开始透过 后缀为 /ws 的请求连入 WebSocket

    如果成功订阅,连入 WebSocket 的几秒后将会开始接收已经 JSON 序列化的 B站直播 数据

⁠API 参考
Path 路径Method 方法Payload 传入Response(200) 返回Error 错误
/GET无程序是否运行无
/subscribeGET无目前的订阅列表(数组)无
/subscribePOST订阅列表(数组)成功的订阅列表(数组)400 如果輸入列表为空或缺少数值
/subscribeDELETE删除订阅列表无无
/validatePOST无无400 如果准备未就绪
/subscribe/addPUT要新增的批量订阅(数组)目前的订阅列表(数组)400 如果輸入列表为空或缺少数值
/subscribe/removePUT要删除的批量订阅(数组)目前的订阅列表(数组)400 如果輸入列表为空或缺少数值/之前尚未递交订阅
⁠B站直播数据解析

格式如下

key数值类型
command直播数据指令string
live_info直播房间资讯详见下方
content直播数据原始内容(已转换为json)object

直播房间资讯

key数值类型
room_id直播房间号int64
uid直播用户IDint64
title直播标题int64
name直播名称string
cover直播封面网址string

每次开播时都会自动刷新一次直播房间资讯

⁠备注
  • 指令为 HEARTBEAT_REPLY 的直播数据原始内容已被序列化为格式

    {
       "popularity": 999999
    }
    

    (999999为人气值)

  • 直播数据原始内容(content) 如果转换 object 失败,将自动转为 string

⁠私人部署

⁠Docker

docker.io⁠ 或 详见 Dockerfile

⁠Linux / Windows

详见 Releases⁠

运行参数(非必要)

./biligo-live-ws 端口

端口: 不填则 8080

⁠鸣谢

bili-go⁠ 作者

Tag summary

Content type

Image

Digest

sha256:43daa3451…

Size

10 MB

Last updated

over 3 years ago

docker pull eric1008818/biligo-live-ws