Пример #1
0
 async def join(room_id, raffle_id):
     await BasicRequest.enter_room(room_id)
     data = await BasicRequest.storm_req_join(raffle_id)
     Statistics.add2joined_raffles("节奏风暴(合计)")
     if not data["code"]:
         data = data["data"]
         gift_name = data["gift_name"]
         gift_num = data["gift_num"]
         Log.critical("房间 %s 节奏风暴抽奖结果: %s X %s")
         Statistics.add2results(gift_name, int(gift_num))
 async def notice(raffleid, real_roomid, raffle_name):
     data = await BasicRequest.tv_req_notice(real_roomid, raffleid)
     if not data["code"]:
         if data["data"]["gift_id"] == "-1":
             return
         elif data["data"]["gift_id"] != "-1":
             data = data["data"]
             Log.critical("房间 %s %s 抽奖结果: %s X %s" %
                          (real_roomid, raffle_name, data["gift_name"],
                           data["gift_num"]))
             Statistics.add2results(data["gift_name"],
                                    int(data["gift_num"]))
Пример #3
0
 async def join(num, real_roomid, raffle_id):
     await asyncio.sleep(random.uniform(0.5, min(30, num * 1.3)))
     data = await BasicRequest.guard_req_join(real_roomid, raffle_id)
     Log.info("参与了房间 %s 的大航海抽奖" % (real_roomid))
     if not data["code"]:
         for award in data["data"]["award_list"]:
             result = re.search("(^获得|^)(.*)<%(\+|X)(\d*)%>", award['name'])
             Statistics.add2results(result.group(2), result.group(4))
         Log.critical("房间 %s 大航海抽奖结果: %s" %
                      (real_roomid, data["data"]["message"]))
         Statistics.add2joined_raffles("大航海(合计)")
     else:
         Log.info(data)
Пример #4
0
    def handle_danmu(self, body):
        data = json.loads(body.decode("utf-8"))
        cmd = data["cmd"]

        if cmd == "PREPARING":
            Log.info("%s 号弹幕监控下播 %s" % (self._area_id, self._room_id))
            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的)
            msg_type = data["msg_type"]
            msg_common = data["msg_common"]
            real_roomid = data["real_roomid"]
            msg_common = data["msg_common"].replace(" ", "")
            msg_common = msg_common.replace("“", "")
            msg_common = msg_common.replace("”", "")
            # 小电视,DokiDoki,摩天大楼之类的抽奖活动
            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]
                Log.critical(
                    "%s 号弹幕监控检测到 %s 的 %s 个 %s" %
                    (self._area_id, real_roomid, raffle_num, raffle_name))
                if config["Raffle_Handler"]["TV"] != "False":
                    Raffle_Handler.RaffleHandler.push2queue((
                        real_roomid,
                        raffle_name,
                    ), TvRaffleHandler.check)
                # 如果不是全区就设置为1(分区)
                broadcast_type = 0 if broadcast == '全区' else 1
                Statistics.add2pushed_raffles(raffle_name, broadcast_type,
                                              raffle_num)
            # 大航海
            elif msg_type == 3:
                raffle_name = msg_common.split("开通了")[-1][:2]
                Log.critical("%s 号弹幕监控检测到 %s 的 %s" %
                             (self._area_id, real_roomid, raffle_name))
                if config["Raffle_Handler"]["GUARD"] != "False":
                    Raffle_Handler.RaffleHandler.push2queue(
                        (real_roomid, ), GuardRaffleHandler.check)
                # 如果不是总督就设置为2(本房间)
                broadcast_type = 0 if raffle_name == "总督" else 2
                Statistics.add2pushed_raffles(raffle_name, broadcast_type)
            # 节奏风暴
            elif msg_type == 6:
                raffle_name = "二十倍节奏风暴"
                Log.critical("%s 号弹幕监控检测到 %s 的 %s" %
                             (self._area_id, real_roomid, raffle_name))
                if config["Raffle_Handler"]["STORM"] != "False":
                    Raffle_Handler.RaffleHandler.push2queue(
                        (real_roomid, ), StormRaffleHandler.check)
                Statistics.add2pushed_raffles(raffle_name)

        # 论缩进的重要性,缩进太多永远都是:
        # 网络波动, X 号弹幕姬延迟3s后重启
        # X 号弹幕姬异常或主动断开,正在处理剩余信息
        # X 号弹幕姬退出,剩余任务处理完毕
        # Debug 这个问题Debug了两天
        return True