async def parseDanMu(self, dic):

        cmd = dic.get('cmd')
        if cmd is None:
            Printer().printer(dic, "Error", "red")
            return

        if cmd == 'HeartBeat':
            print(dic)
        elif cmd == 'Storm':
            pass
        elif cmd == 'Guard':
            print(dic)
            await GuardLottery().guard_join(dic["data"]["RoomId"], dic["data"]["Id"])
        elif cmd == 'PKLottery':
            print(dic)
            await PKLottery().pk_join(dic["data"]["RoomId"], dic["data"]["Id"])
        elif cmd == 'Raffle':
            print(dic)
            Rafflehandler().append2list_TV(dic["data"]["RoomId"])
        elif cmd == 'AnchorLottery':
            pass

        else:
            Printer().printer(dic, "Info", "green")
Esempio n. 2
0
async def load_tasks(user: User) -> List[dict]:
    asyncio.create_task(OnlineHeart().run(), name="OnlineHeart")
    asyncio.create_task(Rafflehandler().run(), name="Rafflehandler")
    tasks = []
    for user_task in await user.load_tasks():
        await load_one_task(tasks, user_task)
    asyncio.create_task(biliconsole.Biliconsole().run(), name="biliconsole")
    return tasks
async def handle_1_room_TV(real_roomid):
    await asyncio.sleep(random.uniform(0, 1))
    result = await utils.check_room_true(real_roomid)
    if True in result:
        Printer().printer(f"检测到房间 {real_roomid} 的钓鱼操作", "Warning", "red")
    else:
        await bilibili().post_watching_history(real_roomid)
        response = await bilibili().get_giftlist_of_TV(real_roomid)
        json_response = await response.json(content_type=None)

        gifts = json_response['data']['gift']

        for gift in gifts:
            if gift['raffleId'] not in Rafflehandler().list_TV_processed:
                gift_data = {
                    'id': gift['raffleId'],
                    'type': gift['type'],
                    'time_wait': gift['time_wait'],
                    'roomid': real_roomid,
                }
                Rafflehandler().list_TV_processed.append(gift['raffleId'])
                await Rafflehandler().list_TV_waiting.put(gift_data)
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)

        except:
            return
        cmd = dic['cmd']

        if cmd == 'LIVE':
            # Printer().printer(f"[{self.area}分区] 房间 {self._roomId} 疑似切换分区!启动分区检查", "Info", "green")
            # await utils.check_area_list([self.area], mandatory_check=True)
            pass
        elif cmd == 'PREPARING':
            Printer().printer(f"[{self.area}分区] 房间 {self._roomId} 下播!将切换监听房间",
                              "Info", "green")
            self.close_connection()
            await utils.reconnect(self.area)
        elif cmd == 'DANMU_MSG':
            # Printer().printer(f"{dic}", "Message", "cyan", printable=False)
            pass
        elif cmd == 'SYS_GIFT':
            # Printer().printer(f"出现了远古的SYS_GIFT,请尽快联系开发者{dic}", "Warning", "red")
            pass
        elif cmd == 'NOTICE_MSG':
            # msg_type: 1 小时榜首绘马大奖等通报
            #           2 抽奖 (TV, 大楼, etc.)
            #           3 舰队
            #           4 总督进入直播间
            #           5 当前房间高能大奖
            #           6 风暴
            #           8 任意门
            #           9 活动中主播达成星级通报
            try:
                if dic.get('msg_type') in [2, 8]:
                    real_roomid = dic.get('real_roomid')
                    Printer().printer(
                        f"检测到房间 {real_roomid} 的广播抽奖 @[{self.area}分区]{self._roomId}",
                        "Lottery", "cyan")
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist(real_roomid,
                                                      self.area[0])
                else:
                    Printer().printer(
                        f"{dic['msg_common']} @[{self.area}分区]{self._roomId}",
                        "Info", "green")
            except Exception:
                Printer().printer(f"NOTICE_MSG出错,请联系开发者 {dic}", "Warning",
                                  "red")
        elif cmd == 'SYS_MSG':
            if set(dic) in [
                    set(self.dic_bulletin), {'cmd', 'msg', 'msg_text'},
                {'cmd', 'msg', 'url'}
            ]:
                Printer().printer(
                    f"{dic['msg']} @[{self.area}分区]{self._roomId}", "Info",
                    "green")
            else:
                try:
                    real_roomid = dic['real_roomid']
                    Printer().printer(
                        f"检测到房间 {real_roomid} 的广播抽奖 @[{self.area}分区]{self._roomId}",
                        "Lottery", "cyan")
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist(real_roomid,
                                                      self.area[0])
                except:
                    Printer().printer(f"SYS_MSG出错,请联系开发者 {dic}", "Warning",
                                      "red")

        # 观众相关 [欢迎入场,送礼,发弹幕]
        elif cmd in ["WELCOME", "SEND_GIFT", "DANMU_MSG"]:
            pass
        # 各种通知 [通知(当前房间开奖 活动小时榜 各种SYS_MSG都会同时有NOTICE_MSG),系统通知(友爱社 心愿达成 绘马 主播招募 直播间强推)]
        elif cmd in ["NOTICE_MSG", "SYS_MSG"]:
            pass
        # 各种高能 [节奏风暴(开始 结束),高能广播(无抽奖 活动高能 全频风暴),抽奖通知(现在广播全在这里了),总督广播]
        elif cmd in [
                "SPECIAL_GIFT", "SYS_GIFT", "SYS_MSG", "GUARD_MSG",
                "GUIARD_MSG"
        ]:
            pass
        # 礼物效果 [连击开始,连击结束,使用积分加成卡]
        elif cmd in ["COMBO_SEND", "COMBO_END", "SCORE_CARD"]:
            pass
        # PK相关
        elif cmd in [
                "PK_INVITE_INIT", "PK_INVITE_FAIL", "PK_INVITE_CANCEL",
                "PK_INVITE_SWITCH_OPEN", "PK_INVITE_SWITCH_CLOSE", "PK_PRE",
                "PK_START", "PK_PROCESS", "PK_SETTLE", "PK_END", "PK_MIC_END",
                "PK_MATCH", "PK_CLICK_AGAIN", "PK_AGAIN"
        ]:
            pass
        # 当前房间抽奖相关
        elif cmd in [
                "RAFFLE_START", "RAFFLE_END", "TV_START", "TV_END",
                "GUARD_LOTTERY_START", "LOTTERY_START"
        ]:
            pass
        # 房间管理相关 [屏蔽关键词,用户被加入黑名单,禁言开启,禁言关闭,新设房管,房管变更]
        elif cmd in [
                "ROOM_SHIELD", "ROOM_BLOCK_MSG", "ROOM_SILENT_ON",
                "ROOM_SILENT_OFF", "room_admin_entrance", "ROOM_ADMINS"
        ]:
            pass
        # 舰队相关 [本房间购买舰长,船票购买,本房间舰队消息(登船),船员进房间,进房间特效]
        elif cmd in [
                "USER_TOAST_MSG", "GUARD_BUY", "GUARD_MSG", "WELCOME_GUARD",
                "ENTRY_EFFECT"
        ]:
            pass
        # 直播状态相关 [开播,下播,警告,被切直播,房间被封]
        elif cmd in ["LIVE", "PREPARING", "WARNING", "CUT_OFF", "ROOM_LOCK"]:
            pass
        # 活动榜单相关 [进入小时榜,未知,获小时榜第一道具奖励]
        elif cmd in ["ROOM_RANK", "new_anchor_reward", "HOUR_RANK_AWARDS"]:
            pass
        # 活动相关 [活动获得的直播间入场特效,活动事件(如充能值信息),以前的高能事件,送礼抽奖活动开奖,LOL竞猜活动,LOL助力活动,?(不知道是啥,每个直播间都有,无论开播,每分钟发一次),?,?,冲鸭!机甲大作战相关,周星活动相关]
        elif cmd in [
                "WELCOME_ACTIVITY", "ACTIVITY_EVENT", "EVENT_CMD",
                "BOX_LOTTERY_WIN", "LOL_ACTIVITY", "ACTIVITY_MATCH_GIFT",
                "ACTIVITY_BANNER_RED_NOTICE_CLOSE", "ACTIVITY_BANNER_CLOSE",
                "DAILY_QUEST_NEWDAY", "BOSS_ENERGY", "NOTICE_MSG_H5",
                "BOSS_INJURY", "BOSS_BATTLE", "ANIMATION", "BOSS_INFO",
                "WEEK_STAR_CLOCK", "ROOM_BOX_MASTER", "ROOM_BOX_USER"
        ]:
            pass
        # 直播间信息相关 [直播间更换壁纸,直播间界面皮肤变化,许愿瓶进度变化,关注数变化,直播间更名,实物抽奖宝箱提醒,实物抽奖宝箱开奖,弹幕抽奖结束]
        elif cmd in [
                "CHANGE_ROOM_INFO", "ROOM_SKIN_MSG", "WISH_BOTTLE",
                "ROOM_REAL_TIME_MESSAGE_UPDATE", "ROOM_CHANGE",
                "BOX_ACTIVITY_START", "WIN_ACTIVITY", "DANMU_LOTTERY_END"
        ]:
            pass
        # 大乱斗活动
        elif cmd in [
                "PK_BATTLE_ENTRANCE", "PK_BATTLE_PRE",
                "PK_BATTLE_MATCH_TIMEOUT", "PK_BATTLE_START",
                "PK_BATTLE_VOTES_ADD", "PK_BATTLE_PROCESS",
                "PK_BATTLE_PRO_TYPE", "PK_BATTLE_GIFT", "PK_BATTLE_END",
                "PK_BATTLE_RANK_CHANGE", "PK_BATTLE_SETTLE_USER",
                "PK_BATTLE_SETTLE", "PK_LOTTERY_START",
                "ACTIVITY_BANNER_UPDATE"
        ]:
            pass
        else:
            # Printer().printer(f"出现一个未知msg @[{self.area}分区]{self._roomId} {dic}", "Warning", "red")
            pass
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)

        except:
            return
        cmd = dic['cmd']

        if cmd == 'PREPARING':

            Printer().printlist_append([
                'join_lottery', '', 'user', "房间 {:^9} 下播!将切换监听房间".format(
                    self._roomId)
            ], True)
            try:
                await utils.reconnect()
            except:
                print("切换房间失败,休眠5s后再次尝试")
                await asyncio.sleep(5)
                await utils.reconnect()

        elif cmd == 'DANMU_MSG':
            # print(dic)
            Printer().printlist_append(['danmu', '弹幕', 'user', dic])
            return
        elif cmd == 'SYS_GIFT':
            try:
                text1 = dic['real_roomid']
                text2 = dic['url']
                Printer().printlist_append([
                    'join_lottery', '', 'user', "检测到房间{:^9}的活动抽奖".format(text1)
                ], True)
                Rafflehandler().append2list_activity(text1)
                Statistics().append2pushed_activitylist()
            except:
                pass
            return
        elif cmd == 'SYS_MSG':
            if set(self.dic_bulletin) == set(dic):
                Printer().printlist_append(
                    ['join_lottery', '系统公告', 'user', dic['msg']])
            else:
                try:
                    TV_url = dic['url']
                    real_roomid = dic['real_roomid']
                    Printer().printlist_append([
                        'join_lottery', '小电视', 'user',
                        "检测到房间{:^9}的广播抽奖".format(real_roomid)
                    ], True)
                    Rafflehandler().append2list_TV(real_roomid)
                    Rafflehandler().append2list_activity(real_roomid)
                    Statistics().append2pushed_TVlist()
                    Statistics().append2pushed_activitylist()
                except:
                    print('SYS_MSG出错,请联系开发者', dic)
            return
        elif cmd == "WELCOME":
            pass
        elif cmd == "SEND_GIFT":
            pass
        elif cmd == "WELCOME_GUARD":
            pass
        elif cmd == "WISH_BOTTLE":
            pass
        elif cmd == "COMBO_END":
            pass
        elif cmd == "ENTRY_EFFECT":
            pass
        elif cmd == "ROOM_RANK":
            pass
        elif cmd == "COMBO_SEND":
            pass
        elif cmd == "ROOM_BLOCK_MSG":
            pass
        elif cmd == "SPECIAL_GIFT":
            pass
        else:
            Printer().printlist_append(
                ['join_lottery', '小电视', 'user', "出现一个未知msg{}".format(dic)],
                True)
Esempio n. 6
0
import bili_console
from bilitimer import BiliTimer


loop = asyncio.get_event_loop()
fileDir = os.path.dirname(os.path.realpath('__file__'))

ConfigLoader(fileDir)

# print('Hello world.')
printer = Printer()
bilibili()
login.login()
Statistics()

rafflehandler = Rafflehandler()
var_console = bili_console.Biliconsole(loop)

list_raffle_connection = [connect.RaffleConnect(i) for i in range(1, 5)]
list_raffle_connection_task = [i.run() for i in list_raffle_connection]
yjconnection = connect.YjConnection()

danmu_connection = connect.connect()


bili_timer = BiliTimer(loop)

console_thread = threading.Thread(target=var_console.cmdloop)

console_thread.start()
Esempio n. 7
0
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)

        except:
            return
        cmd = dic['cmd']

        if cmd == 'PREPARING':

            Printer().printer(f"房间 {self._roomId} 下播!将切换监听房间", "Info", "green")
            try:
                await utils.reconnect()
            except:
                Printer().printer(f"切换房间失败,休眠5s后再次尝试", "Error", "red")
                await asyncio.sleep(5)
                await utils.reconnect()

        elif cmd == 'DANMU_MSG':
            Printer().printer(f"{dic}", "Message", "Cyan", printable=False)
            return
        elif cmd == 'SYS_GIFT':
            try:
                Printer().printer(f"出现了远古的SYS_GIFT,请尽快联系开发者{dic}", "Warning", "red")
            except:
                pass
            return
        elif cmd == 'SYS_MSG':
            if set(self.dic_bulletin) == set(dic):
                Printer().printer(dic['msg'], "Info", "green")
            else:
                try:
                    real_roomid = dic['real_roomid']
                    Printer().printer(f"检测到房间 {real_roomid} 的广播抽奖", "Lottery", "blue")
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist()
                except:
                    print('SYS_MSG出错,请联系开发者', dic)
            return
        elif cmd == "WELCOME":
            pass
        elif cmd == "SEND_GIFT":
            pass
        elif cmd == "WELCOME_GUARD":
            pass
        elif cmd=="WELCOME_ACTIVITY":      #欢迎来到活动
            pass
        elif cmd == "WISH_BOTTLE":
            pass
        elif cmd == "COMBO_END":
            pass
        elif cmd == "ENTRY_EFFECT":
            pass
        elif cmd == "ROOM_RANK":
            pass
        elif cmd == "COMBO_SEND":
            pass
        elif cmd == "ROOM_BLOCK_MSG":
            pass
        elif cmd == "SPECIAL_GIFT":
            pass
        elif cmd == "NOTICE_MSG":
            pass
        elif cmd == "GUARD_MSG":
            pass
        elif cmd == "GUARD_BUY":
            pass
        elif cmd == "GUARD_LOTTERY_START":
            pass
        elif cmd == "PK_INVITE_INIT":
            pass
        elif cmd == "PK_CLICK_AGAIN":
            pass
        elif cmd == "PK_AGAIN":
            pass
        elif cmd == "PK_MATCH":  # pk匹配
            pass
        elif cmd == "PK_MIC_END":
            pass
        elif cmd == "PK_PRE":  # pk预备阶段
            pass
        elif cmd == "LIVE":  # 开播
            pass
        elif cmd == "PK_PROCESS":  # pk 过程值
            pass
        elif cmd == "PK_END":  # pk结束
            pass
        elif cmd == "PK_SETTLE":  # pk settle
            pass
        elif cmd == "PK_START":  # pk开始
            pass
        elif cmd == "ACTIVITY_EVENT":  # 没有用的充能值信息
            pass
        elif cmd == "WARNING":  # {'cmd': 'WARNING', 'msg': '违反直播分区规范,请立即更换至游戏区', 'roomid': 69956}
            pass
        elif cmd == "RAFFLE_END":  # 抽奖结束
            pass
        elif cmd == "RAFFLE_START":  # 抽奖开始
            pass
        elif cmd=="ROOM_SHIELD":             #未知msg{'cmd': 'ROOM_SHIELD', 'type': 1, 'user': '', 'keyword': '', 'roomid': 3051144}
            pass
        elif cmd == "TV_START":             # 未知msg{'cmd': 'TV_START', 'data': {'id': '159720', 'dtime': 180, 'msg': {'cmd': 'SYS_MSG', 'msg': 'もやしパワー:? 送给:? 管珩心-中间的字念横:? 1个小电视飞船
            pass
        elif cmd == "TV_END":               #未知msg{'cmd': 'TV_END', 'data': {'id': '159720', 'uname': '顾惜大哥哥', 'sname': 'もやしパワー', 'giftName': '100000x银瓜子', 'mobileTips': '恭喜 顾惜大哥哥 获得100000x银瓜子'
            pass
        elif cmd == "ROOM_ADMINS":         #未知msg{'cmd': 'ROOM_ADMINS', 'uids': [25866878, 7026393, 240404878, 52054996]}
            pass
        elif cmd=="ROOM_SILENT_ON":         #msg{'cmd': 'ROOM_SILENT_ON', 'data': {'type': 'level', 'level': 1, 'second': -1}, 'roomid': 5225}
            pass
        elif cmd=="ROOM_SILENT_OFF":        #msg{'cmd': 'ROOM_SILENT_OFF', 'data': [], 'roomid': 5225}
            pass
        else:
            Printer().printer(f"出现一个未知msg{dic}", "Info", "red")
            pass
Esempio n. 8
0
 def do_check(self, line):
     Rafflehandler.getlist()
Esempio n. 9
0
    async def parseDanMu(self, messages):
        # await bilibili().request_send_danmu_msg_andriod('hbhnukunkunk', 6149819)

        try:
            dic = json.loads(messages)
        except:
            return
        cmd = dic['cmd']

        if cmd == 'DANMU_MSG':
            # print(dic)
            Printer().printlist_append(['danmu', '弹幕', 'user', dic])
            return
        if cmd == 'SYS_GIFT':
            if 'giftId' in dic.keys():
                if str(dic['giftId']) in bilibili().get_giftids_raffle_keys():

                    text1 = dic['real_roomid']
                    text2 = dic['url']
                    giftId = dic['giftId']
                    Printer().printlist_append([
                        'join_lottery', '', 'user', "检测到房间{:^9}的{}活动抽奖".format(
                            text1,
                            bilibili().get_giftids_raffle(str(giftId)))
                    ], True)
                    Rafflehandler().append2list_activity(giftId, text1, text2)
                    Statistics().append2pushed_activitylist()

                elif dic['giftId'] == 39:
                    Printer().printlist_append(
                        ['join_lottery', '', 'user', "节奏风暴"])
                    response = await bilibili().get_giftlist_of_storm(dic)
                    temp = await response.json()
                    check = len(temp['data'])
                    if check != 0 and temp['data']['hasJoin'] != 1:
                        id = temp['data']['id']
                        response1 = await bilibili().get_gift_of_storm(id)
                        json_response1 = await response1.json()
                        print(json_response1)
                    else:
                        Printer().printlist_append(
                            ['join_lottery', '', 'debug', [dic, "请联系开发者"]])
                else:
                    text1 = dic['real_roomid']
                    text2 = dic['url']
                    Printer().printlist_append(
                        ['join_lottery', '', 'debug', [dic, "请联系开发者"]])
                    try:
                        giftId = dic['giftId']
                        Printer().printlist_append([
                            'join_lottery', '', 'user',
                            "检测到房间{:^9}的{}活动抽奖".format(
                                text1,
                                bilibili().get_giftids_raffle(str(giftId)))
                        ], True)
                        Rafflehandler().append2list_activity(
                            giftId, text1, text2)
                        Statistics().append2pushed_activitylist()

                    except:
                        pass

            else:
                Printer().printlist_append([
                    'join_lottery', '普通送礼提示', 'user',
                    ['普通送礼提示', dic['msg_text']]
                ])
            return
        if cmd == 'SYS_MSG':
            if set(self.dic_bulletin) == set(dic):
                Printer().printlist_append(
                    ['join_lottery', '系统公告', 'user', dic['msg']])
            else:
                try:
                    TV_url = dic['url']
                    real_roomid = dic['real_roomid']
                    Printer().printlist_append([
                        'join_lottery', '小电视', 'user',
                        "检测到房间{:^9}的小电视抽奖".format(real_roomid)
                    ], True)
                    # url = "https://api.live.bilibili.com/AppSmallTV/index?access_key=&actionKey=appkey&appkey=1d8b6e7d45233436&build=5230003&device=android&mobi_app=android&platform=android&roomid=939654&ts=1521734039&sign=4f85e1d3ce0e1a3acd46fcf9ca3cbeed"
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist()

                except:
                    print('请联系开发者', dic)
        if cmd == 'GUARD_MSG':
            print(dic)
            try:
                a = re.compile(r"(?<=在主播 )\S+(?= 的直播间开通了总督)")
                res = a.findall(str(dic))
                search_url = "https://search.bilibili.com/api/search?search_type=live&keyword=" + str(
                    res[0])
                response = requests.get(search_url)
                roomid = response.json()['result']['live_user'][0]['roomid']
                print(roomid)
                response1 = await bilibili().get_giftlist_of_captain(roomid)
                json_response1 = await response1.json()
                print(json_response1)
                num = len(json_response1['data']['guard'])
                if num == 0:
                    print('尝试解决总督')
                    await asyncio.sleep(10)
                    response1 = await bilibili().get_giftlist_of_captain(roomid
                                                                         )
                    json_response1 = await response1.json()
                    print(json_response1)
                    num = len(json_response1['data']['guard'])
                for i in range(0, num):
                    id = json_response1['data']['guard'][i]['id']
                    print(id)
                    response2 = await bilibili().get_gift_of_captain(
                        roomid, id)
                    json_response2 = await response2.json()
                    payload = {
                        "roomid": roomid,
                        "id": id,
                        "type": "guard",
                        "csrf_token": ''
                    }
                    print(payload)
                    print("获取到房间 %s 的总督奖励: " % (roomid), json_response2)
            except:
                Printer().printlist_append(
                    ['join_lotter', '', 'debug', "# 没领取到奖励,请联系开发者"])
                pass
            return
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)
        except:
            return
        cmd = dic['cmd']

        if cmd == 'DANMU_MSG':
            # print(dic)
            Printer().printlist_append(['danmu', '弹幕', 'user', dic])
            return
        if cmd == 'SYS_GIFT':
            try:
                text1 = dic['real_roomid']
                text2 = dic['url']
                Printer().printlist_append(['join_lottery', '', 'user', "检测到房间{:^9}的活动抽奖".format(text1)], True)
                Rafflehandler().append2list_activity(text1,text2)
                Statistics().append2pushed_activitylist()
            except:
                pass
            return
        if cmd == 'SYS_MSG':
            if set(self.dic_bulletin) == set(dic):
                Printer().printlist_append(['join_lottery', '系统公告', 'user', dic['msg']])
            else:
                try:
                    TV_url = dic['url']
                    real_roomid = dic['real_roomid']
                    Printer().printlist_append(['join_lottery', '小电视', 'user', "检测到房间{:^9}的小电视抽奖".format(real_roomid)], True)
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist()
                except:
                    print('SYS_MSG出错,请联系开发者', dic)
        if cmd == 'GUARD_MSG':
            print(dic)
            try:
                a = re.compile(r"(?<=在主播 )\S+(?= 的直播间开通了总督)")
                res = a.findall(str(dic))
                search_url = "https://search.bilibili.com/api/search?search_type=live&keyword=" + str(res[0])
                response = requests.get(search_url)
                roomid = response.json()['result']['live_user'][0]['roomid']
                print(roomid)
                response1 = await bilibili().get_giftlist_of_captain(roomid)
                json_response1 = await response1.json()
                print(json_response1)
                num = len(json_response1['data']['guard'])
                if num == 0:
                    print('尝试解决总督')
                    await asyncio.sleep(10)
                    response1 = await bilibili().get_giftlist_of_captain(roomid)
                    json_response1 = await response1.json()
                    print(json_response1)
                    num = len(json_response1['data']['guard'])
                for i in range(0, num):
                    id = json_response1['data']['guard'][i]['id']
                    print(id)
                    response2 = await bilibili().get_gift_of_captain(roomid, id)
                    json_response2 = await response2.json()
                    payload = {"roomid": roomid, "id": id, "type": "guard", "csrf_token": ''}
                    print(payload)
                    print("获取到房间 %s 的总督奖励: " %(roomid),json_response2)
            except:
                Printer().printlist_append(['join_lotter', '', 'debug', "# 没领取到奖励,请联系开发者"])
                pass
            return
Esempio n. 11
0
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)

        except:
            return
        cmd = dic['cmd']

        if cmd == 'PREPARING':
            Printer().printlist_append([
                'join_lottery', '', 'user', "房间{0}下播!将切换监听房间".format(
                    self._roomId)
            ], True)
            await utils.reconnect()

        if cmd == 'DANMU_MSG':
            # print(dic)
            Printer().printlist_append(['danmu', '弹幕', 'user', dic])
            return
        if cmd == 'SYS_GIFT':
            try:
                text1 = dic['real_roomid']
                text2 = dic['url']
                Printer().printlist_append([
                    'join_lottery', '', 'user', "检测到房间{:^9}的活动抽奖".format(text1)
                ], True)
                Rafflehandler().append2list_activity(text1, text2)
                Statistics().append2pushed_activitylist()
            except:
                pass
            return
        if cmd == 'SYS_MSG':
            if set(self.dic_bulletin) == set(dic):
                Printer().printlist_append(
                    ['join_lottery', '系统公告', 'user', dic['msg']])
            else:
                try:
                    TV_url = dic['url']
                    real_roomid = dic['real_roomid']
                    Printer().printlist_append([
                        'join_lottery', '小电视', 'user',
                        "检测到房间{:^9}的小电视抽奖".format(real_roomid)
                    ], True)
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist()
                except:
                    print('SYS_MSG出错,请联系开发者', dic)
        if cmd == 'GUARD_MSG':
            print(dic)
            try:
                await asyncio.sleep(10)
                a = re.compile(r"(?<=在主播 )\S+(?= 的直播间开通了总督)")
                res = a.findall(str(dic))
                name = res[0]
                roomid = await utils.check_up_name(name)
                if roomid == 0:
                    roomid = await utils.check_up_name(name)
                print(roomid)
                response1 = await bilibili().get_giftlist_of_captain(roomid)
                json_response1 = await response1.json()
                print(json_response1)
                num = len(json_response1['data']['guard'])
                if num == 0:
                    await asyncio.sleep(10)
                    response1 = await bilibili().get_giftlist_of_captain(roomid
                                                                         )
                    json_response1 = await response1.json()
                    print(json_response1)
                    num = len(json_response1['data']['guard'])
                for i in range(0, num):
                    id = json_response1['data']['guard'][i]['id']
                    print(id)
                    response2 = await bilibili().get_gift_of_captain(
                        roomid, id)
                    json_response2 = await response2.json()
                    payload = {
                        "roomid": roomid,
                        "id": id,
                        "type": "guard",
                        "csrf_token": ''
                    }
                    print(payload)
                    print("获取到房间 %s 的总督奖励: " % (roomid), json_response2)
            except:
                Printer().printlist_append(
                    ['join_lotter', '', 'user', "没领取到奖励,请联系开发者"])
                pass
            return
Esempio n. 12
0
 def do_check(self, line):
     Rafflehandler.getlist()
     Statistics.checklist()
Esempio n. 13
0
START = ConfigLoader().dic_user['other_control']['START']
END = ConfigLoader().dic_user['other_control']['END']

# print('Hello world.')
printer = Printer()
bilibili()
login.login()
Statistics()

list_realroomid = None
# list_realroomid = ConfigLoader().dic_roomid['roomid']
list_realroomid = loop.run_until_complete(asyncio.gather(
    utils.getRecommend()))[0]
print(list_realroomid[:5])

rafflehandler = Rafflehandler()
var_console = bili_console.Biliconsole(loop)

list_raffle_connection = [
    connect.RaffleConnect(i - START + 1, list_realroomid[i])
    for i in range(START, END)
]
list_raffle_connection_task = [i.run() for i in list_raffle_connection]

yjchecking = connect.RaffleConnect(-1, None)

console_thread = threading.Thread(target=var_console.cmdloop)

console_thread.start()

Esempio n. 14
0
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)

        except:
            return
        cmd = dic['cmd']

        if cmd == 'LIVE':
            # Printer().printer(f"[{self.area}分区] 房间 {self._roomId} 疑似切换分区!启动分区检查", "Info", "green")
            # await utils.check_area_list([self.area], mandatory_check=True)
            pass
        elif cmd == 'PREPARING':
            Printer().printer(f"[{self.area}分区] 房间 {self._roomId} 下播!将切换监听房间",
                              "Info", "green")
            self.close_connection()
            await utils.reconnect(self.area)
        elif cmd == 'DANMU_MSG':
            # Printer().printer(f"{dic}", "Message", "cyan", printable=False)
            pass
        elif cmd == 'SYS_GIFT':
            # Printer().printer(f"出现了远古的SYS_GIFT,请尽快联系开发者{dic}", "Warning", "red")
            pass
        elif cmd == 'SYS_MSG':
            if set(dic) in [
                    set(self.dic_bulletin), {'cmd', 'msg', 'msg_text'},
                {'cmd', 'msg', 'url'}
            ]:
                Printer().printer(
                    f"{dic['msg']} @[{self.area}分区]{self._roomId}", "Info",
                    "green")
            else:
                try:
                    real_roomid = dic['real_roomid']
                    Printer().printer(
                        f"检测到房间 {real_roomid} 的广播抽奖 @[{self.area}分区]{self._roomId}",
                        "Lottery", "cyan")
                    Rafflehandler().append2list_TV(real_roomid)
                    Statistics().append2pushed_TVlist(real_roomid,
                                                      self.area[0])
                except:
                    Printer().printer(f"SYS_MSG出错,请联系开发者 {dic}", "Warning",
                                      "red")

        # 观众相关 [欢迎入场,送礼,发弹幕]
        elif cmd in ["WELCOME", "SEND_GIFT", "DANMU_MSG"]:
            pass
        # 各种通知 [通知(当前房间开奖 活动小时榜 各种SYS_MSG都会同时有NOTICE_MSG),系统通知(友爱社 心愿达成 绘马 主播招募 直播间强推)]
        elif cmd in ["NOTICE_MSG", "SYS_MSG"]:
            pass
        # 各种高能 [节奏风暴(开始 结束),高能广播(无抽奖 活动高能 全频风暴),抽奖通知(现在广播全在这里了),总督广播]
        elif cmd in ["SPECIAL_GIFT", "SYS_GIFT", "SYS_MSG", "GUARD_MSG"]:
            pass
        # 礼物连击
        elif cmd in ["COMBO_SEND", "COMBO_END"]:
            pass
        # PK相关
        elif cmd in [
                "PK_INVITE_INIT", "PK_INVITE_FAIL", "PK_INVITE_CANCEL",
                "PK_INVITE_SWITCH_OPEN", "PK_INVITE_SWITCH_CLOSE", "PK_PRE",
                "PK_START", "PK_PROCESS", "PK_SETTLE", "PK_END", "PK_MIC_END",
                "PK_MATCH", "PK_CLICK_AGAIN", "PK_AGAIN"
        ]:
            pass
        # 抽奖相关
        elif cmd in [
                "RAFFLE_START", "RAFFLE_END", "TV_START", "TV_END",
                "GUARD_LOTTERY_START"
        ]:
            pass
        # 房间管理相关 [屏蔽关键词,用户被加入黑名单,禁言开启,禁言关闭,新设房管,房管变更]
        elif cmd in [
                "ROOM_SHIELD", "ROOM_BLOCK_MSG", "ROOM_SILENT_ON",
                "ROOM_SILENT_OFF", "room_admin_entrance", "ROOM_ADMINS"
        ]:
            pass
        # 舰队相关 [本房间购买舰长,船票购买,本房间舰队消息(登船),船员进房间,进房间特效]
        elif cmd in [
                "USER_TOAST_MSG", "GUARD_BUY", "GUARD_MSG", "WELCOME_GUARD",
                "ENTRY_EFFECT"
        ]:
            pass
        # 直播状态相关 [开播,下播,警告,被切直播,房间被封]
        elif cmd in ["LIVE", "PREPARING", "WARNING", "CUT_OFF", "ROOM_LOCK"]:
            pass
        # 活动榜单相关 [进入小时榜,未知,获小时榜第一道具奖励]
        elif cmd in ["ROOM_RANK", "new_anchor_reward", "HOUR_RANK_AWARDS"]:
            pass
        # 活动相关 [活动获得的直播间入场特效,活动事件(如充能值信息),以前的高能消息]
        elif cmd in ["WELCOME_ACTIVITY", "ACTIVITY_EVENT", "EVENT_CMD"]:
            pass
        # 直播间信息相关 [直播间更换壁纸,许愿瓶进度变化,实物抽奖宝箱提醒]
        elif cmd in ["CHANGE_ROOM_INFO", "WISH_BOTTLE", "BOX_ACTIVITY_START"]:
            pass
        else:
            Printer().printer(
                f"出现一个未知msg @[{self.area}分区]{self._roomId} {dic}", "Warning",
                "red")
            pass
Esempio n. 15
0
    async def parseDanMu(self, messages):
        try:
            dic = json.loads(messages)
            # print(dic)

        except:
            return
        cmd = dic['cmd']

        if cmd == 'PREPARING':

            Printer().printlist_append([
                'join_lottery', '', 'user', "房间 {:^9} 下播!将切换监听房间".format(
                    self._roomId)
            ], True)
            try:
                await utils.reconnect()
            except:
                print("切换房间失败,休眠5s后再次尝试")
                await asyncio.sleep(5)
                await utils.reconnect()

        if cmd == 'DANMU_MSG':
            # print(dic)
            Printer().printlist_append(['danmu', '弹幕', 'user', dic])
            return
        if cmd == 'SYS_GIFT':
            print(dic)
            try:
                text1 = dic['real_roomid']
                text2 = dic['url']
                Printer().printlist_append([
                    'join_lottery', '', 'user', "检测到房间{:^9}的活动抽奖".format(text1)
                ], True)
                Rafflehandler().append2list_activity(text1)
                Statistics().append2pushed_activitylist()
            except:
                pass
            return
        if cmd == 'SYS_MSG':
            print(dic)
            if set(self.dic_bulletin) == set(dic):
                Printer().printlist_append(
                    ['join_lottery', '系统公告', 'user', dic['msg']])
            else:
                try:
                    TV_url = dic['url']
                    real_roomid = dic['real_roomid']
                    Printer().printlist_append([
                        'join_lottery', '小电视', 'user',
                        "检测到房间{:^9}的广播抽奖".format(real_roomid)
                    ], True)
                    Rafflehandler().append2list_TV(real_roomid)
                    Rafflehandler().append2list_activity(real_roomid)
                    Statistics().append2pushed_TVlist()
                    Statistics().append2pushed_activitylist()
                except:
                    print('SYS_MSG出错,请联系开发者', dic)

        if cmd == 'GUARD_MSG':
            # {'cmd': 'GUARD_MSG', 'msg': '用户 :?苏油条:? 在主播 -猫大人- 的直播间开通了总督'
            # , 'buy_type': 1, 'msg_new': '用户<%苏油条%>在主播<%-猫大人-%>的直播间开通了总督
            # 并触发了抽奖,点击前往TA的房间去抽奖吧', 'url': 'https://live.bilibili.com/77353
            # 93', 'roomid': '7735393'}
            print(dic)
            try:
                await asyncio.sleep(10)
                roomid = dic['roomid']
                response1 = await bilibili().get_giftlist_of_captain(roomid)
                json_response1 = await response1.json()
                print(json_response1)
                num = len(json_response1['data']['guard'])
                if num == 0:
                    await asyncio.sleep(10)
                    response1 = await bilibili().get_giftlist_of_captain(roomid
                                                                         )
                    json_response1 = await response1.json()
                    print(json_response1)
                    num = len(json_response1['data']['guard'])
                for i in range(0, num):
                    id = json_response1['data']['guard'][i]['id']
                    print(id)
                    response2 = await bilibili().get_gift_of_captain(
                        roomid, id)
                    json_response2 = await response2.json()
                    payload = {
                        "roomid": roomid,
                        "id": id,
                        "type": "guard",
                        "csrf_token": ''
                    }
                    print(payload)
                    print("获取到房间 %s 的总督奖励: " % (roomid), json_response2)
            except:
                Printer().printlist_append(
                    ['join_lotter', '', 'user', "没领取到奖励,请联系开发者"])
                pass
            return