async def run(self): self.danmuji = danmu.DanmuRaffleHandler(self.roomid, self.areaid) while True: self.danmuji.roomid = await get_one(self.areaid) printer.info(['正在启动抽奖监控弹幕姬'], True) time_start = int(utils.CurrentTime()) connect_results = await self.danmuji.start() if not connect_results: continue task_main = asyncio.ensure_future(self.danmuji.handle_msg()) task_heartbeat = asyncio.ensure_future(self.danmuji.heart_beat()) task_checkarea = asyncio.ensure_future(self.danmuji.check_area()) tasks = [task_main, task_heartbeat, task_checkarea] finished, pending = await asyncio.wait( tasks, return_when=asyncio.FIRST_COMPLETED) printer.info([f'{self.areaid}号弹幕姬异常或主动断开,正在处理剩余信息'], True) time_end = int(utils.CurrentTime()) if not task_heartbeat.done(): task_heartbeat.cancel() if not task_checkarea.done(): task_checkarea.cancel() task_terminate = asyncio.ensure_future(self.danmuji.terminate()) await asyncio.wait(pending) await asyncio.wait([task_terminate]) printer.info([f'{self.areaid}号弹幕姬退出,剩余任务处理完毕'], True) if time_end - time_start < 5: printer.info(['当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试'], True) await asyncio.sleep(5)
async def run(self): self.danmuji = bilibiliClient(self.roomid, self.areaid) while True: self.danmuji.roomid = await get_one(self.areaid) printer.info(['# 正在启动抽奖监控弹幕姬'], True) time_start = int(utils.CurrentTime()) connect_results = await self.danmuji.connectServer() # print(connect_results) if not connect_results: continue task_main = asyncio.ensure_future(self.danmuji.ReceiveMessageLoop()) task_heartbeat = asyncio.ensure_future(self.danmuji.HeartbeatLoop()) task_checkarea = asyncio.ensure_future(self.danmuji.CheckArea()) finished, pending = await asyncio.wait([task_main, task_heartbeat, task_checkarea], return_when=asyncio.FIRST_COMPLETED) printer.info([f'{self.areaid}号弹幕姬异常或主动断开,正在处理剩余信息'], True) time_end = int(utils.CurrentTime()) if not task_heartbeat.done(): task_heartbeat.cancel() if not task_checkarea.done(): task_checkarea.cancel() task_terminate = asyncio.ensure_future(self.danmuji.close_connection()) await asyncio.wait(pending) await asyncio.wait([task_terminate]) printer.info([f'{self.areaid}号弹幕姬退出,剩余任务处理完毕'], True) if time_end - time_start < 5: print('# 当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试') await asyncio.sleep(5)
async def connect(self): while True: print('# 正在启动弹幕姬') time_start = int(utils.CurrentTime()) self.danmuji = bilibiliClient() task_main = asyncio.ensure_future(self.danmuji.connectServer()) task_heartbeat = asyncio.ensure_future( self.danmuji.HeartbeatLoop()) finished, pending = await asyncio.wait( [task_main, task_heartbeat], return_when=asyncio.FIRST_COMPLETED) print('# 弹幕姬异常或主动断开,处理完剩余信息后重连') self.danmuji.connected = False time_end = int(utils.CurrentTime()) if task_heartbeat.done() == False: task_heartbeat.cancel() print('# 弹幕主程序退出,立即取消心跳模块') else: await asyncio.wait(pending) print('# 弹幕心跳模块退出,主程序剩余任务处理完毕') # 类似于lock功能,当reconnect模块使用时,禁止重启,直到reconnect模块修改完毕) while self.tag_reconnect: await asyncio.sleep(0.5) print('pending') if time_end - time_start < 5: print('# 当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试') await asyncio.sleep(5)
async def run(self): self.roomid = ConfigLoader( ).dic_user['other_control']['raffle_minitor_roomid'] if not self.roomid: return self.danmuji = danmu.YjMonitorHandler(self.roomid, self.areaid) while True: printer.info(['正在启动Yj监控弹幕姬'], True) time_start = int(utils.CurrentTime()) connect_results = await self.danmuji.start() if not connect_results: continue task_main = asyncio.ensure_future(self.danmuji.handle_msg()) task_heartbeat = asyncio.ensure_future(self.danmuji.heart_beat()) tasks = [task_main, task_heartbeat] finished, pending = await asyncio.wait( tasks, return_when=asyncio.FIRST_COMPLETED) printer.info(['Yj弹幕姬异常或主动断开,正在处理剩余信息'], True) time_end = int(utils.CurrentTime()) if not task_heartbeat.done(): task_heartbeat.cancel() task_terminate = asyncio.ensure_future(self.danmuji.terminate()) await asyncio.wait(pending) await asyncio.wait([task_terminate]) printer.info(['Yj弹幕姬退出,剩余任务处理完毕'], True) if time_end - time_start < 5: printer.info(['当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试'], True) await asyncio.sleep(5)
async def run(self): self.roomid = ConfigLoader().dic_user['other_control']['raffle_minitor_roomid'] if not self.roomid: return self.danmuji = bilibiliCilent.YjMonitorHandler(self.roomid, self.areaid) while True: print('# 正在启动直播监控弹幕姬') time_start = int(utils.CurrentTime()) connect_results = await self.danmuji.connectServer() # print(connect_results) if not connect_results: continue task_main = asyncio.ensure_future(self.danmuji.ReceiveMessageLoop()) task_heartbeat = asyncio.ensure_future(self.danmuji.HeartbeatLoop()) finished, pending = await asyncio.wait([task_main, task_heartbeat], return_when=asyncio.FIRST_COMPLETED) print('主弹幕姬异常或主动断开,正在处理剩余信息') time_end = int(utils.CurrentTime()) if not task_heartbeat.done(): task_heartbeat.cancel() task_terminate = asyncio.ensure_future(self.danmuji.close_connection()) await asyncio.wait(pending) await asyncio.wait([task_terminate]) printer.info(['主弹幕姬退出,剩余任务处理完毕'], True) if time_end - time_start < 5: print('# 当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试') await asyncio.sleep(5)
async def run(self): self.danmuji = danmu.DanmuRaffleHandler(self.roomid, self.areaid) time_now = 0 while True: if int(utils.CurrentTime()) - time_now <= 3: printer.info(['当前网络不稳定,弹幕监控将自动延迟3秒后重启'], True) await asyncio.sleep(3) self.danmuji.room_id = await get_one(self.areaid) printer.info(['正在启动抽奖监控弹幕姬'], True) time_now = int(utils.CurrentTime()) connect_results = await self.danmuji.open() if not connect_results: continue task_main = asyncio.ensure_future(self.danmuji.read_datas()) task_heartbeat = asyncio.ensure_future(self.danmuji.heart_beat()) task_checkarea = asyncio.ensure_future(self.danmuji.check_area()) tasks = [task_main, task_heartbeat, task_checkarea] finished, pending = await asyncio.wait( tasks, return_when=asyncio.FIRST_COMPLETED) printer.info([f'{self.areaid}号弹幕姬异常或主动断开,正在处理剩余信息'], True) if not task_heartbeat.done(): task_heartbeat.cancel() if not task_checkarea.done(): task_checkarea.cancel() await self.danmuji.close() await asyncio.wait(pending) printer.info([f'{self.areaid}号弹幕姬退出,剩余任务处理完毕'], True)
async def run(self): self.room_id = ConfigLoader( ).dic_user['other_control']['default_monitor_roomid'] self.danmuji = danmu.DanmuPrinter(self.room_id, self.area_id) time_now = 0 while True: if int(utils.CurrentTime()) - time_now <= 3: printer.info(['当前网络不稳定,弹幕监控将自动延迟3秒后重启'], True) await asyncio.sleep(3) printer.info(['正在启动直播监控弹幕姬'], True) time_now = int(utils.CurrentTime()) connect_results = await self.danmuji.open() if not connect_results: continue task_main = asyncio.ensure_future(self.danmuji.read_datas()) task_heartbeat = asyncio.ensure_future(self.danmuji.heart_beat()) tasks = [task_main, task_heartbeat] finished, pending = await asyncio.wait( tasks, return_when=asyncio.FIRST_COMPLETED) printer.info(['主弹幕姬异常或主动断开,正在处理剩余信息'], True) if not task_heartbeat.done(): task_heartbeat.cancel() await self.danmuji.close() await asyncio.wait(pending) printer.info(['主弹幕姬退出,剩余任务处理完毕'], True)
async def run(self): while True: self.roomid = await get_one(self.areaid) print('# 正在启动抽奖监控弹幕姬') time_start = int(utils.CurrentTime()) self.danmuji = bilibiliClient(self.roomid, self.areaid) connect_results = await self.danmuji.connectServer() # print(connect_results) if not connect_results: continue task_main = asyncio.ensure_future( self.danmuji.ReceiveMessageLoop()) task_heartbeat = asyncio.ensure_future( self.danmuji.HeartbeatLoop()) task_checkarea = asyncio.ensure_future(self.danmuji.CheckArea()) finished, pending = await asyncio.wait( [task_main, task_heartbeat, task_checkarea], return_when=asyncio.FIRST_COMPLETED) print('# 弹幕姬异常或主动断开,处理完剩余信息后重连') self.danmuji.connected = False time_end = int(utils.CurrentTime()) if not task_heartbeat.done(): task_heartbeat.cancel() await self.danmuji.close_connection() print('# 弹幕主程序退出,立即取消心跳模块') else: await asyncio.wait(pending) print('# 弹幕心跳模块退出,主程序剩余任务处理完毕') if time_end - time_start < 5: print('# 当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试') await asyncio.sleep(5)
async def run(self): while True: print('# 正在启动弹幕姬') time_start = int(utils.CurrentTime()) self.danmuji = bilibiliClient() task_connect = asyncio.ensure_future(self.danmuji.connectServer()) connect_results = await asyncio.gather(task_connect) # print(connect_results) if all(connect_results): pass else: continue task_main = asyncio.ensure_future( self.danmuji.ReceiveMessageLoop()) task_heartbeat = asyncio.ensure_future( self.danmuji.HeartbeatLoop()) finished, pending = await asyncio.wait( [task_main, task_heartbeat], return_when=asyncio.FIRST_COMPLETED) print('# 弹幕姬异常或主动断开,处理完剩余信息后重连') self.danmuji.connected = False time_end = int(utils.CurrentTime()) if not task_heartbeat.done(): task_heartbeat.cancel() print('# 弹幕主程序退出,立即取消心跳模块') else: await asyncio.wait(pending) print('# 弹幕心跳模块退出,主程序剩余任务处理完毕') if time_end - time_start < 5: print('# 当前网络不稳定,为避免频繁不必要尝试,将自动在5秒后重试') await asyncio.sleep(5)