mirror of
https://github.com/yulinfeng000/blive.git
synced 2025-03-25 16:50:53 +08:00
update README
This commit is contained in:
parent
88a09bb217
commit
bda6dcb7b3
66
README.md
66
README.md
@ -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)
|
||||
- 尝试加入中间件架构(目前感觉需求不大)
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user