示例#1
0
 def handle_danmu(self, body):
     dic = json.loads(body.decode('utf-8'))
     cmd = dic['cmd']
     # print(cmd)
     if cmd == 'DANMU_MSG':
         info = dic['info']
         ori = info[1]
         uid = info[2][0]
         print(ori)
         try:
             msg = self.__reverse(ori)
             '''
             if msg is not None:
                 msg_id, type, id = msg
                 if type == '~' and not msg_id % 2:
                     storm_id = id
                     print('节奏风暴', storm_id)
             '''
             result = self.__combine_piece(uid, msg)
             print('监控read dic', self.__read)
             if result is None:
                 return True
             print(result)
             type, raffle_id, room_id = result
             if type == '+':
                 printer.info([f'{self._area_id}号弹幕监控检测到{room_id:^9}的大航海(id: {raffle_id})'], True)
                 rafflehandler.Rafflehandler.Put2Queue((room_id, raffle_id), rafflehandler.handle_1_room_guard)
                 Statistics.add2pushed_raffle('Yj协同大航海', 2)
         except Exception:
             printer.warn(f'Yj监控房间内可能有恶意干扰{uid}: {ori}')
     return True
示例#2
0
 def handle_danmu(self, bytes_msg):
     dic = json.loads(bytes_msg.decode('utf-8'))
     cmd = dic['cmd']
     # print(cmd)
     if cmd == 'DANMU_MSG':
         msg = dic['info'][1]
         if '+' in msg:
             try:
                 roomid, raffleid = self.get_origin(msg, '+')
                 printer.info([f'弹幕监控检测到{roomid:^9}的提督/舰长{raffleid}'], True)
                 rafflehandler.Rafflehandler.Put2Queue(
                     (roomid, raffleid), rafflehandler.handle_1_room_guard)
                 Statistics.add2pushed_raffle('YJ推送提督/舰长', 1, 2)
             except ValueError:
                 print(msg)
         printer.print_danmu(dic)
     return True
示例#3
0
    def handle_danmu(self, body):
        dic = json.loads(body.decode('utf-8'))
        cmd = dic['cmd']

        if cmd == 'PREPARING':
            printer.info([f'{self._area_id}号弹幕监控房间下播({self._room_id})'], True)
            return False

        elif cmd == 'NOTICE_MSG':
            # 1 《第五人格》哔哩哔哩直播预选赛六强诞生!
            # 2 全区广播:<%user_name%>送给<%user_name%>1个嗨翻全城,快来抽奖吧
            # 3 <%user_name%> 在 <%user_name%> 的房间开通了总督并触发了抽奖,点击前往TA的房间去抽奖吧
            # 4 欢迎 <%总督 user_name%> 登船
            # 5 恭喜 <%user_name%> 获得大奖 <%23333x银瓜子%>, 感谢 <%user_name%> 的赠送
            # 6 <%user_name%> 在直播间 <%529%> 使用了 <%20%> 倍节奏风暴,大家快去跟风领取奖励吧!(只报20的)
            # 8 全区广播:主播<%红莉栖魔王喵%>开启了“任意门”,点击前往TA的房间去抽奖吧!
            msg_type = dic['msg_type']
            msg_common = dic['msg_common']
            real_roomid = dic['real_roomid']
            msg_common = dic['msg_common'].replace(' ', '')
            msg_common = msg_common.replace('”', '')
            msg_common = msg_common.replace('“', '')
            if msg_type == 2 or msg_type == 8:
                str_gift = msg_common.split('%>')[-1].split(',')[0]
                if '个' in str_gift:
                    raffle_num, raffle_name = str_gift.split('个')
                elif '了' in str_gift:
                    raffle_num = 1
                    raffle_name = str_gift.split('了')[-1]
                else:
                    raffle_num = 1
                    raffle_name = str_gift
                broadcast = msg_common.split('广播')[0]
                printer.info(
                    [f'{self._area_id}号弹幕监控检测到{real_roomid:^9}的{raffle_name}'],
                    True)
                rafflehandler.Rafflehandler.Put2Queue(
                    (real_roomid, ), rafflehandler.handle_1_room_TV)
                broadcast_type = 0 if broadcast == '全区' else 1
                Statistics.add2pushed_raffle(raffle_name, broadcast_type)
            elif msg_type == 3:
                raffle_name = msg_common.split('开通了')[-1][:2]
                printer.info(
                    [f'{self._area_id}号弹幕监控检测到{real_roomid:^9}的{raffle_name}'],
                    True)
                rafflehandler.Rafflehandler.Put2Queue(
                    (real_roomid, ), rafflehandler.handle_1_room_guard)
                broadcast_type = 0 if raffle_name == '总督' else 2
                Statistics.add2pushed_raffle(raffle_name, broadcast_type)
            elif msg_type == 6:
                raffle_name = '二十倍节奏风暴'
                printer.info(
                    [f'{self._area_id}号弹幕监控检测到{real_roomid:^9}的{raffle_name}'],
                    True)
                rafflehandler.Rafflehandler.Put2Queue(
                    (real_roomid, ), rafflehandler.handle_1_room_storm)
                Statistics.add2pushed_raffle(raffle_name)

        return True
示例#4
0
    def handle_danmu(self, bytes_msg):
        dic = json.loads(bytes_msg.decode('utf-8'))
        cmd = dic['cmd']

        if cmd == 'PREPARING':
            printer.info([f'{self.area_id}号弹幕监控房间下播({self.roomid})'], True)
            return False

        elif cmd == 'NOTICE_MSG':
            # 1 《第五人格》哔哩哔哩直播预选赛六强诞生!
            # 2 娱乐区广播: <%硬币需要阿璃守护%> 送给<% 陸赛赛%> 1个摩天大楼,点击前往TA的房间去抽奖吧
            # 3 <%暗月柴静%> 在 <%優しい七酱%> 的房间开通了总督并触发了抽奖,点击前往TA的房间去抽奖吧
            # 4 欢迎 <%总督 不再瞎逛的菜菜大佬%> 登船
            # 5 恭喜 <%ChineseHerbalTea%> 获得大奖 <%23333x银瓜子%>, 感谢 <%樱桃小姐姐给幻幻子穿上漂亮的裙裙%> 的赠送
            # 6 <%雪昼%> 在直播间 <%529%> 使用了 <%20%> 倍节奏风暴,大家快去跟风领取奖励吧! (只报20的)
            msg_type = dic['msg_type']
            if msg_type not in (2, 3, 6):
                return True
            msg_common = dic['msg_common']
            real_roomid = dic['real_roomid']
            msg_common = dic['msg_common'].replace(' ', '')
            if msg_type == 2:
                str_gift = msg_common.split('%>')[-1].split(',')[0]
                if '个' in str_gift:
                    raffle_num, raffle_name = str_gift.split('个')
                elif '了' in str_gift:
                    raffle_num = 1
                    raffle_name = str_gift.split('了')[-1]
                else:
                    raffle_num = 1
                    raffle_name = str_gift
                broadcast = msg_common.split('广播')[0]
                printer.info(
                    [f'{self.area_id}号弹幕监控检测到{real_roomid:^9}的{raffle_name}'],
                    True)
                rafflehandler.Rafflehandler.Put2Queue(
                    (real_roomid, ), rafflehandler.handle_1_room_TV)
                broadcast_type = 0 if broadcast == '全区' else 1
                Statistics.add2pushed_raffle(raffle_name, 1, broadcast_type)
            elif msg_type == 3:
                raffle_name = msg_common.split('开通了')[-1][:2]
                printer.info(
                    [f'{self.area_id}号弹幕监控检测到{real_roomid:^9}的{raffle_name}'],
                    True)
                rafflehandler.Rafflehandler.Put2Queue(
                    (real_roomid, ), rafflehandler.handle_1_room_guard)
                broadcast_type = 0 if raffle_name == '总督' else 2
                Statistics.add2pushed_raffle(raffle_name, 1, broadcast_type)
            elif msg_type == 6:
                printer.info(["20倍节奏风暴"], True)
                rafflehandler.Rafflehandler.Put2Queue(
                    (real_roomid, ), rafflehandler.handle_1_room_storm)
                Statistics.add2pushed_raffle('20倍节奏风暴')

        return True