blive/with_fastapi.py

41 lines
1002 B
Python
Raw Normal View History

from fastapi import FastAPI
from blive import BLiver,Events
from blive.msg import DanMuMsg
app = FastAPI()
BLIVER_POOL = {}
def create_bliver(roomid):
# 定义弹幕事件handler
async def listen(ctx):
danmu = DanMuMsg(ctx.body)
print(
f'\n{danmu.sender.name} ({danmu.sender.medal.medal_name}:{danmu.sender.medal.medal_level}): "{danmu.content}"\n'
)
b = BLiver(roomid)
b.register_handler(Events.DANMU_MSG,listen)
return b
@app.get("/create")
async def create_new_bliver(roomid:int):
room = BLIVER_POOL.get(roomid,None)
if not room:
b = create_bliver(roomid)
BLIVER_POOL[roomid] = b.run_as_task()
return {"msg":"创建一个新直播间弹幕监听成功"}
@app.get("/del")
async def rm_bliver(roomid:int):
room = BLIVER_POOL.get(roomid,None)
if room:
room.cancel()
return {"msg":"移除直播间弹幕监听成功"}
@app.get("/show")
async def show():
return list(BLIVER_POOL.keys())