Example #1
0
 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)
Example #2
0
    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)
            
            

        
                    
Example #3
0
 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)
Example #4
0
 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)
Example #5
0
    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)
            
            

        
                    
Example #6
0
 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)
Example #7
0
 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)
Example #9
0
 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)