2022-03-01 10:44:38 +08:00
|
|
|
"""监听多个直播间的例子"""
|
|
|
|
|
|
|
|
import asyncio
|
|
|
|
from blive import BLiver, Events, BLiverCtx
|
2022-11-25 20:30:45 +08:00
|
|
|
from blive.msg import DanMuMsg,InteractWordMsg
|
2022-03-01 10:44:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
# 定义弹幕事件handler
|
|
|
|
async def listen(ctx: BLiverCtx):
|
|
|
|
danmu = DanMuMsg(ctx.body)
|
|
|
|
print(
|
2022-06-21 10:33:40 +08:00
|
|
|
f'\n【{ctx.bliver.uname}】{danmu.sender.name} ({danmu.sender.medal.medal_name}:{danmu.sender.medal.medal_level}): "{danmu.content}"\n'
|
2022-03-01 10:44:38 +08:00
|
|
|
)
|
|
|
|
|
2022-11-25 20:30:45 +08:00
|
|
|
async def listen_join(ctx: BLiverCtx):
|
|
|
|
join = InteractWordMsg(ctx.body)
|
|
|
|
print(
|
|
|
|
f"\n【{ctx.bliver.uname}】欢迎",
|
|
|
|
f"{join.user['name']} ({join.user['medal']['medal_name']}:{join.user['medal']['medal_level']})",
|
|
|
|
"进入直播间",
|
|
|
|
)
|
2022-03-01 10:44:38 +08:00
|
|
|
|
|
|
|
async def main():
|
|
|
|
# 两个直播间
|
2023-01-30 21:59:26 +08:00
|
|
|
hai7 = BLiver(7777)
|
2022-03-01 10:44:38 +08:00
|
|
|
azi = BLiver(510)
|
|
|
|
|
2022-11-28 18:45:35 +08:00
|
|
|
azi.on(Events.DANMU_MSG, listen)
|
|
|
|
azi.on(Events.INTERACT_WORD, listen_join)
|
2022-11-25 20:30:45 +08:00
|
|
|
# 注册handler
|
2022-11-28 18:45:35 +08:00
|
|
|
hai7.on(Events.DANMU_MSG, listen)
|
|
|
|
hai7.on(Events.INTERACT_WORD, listen_join)
|
2022-03-01 10:44:38 +08:00
|
|
|
|
|
|
|
# 以异步task的形式运行
|
2022-11-25 20:30:45 +08:00
|
|
|
task1 = hai7.run_as_task()
|
2022-03-01 10:44:38 +08:00
|
|
|
task2 = azi.run_as_task()
|
|
|
|
|
|
|
|
# await 两个任务
|
2023-01-30 21:59:26 +08:00
|
|
|
await asyncio.gather(task1, task2)
|
2022-03-01 10:44:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2023-01-30 21:59:26 +08:00
|
|
|
asyncio.run(main())
|