Skip to content

Iristack/DanmuConnecter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

DanmuConnecter

Plugin For Bililive_dm, Forward DanmuInfo By Socket

如何使用

这个插件通过Socket转发弹幕数据, 默认端口

9999

转发的数据为完整的bililive_dm的弹幕结构体, 结构为

正文: 4byte的数据长度(大端) + 弹幕数据 心跳包: 4byte的数据长度(大端) + "Heartbeat"

连接成功后, 为了判断Client状态, 插件会每秒发一次HC, 不需要Client回复, 发送失败则表示Client断连

使用示例

async def listen_client():
    reader, writer = await asyncio.open_connection('127.0.0.1', 9999)
    print("server connected, listen...")

    try:
        while True:
            length_data = await reader.read(4)
            if not length_data:
                print("server disconnected")
                break

            length = int.from_bytes(length_data, byteorder='big')
            print(f"pkt len: {length}")

            received = 0
            message = bytearray()
            while received < length:
                chunk = await reader.read(length - received)
                if not chunk:
                    raise ConnectionError("disconnected, not finish")
                message.extend(chunk)
                received += len(chunk)

            message = message.decode('utf-8')

            if message == 'Heartbeat':
                continue

            print(f"msg: {message}")

            data = json.loads(message)
            print(json.dumps(data, ensure_ascii=False, indent=4))
    except Exception as e:
        traceback.print_exc()
        print(f"err: {e}")
    finally:
        writer.close()
        await writer.wait_closed()
        print("disconnected")

About

Plugin For Bililive_dm, Forward DanmuInfo By Socket

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages