update README

This commit is contained in:
Cam 2022-03-02 12:40:46 +08:00
parent 88a09bb217
commit bda6dcb7b3
2 changed files with 66 additions and 6 deletions

View File

@ -58,13 +58,71 @@
```
## 同时监听多个直播间
```python
import asyncio
from blive import BLiver, Events, BLiverCtx
from blive.msg import DanMuMsg
# 定义弹幕事件handler
async def listen(ctx: BLiverCtx):
danmu = DanMuMsg(ctx.body)
print(
f'\n{danmu.sender.name} ({danmu.sender.medal.medal_name}:{danmu.sender.medal.medal_level}): "{danmu.content}"\n'
)
async def main():
# 两个直播间
ke = BLiver(605)
azi = BLiver(510)
# 注册handler
ke.register_handler(Events.DANMU_MSG, listen)
azi.register_handler(Events.DANMU_MSG, listen)
# 以异步task的形式运行
task1 = ke.run_as_task()
task2 = azi.run_as_task()
# await 两个任务
await asyncio.gather(*[task1, task2])
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```
## 作为协议解析工具在其他地方使用(伪代码)
```python
from blive.core import BWS_MsgPackage
packman = BWS_MsgPackage() # 实例化一个消息包处理器
while True:
data = ws.receive() # 当收到消息时
msg = packman.unpack(data) # 使用packman解析消息,返回一个形如 [(header,body), (header,body), ... ] 数组
# 如果你想发送弹幕之类的消息可以自行构建消息数据并使用packman.pack方法打包消息
print(msg)
```
## 项目简介
- blive 文件夹为框架代码
- app.py 为一个简单示例
- core.py 为B站ws直播聊天室协议包处理的核心代码
- framework.py 为框架代码
- msg.py 为消息操作类代码
- app.py , multi_room.py 为2个简单示例分别是以框架运行和同时监听多个直播间的实现
## TODO
- 打包发布
- 更多的消息操作类
- 尝试加入中间件架构
- 更多的消息操作类欢迎各位提pr
- 尝试加入中间件架构(目前感觉需求不大)

View File

@ -74,8 +74,9 @@ class Processor:
class BLiver:
def __init__(self, roomid, logger=None, log_level="INFO"):
def __init__(self, roomid, uid=0, logger=None, log_level="INFO"):
self.roomid = roomid
self.uid = uid
self.real_roomid, self.uname = get_blive_room_info(roomid)
if not logger:
self.logger = loguru.logger
@ -175,7 +176,8 @@ class BLiver:
# 发送认证
await ws.send_bytes(
self.packman.pack(
certification(self.real_roomid, token), Operation.AUTH
certification(self.real_roomid, token, uid=self.uid),
Operation.AUTH,
)
)
return