style: Make the log output sequence more readable
This commit is contained in:
parent
774f36f814
commit
9d9893f553
@ -89,6 +89,10 @@ class StarBot:
|
||||
await up.connect()
|
||||
except LiveException as ex:
|
||||
logger.error(ex.msg)
|
||||
try:
|
||||
await asyncio.wait_for(self.__datasource.wait_for_connects(), config.get("WAIT_FOR_ALL_CONNECTION_TIMEOUT"))
|
||||
except asyncio.exceptions.TimeoutError:
|
||||
logger.warning("等待连接所有直播间超时, 请检查是否存在未连接成功的直播间")
|
||||
|
||||
# 启动动态推送模块
|
||||
asyncio.get_event_loop().create_task(dynamic_spider(self.__datasource))
|
||||
|
@ -127,6 +127,17 @@ class DataSource(metaclass=abc.ABCMeta):
|
||||
raise DataSourceException(f"不存在的推送 key: {key}")
|
||||
return bot
|
||||
|
||||
async def wait_for_connects(self):
|
||||
"""
|
||||
等待所有 Up 实例连接直播间完毕
|
||||
"""
|
||||
while True:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
flags = [u.is_connecting() for u in self.__up_list]
|
||||
if not any(flags):
|
||||
break
|
||||
|
||||
|
||||
class DictDataSource(DataSource):
|
||||
"""
|
||||
|
@ -75,6 +75,9 @@ class Up(BaseModel):
|
||||
def dispatch(self, name, data):
|
||||
self.__room.dispatch(name, data)
|
||||
|
||||
def is_connecting(self):
|
||||
return (self.__room is not None) and (self.__room.get_status() != 2)
|
||||
|
||||
def __any_live_on_enabled(self):
|
||||
return any(map(lambda conf: conf.enabled, map(lambda group: group.live_on, self.targets)))
|
||||
|
||||
@ -104,15 +107,17 @@ class Up(BaseModel):
|
||||
if user_info["live_room"] is None:
|
||||
raise LiveException(f"UP 主 {self.uname} ( UID: {self.uid} ) 还未开通直播间")
|
||||
self.room_id = user_info["live_room"]["roomid"]
|
||||
self.__live_room = LiveRoom(self.room_id, get_credential())
|
||||
self.__room = LiveDanmaku(self.room_id, credential=get_credential())
|
||||
|
||||
# 开播推送开关和下播推送开关均处于关闭状态时跳过连接直播间,以节省性能
|
||||
if config.get("ONLY_CONNECT_NECESSARY_ROOM"):
|
||||
if not any([self.__any_live_on_enabled(), self.__any_live_off_enabled(), self.__any_live_report_enabled()]):
|
||||
if not any([self.__any_live_on_enabled(), self.__any_live_off_enabled(),
|
||||
self.__any_live_report_enabled()]):
|
||||
logger.warning(f"{self.uname} 的开播, 下播和直播报告开关均处于关闭状态, 跳过连接直播间")
|
||||
return
|
||||
|
||||
self.__live_room = LiveRoom(self.room_id, get_credential())
|
||||
self.__room = LiveDanmaku(self.room_id, credential=get_credential())
|
||||
|
||||
logger.opt(colors=True).info(f"准备连接到 <cyan>{self.uname}</> 的直播间 <cyan>{self.room_id}</>")
|
||||
|
||||
self.__loop.create_task(self.__room.connect())
|
||||
|
@ -36,6 +36,9 @@ SIMPLE_CONFIG = {
|
||||
"BILI_JCT": None,
|
||||
"BUVID3": None,
|
||||
|
||||
# 成功连接所有主播直播间的最大等待时长,可使得日志输出顺序更加易读,一般无需修改此处,单位:秒
|
||||
"WAIT_FOR_ALL_CONNECTION_TIMEOUT": 60,
|
||||
|
||||
# 是否自动判断仅连接必要的直播间,即当某直播间的开播、下播、直播报告开关均未开启时,自动跳过连接直播间,以节省性能
|
||||
"ONLY_CONNECT_NECESSARY_ROOM": False,
|
||||
# 是否自动判断仅处理必要的直播事件,例如当某直播间的下播推送和直播报告中均不包含弹幕相关功能,则不再处理此直播间的弹幕事件,以节省性能
|
||||
@ -128,6 +131,9 @@ FULL_CONFIG = {
|
||||
"BILI_JCT": None,
|
||||
"BUVID3": None,
|
||||
|
||||
# 成功连接所有主播直播间的最大等待时长,可使得日志输出顺序更加易读,一般无需修改此处,单位:秒
|
||||
"WAIT_FOR_ALL_CONNECTION_TIMEOUT": 60,
|
||||
|
||||
# 是否自动判断仅连接必要的直播间,即当某直播间的开播、下播、直播报告开关均未开启时,自动跳过连接直播间,以节省性能
|
||||
"ONLY_CONNECT_NECESSARY_ROOM": False,
|
||||
# 是否自动判断仅处理必要的直播事件,例如当某直播间的下播推送和直播报告中均不包含弹幕相关功能,则不再处理此直播间的弹幕事件,以节省性能
|
||||
|
Loading…
x
Reference in New Issue
Block a user