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")
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)
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()
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
def do_check(self, line): Rafflehandler.getlist()
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
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
def do_check(self, line): Rafflehandler.getlist() Statistics.checklist()
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()
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
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