From 3cdd12644e9432624a8704728f42d6f1ebe1e267 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 31 Dec 2019 15:43:35 +0800 Subject: [PATCH 01/70] =?UTF-8?q?=E5=BD=95=E6=92=AD=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 53 +--- README.md | 12 - Struct/Chat.py | 31 --- Struct/Digg.py | 0 Struct/Gift.py | 61 ----- Struct/Lottery.py | 71 ------ Struct/LuckyUser.py | 19 -- Struct/MemberMsg.py | 36 --- WinMain.py | 218 ---------------- XiguaCommon_pb2.py | 278 --------------------- XiguaGift_pb2.py | 122 --------- XiguaUser_pb2.py | 593 -------------------------------------------- Xigua_pb2.py | 193 -------------- api.py | 187 -------------- 14 files changed, 11 insertions(+), 1863 deletions(-) delete mode 100644 Struct/Chat.py delete mode 100644 Struct/Digg.py delete mode 100644 Struct/Gift.py delete mode 100644 Struct/Lottery.py delete mode 100644 Struct/LuckyUser.py delete mode 100644 Struct/MemberMsg.py delete mode 100644 WinMain.py delete mode 100644 XiguaCommon_pb2.py delete mode 100644 XiguaGift_pb2.py delete mode 100644 XiguaUser_pb2.py delete mode 100644 Xigua_pb2.py diff --git a/Common.py b/Common.py index d2b448e..99e91a4 100644 --- a/Common.py +++ b/Common.py @@ -64,7 +64,7 @@ network = [{ def reloadConfig(): global config - if(os.path.exists('config.json')): + if (os.path.exists('config.json')): _config_fp = open("config.json", "r", encoding="utf8") _config = json.load(_config_fp) config.update(_config) @@ -100,14 +100,14 @@ def updateNetwork(): def getTimeDelta(a, b): sec = (a - b).seconds - ms = (a - b).microseconds - return sec+(ms/100000.0) + ms = (a - b).microseconds + return sec + (ms / 100000.0) def _doClean(_force=False): global doCleanTime, _clean_flag _disk = psutil.disk_usage(".") - if _disk.percent > config["max"] or getTimeDelta(datetime.now(), doCleanTime) > config["exp"]*86400 or _force: + if _disk.percent > config["max"] or getTimeDelta(datetime.now(), doCleanTime) > config["exp"] * 86400 or _force: _clean_flag = True doCleanTime = datetime.now() appendOperation("执行配置的清理命令") @@ -127,9 +127,9 @@ def doClean(_force=False): def getCurrentStatus(): _disk = psutil.disk_usage(".") - _mem = psutil.virtual_memory() - _net = psutil.net_io_counters() - _delta= getTimeDelta(network[-1]["currentTime"], network[-2]["currentTime"]) + _mem = psutil.virtual_memory() + _net = psutil.net_io_counters() + _delta = getTimeDelta(network[-1]["currentTime"], network[-2]["currentTime"]) if 60 > _delta > 1: _inSpeed = (network[-1]["in"]["currentByte"] - network[-2]["in"]["currentByte"]) / _delta _outSpeed = (network[-1]["out"]["currentByte"] - network[-2]["out"]["currentByte"]) / _delta @@ -312,7 +312,6 @@ def loginBilibili(force=False): class downloader(XiGuaLiveApi): playlist = None - def updRoomInfo(self, force=False): doClean() super(downloader, self).updRoomInfo(force) @@ -339,36 +338,6 @@ class downloader(XiGuaLiveApi): streamUrl = None self.playlist = None - def onLike(self, user): - pass - - def onAd(self, i): - pass - - def onChat(self, chat): - pass - - def onEnter(self, msg): - pass - - def onJoin(self, user): - pass - - def onLeave(self, json): - self.updRoomInfo() - - def onMessage(self, msg): - pass - - def onPresent(self, gift): - pass - - def onPresentEnd(self, gift): - pass - - def onSubscribe(self, user): - pass - api = downloader(config["l_u"]) @@ -399,7 +368,7 @@ def publishVideo(date): global isUpload if forceNotUpload is False: b.finishUpload(config["t_t"].format(date), 17, config["tag"], config["des"], - source=config["src"], no_reprint=0) + source=config["src"], no_reprint=0) b.clear() else: appendUploadStatus("设置了不上传,所以[{}]的录播不会上传了".format(date)) @@ -417,16 +386,16 @@ def encodeVideo(name): appendEncodeStatus("Encoded File >{}< is too small, will ignore it".format(name)) return False global isEncode - isEncode=True + isEncode = True appendEncodeStatus("Encoding >{}< Start".format(name)) - _new_name = os.path.splitext(name)[0]+".mp4" + _new_name = os.path.splitext(name)[0] + ".mp4" _code = os.system(config["enc"].format(f=name, t=_new_name)) if _code != 0: Common.appendError("Encode {} with Non-Zero Return.".format(name)) return False Common.modifyLastEncodeStatus("Encode >{}< Finished".format(name)) uploadQueue.put(_new_name) - isEncode=False + isEncode = False loginBilibili(True) diff --git a/README.md b/README.md index 5294775..8b62b4b 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,5 @@ # XiguaLiveDanmakuHelper -### 因西瓜直播弹幕接口加密了,所以该项目会尽量保证录播(获取房间信息及搜索用户信息)可正常使用,其他的接口看西瓜视频的心情了 - -### 西瓜直播弹幕助手--控制台版 - -界面版:[q792602257/XiguaDanmakuHelperGUI](https://github.com/q792602257/XiguaDanmakuHelperGUI "C# ver") - -### 西瓜直播弹幕接口```api.py``` - -> - 西瓜直播的弹幕接口已经加密,有大佬可以去尝试解析一下 - ### 西瓜直播弹幕助手--录播端```WebMain.py``` > - 能够自动进行ffmpeg转码 @@ -19,8 +9,6 @@ > - 少部分错误包容机制 > - 有一个简单的WEB页面,及简单的控制接口 -### 西瓜直播弹幕助手--礼物端```WinMain.py``` - ### 计划更新 ### 并没有呢,这段时间太忙了 diff --git a/Struct/Chat.py b/Struct/Chat.py deleted file mode 100644 index 31269c6..0000000 --- a/Struct/Chat.py +++ /dev/null @@ -1,31 +0,0 @@ -from .User import User -from .Lottery import Lottery - - -class Chat: - - content ="" - user=None - filterString = ["",] - isFiltered = False - - def __init__(self, json=None, lottery:Lottery = None): - if json: - self.parse(json) - if lottery: - self.filterString.append(lottery.content) - - def parse(self, json): - self.user = User(json) - if "extra" in json: - if "content" in json["extra"]: - self.content = json["extra"]['content'] - if self.content in self.filterString: - self.isFiltered = True - - def __str__(self): - return "{} : {}".format(self.user,self.content) - - def __unicode__(self): - return self.__str__() - diff --git a/Struct/Digg.py b/Struct/Digg.py deleted file mode 100644 index e69de29..0000000 diff --git a/Struct/Gift.py b/Struct/Gift.py deleted file mode 100644 index e07e290..0000000 --- a/Struct/Gift.py +++ /dev/null @@ -1,61 +0,0 @@ -import requests -from .User import User - - -class Gift: - roomID = 0 - giftList = {} - - def __init__(self, json=None): - self.ID = 0 - self.count = 0 - self.amount = 0 - self.user = None - if json: - self.parse(json) - - def parse(self, json): - self.user = User(json) - if "common" in json and json["common"] is not None: - if Gift.roomID != int(json["common"]["room_id"]): - Gift.roomID = int(json["common"]["room_id"]) - self.update() - if "extra" in json and json["extra"] is not None: - if "present_info" in json["extra"] and json["extra"]['present_info'] is not None: - self.ID = int(json["extra"]['present_info']['id']) - self.count = json["extra"]['present_info']['repeat_count'] - elif "present_end_info" in json["extra"] and json["extra"]['present_end_info'] is not None: - self.ID = int(json["extra"]['present_end_info']['id']) - self.count = json["extra"]['present_end_info']['count'] - if self.ID != 0 and self.ID in self.giftList: - self.amount = self.giftList[self.ID]["Price"] * self.count - else: - self.update() - - def update(self): - p = requests.get("https://i.snssdk.com/videolive/gift/get_gift_list?room_id={roomID}" - "&version_code=800&device_platform=android".format(roomID=self.roomID)) - d = p.json() - if "gift_info" not in d: - print("错误:礼物更新失败") - else: - for i in d["gift_info"]: - _id = int(i["id"]) - Gift.giftList[_id] = {"Name": i["name"], "Price": i["diamond_count"]} - - def __str__(self): - if self.ID in self.giftList: - giftN = self.giftList[self.ID]["Name"] - else: - giftN = "未知礼物[{}]".format(self.ID) - return "{user} 送出的 {count} 个 {name}".format(user=self.user, count=self.count, name=giftN) - - def __unicode__(self): - return self.__str__() - - def __repr__(self): - if self.ID in self.giftList: - giftN = self.giftList[self.ID]["Name"] - else: - giftN = "未知礼物" - return "西瓜礼物【{}(ID:{})】".format(giftN, self.ID) diff --git a/Struct/Lottery.py b/Struct/Lottery.py deleted file mode 100644 index e2d9eb8..0000000 --- a/Struct/Lottery.py +++ /dev/null @@ -1,71 +0,0 @@ -# coding=utf-8 -import requests -import time -from .LuckyUser import LuckyUser - - -class Lottery: - ID = 0 - isActive = False - content = "" - isFinished = False - luckyUsers = [] - joinedUserCount = 0 - prizeName = "" - finish = 0 - - def __init__(self, json=None): - if json: - self.parse(json) - - def parse(self, json): - if "lottery_info" in json and json["lottery_info"] is not None: - self.isActive = int(json["lottery_info"]["status"]) > 0 - self.ID = json["lottery_info"]["lottery_id"] - for i in json["lottery_info"]['conditions']: - if i['type'] != 3: - continue - self.content = i["content"] - self.joinedUserCount = int(json["lottery_info"]["candidate_num"]) - self.prizeName = json["lottery_info"]["prize_info"]["name"] - _delta = int(json["lottery_info"]["draw_time"]) - int(json["lottery_info"]["current_time"]) - self.finish = time.time()+_delta+1 - elif "extra" in json and json["extra"] is not None: - if "lottery_info" in json["extra"] and json["extra"]["lottery_info"] is not None: - return self.parse(json["extra"]) - - def update(self): - if self.isActive: - if not self.isFinished and self.finish > time.time(): - self.checkFinished() - return True - return False - - def checkFinished(self): - p = requests.get("https://i.snssdk.com/videolive/lottery/check_user_right?lottery_id={}" - "&version_code=730&device_platform=android".format( - self.ID - )) - d = p.json() - if d["base_resp"]["status_code"] != 0: - self.isActive = False - self.isFinished = False - return - self.isActive = int(d["lottery_info"]["status"]) > 0 - self.isFinished = int(d["lottery_info"]["status"]) == 2 - self.joinedUserCount = int(d["lottery_info"]["candidate_num"]) - if self.isFinished: - self.luckyUsers = [ LuckyUser(i) for i in d["lottery_info"]["lucky_users"] ] - - def __str__(self): - if self.isFinished: - ret = "恭喜以下中奖用户:\n" - for i in self.luckyUsers: - ret += "> {} {}\n".format(i,self.prizeName) - ret += "> 参与人数:{}".format(self.joinedUserCount) - return ret - elif self.isActive: - return "正在抽奖中。。。\n" \ - "> 参与人数:{}".format(self.joinedUserCount) - else: - return "抽奖已失效" diff --git a/Struct/LuckyUser.py b/Struct/LuckyUser.py deleted file mode 100644 index 2fb195e..0000000 --- a/Struct/LuckyUser.py +++ /dev/null @@ -1,19 +0,0 @@ -from .User import User - -class LuckyUser: - - user = None - count = 0 - - def __init__(self, json=None): - if json: - self.parse(json) - - def parse(self, json): - self.user = User() - self.user.ID = json['user_id'] - self.user.name = json['user_name'] - self.count = int(json["grant_count"]) - - def __str__(self): - return "用户 {} 获得了 {} 个".format(self.user,self.count) diff --git a/Struct/MemberMsg.py b/Struct/MemberMsg.py deleted file mode 100644 index 2dcdeea..0000000 --- a/Struct/MemberMsg.py +++ /dev/null @@ -1,36 +0,0 @@ -from .User import User - - -class MemberMsg: - type = 0 - content = "" - user = None - - def __init__(self, json=None): - if json: - self.parse(json) - - def parse(self, json): - self.user = User(json) - if "extra" in json: - if "action" in json["extra"]: - self.type = json["extra"]['action'] - elif "content" in json["extra"]: - self.content = json["extra"]['content'] - - def __str__(self): - if self.type == 3: - return "{} 被禁言了".format(self.user) - elif self.type == 4: - return "{} 被取消禁言了".format(self.user) - elif self.type == 5: - return "{} 被任命为房管".format(self.user) - elif self.type == 1: - return "{} 进入了房间".format(self.user) - else: - if self.content == "": - return "未知消息{} 关于用户 {}".format(self.type, self.user) - return self.content.format(self.user) - - def __unicode__(self): - return self.__str__() \ No newline at end of file diff --git a/WinMain.py b/WinMain.py deleted file mode 100644 index c932523..0000000 --- a/WinMain.py +++ /dev/null @@ -1,218 +0,0 @@ -import os -import sys -import time - -import requests - -from Struct.MemberMsg import MemberMsg -from Struct.User import User -from Struct.Gift import Gift -from Struct.Chat import Chat -from Struct.Lottery import Lottery -from api import XiGuaLiveApi as Api -import msvcrt -import ctypes - -SHOW_ALL = False - - -def readInput(caption, default, timeout: int = 5): - start_time = time.time() - print('{}({})\r\n>'.format(caption, default), end="") - input = '' - while True: - if msvcrt.kbhit(): - chr = msvcrt.getwche() - if ord(chr) == 13: # enter_key - break - elif ord(chr) == 27: - break - elif ord(chr) == 8: - if input != "": - input = input[:-1] - msvcrt.putch(b" ") - msvcrt.putch(b" ") - msvcrt.putch(b"\b") - msvcrt.putch(b"\b") - if len(input) == 0: - start_time = time.time() - elif 32 > ord(chr) or 255 > ord(chr) > 126: # space_char - continue - else: - input += chr - if len(input) == 0 and (time.time() - start_time) > timeout: - break - - if len(input) > 0: - print() - return input - else: - print("使用默认值") - return default - - -STD_INPUT_HANDLE = -10 -STD_OUTPUT_HANDLE = -11 -STD_ERROR_HANDLE = -12 -std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE) -# 字体颜色定义 ,关键在于颜色编码,由2位十六进制组成,分别取0~f,前一位指的是背景色,后一位指的是字体色 -# 由于该函数的限制,应该是只有这16种,可以前景色与背景色组合。也可以几种颜色通过或运算组合,组合后还是在这16种颜色中 - -# Windows CMD命令行 字体颜色定义 text colors -FOREGROUND_BLACK = 0x00 # black. -FOREGROUND_DARKBLUE = 0x01 # dark blue. -FOREGROUND_DARKGREEN = 0x02 # dark green. -FOREGROUND_DARKSKYBLUE = 0x03 # dark skyblue. -FOREGROUND_DARKRED = 0x04 # dark red. -FOREGROUND_DARKPINK = 0x05 # dark pink. -FOREGROUND_DARKYELLOW = 0x06 # dark yellow. -FOREGROUND_DARKWHITE = 0x07 # dark white. -FOREGROUND_DARKGRAY = 0x08 # dark gray. -FOREGROUND_BLUE = 0x09 # blue. -FOREGROUND_GREEN = 0x0a # green. -FOREGROUND_SKYBLUE = 0x0b # skyblue. -FOREGROUND_RED = 0x0c # red. -FOREGROUND_PINK = 0x0d # pink. -FOREGROUND_YELLOW = 0x0e # yellow. -FOREGROUND_WHITE = 0x0f # white. - -# Windows CMD命令行 背景颜色定义 background colors -BACKGROUND_BLACK = 0x00 # dark blue. -BACKGROUND_DARKBLUE = 0x10 # dark blue. -BACKGROUND_DARKGREEN = 0x20 # dark green. -BACKGROUND_DARKSKYBLUE = 0x30 # dark skyblue. -BACKGROUND_DARKRED = 0x40 # dark red. -BACKGROUND_DARKPINK = 0x50 # dark pink. -BACKGROUND_DARKYELLOW = 0x60 # dark yellow. -BACKGROUND_DARKWHITE = 0x70 # dark white. -BACKGROUND_DARKGRAY = 0x80 # dark gray. -BACKGROUND_BLUE = 0x90 # blue. -BACKGROUND_GREEN = 0xa0 # green. -BACKGROUND_SKYBLUE = 0xb0 # skyblue. -BACKGROUND_RED = 0xc0 # red. -BACKGROUND_PINK = 0xd0 # pink. -BACKGROUND_YELLOW = 0xe0 # yellow. -BACKGROUND_WHITE = 0xf0 # white. - - -def set_cmd_text_color(color, handle=std_out_handle): - Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color) - return Bool - - -def resetColor(): - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_WHITE) - - -class WinMain(Api): - _tmp = 0 - - def getTitle(self): - self._tmp += 1 - if self._tmp > 10: - self._tmp = 0 - if self._tmp < 5: - return "{} 的直播间 --弹幕助手 by JerryYan".format(self.roomLiver) - else: - if self.roomPopularity == 0: - self._tmp = 0 - return self.getTitle() - else: - return "人气:{} --弹幕助手 by JerryYan".format(self.roomPopularity) - - def onMessage(self, msg: str): - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_DARKGRAY) - print("消息 : ", msg) - resetColor() - - def onJoin(self, user: User): - set_cmd_text_color(BACKGROUND_WHITE | FOREGROUND_BLACK) - print("欢迎", user, "加入了粉丝团") - resetColor() - - def onSubscribe(self, user: User): - if SHOW_ALL: - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_DARKGRAY) - print("用户", user, "关注了主播") - resetColor() - - def onEnter(self, msg:MemberMsg): - if SHOW_ALL: - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_DARKGRAY) - print("提示 :", msg) - resetColor() - - def onChat(self, chat: Chat): - if SHOW_ALL: - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_WHITE) - if not chat.isFiltered: - print(chat) - resetColor() - - def onLottery(self, i:Lottery): - set_cmd_text_color(FOREGROUND_WHITE | BACKGROUND_DARKGRAY) - print(i) - resetColor() - - def onPresent(self, gift: Gift): - if SHOW_ALL: - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_DARKGRAY) - print("连击 :", gift) - resetColor() - - def onPresentEnd(self, gift: Gift): - set_cmd_text_color(BACKGROUND_WHITE | FOREGROUND_BLACK) - print("感谢", gift) - resetColor() - - def onLike(self, user: User): - if SHOW_ALL: - set_cmd_text_color(BACKGROUND_BLACK | FOREGROUND_DARKGRAY) - print("用户", user, "点了喜欢") - resetColor() - - def onLeave(self, json: any): - return - - -def warning(*args): - print(*args) - - -if __name__ == "__main__": - name = "永恒de草薙" - resetColor() - print("西瓜直播弹幕助手 by JerryYan") - if len(sys.argv) > 1: - name = sys.argv[1] - if len(sys.argv) > 2: - SHOW_ALL = sys.argv[2] == "a" - else: - name = readInput("请输入主播用户名,默认为", name, 3) - api = WinMain(name) - while not api.isValidRoom: - set_cmd_text_color(FOREGROUND_RED) - print("未找到对应房间或未开播,等待1分钟后重试") - resetColor() - time.sleep(60) - api.updRoomInfo() - print("进入", api.roomLiver, "的直播间") - os.system("title {}".format(api.getTitle())) - print("=" * 30) - while True: - if api.isLive: - os.system("title {}".format(api.getTitle())) - try: - api.getDanmaku() - except requests.exceptions.BaseHTTPError: - print("网络错误,请确认网络") - time.sleep(5) - except Exception as e: - print(e.__str__()) - time.sleep(1) - else: - set_cmd_text_color(FOREGROUND_RED) - print("主播未开播,等待1分钟后重试") - resetColor() - time.sleep(60) - api.updRoomInfo() diff --git a/XiguaCommon_pb2.py b/XiguaCommon_pb2.py deleted file mode 100644 index 3bc09f1..0000000 --- a/XiguaCommon_pb2.py +++ /dev/null @@ -1,278 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: XiguaCommon.proto - -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -import XiguaUser_pb2 as XiguaUser__pb2 -import XiguaGift_pb2 as XiguaGift__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='XiguaCommon.proto', - package='', - syntax='proto2', - serialized_options=None, - serialized_pb=b'\n\x11XiguaCommon.proto\x1a\x0fXiguaUser.proto\x1a\x0fXiguaGift.proto\"*\n\x05Style\x12\r\n\x05\x63olor\x18\x01 \x01(\t\x12\x12\n\nfontWeight\x18\x04 \x01(\x05\"g\n\x06Params\x12\x0c\n\x04type\x18\x01 \x02(\x05\x12\x15\n\x05style\x18\x02 \x01(\x0b\x32\x06.Style\x12\x0e\n\x06string\x18\x0b \x01(\t\x12\x13\n\x04user\x18\x15 \x01(\x0b\x32\x05.User\x12\x13\n\x04gift\x18\x16 \x01(\x0b\x32\x05.Gift\"_\n\x0b\x44isplayText\x12\x0e\n\x06method\x18\x01 \x02(\t\x12\x0e\n\x06\x66ormat\x18\x02 \x02(\t\x12\x17\n\x07\x62gStyle\x18\x03 \x01(\x0b\x32\x06.Style\x12\x17\n\x06params\x18\x04 \x01(\x0b\x32\x07.Params\"u\n\nCommonInfo\x12\x0e\n\x06method\x18\x01 \x01(\t\x12\x0e\n\x06msg_id\x18\x02 \x01(\x05\x12\x0f\n\x07room_id\x18\x03 \x01(\x05\x12\x13\n\x0b\x63reate_time\x18\x04 \x01(\x05\x12!\n\x0b\x64isplayText\x18\x08 \x01(\x0b\x32\x0c.DisplayText' - , - dependencies=[XiguaUser__pb2.DESCRIPTOR,XiguaGift__pb2.DESCRIPTOR,]) - - - - -_STYLE = _descriptor.Descriptor( - name='Style', - full_name='Style', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='color', full_name='Style.color', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fontWeight', full_name='Style.fontWeight', index=1, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=55, - serialized_end=97, -) - - -_PARAMS = _descriptor.Descriptor( - name='Params', - full_name='Params', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='type', full_name='Params.type', index=0, - number=1, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='style', full_name='Params.style', index=1, - number=2, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='string', full_name='Params.string', index=2, - number=11, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='user', full_name='Params.user', index=3, - number=21, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='gift', full_name='Params.gift', index=4, - number=22, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=99, - serialized_end=202, -) - - -_DISPLAYTEXT = _descriptor.Descriptor( - name='DisplayText', - full_name='DisplayText', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='method', full_name='DisplayText.method', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='format', full_name='DisplayText.format', index=1, - number=2, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='bgStyle', full_name='DisplayText.bgStyle', index=2, - number=3, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='params', full_name='DisplayText.params', index=3, - number=4, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=204, - serialized_end=299, -) - - -_COMMONINFO = _descriptor.Descriptor( - name='CommonInfo', - full_name='CommonInfo', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='method', full_name='CommonInfo.method', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='msg_id', full_name='CommonInfo.msg_id', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='room_id', full_name='CommonInfo.room_id', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='create_time', full_name='CommonInfo.create_time', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='displayText', full_name='CommonInfo.displayText', index=4, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=301, - serialized_end=418, -) - -_PARAMS.fields_by_name['style'].message_type = _STYLE -_PARAMS.fields_by_name['user'].message_type = XiguaUser__pb2._USER -_PARAMS.fields_by_name['gift'].message_type = XiguaGift__pb2._GIFT -_DISPLAYTEXT.fields_by_name['bgStyle'].message_type = _STYLE -_DISPLAYTEXT.fields_by_name['params'].message_type = _PARAMS -_COMMONINFO.fields_by_name['displayText'].message_type = _DISPLAYTEXT -DESCRIPTOR.message_types_by_name['Style'] = _STYLE -DESCRIPTOR.message_types_by_name['Params'] = _PARAMS -DESCRIPTOR.message_types_by_name['DisplayText'] = _DISPLAYTEXT -DESCRIPTOR.message_types_by_name['CommonInfo'] = _COMMONINFO -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Style = _reflection.GeneratedProtocolMessageType('Style', (_message.Message,), { - 'DESCRIPTOR' : _STYLE, - '__module__' : 'XiguaCommon_pb2' - # @@protoc_insertion_point(class_scope:Style) - }) -_sym_db.RegisterMessage(Style) - -Params = _reflection.GeneratedProtocolMessageType('Params', (_message.Message,), { - 'DESCRIPTOR' : _PARAMS, - '__module__' : 'XiguaCommon_pb2' - # @@protoc_insertion_point(class_scope:Params) - }) -_sym_db.RegisterMessage(Params) - -DisplayText = _reflection.GeneratedProtocolMessageType('DisplayText', (_message.Message,), { - 'DESCRIPTOR' : _DISPLAYTEXT, - '__module__' : 'XiguaCommon_pb2' - # @@protoc_insertion_point(class_scope:DisplayText) - }) -_sym_db.RegisterMessage(DisplayText) - -CommonInfo = _reflection.GeneratedProtocolMessageType('CommonInfo', (_message.Message,), { - 'DESCRIPTOR' : _COMMONINFO, - '__module__' : 'XiguaCommon_pb2' - # @@protoc_insertion_point(class_scope:CommonInfo) - }) -_sym_db.RegisterMessage(CommonInfo) - - -# @@protoc_insertion_point(module_scope) diff --git a/XiguaGift_pb2.py b/XiguaGift_pb2.py deleted file mode 100644 index a3c20c7..0000000 --- a/XiguaGift_pb2.py +++ /dev/null @@ -1,122 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: XiguaGift.proto - -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='XiguaGift.proto', - package='', - syntax='proto2', - serialized_options=None, - serialized_pb=b'\n\x0fXiguaGift.proto\"\\\n\x04Gift\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x1a\n\x04gift\x18\x02 \x02(\x0b\x32\x0c.Gift.Detail\x1a,\n\x06\x44\x65tail\x12\x0f\n\x07gift_id\x18\x01 \x02(\t\x12\x11\n\tgift_name\x18\x02 \x02(\t' -) - - - - -_GIFT_DETAIL = _descriptor.Descriptor( - name='Detail', - full_name='Gift.Detail', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='gift_id', full_name='Gift.Detail.gift_id', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='gift_name', full_name='Gift.Detail.gift_name', index=1, - number=2, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=67, - serialized_end=111, -) - -_GIFT = _descriptor.Descriptor( - name='Gift', - full_name='Gift', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='Gift.id', index=0, - number=1, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='gift', full_name='Gift.gift', index=1, - number=2, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_GIFT_DETAIL, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=19, - serialized_end=111, -) - -_GIFT_DETAIL.containing_type = _GIFT -_GIFT.fields_by_name['gift'].message_type = _GIFT_DETAIL -DESCRIPTOR.message_types_by_name['Gift'] = _GIFT -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -Gift = _reflection.GeneratedProtocolMessageType('Gift', (_message.Message,), { - - 'Detail' : _reflection.GeneratedProtocolMessageType('Detail', (_message.Message,), { - 'DESCRIPTOR' : _GIFT_DETAIL, - '__module__' : 'XiguaGift_pb2' - # @@protoc_insertion_point(class_scope:Gift.Detail) - }) - , - 'DESCRIPTOR' : _GIFT, - '__module__' : 'XiguaGift_pb2' - # @@protoc_insertion_point(class_scope:Gift) - }) -_sym_db.RegisterMessage(Gift) -_sym_db.RegisterMessage(Gift.Detail) - - -# @@protoc_insertion_point(module_scope) diff --git a/XiguaUser_pb2.py b/XiguaUser_pb2.py deleted file mode 100644 index 0d81479..0000000 --- a/XiguaUser_pb2.py +++ /dev/null @@ -1,593 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: XiguaUser.proto - -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='XiguaUser.proto', - package='', - syntax='proto2', - serialized_options=None, - serialized_pb=b'\n\x0fXiguaUser.proto\"\x96\x07\n\x04User\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x10\n\x08nickname\x18\x03 \x02(\t\x12\x0e\n\x06gender\x18\x04 \x02(\x05\x12!\n\x0b\x61vatarThumb\x18\t \x02(\x0b\x32\x0c.User.Avatar\x12\"\n\x0c\x61vatarMedium\x18\n \x01(\x0b\x32\x0c.User.Avatar\x12!\n\x0b\x61vatarLarge\x18\x0b \x01(\x0b\x32\x0c.User.Avatar\x12\x1a\n\x05\x62\x61\x64ge\x18\x15 \x03(\x0b\x32\x0b.User.Badge\x12\x1c\n\x06\x66ollow\x18\x16 \x01(\x0b\x32\x0c.User.Follow\x12 \n\x08payGrade\x18\x17 \x02(\x0b\x32\x0e.User.PayGrade\x12\x11\n\ttotalPaid\x18\" \x02(\x05\x1a!\n\x06\x41vatar\x12\x0b\n\x03url\x18\x01 \x02(\t\x12\n\n\x02id\x18\x02 \x01(\t\x1a\xcd\x01\n\x05\x42\x61\x64ge\x12\x0b\n\x03url\x18\x01 \x03(\t\x12\x10\n\x08localUrl\x18\x02 \x01(\t\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\r\n\x05width\x18\x04 \x01(\x05\x12\x0c\n\x04type\x18\x06 \x01(\x05\x12\x0f\n\x07\x63lickTo\x18\x07 \x01(\t\x12,\n\x0b\x66\x61nClubText\x18\x08 \x01(\x0b\x32\x17.User.Badge.FanClubText\x1a\x39\n\x0b\x46\x61nClubText\x12\x0c\n\x04text\x18\x01 \x02(\t\x12\r\n\x05\x63olor\x18\x02 \x01(\t\x12\r\n\x05level\x18\x03 \x02(\x05\x1a\x33\n\x06\x46ollow\x12\x14\n\tfollowing\x18\x01 \x01(\x05:\x01\x30\x12\x13\n\x08\x66ollower\x18\x02 \x01(\x05:\x01\x30\x1a\xa1\x01\n\x08PayGrade\x12\x0f\n\x07\x63urrent\x18\x01 \x02(\x05\x12\r\n\x05level\x18\x06 \x02(\x05\x12\x18\n\x10\x63urrentLevelNeed\x18\n \x01(\x05\x12\x15\n\rnextLevelNeed\x18\x0b \x01(\x05\x12\x0f\n\x07\x63ontent\x18\r \x01(\t\x12\x1a\n\x05\x62\x61\x64ge\x18\x13 \x02(\x0b\x32\x0b.User.Badge\x12\x17\n\x0ftoNextLevelNeed\x18\x15 \x01(\x05\x1a(\n\nHonorLevel\x12\x1a\n\x05\x62\x61\x64ge\x18\x13 \x02(\x0b\x32\x0b.User.Badge\x1a\x90\x01\n\x05Noble\x12\x0f\n\x07\x63ontent\x18\x04 \x02(\t\x12)\n\x07\x62oarder\x18\x08 \x01(\x0b\x32\x18.User.Noble.NobleBoarder\x1aK\n\x0cNobleBoarder\x12\x0f\n\x07urlList\x18\x01 \x03(\t\x12\x0b\n\x03uri\x18\x02 \x02(\t\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\r\n\x05width\x18\x04 \x01(\x05' -) - - - - -_USER_AVATAR = _descriptor.Descriptor( - name='Avatar', - full_name='User.Avatar', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='url', full_name='User.Avatar.url', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='id', full_name='User.Avatar.id', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=291, - serialized_end=324, -) - -_USER_BADGE_FANCLUBTEXT = _descriptor.Descriptor( - name='FanClubText', - full_name='User.Badge.FanClubText', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='text', full_name='User.Badge.FanClubText.text', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='color', full_name='User.Badge.FanClubText.color', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='level', full_name='User.Badge.FanClubText.level', index=2, - number=3, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=475, - serialized_end=532, -) - -_USER_BADGE = _descriptor.Descriptor( - name='Badge', - full_name='User.Badge', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='url', full_name='User.Badge.url', index=0, - number=1, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='localUrl', full_name='User.Badge.localUrl', index=1, - number=2, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='height', full_name='User.Badge.height', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='width', full_name='User.Badge.width', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='type', full_name='User.Badge.type', index=4, - number=6, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='clickTo', full_name='User.Badge.clickTo', index=5, - number=7, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fanClubText', full_name='User.Badge.fanClubText', index=6, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_USER_BADGE_FANCLUBTEXT, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=327, - serialized_end=532, -) - -_USER_FOLLOW = _descriptor.Descriptor( - name='Follow', - full_name='User.Follow', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='following', full_name='User.Follow.following', index=0, - number=1, type=5, cpp_type=1, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='follower', full_name='User.Follow.follower', index=1, - number=2, type=5, cpp_type=1, label=1, - has_default_value=True, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=534, - serialized_end=585, -) - -_USER_PAYGRADE = _descriptor.Descriptor( - name='PayGrade', - full_name='User.PayGrade', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='current', full_name='User.PayGrade.current', index=0, - number=1, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='level', full_name='User.PayGrade.level', index=1, - number=6, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='currentLevelNeed', full_name='User.PayGrade.currentLevelNeed', index=2, - number=10, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='nextLevelNeed', full_name='User.PayGrade.nextLevelNeed', index=3, - number=11, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='content', full_name='User.PayGrade.content', index=4, - number=13, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='badge', full_name='User.PayGrade.badge', index=5, - number=19, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='toNextLevelNeed', full_name='User.PayGrade.toNextLevelNeed', index=6, - number=21, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=588, - serialized_end=749, -) - -_USER_HONORLEVEL = _descriptor.Descriptor( - name='HonorLevel', - full_name='User.HonorLevel', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='badge', full_name='User.HonorLevel.badge', index=0, - number=19, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=751, - serialized_end=791, -) - -_USER_NOBLE_NOBLEBOARDER = _descriptor.Descriptor( - name='NobleBoarder', - full_name='User.Noble.NobleBoarder', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='urlList', full_name='User.Noble.NobleBoarder.urlList', index=0, - number=1, type=9, cpp_type=9, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='uri', full_name='User.Noble.NobleBoarder.uri', index=1, - number=2, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='height', full_name='User.Noble.NobleBoarder.height', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='width', full_name='User.Noble.NobleBoarder.width', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=863, - serialized_end=938, -) - -_USER_NOBLE = _descriptor.Descriptor( - name='Noble', - full_name='User.Noble', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='content', full_name='User.Noble.content', index=0, - number=4, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='boarder', full_name='User.Noble.boarder', index=1, - number=8, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_USER_NOBLE_NOBLEBOARDER, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=794, - serialized_end=938, -) - -_USER = _descriptor.Descriptor( - name='User', - full_name='User', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='id', full_name='User.id', index=0, - number=1, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='nickname', full_name='User.nickname', index=1, - number=3, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='gender', full_name='User.gender', index=2, - number=4, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='avatarThumb', full_name='User.avatarThumb', index=3, - number=9, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='avatarMedium', full_name='User.avatarMedium', index=4, - number=10, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='avatarLarge', full_name='User.avatarLarge', index=5, - number=11, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='badge', full_name='User.badge', index=6, - number=21, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='follow', full_name='User.follow', index=7, - number=22, type=11, cpp_type=10, label=1, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='payGrade', full_name='User.payGrade', index=8, - number=23, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='totalPaid', full_name='User.totalPaid', index=9, - number=34, type=5, cpp_type=1, label=2, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_USER_AVATAR, _USER_BADGE, _USER_FOLLOW, _USER_PAYGRADE, _USER_HONORLEVEL, _USER_NOBLE, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=20, - serialized_end=938, -) - -_USER_AVATAR.containing_type = _USER -_USER_BADGE_FANCLUBTEXT.containing_type = _USER_BADGE -_USER_BADGE.fields_by_name['fanClubText'].message_type = _USER_BADGE_FANCLUBTEXT -_USER_BADGE.containing_type = _USER -_USER_FOLLOW.containing_type = _USER -_USER_PAYGRADE.fields_by_name['badge'].message_type = _USER_BADGE -_USER_PAYGRADE.containing_type = _USER -_USER_HONORLEVEL.fields_by_name['badge'].message_type = _USER_BADGE -_USER_HONORLEVEL.containing_type = _USER -_USER_NOBLE_NOBLEBOARDER.containing_type = _USER_NOBLE -_USER_NOBLE.fields_by_name['boarder'].message_type = _USER_NOBLE_NOBLEBOARDER -_USER_NOBLE.containing_type = _USER -_USER.fields_by_name['avatarThumb'].message_type = _USER_AVATAR -_USER.fields_by_name['avatarMedium'].message_type = _USER_AVATAR -_USER.fields_by_name['avatarLarge'].message_type = _USER_AVATAR -_USER.fields_by_name['badge'].message_type = _USER_BADGE -_USER.fields_by_name['follow'].message_type = _USER_FOLLOW -_USER.fields_by_name['payGrade'].message_type = _USER_PAYGRADE -DESCRIPTOR.message_types_by_name['User'] = _USER -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), { - - 'Avatar' : _reflection.GeneratedProtocolMessageType('Avatar', (_message.Message,), { - 'DESCRIPTOR' : _USER_AVATAR, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.Avatar) - }) - , - - 'Badge' : _reflection.GeneratedProtocolMessageType('Badge', (_message.Message,), { - - 'FanClubText' : _reflection.GeneratedProtocolMessageType('FanClubText', (_message.Message,), { - 'DESCRIPTOR' : _USER_BADGE_FANCLUBTEXT, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.Badge.FanClubText) - }) - , - 'DESCRIPTOR' : _USER_BADGE, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.Badge) - }) - , - - 'Follow' : _reflection.GeneratedProtocolMessageType('Follow', (_message.Message,), { - 'DESCRIPTOR' : _USER_FOLLOW, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.Follow) - }) - , - - 'PayGrade' : _reflection.GeneratedProtocolMessageType('PayGrade', (_message.Message,), { - 'DESCRIPTOR' : _USER_PAYGRADE, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.PayGrade) - }) - , - - 'HonorLevel' : _reflection.GeneratedProtocolMessageType('HonorLevel', (_message.Message,), { - 'DESCRIPTOR' : _USER_HONORLEVEL, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.HonorLevel) - }) - , - - 'Noble' : _reflection.GeneratedProtocolMessageType('Noble', (_message.Message,), { - - 'NobleBoarder' : _reflection.GeneratedProtocolMessageType('NobleBoarder', (_message.Message,), { - 'DESCRIPTOR' : _USER_NOBLE_NOBLEBOARDER, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.Noble.NobleBoarder) - }) - , - 'DESCRIPTOR' : _USER_NOBLE, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User.Noble) - }) - , - 'DESCRIPTOR' : _USER, - '__module__' : 'XiguaUser_pb2' - # @@protoc_insertion_point(class_scope:User) - }) -_sym_db.RegisterMessage(User) -_sym_db.RegisterMessage(User.Avatar) -_sym_db.RegisterMessage(User.Badge) -_sym_db.RegisterMessage(User.Badge.FanClubText) -_sym_db.RegisterMessage(User.Follow) -_sym_db.RegisterMessage(User.PayGrade) -_sym_db.RegisterMessage(User.HonorLevel) -_sym_db.RegisterMessage(User.Noble) -_sym_db.RegisterMessage(User.Noble.NobleBoarder) - - -# @@protoc_insertion_point(module_scope) diff --git a/Xigua_pb2.py b/Xigua_pb2.py deleted file mode 100644 index fadd908..0000000 --- a/Xigua_pb2.py +++ /dev/null @@ -1,193 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: Xigua.proto - -from google.protobuf import descriptor as _descriptor -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -import XiguaCommon_pb2 as XiguaCommon__pb2 - - -DESCRIPTOR = _descriptor.FileDescriptor( - name='Xigua.proto', - package='', - syntax='proto2', - serialized_options=None, - serialized_pb=b'\n\x0bXigua.proto\x1a\x11XiguaCommon.proto\"\xf4\x01\n\tXiguaLive\x12\x1d\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x0f.XiguaLive.Data\x12\x0e\n\x06\x63ursor\x18\x02 \x02(\t\x12\x16\n\x0e\x66\x65tch_interval\x18\x03 \x01(\x05\x12\x0b\n\x03now\x18\x04 \x01(\x05\x12\x14\n\x0cinternal_ext\x18\x05 \x02(\t\x1a}\n\x04\x44\x61ta\x12\x0e\n\x06method\x18\x01 \x02(\t\x12(\n\x07message\x18\x02 \x02(\x0b\x32\x17.XiguaLive.Data.Message\x1a;\n\x07Message\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x0f\n\x07\x63ontent\x18\x03 \x01(\t' - , - dependencies=[XiguaCommon__pb2.DESCRIPTOR,]) - - - - -_XIGUALIVE_DATA_MESSAGE = _descriptor.Descriptor( - name='Message', - full_name='XiguaLive.Data.Message', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='commonInfo', full_name='XiguaLive.Data.Message.commonInfo', index=0, - number=1, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='content', full_name='XiguaLive.Data.Message.content', index=1, - number=3, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=220, - serialized_end=279, -) - -_XIGUALIVE_DATA = _descriptor.Descriptor( - name='Data', - full_name='XiguaLive.Data', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='method', full_name='XiguaLive.Data.method', index=0, - number=1, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='message', full_name='XiguaLive.Data.message', index=1, - number=2, type=11, cpp_type=10, label=2, - has_default_value=False, default_value=None, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_XIGUALIVE_DATA_MESSAGE, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=154, - serialized_end=279, -) - -_XIGUALIVE = _descriptor.Descriptor( - name='XiguaLive', - full_name='XiguaLive', - filename=None, - file=DESCRIPTOR, - containing_type=None, - fields=[ - _descriptor.FieldDescriptor( - name='data', full_name='XiguaLive.data', index=0, - number=1, type=11, cpp_type=10, label=3, - has_default_value=False, default_value=[], - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='cursor', full_name='XiguaLive.cursor', index=1, - number=2, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='fetch_interval', full_name='XiguaLive.fetch_interval', index=2, - number=3, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='now', full_name='XiguaLive.now', index=3, - number=4, type=5, cpp_type=1, label=1, - has_default_value=False, default_value=0, - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - _descriptor.FieldDescriptor( - name='internal_ext', full_name='XiguaLive.internal_ext', index=4, - number=5, type=9, cpp_type=9, label=2, - has_default_value=False, default_value=b"".decode('utf-8'), - message_type=None, enum_type=None, containing_type=None, - is_extension=False, extension_scope=None, - serialized_options=None, file=DESCRIPTOR), - ], - extensions=[ - ], - nested_types=[_XIGUALIVE_DATA, ], - enum_types=[ - ], - serialized_options=None, - is_extendable=False, - syntax='proto2', - extension_ranges=[], - oneofs=[ - ], - serialized_start=35, - serialized_end=279, -) - -_XIGUALIVE_DATA_MESSAGE.fields_by_name['commonInfo'].message_type = XiguaCommon__pb2._COMMONINFO -_XIGUALIVE_DATA_MESSAGE.containing_type = _XIGUALIVE_DATA -_XIGUALIVE_DATA.fields_by_name['message'].message_type = _XIGUALIVE_DATA_MESSAGE -_XIGUALIVE_DATA.containing_type = _XIGUALIVE -_XIGUALIVE.fields_by_name['data'].message_type = _XIGUALIVE_DATA -DESCRIPTOR.message_types_by_name['XiguaLive'] = _XIGUALIVE -_sym_db.RegisterFileDescriptor(DESCRIPTOR) - -XiguaLive = _reflection.GeneratedProtocolMessageType('XiguaLive', (_message.Message,), { - - 'Data' : _reflection.GeneratedProtocolMessageType('Data', (_message.Message,), { - - 'Message' : _reflection.GeneratedProtocolMessageType('Message', (_message.Message,), { - 'DESCRIPTOR' : _XIGUALIVE_DATA_MESSAGE, - '__module__' : 'Xigua_pb2' - # @@protoc_insertion_point(class_scope:XiguaLive.Data.Message) - }) - , - 'DESCRIPTOR' : _XIGUALIVE_DATA, - '__module__' : 'Xigua_pb2' - # @@protoc_insertion_point(class_scope:XiguaLive.Data) - }) - , - 'DESCRIPTOR' : _XIGUALIVE, - '__module__' : 'Xigua_pb2' - # @@protoc_insertion_point(class_scope:XiguaLive) - }) -_sym_db.RegisterMessage(XiguaLive) -_sym_db.RegisterMessage(XiguaLive.Data) -_sym_db.RegisterMessage(XiguaLive.Data.Message) - - -# @@protoc_insertion_point(module_scope) diff --git a/api.py b/api.py index b99df5c..4d15c87 100644 --- a/api.py +++ b/api.py @@ -3,11 +3,7 @@ import json import sys import random -from Struct.MemberMsg import MemberMsg from Struct.User import User -from Struct.Gift import Gift -from Struct.Chat import Chat -from Struct.Lottery import Lottery import requests import time from datetime import datetime, timedelta @@ -87,94 +83,6 @@ class XiGuaLiveApi: if DEBUG: print(*args) - def onPresent(self, gift: Gift): - """ - 礼物连击中的消息 - Message On Sending Presents - :param gift: Struct of Gift Message - """ - print("礼物连击 :", gift) - - def onPresentEnd(self, gift: Gift): - """ - 礼物送完了的提示信息 - Message On Finished Send Present - :param gift: Struct of Gift Message - """ - print("感谢", gift) - - def onAd(self, i): - """ - 全局广播 - All Channel Broadcasting Message( Just An Ad ) - :param i: JSON DATA if you wanna using it - """ - # print(i) - pass - - def onChat(self, chat: Chat): - """ - 聊天信息 - On Chatting - :param chat: Struct of Chat Message - """ - if not chat.isFiltered: - print(chat) - - def onEnter(self, msg: MemberMsg): - """ - 进入房间消息 - On Entering Room - :param msg: Struct of Member Message - """ - print("提示 :", msg) - - def onSubscribe(self, user: User): - """ - 关注主播时的消息 - On Subscribe - :param user: Struct of User Message - """ - print("消息 :", user, "关注了主播") - - def onJoin(self, user: User): - """ - 加入粉丝团消息 - :param user: - """ - print("欢迎", user, "加入了粉丝团") - - def onMessage(self, msg: str): - """ - 系统消息 - :param msg: - """ - print("消息 :", msg) - - def onLike(self, user: User): - """ - 点击喜欢的消息 - On Like - :param user: - """ - print("用户", user, "点了喜欢") - - def onLeave(self, json: any): - """ - 下播消息 - On Liver Leave - :param json: - """ - print("消息 :", "主播离开了") - self.updRoomInfo() - - def onLottery(self, i: Lottery): - """ - 中奖的内容 - :param i: - """ - print("中奖消息 :", i) - def _checkUsernameIsMatched(self): """ 验证主播名字是自己想要的那个 @@ -227,11 +135,6 @@ class XiGuaLiveApi: self._rawRoomInfo = d["user_info"]['live_info'] if self.isLive: self.roomID = d["user_info"]['live_info']['room_id'] - # 处理抽奖事件 - l = Lottery(self._rawRoomInfo) - if l.isActive: - # 因为现在每个房间只能同时开启一个抽奖,所以放一个就行了 - self.lottery = l return True def updRoomInfo(self, force=False): @@ -293,93 +196,3 @@ class XiGuaLiveApi: for _j in i["cells"]: ret.append(User(_j)) return ret - - def getDanmaku(self): - """ - 获取弹幕 - """ - if not self.isValidRoom: - self.updRoomInfo() - return - p = self.s.get("https://i.snssdk.com/videolive/im/get_msg?cursor={cursor}&room_id={roomID}" - "&version_code=800&device_platform=android".format( - roomID=self.roomID, - cursor=self._cursor - )) - d = p.json() - if "data" not in d or "extra" not in d or "cursor" not in d["extra"]: - if "base_resp" in d and d["base_resp"]["status_code"] != 10038: - print(d["base_resp"]["status_message"]) - self.apiChangedError("接口数据返回错误", d) - return - else: - self._cursor = d["extra"]["cursor"] - if DEBUG: - print("Cursor:\t", self._cursor) - for i in d['data']: - if DEBUG: - print(i) - if "common" not in i and "method" not in i["common"]: - continue - if i["common"]['method'] == "VideoLivePresentMessage": - self.onPresent(Gift(i)) - elif i["common"]['method'] == "VideoLivePresentEndTipMessage": - self.onPresentEnd(Gift(i)) - elif i["common"]['method'] == "VideoLiveRoomAdMessage": - self.onAd(i) - elif i["common"]['method'] == "VideoLiveChatMessage": - self.onChat(Chat(i, self.lottery)) - elif i["common"]['method'] == "VideoLiveMemberMessage": - self.onEnter(MemberMsg(i)) - self._updateRoomPopularity(i) - elif i["common"]['method'] == "VideoLiveSocialMessage": - self.onSubscribe(User(i)) - elif i["common"]['method'] == "VideoLiveJoinDiscipulusMessage": - self.onJoin(User(i)) - elif i["common"]['method'] == "VideoLiveControlMessage": - print("消息:", "主播离开一小会") - # 这个消息代表主播下播了,直接更新房间信息 - self.updRoomInfo(True) - elif i["common"]['method'] == "VideoLiveDiggMessage": - self.onLike(User(i)) - else: - pass - if self.lottery is None or self.lottery.ID == 0: - self.lottery = Lottery(i) - # 更新抽奖信息 - if self.lottery is not None and self.lottery.ID != 0: - self.lottery.update() - if self.lottery.isFinished: - self.onLottery(self.lottery) - self.lottery = None - # 2分钟自动更新下房间信息 - self.updRoomInfo(len(d['data']) == 0) - - -if __name__ == "__main__": - name = "永恒de草薙" - if len(sys.argv) > 2: - if sys.argv[-1] == "d": - DEBUG = True - name = sys.argv[1] - print("西瓜直播弹幕助手 by JerryYan") - api = XiGuaLiveApi(name) - if not api.isValidRoom: - input("房间不存在") - sys.exit() - print("进入", api.roomLiver, "的直播间") - print("=" * 30) - while True: - if api.isLive: - try: - api.getDanmaku() - time.sleep(1) - except requests.exceptions.BaseHTTPError: - print("网络错误,请确认网络") - time.sleep(5) - except Exception as e: - print(e) - else: - print("主播未开播,等待2分钟后重试") - time.sleep(60) - api.updRoomInfo() From d05125095919191aa7ea8065e6a6d00153b50867 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 31 Dec 2019 15:56:21 +0800 Subject: [PATCH 02/70] =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/api.py b/api.py index 4d15c87..8b6cbfe 100644 --- a/api.py +++ b/api.py @@ -30,16 +30,10 @@ COMMON_HEADERS = { class XiGuaLiveApi: - isLive = False - isValidRoom = False - _rawRoomInfo = {} - name = "" - roomID = 0 - roomLiver = None - roomPopularity = 0 - _cursor = "0" - lottery = None - s = requests.session() + isValidRoom: bool + isLive: bool + roomLiver: User or None + roomID: int def __init__(self, name=None): """ @@ -54,6 +48,14 @@ class XiGuaLiveApi: self.name = name.name else: self.name = str(name) + self.isLive = False + self.isValidRoom = False + self._rawRoomInfo = {} + self.roomID = 0 + self.roomLiver = None + self.roomPopularity = 0 + self._cursor = "0" + self.s = requests.session() self.s.headers.update(COMMON_HEADERS) self._updRoomAt = datetime.now() self.updRoomInfo(True) @@ -145,7 +147,7 @@ class XiGuaLiveApi: if not force and self._updRoomAt > (datetime.now() - timedelta(minutes=3)): return self.isLive self._updRoomAt = datetime.now() - if self.isLive: + if self.isValidRoom: return self._updateUserOnly() else: return self._forceSearchUser() From 9d246dfcba0d9825e9bc4678d08d961c8cece99b Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 31 Dec 2019 16:33:38 +0800 Subject: [PATCH 03/70] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Demo/256_.json | 1 - Demo/324_.txt | Bin 24667 -> 0 bytes Demo/Xigua.proto | 21 - Demo/XiguaCommon.proto | 35 - Demo/XiguaGift.proto | 10 - Demo/XiguaUser.proto | 68 - Demo/result.txt | 1104 -------- Demo/result2.txt | 4406 ----------------------------- Demo/result3.txt | 1434 ---------- Demo/result4.json | 2576 ----------------- Demo/result4.txt | 6007 ---------------------------------------- Model/DataBase.py | 8 - Model/Files.py | 10 - api.py | 1 + 14 files changed, 1 insertion(+), 15680 deletions(-) delete mode 100755 Demo/256_.json delete mode 100644 Demo/324_.txt delete mode 100755 Demo/Xigua.proto delete mode 100644 Demo/XiguaCommon.proto delete mode 100644 Demo/XiguaGift.proto delete mode 100644 Demo/XiguaUser.proto delete mode 100755 Demo/result.txt delete mode 100755 Demo/result2.txt delete mode 100755 Demo/result3.txt delete mode 100644 Demo/result4.json delete mode 100644 Demo/result4.txt delete mode 100644 Model/DataBase.py delete mode 100644 Model/Files.py diff --git a/Demo/256_.json b/Demo/256_.json deleted file mode 100755 index 3f7ef76..0000000 --- a/Demo/256_.json +++ /dev/null @@ -1 +0,0 @@ -{"data":[{"common":{"method":"WebcastGiftMessage","msg_id":6776109193264286477,"room_id":6776099199801887501,"create_time":1577688331073,"is_show_msg":true,"describe":"扬家军灬轻描淡写:送给主播 1个粉丝团","display_text":{"key":"webcast_xigua_gift_message","default_pattern":"{0:user} 送给主播{2:string}个{1:gift}","default_format":{"color":"#ffff9500","weight":400},"pieces":[{"type":11,"format":{"color":"#61000000","weight":400},"user_value":{"user":{"id":3188232986307261,"nickname":"扬家军灬轻描淡写","avatar_thumb":{"url_list":["http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/41416a96df8f40b3aae8414bbe815bbb~120x256.image"]},"badge_image_list":[{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"},{"url_list":["http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","image_type":7,"content":{"name":"扬家军","font_color":"#FFFFFF","level":13}}],"follow_info":{"following_count":7,"follower_count":8},"pay_grade":{"level":9,"new_im_icon_with_level":{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"}},"fans_club":{"data":{"club_name":"扬家军","level":13,"user_fans_club_status":1,"badge":{"icons":{"2":{"url_list":["http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","height":48,"width":150}},"title":"扬家军"}}},"user_attr":{},"display_id":"0","sec_uid":"MS4wLjABAAAAbExVLsj5LpMYrmBvNpwUh7Vkn9XIfXAEIrNmjhuAj0X7peCxQtTwXxoqe9VBqM-5"},"with_colon":true}},{"type":12,"format":{"color":"#ffff9500","weight":400},"gift_value":{"gift_id":794,"name_ref":{"key":"live_gift_794","default_pattern":"粉丝团"}}},{"type":1,"format":{"color":"#ffff9500","weight":400},"string_value":"1"}]}},"gift_id":794,"fan_ticket_count":49589085,"group_count":1,"repeat_count":1,"combo_count":1,"user":{"id":3188232986307261,"nickname":"扬家军灬轻描淡写","avatar_thumb":{"url_list":["http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/41416a96df8f40b3aae8414bbe815bbb~120x256.image"]},"badge_image_list":[{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"},{"url_list":["http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","image_type":7,"content":{"name":"扬家军","font_color":"#FFFFFF","level":13}}],"follow_info":{"following_count":7,"follower_count":8},"pay_grade":{"level":9,"new_im_icon_with_level":{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"}},"fans_club":{"data":{"club_name":"扬家军","level":13,"user_fans_club_status":1,"badge":{"icons":{"2":{"url_list":["http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","height":48,"width":150}},"title":"扬家军"}}},"user_attr":{},"display_id":"0","sec_uid":"MS4wLjABAAAAbExVLsj5LpMYrmBvNpwUh7Vkn9XIfXAEIrNmjhuAj0X7peCxQtTwXxoqe9VBqM-5"},"group_id":1577688331,"income_taskgifts":38199328,"room_fan_ticket_count":9152,"priority":{"queue_sizes":[-1,-1,50,150],"self_queue_priority":1,"priority":3},"gift":{"image":{"url_list":["http://p3-webcast-xgcdn.byteimg.com/img/mosaic-legacy/2d04e00056087c6330f20~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/mosaic-legacy/2d04e00056087c6330f20~tplv-obj.png","http://p1-webcast-xgcdn.byteimg.com/img/mosaic-legacy/2d04e00056087c6330f20~tplv-obj.png"],"uri":"2d04e00056087c6330f20","avg_color":"#524037"},"describe":"粉丝团","id":794,"fansclub_info":{"min_level":1},"doodle":true,"for_fansclub":true,"combo":true,"type":1,"diamond_count":1,"is_displayed_on_panel":true,"name":"粉丝团","icon":{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/mosaic-legacy/2d04e00056087c6330f20~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/mosaic-legacy/2d04e00056087c6330f20~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/mosaic-legacy/2d04e00056087c6330f20~tplv-obj.png"],"uri":"2d04e00056087c6330f20","avg_color":"#53537A"}}},{"common":{"method":"WebcastGiftMessage","msg_id":6776119408571173635,"room_id":6776099199801887501,"create_time":1577688334671,"is_show_msg":true,"describe":"扬家军灬轻描淡写:送给主播 1个粉丝团","display_text":{"key":"webcast_xigua_gift_message","default_pattern":"{0:user} 送给主播{2:string}个{1:gift}","default_format":{"color":"#ffff9500","weight":400},"pieces":[{"type":11,"format":{"color":"#61000000","weight":400},"user_value":{"user":{"id":3188232986307261,"nickname":"扬家军灬轻描淡写","avatar_thumb":{"url_list":["http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/41416a96df8f40b3aae8414bbe815bbb~120x256.image"]},"badge_image_list":[{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"},{"url_list":["http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","image_type":7,"content":{"name":"扬家军","font_color":"#FFFFFF","level":13}}],"follow_info":{"following_count":7,"follower_count":8},"pay_grade":{"level":9,"new_im_icon_with_level":{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"}},"fans_club":{"data":{"club_name":"扬家军","level":13,"user_fans_club_status":1,"badge":{"icons":{"2":{"url_list":["http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","height":48,"width":150}},"title":"扬家军"}}},"user_attr":{},"display_id":"0","sec_uid":"MS4wLjABAAAAbExVLsj5LpMYrmBvNpwUh7Vkn9XIfXAEIrNmjhuAj0X7peCxQtTwXxoqe9VBqM-5","noble_info":{"noble_background":{"height":1008,"width":1125},"noble_icon":{"height":105,"width":111,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast"},"noble_name":"普通用户","noble_big_icon":{"height":366,"width":615},"noble_icon_with_back":{"height":60,"width":108},"noble_boarder":{"url_list":["http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image"],"uri":"webcast/noble_boarder.png","height":64,"width":64}}},"with_colon":true}},{"type":12,"format":{"color":"#ffff9500","weight":400},"gift_value":{"gift_id":794,"name_ref":{"key":"live_gift_794","default_pattern":"粉丝团"}}},{"type":1,"format":{"color":"#ffff9500","weight":400},"string_value":"1"}]}},"gift_id":794,"fan_ticket_count":49589085,"group_count":1,"repeat_count":1,"combo_count":1,"user":{"id":3188232986307261,"nickname":"扬家军灬轻描淡写","avatar_thumb":{"url_list":["http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/41416a96df8f40b3aae8414bbe815bbb~120x256.image"]},"badge_image_list":[{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"},{"url_list":["http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","image_type":7,"content":{"name":"扬家军","font_color":"#FFFFFF","level":13}}],"follow_info":{"following_count":7,"follower_count":8},"pay_grade":{"level":9,"new_im_icon_with_level":{"url_list":["http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png"],"uri":"webcast/xigua_paygrade_level_9.png","height":16,"width":30,"image_type":1,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast"}},"fans_club":{"data":{"club_name":"扬家军","level":13,"user_fans_club_status":1,"badge":{"icons":{"2":{"url_list":["http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image"],"uri":"webcast/xigua_fansclub_medal_13.png","height":48,"width":150}},"title":"扬家军"}}},"user_attr":{},"display_id":"0","sec_uid":"MS4wLjABAAAAbExVLsj5LpMYrmBvNpwUh7Vkn9XIfXAEIrNmjhuAj0X7peCxQtTwXxoqe9VBqM-5","noble_info":{"noble_background":{"height":1008,"width":1125},"noble_icon":{"height":105,"width":111,"open_web_url":"sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast"},"noble_name":"普通用户","noble_big_icon":{"height":366,"width":615},"noble_icon_with_back":{"height":60,"width":108},"noble_boarder":{"url_list":["http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image","http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image","http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image"],"uri":"webcast/noble_boarder.png","height":64,"width":64}}},"repeat_end":1,"income_taskgifts":38199328,"room_fan_ticket_count":9152,"priority":{"queue_sizes":[-1,-1,50,150],"self_queue_priority":1,"priority":3}}],"extra":{"cursor":"6776119808963431181_1577688338520_1_1","fetch_interval":1000,"now":1577688338520},"internal_ext":"fetch_time:1577688338520|start_time:1577688331121|ack_ids:6776095023547009795_6b8,6776119325653846792_6b8,6776119325653879560_6b8|fetch_id:6776119775153097485|flag:1|seq:70","status_code":0} \ No newline at end of file diff --git a/Demo/324_.txt b/Demo/324_.txt deleted file mode 100644 index 9562691f5c4f1a79ee471ecfe1b9c595075ee8f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24667 zcmeHP3vd+W9cMQWmL-s54RA1>coQe7<21>>ADLz>RY|{ zH?26b>-Eo8-|9Pc_UM5#r8qS8;6!xtk|Z^MW1zNP^w$ES{!ohQRd?bQ^>H-K7xieF90`>NLbc_gNL&oar9rh;l$VxkDnsMoCG(QNN+QF_vV1o|;*BK3 zmIXq9H*<%H?xJC$+Xyv7|H(oZq<9e}N>dUlZL9?>DU+7!D&Rv8KT>zglk$s-OKW4I zqWXhsgBtWRWzlf$-Fh_GP#TeLH$J2ZQ^Q4=9a_Rz(ZEymdVGaARPh27j|U^N7z9ex zt=HhaA)qe#S$!;6Y49{&Oid{!tH59C8)bn6>kNj1i<%geBjNPjq+Ni|QJ_oUtu7Ld z#AX`I1s?)oMQtpr(?h`$eQ8v!j7FmM(GnnlhJe1bQi|w$BvewT25Rf{N}#4CKr(^) zcqL!r_Xh(Fsy`YObuAJL`TdotAJYuI2cwI=o9s0)9G8Rj60l!I4EhPuEc}Euq-i@7 zzcbp-G{6pR?1~hFQhILr3_fz|1awsU`U7oGJ=?Zs2R8DGs>I8icL>Txe&T^!pvSV2 zoAI1E)I$08iJgaccI-LEcC_s6e12Qo;irVtn~!xo`t)|!{CYc#OUnHAL8D%R+F|tX za4$Xb;=U#bOWWr?@Q6+D&HG^J5Dej;!LTRmE0~)# zk6tqK_9;`RfETrN*-fEoGwxV?!?Za+ubDD)#*%9Uf0)qfuA5&o7x&jMns?20jWfbi z=Fa5r$-+DvR{ZMQ*4Ms1#tKAAr39U!-C;JnSJN9Fc-Xs7So~ zqp?6k0H77s9|-HQh$(6mQ&qtIO990nGh&2a66HIJscA%s0eR}<;B(9`)%xW~FcPaQ zCMg5y7_X8fX+Tho$!b)uB+egEl95TP4+i6MOjW}rbpZem!eWC#9X!};sN^_H>H@l2 zl-K^yQ>RyK@7TJpecjj8OLhMr%Y{HU(C}NYkLs6e^daw3fz3b{c0_Q25<5_|x1rJn2A$dJWI0cUn zL50Wz*JG2=`~(h2pl$*PmcVj5cR$~;<>8_U2$cEIBA6gN4_xp4&nVY4F1nJ;1;kL5Xy_48OoiBHo3AgJd`{a%@7J=zZxLx;X zpQ7EMG!VrLnF%L*Wy16DJU0_QKp9MCCfu%`x?uX^D=TrMwWDb5f@wDsKDeqb7fidE z@IhA|x?uXewXXvK)r${Ir!wKEj7<2papSOu zSx#swMG=%nC=^c%VBN#jL<2ihXiG)?jXnbA35$Z#YkAo&=Dy!^?%Z{D9( z{bRJaTZXu~F#%MEmx~ReE+)#_j7Je54iu|H9{$r~orlkC%JF=@VS6N7B4fTq$KPtg)7$t(>9l6a1!1cFsq z0%!qeF{&{`!<A3cQ5^Sy&Cya^#yWRlS`N0s1kl zoRJ~{Nin#h0$mm*N|qANsP9!nMaE#i042rqkw5hXtJ*g|(YEJky0t6!5R`+w z2YE)fK=)+h`P*Fs%dGg$=$yN_4eTZ8OBh9pa?xyL1U3R|g+a*s6f|@7XpScrG;_TP zqt6@7TrI9K_UaB!?q6qg+gcf8s`j*pr=XF`XyMA}-qNmBXV=x#&tmX~>5WpTrg}Cp zgNxA10$dm;Zxp%NRW~dXu9E|dB4cj&P4{eD1j#gHa27HwZ9Tow4BEln@Cy*6tHXW<)*Noz{dC914J7Ekr5T#_ z!PPgQvs3G>ezz^m2_lLUm~slID2^pbjx;AzjKd^;Bq;c_YDH>{$CpeGiP7n^L~8oAHFSegH3hr4remR4j@vfwYkIZM z0Y-1HGWMt31B?cBFw*zcwlOHkYLVpXIT^`Wjw1sL_ea=ShGRg&nLgd>feWAE8qBFh zy-q(e_gp)ZeMWp7-~c0M;&(>dnFiRQow?Amd}cT*&76tAN;lK19Mkz>&iLNiGWhk dJr)J(HyN5IXr5ZG1;yG5e0f}5TtQIy{{i2n+J^uD diff --git a/Demo/Xigua.proto b/Demo/Xigua.proto deleted file mode 100755 index e456548..0000000 --- a/Demo/Xigua.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto2"; -import "XiguaCommon.proto"; - - -message XiguaLive { - message Data { - message Message { - required CommonInfo commonInfo = 1; - optional string content = 3; - } - // WebcastChatMessage 聊天 - // WebcastGiftMessage 礼物 - required string method = 1; - required Message message = 2; - } - repeated Data data = 1; - required string cursor = 2; - optional int32 fetch_interval = 3; - optional int32 now = 4; - required string internal_ext = 5; -} \ No newline at end of file diff --git a/Demo/XiguaCommon.proto b/Demo/XiguaCommon.proto deleted file mode 100644 index 2b37acb..0000000 --- a/Demo/XiguaCommon.proto +++ /dev/null @@ -1,35 +0,0 @@ -syntax = "proto2"; -import "XiguaUser.proto"; -import "XiguaGift.proto"; -// 样式 -message Style { - optional string color = 1; - optional int32 fontWeight = 4; -} -// 参数 -message Params { - // 1 字符串 - // 11 用户 - // 12 礼物 - required int32 type = 1; - optional Style style = 2; - optional string string = 11; - optional User user = 21; - optional Gift gift = 22; -} -// 自定义显示信息 -message DisplayText { - // 参数 - required string method = 1; - required string format = 2; - optional Style bgStyle = 3; - optional Params params = 4; -} -// 通用定义 -message CommonInfo { - optional string method = 1; - optional int32 msg_id = 2; - optional int32 room_id = 3; - optional int32 create_time = 4; - optional DisplayText displayText = 8; -} \ No newline at end of file diff --git a/Demo/XiguaGift.proto b/Demo/XiguaGift.proto deleted file mode 100644 index ab656bf..0000000 --- a/Demo/XiguaGift.proto +++ /dev/null @@ -1,10 +0,0 @@ -syntax = "proto2"; -// 礼物 -message Gift { - message Detail { - required string gift_id = 1; - required string gift_name = 2; - } - required int32 id = 1; - required Detail gift = 2; -} diff --git a/Demo/XiguaUser.proto b/Demo/XiguaUser.proto deleted file mode 100644 index 104e65b..0000000 --- a/Demo/XiguaUser.proto +++ /dev/null @@ -1,68 +0,0 @@ -syntax = "proto2"; -// 用户信息 -message User { - // 头像 - message Avatar { - required string url = 1; - optional string id = 2; - } - // 头衔 - message Badge { - message FanClubText { - required string text = 1; - optional string color = 2; - required int32 level = 3; - } - repeated string url = 1; - optional string localUrl = 2; - optional int32 height = 3; - optional int32 width = 4; - // 3 房管 - // 6 贵族 - // 7 粉丝团 - optional int32 type = 6; - optional string clickTo = 7; - optional FanClubText fanClubText = 8; - } - // 粉丝和粉 - message Follow { - optional int32 following = 1 [default = 0]; - optional int32 follower = 2 [default = 0]; - } - // 花钱等级 - message PayGrade { - required int32 current = 1; - required int32 level = 6; - optional int32 currentLevelNeed = 10; - optional int32 nextLevelNeed = 11; - optional string content = 13; - required Badge badge = 19; - optional int32 toNextLevelNeed = 21; - } - // 荣誉等级 - message HonorLevel { - required Badge badge = 19; - } - // 贵族 - message Noble { - message NobleBoarder { - repeated string urlList = 1; - required string uri = 2; - optional int32 height = 3; - optional int32 width = 4; - } - required string content = 4; - optional NobleBoarder boarder = 8; - } - required int32 id = 1; - required string nickname = 3; - required int32 gender = 4; - // 这个顺序可能有点迷,不是很清楚 - required Avatar avatarThumb = 9; - optional Avatar avatarMedium = 10; - optional Avatar avatarLarge = 11; - repeated Badge badge = 21; - optional Follow follow = 22; - required PayGrade payGrade = 23; - required int32 totalPaid = 34; -} diff --git a/Demo/result.txt b/Demo/result.txt deleted file mode 100755 index 3532acb..0000000 --- a/Demo/result.txt +++ /dev/null @@ -1,1104 +0,0 @@ -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776095429262838536 - 3: 6776046237389949709 - 4: 1577682868037 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "31" - } - } - } - 2: 10001 - 3: 4877269 - 4: 1 - 5: 31 - 6: 31 - 7 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 11: 1577682859 - 12: 9562129 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776096315337149188 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 51701203011 - 3: "\344\270\200\344\270\226\346\213\245\346\234\2112" - 9 { - 1: "http://p1.pstatp.com/thumb/173b6002b1b2f7dbdca17" - 2: "173b6002b1b2f7dbdca17" - } - 22 { - 1: 5 - 2: 17 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAApJw57AiopOgAc42H_4TpLSu0UOusGIpUOuJiMcFijQk" - } - } - } - } - } - 2 { - 1: 51701203011 - 3: "\344\270\200\344\270\226\346\213\245\346\234\2112" - 9 { - 1: "http://p1.pstatp.com/thumb/173b6002b1b2f7dbdca17" - 2: "173b6002b1b2f7dbdca17" - } - 22 { - 1: 5 - 2: 17 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAApJw57AiopOgAc42H_4TpLSu0UOusGIpUOuJiMcFijQk" - } - 3: 4368 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776095565866044164 - 3: 6776046237389949709 - 4: 1577682868207 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "32" - } - } - } - 2: 10001 - 3: 4877269 - 4: 1 - 5: 32 - 6: 32 - 7 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 11: 1577682859 - 12: 9562126 - } -} -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776095595369073419 - 3: 6776046237389949709 - 4: 1577682868387 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "33" - } - } - } - 2: 10001 - 3: 4877269 - 4: 1 - 5: 33 - 6: 33 - 7 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 11: 1577682859 - 12: 9562133 - } -} -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776095429262904072 - 3: 6776046237389949709 - 4: 1577682868548 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11 { - 6 { - } - } - } - } - } - 2: 10001 - 3: 4877269 - 4: 1 - 5: 34 - 6: 34 - 7 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 11: 1577682859 - 12: 9562130 - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776096296886438656 - 3: 6776046237389949709 - 4: 1577682868754 - 6: 1 - 8 { - 1: "webcast_chat_display_text" - 2: "{0:user}{1:string}" - 3 { - 1: "#ff36c0cf" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#60000000" - 4: 400 - } - 21 { - 1 { - 1: 96060857254 - 3: "\351\232\217\347\274\230\351\232\217\345\277\203Nice" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/f6c1f0a2eed94c6da6c63f953cf5e5d9~120x256.image" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 2: "webcast/xigua_admin_badge_v2.png" - 3: 16 - 4: 28 - 6: 3 - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_13.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 13 - } - } - 22 { - 1: 211 - 2: 87 - } - 23 { - 6: 6 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 13 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_13.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32 { - 2: 1 - } - 38: "0" - 46: "MS4wLjABAAAA2vT_skbNZqnuk8RNpxG7NnH0giN8I6ulbp1Ib03V6kc" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 2: 1 - } - } - 4 { - 1: 1 - 11: "\347\203\237\345\223\245\345\245\213\350\265\267\345\217\215\345\207\273\357\274\214" - } - } - } - 2 { - 1: 96060857254 - 3: "\351\232\217\347\274\230\351\232\217\345\277\203Nice" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/f6c1f0a2eed94c6da6c63f953cf5e5d9~120x256.image" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 2: "webcast/xigua_admin_badge_v2.png" - 3: 16 - 4: 28 - 6: 3 - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_13.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 13 - } - } - 22 { - 1: 211 - 2: 87 - } - 23 { - 6: 6 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 13 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_13.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_13.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32 { - 2: 1 - } - 38: "0" - 46: "MS4wLjABAAAA2vT_skbNZqnuk8RNpxG7NnH0giN8I6ulbp1Ib03V6kc" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: "\347\203\237\345\223\245\345\245\213\350\265\267\345\217\215\345\207\273\357\274\214" - } -} -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776095541777566475 - 3: 6776046237389949709 - 4: 1577682868756 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "35" - } - } - } - 2: 10001 - 3: 4877269 - 4: 1 - 5: 35 - 6: 35 - 7 { - 1: 108702526628 - 3: "\346\264\273\347\201\265482" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 10 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 11 { - 1: "http://p9-xg.bytecdn.cn/thumb/dafc0001a84b5d7bdaf5" - 2: "dafc0001a84b5d7bdaf5" - } - 15: 1 - 22 { - 1: 23 - 2: 4 - } - 23 { - 13: "\350\267\235\347\246\2731\347\272\247\350\277\230\345\267\2561\351\222\273\347\237\263" - 19: "" - 21: 1 - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 37: 1 - 38: "0" - 44 { - 2: 2 - } - 46: "MS4wLjABAAAAG1Dgaxsju3mrU8P-4n8PMiyre39zuzoIU4VN4Hx3jlk" - 48: "" - 1028: "108702526628" - } - 11: 1577682859 - 12: 9562136 - } -} -2: "6776095541777566475_1577682868824_6776096294789352203_1" -3: 1000 -4: 1577682868824 -5: "fetch_time:1577682868824|start_time:1577682856715|fetch_id:6776095765112277774|flag:0|seq:6" diff --git a/Demo/result2.txt b/Demo/result2.txt deleted file mode 100755 index f527d67..0000000 --- a/Demo/result2.txt +++ /dev/null @@ -1,4406 +0,0 @@ -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776094930906420743 - 3: 6776046237389949709 - 4: 1577682546805 - 6: 1 - } - 2 { - 1: 63221195737 - 3: "\344\271\236\344\270\220\344\270\255\347\232\204\351\234\270\344\270\27317" - 4: 1 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/2c5d0019f4df1067488e" - 2: "2c5d0019f4df1067488e" - } - 22 { - 1: 30 - 2: 3 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAdNaZPjCipFmR2wcODonTJz12-Nxxc5b-rE6YI88tRg4" - } - 3: "\350\265\260\344\272\206\343\200\202\346\215\241\344\270\234\350\245\277" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094936090626830 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 73258030131 - 3: "\347\224\237\344\272\216\345\214\227\344\270\216\351\201\207\344\272\216\345\215\227" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/15301f445a164de999d9dbdf9001bb34~120x256.image" - } - 22 { - 1: 17 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAuAFYDPQzrGwnSsHWU3-0tTMTMb99agGIZPaBiz0H3qA" - } - } - } - } - } - 2 { - 1: 73258030131 - 3: "\347\224\237\344\272\216\345\214\227\344\270\216\351\201\207\344\272\216\345\215\227" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/15301f445a164de999d9dbdf9001bb34~120x256.image" - } - 22 { - 1: 17 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAuAFYDPQzrGwnSsHWU3-0tTMTMb99agGIZPaBiz0H3qA" - } - 3: 4033 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094937756076812 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 68823028183 - 3: "\345\234\243\346\235\2578" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff6100005ec2b4942af3~120x256.image" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 5 - } - } - 22 { - 1: 22 - 2: 41 - } - 23 { - 6: 6 - 19 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 5 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAY4V7kjbl3WbVf_xhpHjUfluKnenDA3RIEXN8rRMcjl4" - } - } - } - } - } - 2 { - 1: 68823028183 - 3: "\345\234\243\346\235\2578" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff6100005ec2b4942af3~120x256.image" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 5 - } - } - 22 { - 1: 22 - 2: 41 - } - 23 { - 6: 6 - 19 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 5 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAY4V7kjbl3WbVf_xhpHjUfluKnenDA3RIEXN8rRMcjl4" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4041 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776094932810795788 - 3: 6776046237389949709 - 4: 1577682547968 - 6: 1 - } - 2 { - 1: 106105915100 - 3: "2\344\270\252\345\217\243\345\220\203\350\215\257" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/da8500183464d18265b0" - 2: "da8500183464d18265b0" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_3.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 22 { - 1: 46 - 2: 5 - } - 23 { - 6: 3 - 19 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_3.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAArHp0E4z9xClHim4mTkHjBJV0rzMkrq97XOWsd1f8bzw" - } - 3: "\344\270\200\351\246\226\345\207\211\345\207\211\351\200\201\347\273\231\344\275\240" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094941275228935 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 6099836306 - 3: "haoran79071754" - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~120x256.image" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - 21 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_7.png" - 6: 7 - 8 { - 1: "\345\246\226\345\244\247\345\244\247" - 2: "#FFFFFF" - 3: 7 - } - } - 22 { - 1: 68 - 2: 7 - } - 23 { - 6: 11 - 19 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\345\246\226\345\244\247\345\244\247" - 2: 7 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_7.png" - 3: 48 - 4: 150 - } - } - 2: "\345\246\226\345\244\247\345\244\247" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAiMA7ZrJRUqFSSYD7h6jJ7_prYHx-gbDxfboH11qM3lw" - } - } - } - } - } - 2 { - 1: 6099836306 - 3: "haoran79071754" - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~120x256.image" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - 21 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_7.png" - 6: 7 - 8 { - 1: "\345\246\226\345\244\247\345\244\247" - 2: "#FFFFFF" - 3: 7 - } - } - 22 { - 1: 68 - 2: 7 - } - 23 { - 6: 11 - 19 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\345\246\226\345\244\247\345\244\247" - 2: 7 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_7.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_7.png" - 3: 48 - 4: 150 - } - } - 2: "\345\246\226\345\244\247\345\244\247" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAiMA7ZrJRUqFSSYD7h6jJ7_prYHx-gbDxfboH11qM3lw" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4041 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094942239574796 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 997988799882285 - 3: "\345\270\246\350\264\247\345\260\217\350\276\276\344\272\272" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/ac44103b50c84d0bb41900afa3dd5400~120x256.image" - } - 22 { - 1: 8 - 2: 2876 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_H8wBjz9vWUjiTRxUaWpjBZum-T9Za_FiU8hO8WZg0o" - } - } - } - } - } - 2 { - 1: 997988799882285 - 3: "\345\270\246\350\264\247\345\260\217\350\276\276\344\272\272" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/ac44103b50c84d0bb41900afa3dd5400~120x256.image" - } - 22 { - 1: 8 - 2: 2876 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_H8wBjz9vWUjiTRxUaWpjBZum-T9Za_FiU8hO8WZg0o" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094943170775819 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 53077476093 - 3: "\347\214\233140674662" - 4: 1 - 9 { - 1: "http://wx.qlogo.cn/mmopen/1gvL9ficRs1HvRMa3aiaNB8Pbib73EhZxmeQpz10RXP7DubO3crGFhcZ0rY2tIx8DNx3guRZQq3zC7HTByowa0R2qK6Yp9d6VPe/64" - } - 22 { - 1: 131 - 2: 10 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAreBSPmB7N0KOov7l3M5aK-JJtyf5C7913fA2zDzGXOw" - } - } - } - } - } - 2 { - 1: 53077476093 - 3: "\347\214\233140674662" - 4: 1 - 9 { - 1: "http://wx.qlogo.cn/mmopen/1gvL9ficRs1HvRMa3aiaNB8Pbib73EhZxmeQpz10RXP7DubO3crGFhcZ0rY2tIx8DNx3guRZQq3zC7HTByowa0R2qK6Yp9d6VPe/64" - } - 22 { - 1: 131 - 2: 10 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAreBSPmB7N0KOov7l3M5aK-JJtyf5C7913fA2zDzGXOw" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094942927407883 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 92363708900 - 3: "\346\234\261\346\255\243\345\205\265534" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/bcb40ad0e57546d8a7ef6bdc0e5158a7~120x256.image" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 22 { - 1: 34 - 2: 5 - } - 23 { - 6: 5 - 19 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAyeUkrvkmBVMRe7hBaVHKziA8eZBXnGFipXKz3HrjKjU" - } - } - } - } - } - 2 { - 1: 92363708900 - 3: "\346\234\261\346\255\243\345\205\265534" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/bcb40ad0e57546d8a7ef6bdc0e5158a7~120x256.image" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 22 { - 1: 34 - 2: 5 - } - 23 { - 6: 5 - 19 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAyeUkrvkmBVMRe7hBaVHKziA8eZBXnGFipXKz3HrjKjU" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776094946618313484 - 3: 6776046237389949709 - 4: 1577682548629 - } - 2 { - 1: 1009 - 2 { - 1: 51315490218 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/dac40015f669ef0b696f" - 2: "dac40015f669ef0b696f" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 999 - 2 { - 1: 3694848579 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216b00276a5a0c528bc1" - 2: "216b00276a5a0c528bc1" - } - 23: "" - } - 3: 2 - } - 2 { - 1: 520 - 2 { - 1: 58955217257 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/1a6c001a0bf7aca465bb~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 1: 520 - 2 { - 1: 50031132577 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3795/3044413937" - 2: "3795/3044413937" - } - 23: "" - } - 3: 4 - } - 2 { - 1: 396 - 2 { - 1: 101097368136 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56d0004f6575163d569~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 1: 102 - 2 { - 1: 7095750389 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/216f00202a3c546467d8~120x256.image" - } - 23: "" - } - 3: 6 - } - 2 { - 1: 48 - 2 { - 1: 452616060933764 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/user-avatar/7c4bf3f97697cc6cdf5d4e248998820a~120x256.image" - } - 23: "" - } - 3: 7 - } - 2 { - 1: 38 - 2 { - 1: 76749795271 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/46c1000b70f372d7bd1a~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 1: 36 - 2 { - 1: 4211394254 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/aad7000caf3accc3cb92~120x256.image" - } - 23: "" - } - 3: 9 - } - 2 { - 1: 32 - 2 { - 1: 107676364786 - 2: 433533 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff0f00005366d597962c~120x256.image" - } - 23: "" - } - 3: 10 - } - 2 { - 1: 30 - 2 { - 1: 96456577532 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/3792/5112637127" - 2: "3792/5112637127" - } - 23: "" - } - 3: 11 - } - 2 { - 1: 30 - 2 { - 1: 6091992132 - 9 { - 1: "http://wx.qlogo.cn/mmopen/cTh78d4zFPcFldlibFa6AuKOEziayianNlEeR5Sl37ZcYrRqRIVrIxcFdVOMuiaBlQBnwdYr8lmMAcWJz2r2fc9qicE3lpTqz8ppia/64" - } - 23: "" - } - 3: 12 - } - 2 { - 1: 28 - 2 { - 1: 100772221334 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/dab4000b17db0ad6d8e0~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 1: 20 - 2 { - 1: 62002479122 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/da58000d4f38ebb8fc63" - 2: "da58000d4f38ebb8fc63" - } - 23: "" - } - 3: 14 - } - 2 { - 1: 20 - 2 { - 1: 23360742751 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/2c6100121cdc8ca1a742" - 2: "2c6100121cdc8ca1a742" - } - 23: "" - } - 3: 15 - } - 2 { - 1: 19 - 2 { - 1: 101690799346 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/dab20003f078a9e68fa4" - 2: "dab20003f078a9e68fa4" - } - 23: "" - } - 3: 16 - } - 2 { - 1: 18 - 2 { - 1: 3996777637 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2498000aa13c994faaba~120x256.image" - } - 23: "" - } - 3: 17 - } - 2 { - 1: 16 - 2 { - 1: 1719254794638445 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 18 - } - 2 { - 1: 15 - 2 { - 1: 4300866929 - 2: 348641 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff040000839016b23c56~120x256.image" - } - 23: "" - } - 3: 19 - } - 2 { - 1: 12 - 2 { - 1: 980371329783180 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3791/5035712059" - 2: "3791/5035712059" - } - 23: "" - } - 3: 20 - } - 3: 4033 - 4: "42\344\270\207\344\272\272\346\260\224" - 6: 426764 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094944407980812 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 50503134090 - 3: "\351\255\201\345\233\227" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/1bf60010c710d1a045ac" - 2: "1bf60010c710d1a045ac" - } - 22 { - 1: 24 - 2: 7 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA9uCg19bEDkIkKX9dpF3kjlvyNmqioA3-lDU7a4NonQ0" - } - } - } - } - } - 2 { - 1: 50503134090 - 3: "\351\255\201\345\233\227" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/1bf60010c710d1a045ac" - 2: "1bf60010c710d1a045ac" - } - 22 { - 1: 24 - 2: 7 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA9uCg19bEDkIkKX9dpF3kjlvyNmqioA3-lDU7a4NonQ0" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094944072387339 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 104629436766 - 3: "\347\235\277\347\221\236\351\224\2208231" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/daa60007351bd6f21ae2" - 2: "daa60007351bd6f21ae2" - } - 22 { - 1: 13 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAVdrIFjmQoFIP7IOYYD6D2a_7gCaov5rfabQLYT8ncsY" - } - } - } - } - } - 2 { - 1: 104629436766 - 3: "\347\235\277\347\221\236\351\224\2208231" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/daa60007351bd6f21ae2" - 2: "daa60007351bd6f21ae2" - } - 22 { - 1: 13 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAVdrIFjmQoFIP7IOYYD6D2a_7gCaov5rfabQLYT8ncsY" - } - 3: 4033 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094949030021892 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 70263029581 - 3: "6000010" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/3e7c000136faee86cddf" - 2: "3e7c000136faee86cddf" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_3.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_3.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 3 - } - } - 22 { - 1: 5 - 2: 1 - } - 23 { - 6: 3 - 19 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_3.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 3 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_3.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAu0AlxOal2MNv_zRuQTW-gVPH-RmD41FBxJtF8E6QQNE" - } - } - } - } - } - 2 { - 1: 70263029581 - 3: "6000010" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/3e7c000136faee86cddf" - 2: "3e7c000136faee86cddf" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_3.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_3.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 3 - } - } - 22 { - 1: 5 - 2: 1 - } - 23 { - 6: 3 - 19 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_3.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_3.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 3 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_3.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAu0AlxOal2MNv_zRuQTW-gVPH-RmD41FBxJtF8E6QQNE" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094950758451971 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 6053395016 - 3: "\351\231\210\345\224\220\345\256\211\345\220\211" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/24990016b636c608a68c" - 2: "24990016b636c608a68c" - } - 22 { - 1: 141 - 2: 4 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAACAz1arvpt5T2GJRaMkYUoXJt9pyJp00a4X6VK37LeD8" - } - } - } - } - } - 2 { - 1: 6053395016 - 3: "\351\231\210\345\224\220\345\256\211\345\220\211" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/24990016b636c608a68c" - 2: "24990016b636c608a68c" - } - 22 { - 1: 141 - 2: 4 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAACAz1arvpt5T2GJRaMkYUoXJt9pyJp00a4X6VK37LeD8" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094952402455307 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 61625370940 - 3: "sunwu\345\210\232" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/216f0025e253ff80e146" - 2: "216f0025e253ff80e146" - } - 22 { - 1: 92 - 2: 72 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAUOK4GaPCsuDYIWk22V5lEul0Xc1ifn_OycMzXGzSYvo" - } - } - } - } - } - 2 { - 1: 61625370940 - 3: "sunwu\345\210\232" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/216f0025e253ff80e146" - 2: "216f0025e253ff80e146" - } - 22 { - 1: 92 - 2: 72 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAUOK4GaPCsuDYIWk22V5lEul0Xc1ifn_OycMzXGzSYvo" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776094952814136068 - 3: 6776046237389949709 - 4: 1577682550801 - } - 2 { - 1: 1009 - 2 { - 1: 51315490218 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/dac40015f669ef0b696f" - 2: "dac40015f669ef0b696f" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 999 - 2 { - 1: 3694848579 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216b00276a5a0c528bc1" - 2: "216b00276a5a0c528bc1" - } - 23: "" - } - 3: 2 - } - 2 { - 1: 520 - 2 { - 1: 58955217257 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/1a6c001a0bf7aca465bb~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 1: 520 - 2 { - 1: 50031132577 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3795/3044413937" - 2: "3795/3044413937" - } - 23: "" - } - 3: 4 - } - 2 { - 1: 396 - 2 { - 1: 101097368136 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56d0004f6575163d569~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 1: 102 - 2 { - 1: 7095750389 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/216f00202a3c546467d8~120x256.image" - } - 23: "" - } - 3: 6 - } - 2 { - 1: 48 - 2 { - 1: 452616060933764 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/user-avatar/7c4bf3f97697cc6cdf5d4e248998820a~120x256.image" - } - 23: "" - } - 3: 7 - } - 2 { - 1: 38 - 2 { - 1: 76749795271 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/46c1000b70f372d7bd1a~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 1: 36 - 2 { - 1: 4211394254 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/aad7000caf3accc3cb92~120x256.image" - } - 23: "" - } - 3: 9 - } - 2 { - 1: 32 - 2 { - 1: 107676364786 - 2: 433533 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff0f00005366d597962c~120x256.image" - } - 23: "" - } - 3: 10 - } - 2 { - 1: 30 - 2 { - 1: 96456577532 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/3792/5112637127" - 2: "3792/5112637127" - } - 23: "" - } - 3: 11 - } - 2 { - 1: 30 - 2 { - 1: 6091992132 - 9 { - 1: "http://wx.qlogo.cn/mmopen/cTh78d4zFPcFldlibFa6AuKOEziayianNlEeR5Sl37ZcYrRqRIVrIxcFdVOMuiaBlQBnwdYr8lmMAcWJz2r2fc9qicE3lpTqz8ppia/64" - } - 23: "" - } - 3: 12 - } - 2 { - 1: 28 - 2 { - 1: 100772221334 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/dab4000b17db0ad6d8e0~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 1: 20 - 2 { - 1: 62002479122 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/da58000d4f38ebb8fc63" - 2: "da58000d4f38ebb8fc63" - } - 23: "" - } - 3: 14 - } - 2 { - 1: 20 - 2 { - 1: 23360742751 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/2c6100121cdc8ca1a742" - 2: "2c6100121cdc8ca1a742" - } - 23: "" - } - 3: 15 - } - 2 { - 1: 19 - 2 { - 1: 101690799346 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/dab20003f078a9e68fa4" - 2: "dab20003f078a9e68fa4" - } - 23: "" - } - 3: 16 - } - 2 { - 1: 18 - 2 { - 1: 3996777637 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2498000aa13c994faaba~120x256.image" - } - 23: "" - } - 3: 17 - } - 2 { - 1: 16 - 2 { - 1: 1719254794638445 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 18 - } - 2 { - 1: 15 - 2 { - 1: 4300866929 - 2: 348641 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff040000839016b23c56~120x256.image" - } - 23: "" - } - 3: 19 - } - 2 { - 1: 12 - 2 { - 1: 980371329783180 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3791/5035712059" - 2: "3791/5035712059" - } - 23: "" - } - 3: 20 - } - 3: 4041 - 4: "42\344\270\207\344\272\272\346\260\224" - 6: 426764 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094956198169356 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 95348551144 - 3: "\347\250\213\347\220\206\344\274\237" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/dacc0011150648a64640" - 2: "dacc0011150648a64640" - } - 21 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_2.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&__live_platform__=webcast&type=popup&gravity=bottom&height=400&radius=8" - } - 22 { - 1: 18 - 2: 1 - } - 23 { - 6: 2 - 19 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_2.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&__live_platform__=webcast&type=popup&gravity=bottom&height=400&radius=8" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAb6mvE6gciAUV7_B5h7USBV6NKzdoHxJTlfyD0JqpTQc" - } - } - } - } - } - 2 { - 1: 95348551144 - 3: "\347\250\213\347\220\206\344\274\237" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/dacc0011150648a64640" - 2: "dacc0011150648a64640" - } - 21 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_2.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&__live_platform__=webcast&type=popup&gravity=bottom&height=400&radius=8" - } - 22 { - 1: 18 - 2: 1 - } - 23 { - 6: 2 - 19 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_2.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_2.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&__live_platform__=webcast&type=popup&gravity=bottom&height=400&radius=8" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAb6mvE6gciAUV7_B5h7USBV6NKzdoHxJTlfyD0JqpTQc" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4041 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094956517001996 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 51734346370 - 3: "\345\215\216\344\270\275\350\275\254\350\272\25390892" - 4: 2 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/9fd40004a05695030d28" - 2: "9fd40004a05695030d28" - } - 22 { - 1: 47 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAKzpqlsCPmbM9csIxAW8MTOtQmaVdcJpbFmhibQDIXzk" - } - } - } - } - } - 2 { - 1: 51734346370 - 3: "\345\215\216\344\270\275\350\275\254\350\272\25390892" - 4: 2 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/9fd40004a05695030d28" - 2: "9fd40004a05695030d28" - } - 22 { - 1: 47 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAKzpqlsCPmbM9csIxAW8MTOtQmaVdcJpbFmhibQDIXzk" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094958337460999 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 6628852924 - 3: "\346\211\223\345\260\217\346\200\252\345\205\275\347\232\204Adam" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/5d500029ab3a5ccd9dd3" - 2: "5d500029ab3a5ccd9dd3" - } - 22 { - 1: 286 - 2: 14 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAy1nDK5CuJgM1Nt-CHgBZ6GwyK_EQgwP_SprdTmtp9_o" - } - } - } - } - } - 2 { - 1: 6628852924 - 3: "\346\211\223\345\260\217\346\200\252\345\205\275\347\232\204Adam" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/5d500029ab3a5ccd9dd3" - 2: "5d500029ab3a5ccd9dd3" - } - 22 { - 1: 286 - 2: 14 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAy1nDK5CuJgM1Nt-CHgBZ6GwyK_EQgwP_SprdTmtp9_o" - } - 3: 4041 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094960744876807 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 66087262008 - 3: "\346\234\211\347\202\271\347\264\25719715" - 4: 1 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/36400005708744aac400" - 2: "36400005708744aac400" - } - 22 { - 1: 55 - 2: 5 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAALyGp2TRQs4g5HkemS_BVyFPyAjvccf9R21E4qdmiTY8" - } - } - } - } - } - 2 { - 1: 66087262008 - 3: "\346\234\211\347\202\271\347\264\25719715" - 4: 1 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/36400005708744aac400" - 2: "36400005708744aac400" - } - 22 { - 1: 55 - 2: 5 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAALyGp2TRQs4g5HkemS_BVyFPyAjvccf9R21E4qdmiTY8" - } - 3: 4041 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776094964658146056 - 3: 6776046237389949709 - 4: 1577682552546 - } - 2 { - 1: 1009 - 2 { - 1: 51315490218 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/dac40015f669ef0b696f" - 2: "dac40015f669ef0b696f" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 999 - 2 { - 1: 3694848579 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216b00276a5a0c528bc1" - 2: "216b00276a5a0c528bc1" - } - 23: "" - } - 3: 2 - } - 2 { - 1: 520 - 2 { - 1: 58955217257 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/1a6c001a0bf7aca465bb~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 1: 520 - 2 { - 1: 50031132577 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3795/3044413937" - 2: "3795/3044413937" - } - 23: "" - } - 3: 4 - } - 2 { - 1: 396 - 2 { - 1: 101097368136 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56d0004f6575163d569~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 1: 102 - 2 { - 1: 7095750389 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/216f00202a3c546467d8~120x256.image" - } - 23: "" - } - 3: 6 - } - 2 { - 1: 48 - 2 { - 1: 452616060933764 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/user-avatar/7c4bf3f97697cc6cdf5d4e248998820a~120x256.image" - } - 23: "" - } - 3: 7 - } - 2 { - 1: 38 - 2 { - 1: 76749795271 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/46c1000b70f372d7bd1a~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 1: 36 - 2 { - 1: 4211394254 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/aad7000caf3accc3cb92~120x256.image" - } - 23: "" - } - 3: 9 - } - 2 { - 1: 32 - 2 { - 1: 107676364786 - 2: 433533 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff0f00005366d597962c~120x256.image" - } - 23: "" - } - 3: 10 - } - 2 { - 1: 30 - 2 { - 1: 96456577532 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/3792/5112637127" - 2: "3792/5112637127" - } - 23: "" - } - 3: 11 - } - 2 { - 1: 30 - 2 { - 1: 6091992132 - 9 { - 1: "http://wx.qlogo.cn/mmopen/cTh78d4zFPcFldlibFa6AuKOEziayianNlEeR5Sl37ZcYrRqRIVrIxcFdVOMuiaBlQBnwdYr8lmMAcWJz2r2fc9qicE3lpTqz8ppia/64" - } - 23: "" - } - 3: 12 - } - 2 { - 1: 28 - 2 { - 1: 100772221334 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/dab4000b17db0ad6d8e0~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 1: 20 - 2 { - 1: 62002479122 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/da58000d4f38ebb8fc63" - 2: "da58000d4f38ebb8fc63" - } - 23: "" - } - 3: 14 - } - 2 { - 1: 20 - 2 { - 1: 23360742751 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/2c6100121cdc8ca1a742" - 2: "2c6100121cdc8ca1a742" - } - 23: "" - } - 3: 15 - } - 2 { - 1: 19 - 2 { - 1: 101690799346 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/dab20003f078a9e68fa4" - 2: "dab20003f078a9e68fa4" - } - 23: "" - } - 3: 16 - } - 2 { - 1: 18 - 2 { - 1: 3996777637 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2498000aa13c994faaba~120x256.image" - } - 23: "" - } - 3: 17 - } - 2 { - 1: 16 - 2 { - 1: 1719254794638445 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 18 - } - 2 { - 1: 15 - 2 { - 1: 4300866929 - 2: 348641 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff040000839016b23c56~120x256.image" - } - 23: "" - } - 3: 19 - } - 2 { - 1: 12 - 2 { - 1: 980371329783180 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3791/5035712059" - 2: "3791/5035712059" - } - 23: "" - } - 3: 20 - } - 3: 4041 - 4: "42\344\270\207\344\272\272\346\260\224" - 6: 426778 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094960816392968 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 2123860304991844 - 3: "\351\233\252\350\216\262\350\201\224\347\233\237696" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/user-avatar/e1034ee332f3a360de1f440a1926d912~120x256.image" - } - 21 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_8.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_8.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 22 { - 1: 17 - } - 23 { - 6: 8 - 19 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_8.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_8.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAjHO40vuUlWpBw6xrCHAIzLLBr5Lm90PYVaX4IHF0CS0-vVt1lJ7jBF47M5A7jkc0" - } - } - } - } - } - 2 { - 1: 2123860304991844 - 3: "\351\233\252\350\216\262\350\201\224\347\233\237696" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/user-avatar/e1034ee332f3a360de1f440a1926d912~120x256.image" - } - 21 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_8.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_8.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 22 { - 1: 17 - } - 23 { - 6: 8 - 19 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_8.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_8.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAjHO40vuUlWpBw6xrCHAIzLLBr5Lm90PYVaX4IHF0CS0-vVt1lJ7jBF47M5A7jkc0" - } - 3: 4049 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094963341396739 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 100159301874 - 3: "\344\270\200\350\265\267\350\265\260\350\277\207\347\232\204\346\227\245\345\255\2203668" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/daaa00069579f9347cfb" - 2: "daaa00069579f9347cfb" - } - 22 { - 1: 27 - 2: 2 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAABZJ6JhoM1WejPbD5fYsa11CqVqGvBpyFiUqnEqRC7k" - } - } - } - } - } - 2 { - 1: 100159301874 - 3: "\344\270\200\350\265\267\350\265\260\350\277\207\347\232\204\346\227\245\345\255\2203668" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/daaa00069579f9347cfb" - 2: "daaa00069579f9347cfb" - } - 22 { - 1: 27 - 2: 2 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAABZJ6JhoM1WejPbD5fYsa11CqVqGvBpyFiUqnEqRC7k" - } - 3: 4040 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094964540836621 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 4067605756 - 3: "\350\200\201\345\205\265\344\277\235\351\222\223" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/3796/2975850990" - 2: "3796/2975850990" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 22 { - 1: 35 - 2: 15 - } - 23 { - 6: 5 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAACtnp9r-xDc2ZWBMB3qYeQqT2DbPGpPL65XTRc1-7I2Q" - } - } - } - } - } - 2 { - 1: 4067605756 - 3: "\350\200\201\345\205\265\344\277\235\351\222\223" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/3796/2975850990" - 2: "3796/2975850990" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 22 { - 1: 35 - 2: 15 - } - 23 { - 6: 5 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAACtnp9r-xDc2ZWBMB3qYeQqT2DbPGpPL65XTRc1-7I2Q" - } - 3: 4049 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776094967443081987 - 3: 6776046237389949709 - 4: 1577682554289 - } - 2 { - 1: 1009 - 2 { - 1: 51315490218 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/dac40015f669ef0b696f" - 2: "dac40015f669ef0b696f" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 999 - 2 { - 1: 3694848579 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216b00276a5a0c528bc1" - 2: "216b00276a5a0c528bc1" - } - 23: "" - } - 3: 2 - } - 2 { - 1: 520 - 2 { - 1: 58955217257 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/1a6c001a0bf7aca465bb~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 1: 520 - 2 { - 1: 50031132577 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3795/3044413937" - 2: "3795/3044413937" - } - 23: "" - } - 3: 4 - } - 2 { - 1: 396 - 2 { - 1: 101097368136 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56d0004f6575163d569~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 1: 102 - 2 { - 1: 7095750389 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/216f00202a3c546467d8~120x256.image" - } - 23: "" - } - 3: 6 - } - 2 { - 1: 48 - 2 { - 1: 452616060933764 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/user-avatar/7c4bf3f97697cc6cdf5d4e248998820a~120x256.image" - } - 23: "" - } - 3: 7 - } - 2 { - 1: 38 - 2 { - 1: 76749795271 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/46c1000b70f372d7bd1a~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 1: 36 - 2 { - 1: 4211394254 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/aad7000caf3accc3cb92~120x256.image" - } - 23: "" - } - 3: 9 - } - 2 { - 1: 32 - 2 { - 1: 107676364786 - 2: 433533 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff0f00005366d597962c~120x256.image" - } - 23: "" - } - 3: 10 - } - 2 { - 1: 30 - 2 { - 1: 96456577532 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/3792/5112637127" - 2: "3792/5112637127" - } - 23: "" - } - 3: 11 - } - 2 { - 1: 30 - 2 { - 1: 6091992132 - 9 { - 1: "http://wx.qlogo.cn/mmopen/cTh78d4zFPcFldlibFa6AuKOEziayianNlEeR5Sl37ZcYrRqRIVrIxcFdVOMuiaBlQBnwdYr8lmMAcWJz2r2fc9qicE3lpTqz8ppia/64" - } - 23: "" - } - 3: 12 - } - 2 { - 1: 28 - 2 { - 1: 100772221334 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/dab4000b17db0ad6d8e0~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 1: 20 - 2 { - 1: 62002479122 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/da58000d4f38ebb8fc63" - 2: "da58000d4f38ebb8fc63" - } - 23: "" - } - 3: 14 - } - 2 { - 1: 20 - 2 { - 1: 23360742751 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/2c6100121cdc8ca1a742" - 2: "2c6100121cdc8ca1a742" - } - 23: "" - } - 3: 15 - } - 2 { - 1: 19 - 2 { - 1: 101690799346 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/dab20003f078a9e68fa4" - 2: "dab20003f078a9e68fa4" - } - 23: "" - } - 3: 16 - } - 2 { - 1: 18 - 2 { - 1: 3996777637 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2498000aa13c994faaba~120x256.image" - } - 23: "" - } - 3: 17 - } - 2 { - 1: 16 - 2 { - 1: 1719254794638445 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 18 - } - 2 { - 1: 15 - 2 { - 1: 4300866929 - 2: 348641 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff040000839016b23c56~120x256.image" - } - 23: "" - } - 3: 19 - } - 2 { - 1: 12 - 2 { - 1: 980371329783180 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3791/5035712059" - 2: "3791/5035712059" - } - 23: "" - } - 3: 20 - } - 3: 4049 - 4: "42\344\270\207\344\272\272\346\260\224" - 6: 426778 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094968164649731 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 77206076756 - 3: "\347\201\265\351\276\231\346\240\270\351\233\225V\345\255\246\346\265\267V" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/5acb00191e332925df8d" - 2: "5acb00191e332925df8d" - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - 21 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_10.png" - 6: 7 - 8 { - 1: "\345\267\245\346\240\270\345\214\240" - 2: "#FFFFFF" - 3: 10 - } - } - 22 { - 1: 80 - 2: 16 - } - 23 { - 6: 11 - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\345\267\245\346\240\270\345\214\240" - 2: 10 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_10.png" - 3: 48 - 4: 150 - } - } - 2: "\345\267\245\346\240\270\345\214\240" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAqApC07ZpZa7UhpBpzaHPR1yqxLVZL5rpyDFv1npMcKw" - } - } - } - } - } - 2 { - 1: 77206076756 - 3: "\347\201\265\351\276\231\346\240\270\351\233\225V\345\255\246\346\265\267V" - 4: 1 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/5acb00191e332925df8d" - 2: "5acb00191e332925df8d" - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - 21 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_10.png" - 6: 7 - 8 { - 1: "\345\267\245\346\240\270\345\214\240" - 2: "#FFFFFF" - 3: 10 - } - } - 22 { - 1: 80 - 2: 16 - } - 23 { - 6: 11 - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\345\267\245\346\240\270\345\214\240" - 2: 10 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_10.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_10.png" - 3: 48 - 4: 150 - } - } - 2: "\345\267\245\346\240\270\345\214\240" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAqApC07ZpZa7UhpBpzaHPR1yqxLVZL5rpyDFv1npMcKw" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4049 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094968026352398 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 99666319456 - 3: "\344\274\230\350\264\250\345\244\226\345\242\231\345\210\233\344\275\234\350\200\205" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/da9e000236a46013b552~120x256.image" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_7.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 22 { - 1: 19 - 2: 10 - } - 23 { - 6: 7 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_7.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAaUFeONE38a6l_Xbx_JPKAC6OXyH54TszcbhKgzbOnlA" - } - } - } - } - } - 2 { - 1: 99666319456 - 3: "\344\274\230\350\264\250\345\244\226\345\242\231\345\210\233\344\275\234\350\200\205" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/da9e000236a46013b552~120x256.image" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_7.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 22 { - 1: 19 - 2: 10 - } - 23 { - 6: 7 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_7.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_7.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAaUFeONE38a6l_Xbx_JPKAC6OXyH54TszcbhKgzbOnlA" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4041 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094971163314947 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 14225607845 - 3: "\345\257\214\345\271\263\345\260\217\345\260\217\346\233\274" - 4: 2 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/4f954625c04c4183bff8f58b2991c659~120x256.image" - } - 22 { - 1: 78 - 2: 3 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAxL2OdYfZoSyd8yv3D5UyK-NxKCBqtEgvxTcBT2h1poM" - } - } - } - } - } - 2 { - 1: 14225607845 - 3: "\345\257\214\345\271\263\345\260\217\345\260\217\346\233\274" - 4: 2 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/4f954625c04c4183bff8f58b2991c659~120x256.image" - } - 22 { - 1: 78 - 2: 3 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAxL2OdYfZoSyd8yv3D5UyK-NxKCBqtEgvxTcBT2h1poM" - } - 3: 4049 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094973004647180 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 54236103268 - 3: "\346\227\240\350\204\232\345\260\217\351\243\236\351\270\237" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/150e0007cdf6ce59cfcd" - 2: "150e0007cdf6ce59cfcd" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 5 - } - } - 22 { - 1: 187 - 2: 106 - } - 23 { - 6: 5 - 19 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 5 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAZItaBELJaLJBbypwHjVgY89UNH9EnF_FR8Ni-vrKPcc" - } - } - } - } - } - 2 { - 1: 54236103268 - 3: "\346\227\240\350\204\232\345\260\217\351\243\236\351\270\237" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/150e0007cdf6ce59cfcd" - 2: "150e0007cdf6ce59cfcd" - } - 21 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 5 - } - } - 22 { - 1: 187 - 2: 106 - } - 23 { - 6: 5 - 19 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 5 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_5.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_5.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAZItaBELJaLJBbypwHjVgY89UNH9EnF_FR8Ni-vrKPcc" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 4049 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776094949931993869 - 3: 6776046237389949709 - 4: 1577682555873 - 6: 1 - } - 2 { - 1: 87766312219 - 3: "\345\244\217\346\262\220lx" - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/9f589b489722457f941b0492e92a56fc~120x256.image" - } - 21 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_9.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_3.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 3 - } - } - 22 { - 1: 6 - 2: 1 - } - 23 { - 6: 9 - 19 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_9.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_9.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&height=400&radius=8&__live_platform__=webcast&type=popup&gravity=bottom" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 3 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_3.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_3.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_Kg7MtTNiVqoIiaOZSBSu7bEegMhDVvdoQljbU8448s" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: "\346\215\256\347\202\271\351\203\275\350\242\253\344\272\272\345\215\240\344\272\206\357\274\214\346\262\241\345\276\227\351\235\242\345\255\220" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776094970790398723 - 3: 6776046237389949709 - 4: 1577682556047 - } - 2 { - 1: 1009 - 2 { - 1: 51315490218 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/dac40015f669ef0b696f" - 2: "dac40015f669ef0b696f" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 999 - 2 { - 1: 3694848579 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216b00276a5a0c528bc1" - 2: "216b00276a5a0c528bc1" - } - 23: "" - } - 3: 2 - } - 2 { - 1: 520 - 2 { - 1: 58955217257 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/1a6c001a0bf7aca465bb~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 1: 520 - 2 { - 1: 50031132577 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3795/3044413937" - 2: "3795/3044413937" - } - 23: "" - } - 3: 4 - } - 2 { - 1: 396 - 2 { - 1: 101097368136 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56d0004f6575163d569~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 1: 102 - 2 { - 1: 7095750389 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/216f00202a3c546467d8~120x256.image" - } - 23: "" - } - 3: 6 - } - 2 { - 1: 48 - 2 { - 1: 452616060933764 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/user-avatar/7c4bf3f97697cc6cdf5d4e248998820a~120x256.image" - } - 23: "" - } - 3: 7 - } - 2 { - 1: 38 - 2 { - 1: 76749795271 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/46c1000b70f372d7bd1a~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 1: 36 - 2 { - 1: 4211394254 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/aad7000caf3accc3cb92~120x256.image" - } - 23: "" - } - 3: 9 - } - 2 { - 1: 32 - 2 { - 1: 107676364786 - 2: 433533 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff0f00005366d597962c~120x256.image" - } - 23: "" - } - 3: 10 - } - 2 { - 1: 30 - 2 { - 1: 96456577532 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/3792/5112637127" - 2: "3792/5112637127" - } - 23: "" - } - 3: 11 - } - 2 { - 1: 30 - 2 { - 1: 6091992132 - 9 { - 1: "http://wx.qlogo.cn/mmopen/cTh78d4zFPcFldlibFa6AuKOEziayianNlEeR5Sl37ZcYrRqRIVrIxcFdVOMuiaBlQBnwdYr8lmMAcWJz2r2fc9qicE3lpTqz8ppia/64" - } - 23: "" - } - 3: 12 - } - 2 { - 1: 28 - 2 { - 1: 100772221334 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/dab4000b17db0ad6d8e0~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 1: 20 - 2 { - 1: 62002479122 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/da58000d4f38ebb8fc63" - 2: "da58000d4f38ebb8fc63" - } - 23: "" - } - 3: 14 - } - 2 { - 1: 20 - 2 { - 1: 23360742751 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/2c6100121cdc8ca1a742" - 2: "2c6100121cdc8ca1a742" - } - 23: "" - } - 3: 15 - } - 2 { - 1: 19 - 2 { - 1: 101690799346 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/dab20003f078a9e68fa4" - 2: "dab20003f078a9e68fa4" - } - 23: "" - } - 3: 16 - } - 2 { - 1: 18 - 2 { - 1: 3996777637 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2498000aa13c994faaba~120x256.image" - } - 23: "" - } - 3: 17 - } - 2 { - 1: 16 - 2 { - 1: 1719254794638445 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 18 - } - 2 { - 1: 15 - 2 { - 1: 4300866929 - 2: 348641 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff040000839016b23c56~120x256.image" - } - 23: "" - } - 3: 19 - } - 2 { - 1: 12 - 2 { - 1: 980371329783180 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3791/5035712059" - 2: "3791/5035712059" - } - 23: "" - } - 3: 20 - } - 3: 4049 - 4: "42\344\270\207\344\272\272\346\260\224" - 6: 426778 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776094977027214091 - 3: 6776046237389949709 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 5721876245 - 3: "\344\270\200\350\250\253\345\236\250\350\255\26761423436" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/249c002c82f6d0d812d4" - 2: "249c002c82f6d0d812d4" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 9 - } - } - 22 { - 1: 99 - 2: 6 - } - 23 { - 6: 5 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 9 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAVNrMHFQctXLD0T_7P52m_ZVfnEolHW9lwFDyK6E-GR4" - } - } - } - } - } - 2 { - 1: 5721876245 - 3: "\344\270\200\350\250\253\345\236\250\350\255\26761423436" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/249c002c82f6d0d812d4" - 2: "249c002c82f6d0d812d4" - } - 21 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 6: 7 - 8 { - 1: "\347\203\237\345\223\245" - 2: "#FFFFFF" - 3: 9 - } - } - 22 { - 1: 99 - 2: 6 - } - 23 { - 6: 5 - 19 { - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\347\203\237\345\223\245" - 2: 9 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p9-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 3: 48 - 4: 150 - } - } - 2: "\347\203\237\345\223\245" - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAVNrMHFQctXLD0T_7P52m_ZVfnEolHW9lwFDyK6E-GR4" - } - 3: 4049 - 10: 1 - 14: "42\344\270\207\344\272\272\346\260\224" - } -} -2: "6776094977027214091_1577682556530_6776094380026710796_1" -3: 1000 -4: 1577682556530 -5: "fetch_time:1577682556530|start_time:1577682509823|fetch_id:6776094936740793091|flag:0|seq:65" diff --git a/Demo/result3.txt b/Demo/result3.txt deleted file mode 100755 index 04eaf79..0000000 --- a/Demo/result3.txt +++ /dev/null @@ -1,1434 +0,0 @@ -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776119321150065420 - 3: 6776099199801887501 - 4: 1577688399452 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108307861429 - 3: "\345\276\201\346\234\215\344\271\213\345\210\2033" - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 10 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 11 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 15: 1 - 21 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 12 - } - } - 22 { - 1: 44 - 2: 2 - } - 23 { - 1: 91 - 6: 5 - 10: 51 - 11: 99 - 13: "\350\267\235\347\246\2736\347\272\247\350\277\230\345\267\2569\351\222\273\347\237\263" - 19 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21: 9 - } - 24 { - 1 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 12 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - 32: "" - 34: 91 - 37: 1 - 38: "0" - 44 { - 2: 3 - } - 46: "MS4wLjABAAAA3yzYmDHkqQDPKUALHwC9_n1fhIVUR0_uZSCIxHnARL8" - 48 { - 2: 1651802804437003 - 3: 1651802804437003 - } - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 5: 1577808000 - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - 1028: "108307861429" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "11" - } - } - } - 2: 10001 - 3: 49589085 - 4: 1 - 5: 11 - 6: 11 - 7 { - 1: 108307861429 - 3: "\345\276\201\346\234\215\344\271\213\345\210\2033" - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 10 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 11 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 15: 1 - 21 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 12 - } - } - 22 { - 1: 44 - 2: 2 - } - 23 { - 1: 91 - 6: 5 - 10: 51 - 11: 99 - 13: "\350\267\235\347\246\2736\347\272\247\350\277\230\345\267\2569\351\222\273\347\237\263" - 19 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21: 9 - } - 24 { - 1 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 12 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - 32: "" - 34: 91 - 37: 1 - 38: "0" - 44 { - 2: 3 - } - 46: "MS4wLjABAAAA3yzYmDHkqQDPKUALHwC9_n1fhIVUR0_uZSCIxHnARL8" - 48 { - 2: 1651802804437003 - 3: 1651802804437003 - } - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 5: 1577808000 - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - 1028: "108307861429" - } - 11: 1577688394 - 12: 38199386 - } -} -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776119550116809480 - 3: 6776099199801887501 - 4: 1577688399828 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108307861429 - 3: "\345\276\201\346\234\215\344\271\213\345\210\2033" - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 10 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 11 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 15: 1 - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 12 - } - } - 22 { - 1: 44 - 2: 2 - } - 23 { - 1: 91 - 6: 5 - 10: 51 - 11: 99 - 13: "\350\267\235\347\246\2736\347\272\247\350\277\230\345\267\2569\351\222\273\347\237\263" - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21: 9 - } - 24 { - 1 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 12 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - 32: "" - 34: 91 - 37: 1 - 38: "0" - 44 { - 2: 3 - } - 46: "MS4wLjABAAAA3yzYmDHkqQDPKUALHwC9_n1fhIVUR0_uZSCIxHnARL8" - 48 { - 2: 1651802804437003 - 3: 1651802804437003 - } - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 5: 1577808000 - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - 1028: "108307861429" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "12" - } - } - } - 2: 10001 - 3: 49589085 - 4: 1 - 5: 12 - 6: 12 - 7 { - 1: 108307861429 - 3: "\345\276\201\346\234\215\344\271\213\345\210\2033" - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 10 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 11 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 15: 1 - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 12 - } - } - 22 { - 1: 44 - 2: 2 - } - 23 { - 1: 91 - 6: 5 - 10: 51 - 11: 99 - 13: "\350\267\235\347\246\2736\347\272\247\350\277\230\345\267\2569\351\222\273\347\237\263" - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21: 9 - } - 24 { - 1 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 12 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - 32: "" - 34: 91 - 37: 1 - 38: "0" - 44 { - 2: 3 - } - 46: "MS4wLjABAAAA3yzYmDHkqQDPKUALHwC9_n1fhIVUR0_uZSCIxHnARL8" - 48 { - 2: 1651802804437003 - 3: 1651802804437003 - } - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 5: 1577808000 - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - 1028: "108307861429" - } - 11: 1577688394 - 12: 38199388 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776120076622990087 - 3: 6776099199801887501 - 4: 1577688400030 - } - 2 { - 1: 2997 - 2 { - 1: 109781518892 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/1fe3313f1d384167a678770d045caec6~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 1105 - 2 { - 1: 58159565215 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/da8f0019a1e68c81f0ac" - 2: "da8f0019a1e68c81f0ac" - } - 23: "" - } - 3: 2 - } - 2 { - 1: 817 - 2 { - 1: 52379408873 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/24990023eae5e3325fcc~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 1: 520 - 2 { - 1: 4750751180 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e574000198d2cc55d1bd~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 1: 199 - 2 { - 1: 107860180929 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/edaf699f4aa24be4b032e2a97e5ffe33~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 1: 198 - 2 { - 1: 110939390696 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/dada001b0c0662714273~120x256.image" - } - 23: "" - } - 3: 6 - } - 2 { - 1: 30 - 2 { - 1: 144768134026116 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/e9f0a46135f64dbf8a980aca4442892c~120x256.image" - } - 23: "" - } - 3: 7 - } - 2 { - 1: 15 - 2 { - 1: 106730450628 - 9 { - 1: "http://s0.pstatp.com/image/avatar.png" - } - 23: "" - } - 3: 8 - } - 2 { - 1: 10 - 2 { - 1: 2889153583261468 - 2: 361962 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ffc8000040315f32bfc0~120x256.image" - } - 23: "" - } - 3: 9 - } - 2 { - 1: 7 - 2 { - 1: 59424196425 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/fe4f834b2bc6432bb8723916d617e570~120x256.image" - } - 23: "" - } - 3: 10 - } - 2 { - 1: 6 - 2 { - 1: 52884675804 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daec001b63b3e0dd37d7~120x256.image" - } - 23: "" - } - 3: 11 - } - 2 { - 1: 5 - 2 { - 1: 62878793771 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/7f29e64da0b2490ca698bcae5698e98c~120x256.image" - } - 23: "" - } - 3: 12 - } - 2 { - 1: 3 - 2 { - 1: 18832317498 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/dadb00050de627ab3cbc" - 2: "dadb00050de627ab3cbc" - } - 23: "" - } - 3: 13 - } - 2 { - 1: 2 - 2 { - 1: 59199520587 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5acc000b1b21ea190f61" - 2: "5acc000b1b21ea190f61" - } - 23: "" - } - 3: 14 - } - 2 { - 1: 2 - 2 { - 1: 3188232986307261 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/41416a96df8f40b3aae8414bbe815bbb~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 1: 1 - 2 { - 1: 6952484464 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/72900163990b4b9a49d" - 2: "72900163990b4b9a49d" - } - 23: "" - } - 3: 16 - } - 2 { - 1: 1 - 2 { - 1: 6246719531 - 2: 504859 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f60011dae615c75f20~120x256.image" - } - 23: "" - } - 3: 17 - } - 2 { - 1: 1 - 2 { - 1: 61761360309 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/173b700195f4b6b9d4f22" - 2: "173b700195f4b6b9d4f22" - } - 23: "" - } - 3: 18 - } - 2 { - 1: 1 - 2 { - 1: 5511241493 - 2: 264265 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/2dedf0001644893e84c64~120x256.image" - } - 23: "" - } - 3: 19 - } - 2 { - 1: 1 - 2 { - 1: 54262787632 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/382f000f53111d2e5553" - 2: "382f000f53111d2e5553" - } - 23: "" - } - 3: 20 - } - 3: 3950 - 4: "50\344\270\207\344\272\272\346\260\224" - 6: 507411 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776120073947040520 - 3: 6776099199801887501 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 4633269507 - 3: "\346\235\216\345\244\247\346\224\266\346\224\266\346\224\266" - 4: 1 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216c002be06993e69986" - 2: "216c002be06993e69986" - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_15.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 6: 7 - 8 { - 1: "\345\270\203\346\222\251\345\246\271" - 2: "#FFFFFF" - 3: 6 - } - } - 22 { - 1: 211 - 2: 11 - } - 23 { - 6: 15 - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_15.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\345\270\203\346\222\251\345\246\271" - 2: 6 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 3: 48 - 4: 150 - } - } - 2: "\345\270\203\346\222\251\345\246\271" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAfEeOhUuM50vGxbmUJO1H7o4zi7n02Ta7OFQz9Ici5dc" - } - } - } - } - } - 2 { - 1: 4633269507 - 3: "\346\235\216\345\244\247\346\224\266\346\224\266\346\224\266" - 4: 1 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/216c002be06993e69986" - 2: "216c002be06993e69986" - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_15.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 6: 7 - 8 { - 1: "\345\270\203\346\222\251\345\246\271" - 2: "#FFFFFF" - 3: 6 - } - } - 22 { - 1: 211 - 2: 11 - } - 23 { - 6: 15 - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_15.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_15.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\345\270\203\346\222\251\345\246\271" - 2: 6 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 3: 48 - 4: 150 - } - } - 2: "\345\270\203\346\222\251\345\246\271" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAfEeOhUuM50vGxbmUJO1H7o4zi7n02Ta7OFQz9Ici5dc" - } - 3: 3959 - 10: 1 - 14: "50\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776120075566074635 - 3: 6776099199801887501 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 3816292311 - 3: "\351\253\230\345\206\267\345\245\263\347\216\21327864546" - 4: 2 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3795/3033762272~120x256.image" - } - 22 { - 1: 28 - 2: 5 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAbmkVOcqBnNaFHzOZ9d0DJdbxsswGmapGMa3GEU4vdFA" - } - } - } - } - } - 2 { - 1: 3816292311 - 3: "\351\253\230\345\206\267\345\245\263\347\216\21327864546" - 4: 2 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3795/3033762272~120x256.image" - } - 22 { - 1: 28 - 2: 5 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAbmkVOcqBnNaFHzOZ9d0DJdbxsswGmapGMa3GEU4vdFA" - } - 3: 3959 - 10: 1 - 14: "50\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastGiftMessage" - 2 { - 1 { - 1: "WebcastGiftMessage" - 2: 6776119321150196492 - 3: 6776099199801887501 - 4: 1577688400336 - 6: 1 - 8 { - 1: "webcast_xigua_gift_message" - 2: "{0:user} \351\200\201\347\273\231\344\270\273\346\222\255{2:string}\344\270\252{1:gift}" - 3 { - 1: "#ffff9d5c" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#ffffd600" - 4: 400 - } - 21 { - 1 { - 1: 108307861429 - 3: "\345\276\201\346\234\215\344\271\213\345\210\2033" - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 10 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 11 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 15: 1 - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 12 - } - } - 22 { - 1: 44 - 2: 2 - } - 23 { - 1: 91 - 6: 5 - 10: 51 - 11: 99 - 13: "\350\267\235\347\246\2736\347\272\247\350\277\230\345\267\2569\351\222\273\347\237\263" - 19 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 21: 9 - } - 24 { - 1 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 12 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - 32: "" - 34: 91 - 37: 1 - 38: "0" - 44 { - 2: 3 - } - 46: "MS4wLjABAAAA3yzYmDHkqQDPKUALHwC9_n1fhIVUR0_uZSCIxHnARL8" - 48 { - 2: 1651802804437003 - 3: 1651802804437003 - } - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 5: 1577808000 - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - 1028: "108307861429" - } - 2: 1 - } - } - 4 { - 1: 12 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 22 { - 1: 10001 - 2 { - 1: "live_gift_10001" - 2: "\350\245\277\347\223\234" - } - } - } - 4 { - 1: 1 - 2 { - 1: "#ffff9d5c" - 4: 400 - } - 11: "13" - } - } - } - 2: 10001 - 3: 49589085 - 4: 1 - 5: 13 - 6: 13 - 7 { - 1: 108307861429 - 3: "\345\276\201\346\234\215\344\271\213\345\210\2033" - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 10 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 11 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe540000c8b96ba57ccc~120x256.image" - } - 15: 1 - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 12 - } - } - 22 { - 1: 44 - 2: 2 - } - 23 { - 1: 91 - 6: 5 - 10: 51 - 11: 99 - 13: "\350\267\235\347\246\2736\347\272\247\350\277\230\345\267\2569\351\222\273\347\237\263" - 19 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_5.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_5.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&gravity=bottom&height=400&radius=8&__live_platform__=webcast&type=popup" - } - 21: 9 - } - 24 { - 1 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 12 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_12.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_12.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - 32: "" - 34: 91 - 37: 1 - 38: "0" - 44 { - 2: 3 - } - 46: "MS4wLjABAAAA3yzYmDHkqQDPKUALHwC9_n1fhIVUR0_uZSCIxHnARL8" - 48 { - 2: 1651802804437003 - 3: 1651802804437003 - } - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 5: 1577808000 - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - 1028: "108307861429" - } - 11: 1577688394 - 12: 38199387 - } -} -2: "6776119321150196492_1577688400488_1_1" -3: 1000 -4: 1577688400488 -5: "fetch_time:1577688400488|start_time:1577688331121|fetch_id:6776119333825481483|flag:0|seq:130" diff --git a/Demo/result4.json b/Demo/result4.json deleted file mode 100644 index db42e96..0000000 --- a/Demo/result4.json +++ /dev/null @@ -1,2576 +0,0 @@ -{ - "data": [ - { - "common": { - "method": "WebcastGiftMessage", - "msg_id": 6776419903051713293, - "room_id": 6776400016475949838, - "create_time": 1577758349888, - "is_show_msg": true, - "display_text": { - "key": "webcast_xigua_gift_message", - "default_pattern": "{0:user} 送给主播{2:string}个{1:gift}", - "default_format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "pieces": [ - { - "type": 11, - "format": { - "color": "#ffffd600", - "weight": 400 - }, - "user_value": { - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom\u0026height=400" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "with_colon": true - } - }, - { - "type": 12, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "gift_value": { - "gift_id": 10001, - "name_ref": { - "key": "live_gift_10001", - "default_pattern": "西瓜" - } - } - }, - { - "type": 1, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "string_value": "28" - } - ] - } - }, - "gift_id": 10001, - "fan_ticket_count": 1437262, - "group_count": 1, - "repeat_count": 28, - "combo_count": 28, - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom\u0026height=400" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "group_id": 1577758338, - "income_taskgifts": 499410 - }, - { - "common": { - "method": "WebcastGiftMessage", - "msg_id": 6776419516128004875, - "room_id": 6776400016475949838, - "create_time": 1577758350315, - "is_show_msg": true, - "display_text": { - "key": "webcast_xigua_gift_message", - "default_pattern": "{0:user} 送给主播{2:string}个{1:gift}", - "default_format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "pieces": [ - { - "type": 11, - "format": { - "color": "#ffffd600", - "weight": 400 - }, - "user_value": { - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "with_colon": true - } - }, - { - "type": 12, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "gift_value": { - "gift_id": 10001, - "name_ref": { - "key": "live_gift_10001", - "default_pattern": "西瓜" - } - } - }, - { - "type": 1, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "string_value": "29" - } - ] - } - }, - "gift_id": 10001, - "fan_ticket_count": 1437262, - "group_count": 1, - "repeat_count": 29, - "combo_count": 29, - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "group_id": 1577758338, - "income_taskgifts": 499411 - }, - { - "common": { - "method": "WebcastGiftMessage", - "msg_id": 6776419750828395272, - "room_id": 6776400016475949838, - "create_time": 1577758350668, - "is_show_msg": true, - "display_text": { - "key": "webcast_xigua_gift_message", - "default_pattern": "{0:user} 送给主播{2:string}个{1:gift}", - "default_format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "pieces": [ - { - "type": 11, - "format": { - "color": "#ffffd600", - "weight": 400 - }, - "user_value": { - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026height=400\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "with_colon": true - } - }, - { - "type": 12, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "gift_value": { - "gift_id": 10001, - "name_ref": { - "key": "live_gift_10001", - "default_pattern": "西瓜" - } - } - }, - { - "type": 1, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "string_value": "30" - } - ] - } - }, - "gift_id": 10001, - "fan_ticket_count": 1437262, - "group_count": 1, - "repeat_count": 30, - "combo_count": 30, - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026height=400\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "group_id": 1577758338, - "income_taskgifts": 499409 - }, - { - "common": { - "method": "WebcastGiftMessage", - "msg_id": 6776419738929564419, - "room_id": 6776400016475949838, - "create_time": 1577758351063, - "is_show_msg": true, - "display_text": { - "key": "webcast_xigua_gift_message", - "default_pattern": "{0:user} 送给主播{2:string}个{1:gift}", - "default_format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "pieces": [ - { - "type": 11, - "format": { - "color": "#ffffd600", - "weight": 400 - }, - "user_value": { - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom\u0026height=400" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "with_colon": true - } - }, - { - "type": 12, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "gift_value": { - "gift_id": 10001, - "name_ref": { - "key": "live_gift_10001", - "default_pattern": "西瓜" - } - } - }, - { - "type": 1, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "string_value": "31" - } - ] - } - }, - "gift_id": 10001, - "fan_ticket_count": 1437262, - "group_count": 1, - "repeat_count": 31, - "combo_count": 31, - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom\u0026height=400" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "group_id": 1577758338, - "income_taskgifts": 499413 - }, - { - "common": { - "method": "WebcastGiftMessage", - "msg_id": 6776419903051844365, - "room_id": 6776400016475949838, - "create_time": 1577758351531, - "is_show_msg": true, - "display_text": { - "key": "webcast_xigua_gift_message", - "default_pattern": "{0:user} 送给主播{2:string}个{1:gift}", - "default_format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "pieces": [ - { - "type": 11, - "format": { - "color": "#ffffd600", - "weight": 400 - }, - "user_value": { - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026height=400\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "with_colon": true - } - }, - { - "type": 12, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "gift_value": { - "gift_id": 10001, - "name_ref": { - "key": "live_gift_10001", - "default_pattern": "西瓜" - } - } - }, - { - "type": 1, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "string_value": "32" - } - ] - } - }, - "gift_id": 10001, - "fan_ticket_count": 1437262, - "group_count": 1, - "repeat_count": 32, - "combo_count": 32, - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026height=400\u0026radius=8\u0026__live_platform__=webcast\u0026type=popup\u0026gravity=bottom" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "group_id": 1577758338, - "income_taskgifts": 499415 - }, - { - "common": { - "method": "WebcastGiftMessage", - "msg_id": 6776420021502528267, - "room_id": 6776400016475949838, - "create_time": 1577758352033, - "is_show_msg": true, - "display_text": { - "key": "webcast_xigua_gift_message", - "default_pattern": "{0:user} 送给主播{2:string}个{1:gift}", - "default_format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "pieces": [ - { - "type": 11, - "format": { - "color": "#ffffd600", - "weight": 400 - }, - "user_value": { - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "with_colon": true - } - }, - { - "type": 12, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "gift_value": { - "gift_id": 10001, - "name_ref": { - "key": "live_gift_10001", - "default_pattern": "西瓜" - } - } - }, - { - "type": 1, - "format": { - "color": "#ffff9d5c", - "weight": 400 - }, - "string_value": "33" - } - ] - } - }, - "gift_id": 10001, - "fan_ticket_count": 1437262, - "group_count": 1, - "repeat_count": 33, - "combo_count": 33, - "user": { - "id": 5418509573, - "nickname": "马家班丶青藤", - "gender": 1, - "signature": "若能避开猛烈的狂喜,自然不会有悲痛来袭。", - "avatar_thumb": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_medium": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "avatar_large": { - "url_list": [ - "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - ] - }, - "status": 1, - "badge_image_list": [ - { - "url_list": [ - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - ], - "uri": "webcast/xigua_admin_badge_v2.png", - "height": 16, - "width": 28, - "image_type": 3 - }, - { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "image_type": 6, - "content": { - "name": "伯爵", - "font_color": "#FFFFFF", - "level": 28 - } - }, - { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "image_type": 7, - "content": { - "name": "马钱", - "font_color": "#FFFFFF", - "level": 20 - } - } - ], - "follow_info": { - "following_count": 193, - "follower_count": 70 - }, - "pay_grade": { - "total_diamond_count": 164540, - "level": 28, - "this_grade_min_diamond": 100000, - "this_grade_max_diamond": 179999, - "grade_describe": "距离29级还差15460钻石", - "new_im_icon_with_level": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_28.png~tplv-obj.png" - ], - "uri": "webcast/xigua_paygrade_level_28.png", - "height": 16, - "width": 30, - "image_type": 1, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html\u0026type=popup\u0026gravity=bottom\u0026height=400\u0026radius=8\u0026__live_platform__=webcast" - }, - "upgrade_need_consume": 15460 - }, - "fans_club": { - "data": { - "club_name": "马钱", - "level": 20, - "user_fans_club_status": 1, - "badge": { - "icons": { - "2": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_20.png~tplv-obj.image" - ], - "uri": "webcast/xigua_fansclub_medal_20.png", - "height": 48, - "width": 150 - } - }, - "title": "马钱" - } - } - }, - "user_attr": { - "is_admin": true - }, - "pay_score": 164540, - "link_mic_stats": 1, - "display_id": "0", - "author_stats": {}, - "sec_uid": "MS4wLjABAAAAX1RDCyl5T1gJHj4sUHKypWcU80u0NvbGmXDB8Pc1kdk", - "xigua_info": { - "author_desc": "若能避开猛烈的狂喜,自然不会有悲痛来袭。" - }, - "noble_info": { - "noble_background": { - "url_list": [ - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_background_v1_2.png", - "height": 1008, - "width": 1125 - }, - "noble_level": 2, - "noble_icon": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_2.png", - "height": 105, - "width": 111, - "open_web_url": "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1\u0026type=fullscreen\u0026hide_nav_bar=1\u0026status_bar_color=white\u0026status_bar_bg_color=%2300000000\u0026noble_intercept=1\u0026__live_platform__=webcast" - }, - "noble_name": "伯爵", - "expire_time": 1580486400, - "noble_big_icon": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image", - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_big_icon_2.png", - "height": 366, - "width": 615 - }, - "noble_icon_with_back": { - "url_list": [ - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image", - "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_2_new.png~tplv-obj.image" - ], - "uri": "webcast/noble_icon_with_back_2_new.png", - "height": 60, - "width": 108 - }, - "noble_boarder": { - "url_list": [ - "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image", - "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_2.png~tplv-obj.image" - ], - "uri": "webcast/noble_boarder_v1_2.png", - "height": 64, - "width": 64 - }, - "noble_background_color": [ - "#57239e", - "#8537dd", - "#dea0ff" - ] - }, - "id_str": "5418509573" - }, - "group_id": 1577758338, - "income_taskgifts": 499416 - }, - {}, - { - "content": "\u5c0f\u65f6\u699c\u7b2c604\u540d", - "message_type": 1, - "common": { - "play_time": 0, - "style": 2, - "create_time": 1577758380536, - "room_id": 6776400016475949838, - "monitor": 0, - "is_show_msg": true, - "msg_id": 6776420644612868875, - "describe": null, - "method": "SunDailyRankMessage" - }, - "rank": 604 - }, - { - "content": "\u5c0f\u65f6\u699c\u7b2c617\u540d", - "message_type": 1, - "common": { - "play_time": 0, - "style": 2, - "create_time": 1577758426211, - "room_id": 6776400016475949838, - "monitor": 0, - "is_show_msg": true, - "msg_id": 6776420841136638733, - "describe": null, - "method": "SunDailyRankMessage" - }, - "rank": 617 - } - ], - "extra": { - "cursor": "6776420903741475598_1577758448588_1_1", - "fetch_interval": 1000, - "now": 1577758448588 - }, - "internal_ext": "fetch_time:1577758448588|start_time:1577758030551|fetch_id:6776419296664423182|flag:0|seq:2", - "status_code": 0 -} \ No newline at end of file diff --git a/Demo/result4.txt b/Demo/result4.txt deleted file mode 100644 index d965200..0000000 --- a/Demo/result4.txt +++ /dev/null @@ -1,6007 +0,0 @@ -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426436170566412 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 5840500858 - 3: "A\345\236\253\345\234\210\345\255\224\347\216\257\347\216\213\346\266\233" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/216e001052d7e6fec685" - 2: "216e001052d7e6fec685" - } - 22 { - 1: 224 - 2: 37 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_e0QPRMtVaPhLRuIPpHmK7w8BZ1-5gijblpJnqrbDcs" - } - } - } - } - } - 2 { - 1: 5840500858 - 3: "A\345\236\253\345\234\210\345\255\224\347\216\257\347\216\213\346\266\233" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/216e001052d7e6fec685" - 2: "216e001052d7e6fec685" - } - 22 { - 1: 224 - 2: 37 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_e0QPRMtVaPhLRuIPpHmK7w8BZ1-5gijblpJnqrbDcs" - } - 3: 120 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426444672420621 - 3: 6776400016475949838 - 4: 1577759731997 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 67953057211 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3f000005a90d075c2025" - 2: "3f000005a90d075c2025" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 66598648306 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3e800012b73564538445" - 2: "3e800012b73564538445" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 66526533963 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/382c0018c79a55e7eb50" - 2: "382c0018c79a55e7eb50" - } - 23: "" - } - 3: 20 - } - 3: 121 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13439 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426449344776972 - 3: 6776400016475949838 - 4: 1577759732755 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 67953057211 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3f000005a90d075c2025" - 2: "3f000005a90d075c2025" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 66598648306 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3e800012b73564538445" - 2: "3e800012b73564538445" - } - 23: "" - } - 3: 20 - } - 3: 121 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13368 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426445079169799 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 2176678922291876 - 3: "\347\224\250\346\210\2671528052886070" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~120x256.image" - } - 22 { - 1: 4 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAZSEfCXAXBnI6Uk5eIhEUbiSzf44dCZUHT2XSKB_dZZsawEdGin0Vk3qW_c-nTOKQ" - } - } - } - } - } - 2 { - 1: 2176678922291876 - 3: "\347\224\250\346\210\2671528052886070" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3796/2975850990~120x256.image" - } - 22 { - 1: 4 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAZSEfCXAXBnI6Uk5eIhEUbiSzf44dCZUHT2XSKB_dZZsawEdGin0Vk3qW_c-nTOKQ" - } - 3: 121 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426447847607043 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 81300306546 - 3: "\344\274\232\345\201\232\344\277\257\345\215\247\346\222\221" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 21 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_12.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_12.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p16.pstatp.com/img/webcast/xigua_fansclub_medal_11.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_11.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 11 - } - } - 22 { - 1: 113 - 2: 46 - } - 23 { - 6: 12 - 19 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_12.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_12.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 11 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p16.pstatp.com/img/webcast/xigua_fansclub_medal_11.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_11.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_2khRskpGWnpAXDwu2YuDtYbwMLmdeqirHuqiVuDv5I" - } - } - } - } - } - 2 { - 1: 81300306546 - 3: "\344\274\232\345\201\232\344\277\257\345\215\247\346\222\221" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 21 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_12.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_12.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 21 { - 1: "http://p16.pstatp.com/img/webcast/xigua_fansclub_medal_11.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_11.png" - 6: 7 - 8 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: "#FFFFFF" - 3: 11 - } - } - 22 { - 1: 113 - 2: 46 - } - 23 { - 6: 12 - 19 { - 1: "http://p16.pstatp.com/img/webcast/xigua_paygrade_level_12.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_12.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\346\211\254\345\256\266\345\206\233" - 2: 11 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p16.pstatp.com/img/webcast/xigua_fansclub_medal_11.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_11.png" - 3: 48 - 4: 150 - } - } - 2: "\346\211\254\345\256\266\345\206\233" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_2khRskpGWnpAXDwu2YuDtYbwMLmdeqirHuqiVuDv5I" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p16.pstatp.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: 121 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426445142021632 - 3: 6776400016475949838 - 4: 1577759735542 - 6: 1 - } - 2 { - 1: 103899090823 - 3: "\347\213\227\347\213\227\346\203\212\350\256\266" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56f000975dc2072a563~120x256.image" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - 21 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 6: 7 - 8 { - 1: "\347\232\256\347\232\256\346\242\246" - 2: "#FFFFFF" - 3: 6 - } - } - 22 { - 1: 87 - 2: 9 - } - 23 { - 6: 6 - 19 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&radius=8&__live_platform__=webcast&type=popup&gravity=bottom&height=400" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\347\232\256\347\232\256\346\242\246" - 2: 6 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 3: 48 - 4: 150 - } - } - 2: "\347\232\256\347\232\256\346\242\246" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_wv1EKr_JZMCFaGy6SvMEd0c5azVkdxycTyr9w0ZUfY" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: "\347\216\260\345\234\250\346\234\211\344\272\272\345\226\234\346\254\242\346\257\224\350\276\203\350\213\237" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426468597222157 - 3: 6776400016475949838 - 4: 1577759736948 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 68029426146 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3830000f5f96b0ea8de8" - 2: "3830000f5f96b0ea8de8" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 67953057211 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/3f000005a90d075c2025" - 2: "3f000005a90d075c2025" - } - 23: "" - } - 3: 20 - } - 3: 121 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13368 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426466705001224 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 68029426146 - 3: "\346\233\276\347\273\217210558703" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/3830000f5f96b0ea8de8" - 2: "3830000f5f96b0ea8de8" - } - 22 { - 1: 42 - 2: 4 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAQ45cMaNq1zuSfUuWOSCBeZOFFJqQ6A60FkZk3EJxxdk" - } - } - } - } - } - 2 { - 1: 68029426146 - 3: "\346\233\276\347\273\217210558703" - 4: 1 - 9 { - 1: "http://p3.pstatp.com/thumb/3830000f5f96b0ea8de8" - 2: "3830000f5f96b0ea8de8" - } - 22 { - 1: 42 - 2: 4 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAQ45cMaNq1zuSfUuWOSCBeZOFFJqQ6A60FkZk3EJxxdk" - } - 3: 123 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426478092684045 - 3: 6776400016475949838 - 4: 1577759740963 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 86465475584 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 68029426146 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3830000f5f96b0ea8de8" - 2: "3830000f5f96b0ea8de8" - } - 23: "" - } - 3: 20 - } - 3: 123 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13419 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426481427155719 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 86465475584 - 3: "\344\270\234\350\216\236\350\200\201\345\223\245" - 4: 2 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 22 { - 1: 71 - 2: 99 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAnYN-SKS_mrowP9C5r5JNfVcQtWEwKjvoRu8YqVRRe6c" - } - } - } - } - } - 2 { - 1: 86465475584 - 3: "\344\270\234\350\216\236\350\200\201\345\223\245" - 4: 2 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 22 { - 1: 71 - 2: 99 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAnYN-SKS_mrowP9C5r5JNfVcQtWEwKjvoRu8YqVRRe6c" - } - 3: 125 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426485365508872 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 80987312640 - 3: "\346\210\221\346\230\257\346\210\22194755" - 4: 1 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 22 { - 1: 27 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAqAIb1Hh-WcRfJX1ZhhuHY2Fdg6NyNkNE01NH74sOVes" - } - } - } - } - } - 2 { - 1: 80987312640 - 3: "\346\210\221\346\230\257\346\210\22194755" - 4: 1 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 22 { - 1: 27 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAqAIb1Hh-WcRfJX1ZhhuHY2Fdg6NyNkNE01NH74sOVes" - } - 3: 125 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426523378436868 - 3: 6776400016475949838 - 4: 1577759749584 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 86465475584 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 20 - } - 3: 126 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13470 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426519100410638 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 92327587726 - 3: "\347\201\277\347\203\202\345\244\251\347\251\272623" - 4: 1 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 22 { - 1: 2 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAUVMvNW5iVwwqZ8YODI3NOOpbut1ZBAvlr0H5JDW-wL0" - } - } - } - } - } - 2 { - 1: 92327587726 - 3: "\347\201\277\347\203\202\345\244\251\347\251\272623" - 4: 1 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 22 { - 1: 2 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAUVMvNW5iVwwqZ8YODI3NOOpbut1ZBAvlr0H5JDW-wL0" - } - 3: 126 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426548837944075 - 3: 6776400016475949838 - 4: 1577759755552 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 86465475584 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 20 - } - 3: 127 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13514 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426548749961998 - 3: 6776400016475949838 - 4: 1577759756331 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 86465475584 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 20 - } - 3: 128 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13514 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426546283416331 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 1085929437540568 - 3: "\347\224\250\346\210\2673587446933375" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3795/3047680722~120x256.image" - } - 22 { - 1: 1 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAoqIacaywSKFWgVplQSoMGBTbKpM3Voh9IMhifWlhyQuyadZDIpCoTq13OyDA7XiD" - } - } - } - } - } - 2 { - 1: 1085929437540568 - 3: "\347\224\250\346\210\2673587446933375" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3795/3047680722~120x256.image" - } - 22 { - 1: 1 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAoqIacaywSKFWgVplQSoMGBTbKpM3Voh9IMhifWlhyQuyadZDIpCoTq13OyDA7XiD" - } - 3: 127 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426549433862919 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 54611899182 - 3: "loo162040673" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/1bf3001c983c591c6637" - 2: "1bf3001c983c591c6637" - } - 22 { - 1: 73 - 2: 14 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAfgyBwFnCSDd4jdIB5x6-dI81P1IvOpF-9ePD0ahgU_Q" - } - } - } - } - } - 2 { - 1: 54611899182 - 3: "loo162040673" - 4: 1 - 9 { - 1: "http://p1.pstatp.com/thumb/1bf3001c983c591c6637" - 2: "1bf3001c983c591c6637" - } - 22 { - 1: 73 - 2: 14 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAfgyBwFnCSDd4jdIB5x6-dI81P1IvOpF-9ePD0ahgU_Q" - } - 3: 128 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426509080021772 - 3: 6776400016475949838 - 4: 1577759758476 - 6: 1 - } - 2 { - 1: 52555037068 - 3: "\347\276\216\345\245\275\347\232\204\346\227\266\345\205\211\351\200\211\344\270\255\346\210\221" - 4: 2 - 9 { - 1: "http://p1.pstatp.com/thumb/2c620009d1139825c703" - 2: "2c620009d1139825c703" - } - 22 { - 1: 21 - 2: 15 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA3LUe0G8_pnP-p3s_ajPV9z-DjFhGsZi6PycA3qQdKGw" - } - 3: "\344\270\273\346\222\255\345\225\245\346\227\266\345\200\231\351\203\275\346\211\276\344\270\215\345\210\260\345\245\263\346\234\213\345\217\213\347\232\204" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426589824502541 - 3: 6776400016475949838 - 4: 1577759765169 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 86465475584 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 20 - } - 3: 129 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13622 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426587752975108 - 3: 6776400016475949838 - 4: 1577759767229 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 86465475584 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff7b0000a859f2e00250~120x256.image" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 20 - } - 3: 128 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13622 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426605821823755 - 3: 6776400016475949838 - 4: 1577759769763 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 128 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13622 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426613098711812 - 3: 6776400016475949838 - 4: 1577759770879 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 128 - 4: "1.2\344\270\207\344\272\272\346\260\224" - 6: 12981 - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426564218342155 - 3: 6776400016475949838 - 4: 1577759771839 - 6: 1 - } - 2 { - 1: 52555037068 - 3: "\347\276\216\345\245\275\347\232\204\346\227\266\345\205\211\351\200\211\344\270\255\346\210\221" - 4: 2 - 9 { - 1: "http://p1.pstatp.com/thumb/2c620009d1139825c703" - 2: "2c620009d1139825c703" - } - 22 { - 1: 21 - 2: 15 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA3LUe0G8_pnP-p3s_ajPV9z-DjFhGsZi6PycA3qQdKGw" - } - 3: "\344\270\215\344\274\232\347\226\274\345\245\263\347\224\237" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426636457069315 - 3: 6776400016475949838 - 4: 1577759776391 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 127 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13081 - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426619201607183 - 3: 6776400016475949838 - 4: 1577759777654 - 6: 1 - } - 2 { - 1: 58557211957 - 3: "\350\245\277\345\214\227\346\243\256\345\223\245" - 4: 1 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/fe8f00013c8d54bfb532~120x256.image" - } - 22 { - 1: 51 - 2: 31 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAACtRn9vvx0BraVl95_xcz_MqCfeiclEv7qBRUlUA9Ydk" - } - 3: "\347\224\267\344\272\272\346\230\257\351\223\201\346\211\223\347\232\204\360\237\230\203" - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426604710204943 - 3: 6776400016475949838 - 4: 1577759781629 - 6: 1 - 8 { - 1: "webcast_chat_display_text" - 2: "{0:user}{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#9E9E9E" - 4: 400 - } - 21 { - 1 { - 1: 110656496114 - 3: "\351\251\254\345\256\266\347\217\255\345\235\221\351\251\254\351\222\261" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 21 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 2: "webcast/xigua_admin_badge_v2.png" - 3: 16 - 4: 28 - 6: 3 - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 2: "webcast/noble_icon_with_back_1_new.png" - 6: 6 - 8 { - 1: "\351\252\221\345\243\253" - 2: "#FFFFFF" - 3: 11 - } - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 6: 7 - 8 { - 1: "\351\251\254\351\222\261" - 2: "#FFFFFF" - 3: 9 - } - } - 22 { - 1: 27 - 2: 2 - } - 23 { - 6: 11 - 19 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\351\251\254\351\222\261" - 2: 9 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 3: 48 - 4: 150 - } - } - 2: "\351\251\254\351\222\261" - } - } - } - 32 { - 2: 1 - } - 38: "0" - 46: "MS4wLjABAAAAquL0THmD0E7Z1b6JZW6GfxxdMS-rHxpLRWBdyl_P_3I" - 50 { - 1 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_1.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_1.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_1.png~tplv-obj.image" - 2: "webcast/noble_background_v1_1.png" - 3: 1008 - 4: 1125 - } - 2: 1 - 3 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_1.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_1.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_1.png~tplv-obj.image" - 2: "webcast/noble_icon_1.png" - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000" - } - 4: "\351\252\221\345\243\253" - 6 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_1.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_1.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_1.png~tplv-obj.image" - 2: "webcast/noble_big_icon_1.png" - 3: 366 - 4: 615 - } - 7 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 2: "webcast/noble_icon_with_back_1_new.png" - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_1.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_1.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_1.png~tplv-obj.image" - 2: "webcast/noble_boarder_v1_1.png" - 3: 64 - 4: 64 - } - 9: "#064298" - 9: "#1d63c6" - 9: "#82beff" - } - } - 2: 1 - } - } - 4 { - 1: 1 - 11: "@\347\213\227\347\213\227\346\203\212\350\256\266 \350\277\231\344\270\252\346\270\270\346\210\217\346\256\265\344\275\215\346\262\241\345\225\245\347\224\250\357\274\214\350\277\230\346\230\257\345\216\273\351\222\242\346\236\252\347\273\203\346\212\200\346\234\257" - } - } - } - 2 { - 1: 110656496114 - 3: "\351\251\254\345\256\266\347\217\255\345\235\221\351\251\254\351\222\261" - 4: 1 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 21 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_admin_badge_v2.png~tplv-obj.image" - 2: "webcast/xigua_admin_badge_v2.png" - 3: 16 - 4: 28 - 6: 3 - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 2: "webcast/noble_icon_with_back_1_new.png" - 6: 6 - 8 { - 1: "\351\252\221\345\243\253" - 2: "#FFFFFF" - 3: 11 - } - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 6: 7 - 8 { - 1: "\351\251\254\351\222\261" - 2: "#FFFFFF" - 3: 9 - } - } - 22 { - 1: 27 - 2: 2 - } - 23 { - 6: 11 - 19 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_11.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_11.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 1: "\351\251\254\351\222\261" - 2: 9 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_9.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_9.png" - 3: 48 - 4: 150 - } - } - 2: "\351\251\254\351\222\261" - } - } - } - 32 { - 2: 1 - } - 38: "0" - 46: "MS4wLjABAAAAquL0THmD0E7Z1b6JZW6GfxxdMS-rHxpLRWBdyl_P_3I" - 50 { - 1 { - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_1.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_1.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_background_v1_1.png~tplv-obj.image" - 2: "webcast/noble_background_v1_1.png" - 3: 1008 - 4: 1125 - } - 2: 1 - 3 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_1.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_1.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_1.png~tplv-obj.image" - 2: "webcast/noble_icon_1.png" - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000" - } - 4: "\351\252\221\345\243\253" - 6 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_1.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_1.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_big_icon_1.png~tplv-obj.image" - 2: "webcast/noble_big_icon_1.png" - 3: 366 - 4: 615 - } - 7 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_icon_with_back_1_new.png~tplv-obj.image" - 2: "webcast/noble_icon_with_back_1_new.png" - 3: 60 - 4: 108 - } - 8 { - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_1.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_1.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder_v1_1.png~tplv-obj.image" - 2: "webcast/noble_boarder_v1_1.png" - 3: 64 - 4: 64 - } - 9: "#064298" - 9: "#1d63c6" - 9: "#82beff" - } - } - 3: "@\347\213\227\347\213\227\346\203\212\350\256\266 \350\277\231\344\270\252\346\270\270\346\210\217\346\256\265\344\275\215\346\262\241\345\225\245\347\224\250\357\274\214\350\277\230\346\230\257\345\216\273\351\222\242\346\236\252\347\273\203\346\212\200\346\234\257" - 6: "#69A0FF" - 7 { - 5: "#523749" - } - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426667498998539 - 3: 6776400016475949838 - 4: 1577759784199 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 126 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13079 - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426670959102731 - 3: 6776400016475949838 - 4: 1577759786017 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 125 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13079 - } -} -1 { - 1: "WebcastSunDailyRankMessage" - 2 { - 1 { - 1: "SunDailyRankMessage" - 2: 6776426702647167748 - 3: 6776400016475949838 - 4: 1577759791126 - 6: 1 - } - 2: "\345\260\217\346\227\266\346\246\234\347\254\254555\345\220\215" - 5: 1 - 8: "2" - 10: 555 - } -} -1 { - 1: "SunDailyRankMessage" - 2 { - 1 { - 1: "SunDailyRankMessage" - 2: 6776426702647167748 - 3: 6776400016475949838 - 4: 1577759791126 - 6: 1 - } - 2: "\345\260\217\346\227\266\346\246\234\347\254\254555\345\220\215" - 5: 1 - 8: "2" - } -} -1 { - 1: "WebcastSunDailyRankMessage" - 2 { - 1 { - 1: "SunDailyRankMessage" - 2: 6776426709387496200 - 3: 6776400016475949838 - 4: 1577759792463 - 6: 1 - } - 2: "\345\260\217\346\227\266\346\246\234\347\254\254556\345\220\215" - 5: 1 - 8: "2" - 10: 556 - } -} -1 { - 1: "SunDailyRankMessage" - 2 { - 1 { - 1: "SunDailyRankMessage" - 2: 6776426709387496200 - 3: 6776400016475949838 - 4: 1577759792463 - 6: 1 - } - 2: "\345\260\217\346\227\266\346\246\234\347\254\254556\345\220\215" - 5: 1 - 8: "2" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426704966699780 - 3: 6776400016475949838 - 4: 1577759792488 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 125 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13079 - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426644279252491 - 3: 6776400016475949838 - 4: 1577759796102 - 6: 1 - } - 2 { - 1: 111624856062 - 3: "\346\260\264\346\226\251" - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 21 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - 22 { - 1: 112 - 2: 6 - } - 23 { - 6: 6 - 19 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&type=popup&gravity=bottom&height=400&radius=8&__live_platform__=webcast" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA-xVTXGFhf4Nf7Wr2TQvHMeiegNoWQd2TDNp2HsEKO8Y" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000&noble_intercept=1&__live_platform__=webcast" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p1-webcast-ttcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: "\344\270\273\346\222\255\350\202\257\345\256\232\346\230\257\345\215\225\350\272\253" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426719130864387 - 3: 6776400016475949838 - 4: 1577759797003 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 126 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13056 - } -} -1 { - 1: "WebcastSunDailyRankMessage" - 2 { - 1 { - 1: "SunDailyRankMessage" - 2: 6776426736403172107 - 3: 6776400016475949838 - 4: 1577759798760 - 6: 1 - } - 2: "\345\260\217\346\227\266\346\246\234\347\254\254557\345\220\215" - 5: 1 - 8: "2" - 10: 557 - } -} -1 { - 1: "SunDailyRankMessage" - 2 { - 1 { - 1: "SunDailyRankMessage" - 2: 6776426736403172107 - 3: 6776400016475949838 - 4: 1577759798760 - 6: 1 - } - 2: "\345\260\217\346\227\266\346\246\234\347\254\254557\345\220\215" - 5: 1 - 8: "2" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426718841883396 - 3: 6776400016475949838 - 4: 1577759799708 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 126 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13056 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426736293874443 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 50480266887 - 3: "\345\246\202\345\220\214\344\272\221\347\203\237" - 4: 1 - 9 { - 1: "http://q.qlogo.cn/qqapp/100290348/AC77125A6FC3BEDDF71B90FAF7B16B14/100" - } - 22 { - 1: 173 - 2: 13 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAUWBm2ivd3wzGpK5BELUUjOwMRy5qyfw8-_aPQsaiqQY" - } - } - } - } - } - 2 { - 1: 50480266887 - 3: "\345\246\202\345\220\214\344\272\221\347\203\237" - 4: 1 - 9 { - 1: "http://q.qlogo.cn/qqapp/100290348/AC77125A6FC3BEDDF71B90FAF7B16B14/100" - } - 22 { - 1: 173 - 2: 13 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAUWBm2ivd3wzGpK5BELUUjOwMRy5qyfw8-_aPQsaiqQY" - } - 3: 126 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -1 { - 1: "WebcastChatMessage" - 2 { - 1 { - 1: "WebcastChatMessage" - 2: 6776426739837982208 - 3: 6776400016475949838 - 4: 1577759801869 - 6: 1 - } - 2 { - 1: 103899090823 - 3: "\347\213\227\347\213\227\346\203\212\350\256\266" - 4: 1 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/2e56f000975dc2072a563~120x256.image" - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&__live_platform__=webcast&type=popup&gravity=bottom&height=400&radius=8" - } - 21 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 6: 7 - 8 { - 1: "\347\232\256\347\232\256\346\242\246" - 2: "#FFFFFF" - 3: 6 - } - } - 22 { - 1: 87 - 2: 9 - } - 23 { - 6: 6 - 19 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_paygrade_level_6.png~tplv-obj.png" - 2: "webcast/xigua_paygrade_level_6.png" - 3: 16 - 4: 30 - 6: 1 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2FhonorLevel%2Findex.html&__live_platform__=webcast&type=popup&gravity=bottom&height=400&radius=8" - } - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - 2 { - 1: 1 - 2 { - 1: "\347\232\256\347\232\256\346\242\246" - 2: 6 - 3: 1 - 4 { - 1 { - 1: 2 - 2 { - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p1-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/xigua_fansclub_medal_6.png~tplv-obj.image" - 2: "webcast/xigua_fansclub_medal_6.png" - 3: 48 - 4: 150 - } - } - 2: "\347\232\256\347\232\256\346\242\246" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAA_wv1EKr_JZMCFaGy6SvMEd0c5azVkdxycTyr9w0ZUfY" - 50 { - 1 { - 3: 1008 - 4: 1125 - } - 3 { - 3: 105 - 4: 111 - 7: "sslocal://webcast_webview?url=https%3A%2F%2Fwebcast.ixigua.com%2Ffalcon%2Fwebcast_xigua%2Fpage%2Fnoble%2Fnoble_privilege_intro%2Findex.html%3Fforbid_right_back%3D1&noble_intercept=1&__live_platform__=webcast&type=fullscreen&hide_nav_bar=1&status_bar_color=white&status_bar_bg_color=%2300000000" - } - 4: "\346\231\256\351\200\232\347\224\250\346\210\267" - 6 { - 3: 366 - 4: 615 - } - 7 { - 3: 60 - 4: 108 - } - 8 { - 1: "http://p3-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p6-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 1: "http://p9-webcast-xgcdn.byteimg.com/img/webcast/noble_boarder.png~tplv-obj.image" - 2: "webcast/noble_boarder.png" - 3: 64 - 4: 64 - } - } - } - 3: "\346\210\221\347\216\260\345\234\250\351\222\242\346\236\252\344\272\206" - } -} -1 { - 1: "WebcastRoomUserSeqMessage" - 2 { - 1 { - 1: "WebcastRoomUserSeqMessage" - 2: 6776426741420018440 - 3: 6776400016475949838 - 4: 1577759803417 - } - 2 { - 1: 297 - 2 { - 1: 5418509573 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/daee0012a4a8b6847dcf~120x256.image" - } - 23: "" - } - 3: 1 - } - 2 { - 1: 5 - 2 { - 1: 110656496114 - 9 { - 1: "http://sf6-ttcdn-tos.pstatp.com/img/mosaic-legacy/ff60000056e3ee9f9938~120x256.image" - } - 23: "" - } - 3: 2 - } - 2 { - 2 { - 1: 98594099805 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/3793/3114521287~120x256.image" - } - 23: "" - } - 3: 3 - } - 2 { - 2 { - 1: 98430125573 - 9 { - 1: "http://sf3-ttcdn-tos.pstatp.com/img/mosaic-legacy/241f200003ba78f6215b2~120x256.image" - } - 23: "" - } - 3: 4 - } - 2 { - 2 { - 1: 980364482055752 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3792/5112637127~120x256.image" - } - 23: "" - } - 3: 5 - } - 2 { - 2 { - 1: 98013353322 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6ee90002aefd03a6b7db" - 2: "6ee90002aefd03a6b7db" - } - 23: "" - } - 3: 6 - } - 2 { - 2 { - 1: 96647375407 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/db11000ee271ef53e1fe" - 2: "db11000ee271ef53e1fe" - } - 23: "" - } - 3: 7 - } - 2 { - 2 { - 1: 96390415074 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3797/2889309425~120x256.image" - } - 23: "" - } - 3: 8 - } - 2 { - 2 { - 1: 94018408479 - 9 { - 1: "http://thirdwx.qlogo.cn/mmopen/vi_32/DYAIOgq83eq6kUl78M0nQZqSBrmZ3luecl80IGWiaPlmqK85xrOibfyoG2wPTIWzvBbecKGp95ntdQPUxMTsLbyA/132" - } - 23: "" - } - 3: 9 - } - 2 { - 2 { - 1: 93031012779 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/6588002542a2877ce28a" - 2: "6588002542a2877ce28a" - } - 23: "" - } - 3: 10 - } - 2 { - 2 { - 1: 92545430507 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/65840016b6fdc5fe21f6" - 2: "65840016b6fdc5fe21f6" - } - 23: "" - } - 3: 11 - } - 2 { - 2 { - 1: 92327587726 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/7564000c31a4ad7dc2fb" - 2: "7564000c31a4ad7dc2fb" - } - 23: "" - } - 3: 12 - } - 2 { - 2 { - 1: 91622801370 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3791/5035712059~120x256.image" - } - 23: "" - } - 3: 13 - } - 2 { - 2 { - 1: 84487046961 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/d27e000acc62c581533d" - 2: "d27e000acc62c581533d" - } - 23: "" - } - 3: 14 - } - 2 { - 2 { - 1: 81300306546 - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/tos-cn-i-0022/a23108ae582d42948017162bb1db09ed~120x256.image" - } - 23: "" - } - 3: 15 - } - 2 { - 2 { - 1: 81255421493 - 9 { - 1: "http://p9-xg.bytecdn.cn/thumb/8e1f0013c81e4146240f" - 2: "8e1f0013c81e4146240f" - } - 23: "" - } - 3: 16 - } - 2 { - 2 { - 1: 80987312640 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/5d500036b693cdfa8d0b" - 2: "5d500036b693cdfa8d0b" - } - 23: "" - } - 3: 17 - } - 2 { - 2 { - 1: 76699315777 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/5875000bcd5dab011169" - 2: "5875000bcd5dab011169" - } - 23: "" - } - 3: 18 - } - 2 { - 2 { - 1: 71898898053 - 9 { - 1: "http://p1-xg.bytecdn.cn/thumb/3e7f00186a73322f7987" - 2: "3e7f00186a73322f7987" - } - 23: "" - } - 3: 19 - } - 2 { - 2 { - 1: 6939632065 - 9 { - 1: "http://p3-xg.bytecdn.cn/thumb/97d000d55bf8000670b" - 2: "97d000d55bf8000670b" - } - 23: "" - } - 3: 20 - } - 3: 126 - 4: "1.3\344\270\207\344\272\272\346\260\224" - 6: 13150 - } -} -1 { - 1: "WebcastMemberMessage" - 2 { - 1 { - 1: "WebcastMemberMessage" - 2: 6776426752563481355 - 3: 6776400016475949838 - 6: 1 - 8 { - 1: "live_room_enter_toast" - 2: "{0:user} \346\235\245\344\272\206{1:string}" - 3 { - 1: "#de000000" - 4: 400 - } - 4 { - 1: 11 - 2 { - 1: "#61000000" - 4: 400 - } - 21 { - 1 { - 1: 108330556367 - 3: "\347\224\250\346\210\2678472347906965" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3795/3044413937~120x256.image" - } - 22 { - 1: 3 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAWDvVZfISpMSjkeQnj6iz8xOPHZd1TmWHx7amJ26w2uI" - } - } - } - } - } - 2 { - 1: 108330556367 - 3: "\347\224\250\346\210\2678472347906965" - 9 { - 1: "http://sf1-ttcdn-tos.pstatp.com/img/mosaic-legacy/3795/3044413937~120x256.image" - } - 22 { - 1: 3 - } - 23 { - 19: "" - } - 24 { - 1 { - 4 { - 1 { - 1: 0 - 2: "" - } - } - } - } - 32: "" - 38: "0" - 46: "MS4wLjABAAAAWDvVZfISpMSjkeQnj6iz8xOPHZd1TmWHx7amJ26w2uI" - } - 3: 126 - 10: 1 - 14: "1.3\344\270\207\344\272\272\346\260\224" - } -} -2: "6776426752563481355_1577759807965_1_1" -3: 1000 -4: 1577759807965 -5: "fetch_time:1577759807965|start_time:1577758030551|fetch_id:6776419296664423182|flag:0|seq:2" diff --git a/Model/DataBase.py b/Model/DataBase.py deleted file mode 100644 index de475fd..0000000 --- a/Model/DataBase.py +++ /dev/null @@ -1,8 +0,0 @@ -from flask import Flask -from flask_sqlalchemy import SQLAlchemy - -app = Flask(__name__) -app.config["SQLALCHEMY_DATABASE_URL"] = "sqlite://data.db" -app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True -app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True -db = SQLAlchemy(app) \ No newline at end of file diff --git a/Model/Files.py b/Model/Files.py deleted file mode 100644 index 3b6d595..0000000 --- a/Model/Files.py +++ /dev/null @@ -1,10 +0,0 @@ -from datetime import datetime -from sqlalchemy import func -from .DataBase import db - - -class Files(db.Model): - id = db.Column(db.Integer, primary_key=True, autoincrement=True) - filename = db.Column(db.String(50)) - is_upload = db.Column(db.Integer(1), server_default=0, default=0) - create_time = db.Column(db.TIMESTAMP, server_default=func.now(), default=datetime.now()) diff --git a/api.py b/api.py index 8b6cbfe..a5dfadb 100644 --- a/api.py +++ b/api.py @@ -112,6 +112,7 @@ class XiGuaLiveApi: :return: """ if self.roomLiver is None: + self.isLive = False return False _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": self.roomLiver.ID} _url = USER_INFO_API.format_map(_formatData).format_map(_formatData) From 1590729b5135aa52d7f1581d8b5e275604aaf0b4 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Jan 2020 13:31:36 +0800 Subject: [PATCH 04/70] API --- CursesDownload.py | 70 ------------------------------ CursesMain.py | 107 ---------------------------------------------- api.py | 2 + 3 files changed, 2 insertions(+), 177 deletions(-) delete mode 100644 CursesDownload.py delete mode 100644 CursesMain.py diff --git a/CursesDownload.py b/CursesDownload.py deleted file mode 100644 index ba31106..0000000 --- a/CursesDownload.py +++ /dev/null @@ -1,70 +0,0 @@ -import curses -import Common - - -widths = [ - (126, 1), (159, 0), (687, 1), (710, 0), (711, 1), - (727, 0), (733, 1), (879, 0), (1154, 1), (1161, 0), - (4347, 1), (4447, 2), (7467, 1), (7521, 0), (8369, 1), - (8426, 0), (9000, 1), (9002, 2), (11021, 1), (12350, 2), - (12351, 1), (12438, 2), (12442, 0), (19893, 2), (19967, 1), - (55203, 2), (63743, 1), (64106, 2), (65039, 1), (65059, 0), - (65131, 2), (65279, 1), (65376, 2), (65500, 1), (65510, 2), - (120831, 1), (262141, 2), (1114109, 1), -] - - -def get_width(o): - global widths - if o == 0xe or o == 0xf: - return 0 - for num, wid in widths: - if o <= num: - return wid - return 1 - - -def c_print(handle, y, x, string, style=curses.A_NORMAL): - if type(string) != str: - string = str(string) - for _i in string: - _w = get_width(ord(_i)) - if(_w>1): - handle.addch(y, x+1, " ", style) - handle.addch(y, x, ord(_i), style) - x += _w - - -def render(screen): - _style = curses.A_DIM - if Common.api.isLive: - _style = curses.A_BOLD | curses.A_BLINK | curses.A_ITALIC | curses.A_UNDERLINE - c_print(screen, 1, 3, Common.api.roomLiver, _style) - screen.refresh() - -def main(stdscr): - global screen - screen = stdscr.subwin(23, 79, 0, 0) - screen.timeout(2000) - screen.box() - screen.hline(2, 1, curses.ACS_HLINE, 77) - c_print(screen, 1, 2, " "*45 + " 西瓜录播助手 -- by JerryYan ", curses.A_STANDOUT) - render(screen) - while True: - c = stdscr.getch() - if c == ord("q"): - break - elif c == ord("f"): - render(screen) - - -stdscr = curses.initscr() -curses.noecho() -curses.cbreak() -stdscr.keypad(1) -curses.wrapper(main) -stdscr.keypad(0) -curses.echo() -curses.nocbreak() -curses.endwin() - diff --git a/CursesMain.py b/CursesMain.py deleted file mode 100644 index 4a1f513..0000000 --- a/CursesMain.py +++ /dev/null @@ -1,107 +0,0 @@ -import curses - -from Struct.Chat import Chat -from Struct.Gift import Gift -from Struct.MemberMsg import MemberMsg -from Struct.User import User -from api import XiGuaLiveApi - - -class Api(XiGuaLiveApi): - danmakuList = [] - def onAd(self, i): - pass - def onChat(self, chat: Chat): - self.danmakuList.append(str(chat)) - def onLike(self, user: User): - pass - def onEnter(self, msg: MemberMsg): - pass - def onJoin(self, user: User): - self.danmakuList.append(str(user)) - def onSubscribe(self, user: User): - self.danmakuList.append(str(user)) - def onPresent(self, gift: Gift): - pass - def onPresentEnd(self, gift: Gift): - self.danmakuList.append(str(gift)) - - -api = Api() -widths = [ - (126, 1), (159, 0), (687, 1), (710, 0), (711, 1), - (727, 0), (733, 1), (879, 0), (1154, 1), (1161, 0), - (4347, 1), (4447, 2), (7467, 1), (7521, 0), (8369, 1), - (8426, 0), (9000, 1), (9002, 2), (11021, 1), (12350, 2), - (12351, 1), (12438, 2), (12442, 0), (19893, 2), (19967, 1), - (55203, 2), (63743, 1), (64106, 2), (65039, 1), (65059, 0), - (65131, 2), (65279, 1), (65376, 2), (65500, 1), (65510, 2), - (120831, 1), (262141, 2), (1114109, 1), -] - - -def get_width(o): - global widths - if o == 0xe or o == 0xf: - return 0 - for num, wid in widths: - if o <= num: - return wid - return 1 - - -def c_print(handle, y, x, string, style=curses.A_NORMAL): - if type(string) != str: - string = str(string) - for _i in string: - _w = get_width(ord(_i)) - if(_w>1): - handle.addch(y, x+1, " ", style) - if _i != " " or style!=curses.A_NORMAL: - handle.addch(y, x, ord(_i), style) - else: - handle.addch(y, x, 0, style) - x += _w - - - - -def render(screen): - screen.erase() - screen.box() - screen.hline(2, 1, curses.ACS_HLINE, 77) - c_print(screen, 1, 2, " "*45 + " 西瓜弹幕助手 -- by JerryYan ", curses.A_STANDOUT) - _style = curses.A_DIM - if api.isLive: - _style = curses.A_BOLD | curses.A_BLINK | curses.A_ITALIC - c_print(screen, 1, 3, api.roomLiver, _style) - _y = 3 - api.getDanmaku() - for i in api.danmakuList[-10:]: - c_print(screen, _y, 2, i) - _y += 1 - screen.move(0,0) - screen.refresh() - -def main(stdscr): - global screen - screen = stdscr.subwin(23, 79, 0, 0) - screen.timeout(2000) - render(screen) - while True: - c = screen.getch() - if c == ord("q"): - break - render(screen) - - -stdscr = curses.initscr() -curses.noecho() -curses.cbreak() -stdscr.keypad(1) -curses.wrapper(main) -stdscr.keypad(0) -curses.echo() -curses.nocbreak() -curses.endwin() - diff --git a/api.py b/api.py index a5dfadb..78328c7 100644 --- a/api.py +++ b/api.py @@ -22,6 +22,7 @@ SEARCH_USER_API = ( "https://security.snssdk.com/video/app/search/live/?format=json&search_sug=0&forum=0&m_tab=live&is_native_req=0" "&offset=0&from=live&en_qc=1&pd=xigua_live&ssmix=a{COMMON}&keyword={keyword}") USER_INFO_API = "https://is.snssdk.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" +ROOM_INFO_API = "https://webcast3.ixigua.com/webcast/room/enter/?room_id={roomId}&pack_level=4{COMMON}" COMMON_HEADERS = { "sdk-version": '1', "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9) VideoArticle/8.1.6 cronet/TTNetVersion:b97574c0 2019-09-24", @@ -29,6 +30,7 @@ COMMON_HEADERS = { } + class XiGuaLiveApi: isValidRoom: bool isLive: bool From ea7620bceda8b8bacc1885b3bf4896d9def8c37f Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Jan 2020 13:33:35 +0800 Subject: [PATCH 05/70] =?UTF-8?q?API=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 201 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 114 insertions(+), 87 deletions(-) diff --git a/api.py b/api.py index 78328c7..fa6ba86 100644 --- a/api.py +++ b/api.py @@ -30,12 +30,7 @@ COMMON_HEADERS = { } - class XiGuaLiveApi: - isValidRoom: bool - isLive: bool - roomLiver: User or None - roomID: int def __init__(self, name=None): """ @@ -45,22 +40,27 @@ class XiGuaLiveApi: """ if name is None: name = "永恒de草薙" + self.broadcaster = None + self.isValidUser = False if type(name) == User: - self.roomLiver = name + self.broadcaster = name self.name = name.name + elif str(name).isdigit(): + self.broadcaster = User() + self.isValidUser = True + self.broadcaster.ID = int(name) else: self.name = str(name) self.isLive = False - self.isValidRoom = False self._rawRoomInfo = {} self.roomID = 0 - self.roomLiver = None self.roomPopularity = 0 self._cursor = "0" + self.lottery = None self.s = requests.session() self.s.headers.update(COMMON_HEADERS) - self._updRoomAt = datetime.now() - self.updRoomInfo(True) + self._updRoomAt = datetime.fromtimestamp(0) + self.updRoomInfo() def _updateRoomPopularity(self, _data): """ @@ -71,10 +71,52 @@ class XiGuaLiveApi: if "extra" in _data: if "member_count" in _data["extra"] and _data["extra"]["member_count"] > 0: self.roomPopularity = _data["extra"]["member_count"] - elif "data" in _data: + if "data" in _data: if "popularity" in _data["data"]: self.roomPopularity = _data["data"]["popularity"] + def getJson(self, url, **kwargs): + try: + p = self.s.get(url, **kwargs) + except Exception as e: + print("网络请求失败") + if DEBUG: + print("GET") + print("URL", url) + print("ERR ", e.__str__()) + return None + try: + return p.json() + except Exception as e: + print("解析请求失败") + if DEBUG: + print("GET JSON") + print("URL", url) + print("CNT", p.text) + print("ERR ", e.__str__()) + return None + + def postJson(self, url, data, **kwargs): + try: + p = self.s.post(url, data, **kwargs) + except Exception as e: + print("网络请求失败") + if DEBUG: + print("POST") + print("URL", url) + print("ERR ", e.__str__()) + return None + try: + return p.json() + except Exception as e: + print("解析请求失败") + if DEBUG: + print("GET JSON") + print("URL", url) + print("CNT", p.text) + print("ERR ", e.__str__()) + return None + @staticmethod def apiChangedError(msg: str, *args): """ @@ -87,52 +129,65 @@ class XiGuaLiveApi: if DEBUG: print(*args) - def _checkUsernameIsMatched(self): + def _checkUsernameIsMatched(self, compare=None): """ 验证主播名字是自己想要的那个 Check name matched :return: bool: 是否匹配 """ - if self.name is None or self.roomLiver is None: + return True + if compare is None: + compare = self.broadcaster + if self.name is None or compare is None: return False - return self.name == self.roomLiver.__str__() or self.roomLiver.__str__() in self.name or self.name in self.roomLiver.__str__() + return self.name == compare.__str__() or compare.__str__() in self.name or self.name in compare.__str__() def _forceSearchUser(self): """ 搜索主播名 :return: """ - _results = self.searchUser(self.name) - if len(_results) > 0: - self.isValidRoom = True - self.roomLiver = _results[0] - return self._updateUserOnly() + _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "keyword": self.name} + _url = SEARCH_USER_API.format_map(_formatData).format_map(_formatData) + d = self.getJson(_url) + if d is None: + print("搜索接口请求失败") + return False + self.broadcaster = None + if "data" in d and d["data"] is not None: + for i in d["data"]: + if self.broadcaster is not None: + break + if i["block_type"] != 0: + continue + if "cells" not in i or len(i["cells"]) == 0: + break + for _j in i["cells"]: + _user = User(_j) + if self._checkUsernameIsMatched(_user): + self.isValidUser = True + self.broadcaster = _user + break + return self._updateUserInfo() - def _updateUserOnly(self): + def _updateUserInfo(self): """ 获取用户信息 :return: """ - if self.roomLiver is None: - self.isLive = False + if self.broadcaster is None: return False - _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": self.roomLiver.ID} + _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": self.broadcaster.ID} _url = USER_INFO_API.format_map(_formatData).format_map(_formatData) - try: - p = self.s.get(_url) - except Exception as e: - self.apiChangedError("更新用户信息接口请求失败", e.__str__()) + d = self.getJson(_url) + if d is None: + print("获取用户信息失败") return False - try: - d = p.json() - except Exception as e: - self.apiChangedError("更新房间接口错误", e.__str__()) - return False - self.isValidRoom = d["status"] == 0 + self.isValidUser = d["status"] == 0 if "user_info" not in d and d["user_info"] is None: self.apiChangedError("Api发生改变,请及时联系我", d) return False - self.roomLiver = User(d) + self.broadcaster = User(d) if not self._checkUsernameIsMatched(): self.isLive = False return False @@ -142,62 +197,34 @@ class XiGuaLiveApi: self.roomID = d["user_info"]['live_info']['room_id'] return True + def _getRoomInfo(self, force=False): + if self.roomID == 0: + return False + if not force or (self._updRoomAt + timedelta(minutes=2) > datetime.now()): + return self.isLive + _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "roomId": self.roomID} + _url = ROOM_INFO_API.format_map(_formatData).format_map(_formatData) + d = self.getJson(_url) + if d is None: + print("获取房间信息接口请求失败") + return False + if d["status_code"] != 0: + print("接口提示:【{}】".format(d["data"]["message"])) + return False + self._rawRoomInfo = d["data"] + self.isLive = d["data"]["status"] == 2 + self._updRoomAt = datetime.now() + self._updateRoomPopularity(d) + return self.isLive + def updRoomInfo(self, force=False): """ 更新房间信息 :return: """ - if not force and self._updRoomAt > (datetime.now() - timedelta(minutes=3)): - return self.isLive - self._updRoomAt = datetime.now() - if self.isValidRoom: - return self._updateUserOnly() - else: + if not self.isValidUser: return self._forceSearchUser() - - @staticmethod - def getUserInfoByUserId(userId): - """ - 通过UserId查找用户的房间号 - :param userId: 用户ID - :return: XiGuaLiveApi - """ - _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": userId} - _url = USER_INFO_API.format_map(_formatData).format_map(_formatData) - try: - p = requests.get(_url, headers=COMMON_HEADERS) - except Exception as e: - XiGuaLiveApi.apiChangedError("更新用户信息接口请求失败", e.__str__()) - return None - try: - d = p.json() - except Exception as e: - XiGuaLiveApi.apiChangedError("更新房间接口错误", e.__str__()) - return None - return XiGuaLiveApi(User(d)) - - @staticmethod - def searchUser(keyword): - """ - 通过关键词搜索主播 - :param keyword: 关键词 - :return: array: 搜索结果 - """ - ret = [] - _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "keyword": keyword} - _url = SEARCH_USER_API.format_map(_formatData).format_map(_formatData) - try: - p = requests.get(_url) - d = p.json() - except json.decoder.JSONDecodeError as e: - XiGuaLiveApi.apiChangedError("搜索接口错误", e.__str__()) - return ret - if "data" in d and d["data"] is not None: - for i in d["data"]: - if i["block_type"] != 0: - continue - if "cells" not in i or len(i["cells"]) == 0: - break - for _j in i["cells"]: - ret.append(User(_j)) - return ret + elif not self.isLive: + return self._updateUserInfo() + else: + return self._getRoomInfo(force) From 7200f28ccaaede177ef16b5b76ebf9070cd60529 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Jan 2020 13:38:26 +0800 Subject: [PATCH 06/70] =?UTF-8?q?API=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/Common.py b/Common.py index 99e91a4..286c5a7 100644 --- a/Common.py +++ b/Common.py @@ -314,19 +314,18 @@ class downloader(XiGuaLiveApi): def updRoomInfo(self, force=False): doClean() - super(downloader, self).updRoomInfo(force) - - def _updateUserOnly(self): - global broadcaster, isBroadcasting, updateTime - super(downloader, self)._updateUserOnly() - updateTime = datetime.strftime(datetime.now(), dt_format) - broadcaster = self.roomLiver - isBroadcasting = self.isLive - if self.isLive: - self.updPlayList() - else: - resetDelay() - self.playlist = False + _result = super(downloader, self).updRoomInfo(force) + if _result: + global broadcaster, isBroadcasting, updateTime + updateTime = datetime.strftime(datetime.now(), dt_format) + broadcaster = self.broadcaster + isBroadcasting = self.isLive + if self.isLive: + self.updPlayList() + else: + resetDelay() + self.playlist = False + return _result def updPlayList(self): global streamUrl From c4f2776239af05bee2d485710d9176da2abf50de Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Wed, 1 Jan 2020 13:40:00 +0800 Subject: [PATCH 07/70] =?UTF-8?q?=E5=91=BD=E5=90=8D=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liveDownloader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liveDownloader.py b/liveDownloader.py index d568ce2..cc6afd4 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -110,7 +110,7 @@ def awakeUpload(): def run(): Common.refreshDownloader() - if not Common.api.isValidRoom: + if not Common.api.isValidUser: Common.appendError("[{}]房间未找到".format(Common.config["l_u"])) return while True: From 81fe49daecf81e01fd66d80f3210f834baff67a7 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Jan 2020 13:40:46 +0800 Subject: [PATCH 08/70] =?UTF-8?q?=E5=91=BD=E5=90=8D=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liveDownloader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liveDownloader.py b/liveDownloader.py index cc6afd4..41bb1f7 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -134,7 +134,7 @@ def run(): except Exception as e: Common.appendError(e.__str__()) Common.refreshDownloader() - if not Common.api.roomLiver: + if not Common.api.broadcaster: Common.refreshDownloader() if Common.forceStartEncodeThread: awakeEncode() From c335e4585208f8c0a6033099e9ec4de1aa8f3d93 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Jan 2020 13:41:55 +0800 Subject: [PATCH 09/70] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 286c5a7..93be8e9 100644 --- a/Common.py +++ b/Common.py @@ -317,7 +317,7 @@ class downloader(XiGuaLiveApi): _result = super(downloader, self).updRoomInfo(force) if _result: global broadcaster, isBroadcasting, updateTime - updateTime = datetime.strftime(datetime.now(), dt_format) + updateTime = datetime.strftime(self._updRoomAt, dt_format) broadcaster = self.broadcaster isBroadcasting = self.isLive if self.isLive: From 6d4127c90ba6386d950cac145353c1ae1eb60cbe Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 3 Jan 2020 09:19:45 +0800 Subject: [PATCH 10/70] =?UTF-8?q?=E4=B8=8B=E6=8B=A8=E6=8A=95=E7=A8=BF?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 26 ++++++++++---------------- liveDownloader.py | 6 +----- 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/Common.py b/Common.py index 93be8e9..4ff9260 100644 --- a/Common.py +++ b/Common.py @@ -1,7 +1,6 @@ import os import queue from datetime import datetime, timedelta -from glob import glob import psutil from api import XiGuaLiveApi @@ -37,10 +36,10 @@ config = { "dly": 30, "enc": "ffmpeg -i {f} -c:v copy -c:a copy -f mp4 {t} -y" } -doCleanTime = datetime.now() -loginTime = datetime.now() +doCleanTime = datetime.fromtimestamp(0) +loginTime = datetime.fromtimestamp(0) _clean_flag = None -delay = datetime.now() +delay = datetime.fromtimestamp(0) b = Bilibili() network = [{ @@ -77,11 +76,11 @@ def resetDelay(): def doDelay(): - global delay, isBroadcasting, isEncode, isUpload - if isBroadcasting or isEncode or isUpload: + global delay, isBroadcasting + if isBroadcasting: resetDelay() return False - return datetime.now() > delay + return (datetime.now() - delay).seconds < 120 def updateNetwork(): @@ -299,7 +298,7 @@ def appendError(obj): def loginBilibili(force=False): if config["dlO"] is False or forceNotUpload is False: global loginTime - if not force and getTimeDelta(datetime.now(), loginTime) < 86400 * 5: + if not force and getTimeDelta(datetime.now(), loginTime) < 86400 * 10: return False res = b.login(config["b_u"], config["b_p"]) loginTime = datetime.now() @@ -364,14 +363,14 @@ def uploadVideo(name): def publishVideo(date): - global isUpload if forceNotUpload is False: b.finishUpload(config["t_t"].format(date), 17, config["tag"], config["des"], source=config["src"], no_reprint=0) b.clear() + global delay + delay = datetime.fromtimestamp(0) else: - appendUploadStatus("设置了不上传,所以[{}]的录播不会上传了".format(date)) - isUpload = False + appendUploadStatus("设置了不上传,所以[{}]的录播不会投了".format(date)) def encodeVideo(name): @@ -384,8 +383,6 @@ def encodeVideo(name): if os.path.getsize(name) < 8 * 1024 * 1024: appendEncodeStatus("Encoded File >{}< is too small, will ignore it".format(name)) return False - global isEncode - isEncode = True appendEncodeStatus("Encoding >{}< Start".format(name)) _new_name = os.path.splitext(name)[0] + ".mp4" _code = os.system(config["enc"].format(f=name, t=_new_name)) @@ -394,7 +391,4 @@ def encodeVideo(name): return False Common.modifyLastEncodeStatus("Encode >{}< Finished".format(name)) uploadQueue.put(_new_name) - isEncode = False - -loginBilibili(True) diff --git a/liveDownloader.py b/liveDownloader.py index 41bb1f7..885a1a3 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -1,5 +1,3 @@ -import shutil -import sys import time from datetime import datetime import threading @@ -111,7 +109,7 @@ def awakeUpload(): def run(): Common.refreshDownloader() if not Common.api.isValidUser: - Common.appendError("[{}]房间未找到".format(Common.config["l_u"])) + Common.appendError("[{}]用户未找到".format(Common.api.name)) return while True: if Common.api.isLive and not Common.forceNotBroadcasting: @@ -144,6 +142,4 @@ def run(): Common.forceStartUploadThread = False if Common.doDelay(): Common.uploadQueue.put(True) - Common.isEncode = True - Common.isUpload = True time.sleep(5) From ce152f617e5e93624d93eb912d793739ca0e5777 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 3 Jan 2020 09:30:43 +0800 Subject: [PATCH 11/70] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/Common.py b/Common.py index 4ff9260..d790023 100644 --- a/Common.py +++ b/Common.py @@ -79,8 +79,11 @@ def doDelay(): global delay, isBroadcasting if isBroadcasting: resetDelay() - return False - return (datetime.now() - delay).seconds < 120 + else: + if (datetime.now() - delay).seconds < 120: + delay = datetime.fromtimestamp(0) + return True + return False def updateNetwork(): @@ -167,8 +170,6 @@ if config["dlO"] is True: forceNotEncode = True forceStartEncodeThread = False forceStartUploadThread = False -isEncode = True -isUpload = True uploadQueue = queue.Queue() encodeQueue = queue.Queue() @@ -346,18 +347,15 @@ def refreshDownloader(): def uploadVideo(name): - global isUpload if not os.path.exists(name): Common.appendError("Upload File Not Exist {}".format(name)) return - isUpload = True loginBilibili() doClean() if forceNotUpload is False: b.preUpload(VideoPart(name, os.path.basename(name))) else: appendUploadStatus("设置了不上传,所以[{}]不会上传了".format(name)) - isUpload = False if not Common.forceNotEncode: os.remove(name) @@ -367,8 +365,6 @@ def publishVideo(date): b.finishUpload(config["t_t"].format(date), 17, config["tag"], config["des"], source=config["src"], no_reprint=0) b.clear() - global delay - delay = datetime.fromtimestamp(0) else: appendUploadStatus("设置了不上传,所以[{}]的录播不会投了".format(date)) @@ -391,4 +387,3 @@ def encodeVideo(name): return False Common.modifyLastEncodeStatus("Encode >{}< Finished".format(name)) uploadQueue.put(_new_name) - From 6a482af97cb1a335dc8ae0c55392c0b2aa175296 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 3 Jan 2020 09:33:42 +0800 Subject: [PATCH 12/70] =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Common.py b/Common.py index d790023..ac77190 100644 --- a/Common.py +++ b/Common.py @@ -323,7 +323,6 @@ class downloader(XiGuaLiveApi): if self.isLive: self.updPlayList() else: - resetDelay() self.playlist = False return _result From e29ef65d715c895d0c01c9b4f9a7a5a90ee7801a Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 3 Jan 2020 09:48:55 +0800 Subject: [PATCH 13/70] =?UTF-8?q?=E6=9B=B4=E6=96=B0README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 8b62b4b..a616194 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,3 @@ > - 把录像文件分一定大小保存(B站有限制,但是不知道是多少) > - 少部分错误包容机制 > - 有一个简单的WEB页面,及简单的控制接口 - -### 计划更新 - -### 并没有呢,这段时间太忙了 From b3fb7dca43867b0f2d0906ca2277faa29c9302f9 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 4 Jan 2020 17:22:13 +0800 Subject: [PATCH 14/70] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96,=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=E6=8A=95=E7=A8=BF=E9=80=BB=E8=BE=91=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Common.py b/Common.py index ac77190..72bf40b 100644 --- a/Common.py +++ b/Common.py @@ -76,13 +76,10 @@ def resetDelay(): def doDelay(): - global delay, isBroadcasting - if isBroadcasting: - resetDelay() - else: - if (datetime.now() - delay).seconds < 120: - delay = datetime.fromtimestamp(0) - return True + global delay + if (datetime.now() - delay).seconds < 120: + delay = datetime.fromtimestamp(0) + return True return False @@ -299,7 +296,7 @@ def appendError(obj): def loginBilibili(force=False): if config["dlO"] is False or forceNotUpload is False: global loginTime - if not force and getTimeDelta(datetime.now(), loginTime) < 86400 * 10: + if getTimeDelta(datetime.now(), loginTime) < 86400 * 10 or not Force: return False res = b.login(config["b_u"], config["b_p"]) loginTime = datetime.now() @@ -321,6 +318,7 @@ class downloader(XiGuaLiveApi): broadcaster = self.broadcaster isBroadcasting = self.isLive if self.isLive: + resetDelay() self.updPlayList() else: self.playlist = False From ab545da6cd90bfbe69ece98340ff5d0ff6b0a228 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 4 Jan 2020 17:25:14 +0800 Subject: [PATCH 15/70] modify gitign --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 8d5e389..9cf85fa 100644 --- a/.gitignore +++ b/.gitignore @@ -178,4 +178,7 @@ fabric.properties pyvenv.cfg .venv pip-selfcheck.json - +*.mp4 +*.flv +config* +.* From ff90542cc01d196ab66652ce3ba5863bc74918aa Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 5 Jan 2020 14:52:22 +0800 Subject: [PATCH 16/70] =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 72bf40b..4897d15 100644 --- a/Common.py +++ b/Common.py @@ -77,7 +77,7 @@ def resetDelay(): def doDelay(): global delay - if (datetime.now() - delay).seconds < 120: + if getTimeDelta(datetime.now(), delay) < 120: delay = datetime.fromtimestamp(0) return True return False From 0643fe00766b9cb90083a07f3bda46b608022fcc Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 5 Jan 2020 14:52:46 +0800 Subject: [PATCH 17/70] =?UTF-8?q?=E5=86=99=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 4897d15..65a950f 100644 --- a/Common.py +++ b/Common.py @@ -296,7 +296,7 @@ def appendError(obj): def loginBilibili(force=False): if config["dlO"] is False or forceNotUpload is False: global loginTime - if getTimeDelta(datetime.now(), loginTime) < 86400 * 10 or not Force: + if getTimeDelta(datetime.now(), loginTime) < 86400 * 10 or not force: return False res = b.login(config["b_u"], config["b_p"]) loginTime = datetime.now() From 17f0f4aa4ef6bbd8b65e4a2288a06e03dc2ca98c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 6 Jan 2020 07:31:53 +0800 Subject: [PATCH 18/70] login --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 65a950f..ec36504 100644 --- a/Common.py +++ b/Common.py @@ -296,7 +296,7 @@ def appendError(obj): def loginBilibili(force=False): if config["dlO"] is False or forceNotUpload is False: global loginTime - if getTimeDelta(datetime.now(), loginTime) < 86400 * 10 or not force: + if getTimeDelta(datetime.now(), loginTime) < 86400 * 10 and not force: return False res = b.login(config["b_u"], config["b_p"]) loginTime = datetime.now() From fbeff099d08f2906a291edee6aa57d6145f33a9d Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 6 Jan 2020 08:01:30 +0800 Subject: [PATCH 19/70] modify common --- Common.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Common.py b/Common.py index ec36504..37a42da 100644 --- a/Common.py +++ b/Common.py @@ -98,9 +98,7 @@ def updateNetwork(): def getTimeDelta(a, b): - sec = (a - b).seconds - ms = (a - b).microseconds - return sec + (ms / 100000.0) + return (a - b).total_seconds() def _doClean(_force=False): @@ -312,9 +310,9 @@ class downloader(XiGuaLiveApi): def updRoomInfo(self, force=False): doClean() _result = super(downloader, self).updRoomInfo(force) + global broadcaster, isBroadcasting, updateTime + updateTime = datetime.strftime(self._updRoomAt, dt_format) if _result: - global broadcaster, isBroadcasting, updateTime - updateTime = datetime.strftime(self._updRoomAt, dt_format) broadcaster = self.broadcaster isBroadcasting = self.isLive if self.isLive: From 6b0433138aa4c6fc6283f5d08c56cfd2cffc7c70 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 7 Jan 2020 09:13:09 +0800 Subject: [PATCH 20/70] =?UTF-8?q?=E6=8A=95=E7=A8=BF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Common.py b/Common.py index 37a42da..164549b 100644 --- a/Common.py +++ b/Common.py @@ -308,15 +308,17 @@ class downloader(XiGuaLiveApi): playlist = None def updRoomInfo(self, force=False): + global broadcaster, isBroadcasting, updateTime + _prev_status = self.isLive doClean() _result = super(downloader, self).updRoomInfo(force) - global broadcaster, isBroadcasting, updateTime updateTime = datetime.strftime(self._updRoomAt, dt_format) + if _prev_status != self.isLive: + resetDelay() if _result: broadcaster = self.broadcaster isBroadcasting = self.isLive if self.isLive: - resetDelay() self.updPlayList() else: self.playlist = False From 02562b63dc6d76540622338d0951a223335018a0 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Jan 2020 09:06:11 +0800 Subject: [PATCH 21/70] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=90=8E=E4=B8=8D=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0=EF=BC=88?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=E5=A4=96=E9=9D=A2=E5=BE=AA=E7=8E=AF=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 2 +- liveDownloader.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/api.py b/api.py index fa6ba86..9c53202 100644 --- a/api.py +++ b/api.py @@ -195,7 +195,7 @@ class XiGuaLiveApi: self._rawRoomInfo = d["user_info"]['live_info'] if self.isLive: self.roomID = d["user_info"]['live_info']['room_id'] - return True + return self.isLive def _getRoomInfo(self, force=False): if self.roomID == 0: diff --git a/liveDownloader.py b/liveDownloader.py index 885a1a3..ade2a87 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -13,7 +13,7 @@ def download(): Common.appendError("Download with No StreamUrl Specific") break path = datetime.strftime(datetime.now(), "%Y%m%d_%H%M.flv") - p = session.get(Common.streamUrl, stream=True, timeout=10) + p = session.get(Common.streamUrl, stream=True, timeout=5) if p.status_code != 200: Common.appendDownloadStatus("Download with Response {}".format(p.status_code)) Common.api.updRoomInfo(True) @@ -42,7 +42,6 @@ def download(): os.remove(path) return False Common.encodeQueue.put(path) - Common.api.updRoomInfo() def encode(): From fdd809fdc2cf840304f67076e797cb6494d6b6c3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Jan 2020 09:09:44 +0800 Subject: [PATCH 22/70] =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 164549b..d651a28 100644 --- a/Common.py +++ b/Common.py @@ -312,7 +312,7 @@ class downloader(XiGuaLiveApi): _prev_status = self.isLive doClean() _result = super(downloader, self).updRoomInfo(force) - updateTime = datetime.strftime(self._updRoomAt, dt_format) + updateTime = datetime.strftime(datetime.now(), dt_format) if _prev_status != self.isLive: resetDelay() if _result: From 0f71209fe85890d063cfc65126d3a5855a2324cc Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Jan 2020 09:20:11 +0800 Subject: [PATCH 23/70] =?UTF-8?q?=E7=B2=BE=E7=AE=80=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 26 ++++++++++++++ WebMain.py | 100 ++++++++++++----------------------------------------- 2 files changed, 48 insertions(+), 78 deletions(-) diff --git a/Common.py b/Common.py index d651a28..30e2158 100644 --- a/Common.py +++ b/Common.py @@ -384,3 +384,29 @@ def encodeVideo(name): return False Common.modifyLastEncodeStatus("Encode >{}< Finished".format(name)) uploadQueue.put(_new_name) + + +def collectInfomation(): + return { + "download": downloadStatus, + "encode": encodeStatus, + "encodeQueueSize": encodeQueue.qsize(), + "upload": uploadStatus, + "uploadQueueSize": uploadQueue.qsize(), + "error": errors, + "operation": operations, + "broadcast": { + "broadcaster": broadcaster.__str__(), + "isBroadcasting": isBroadcasting, + "streamUrl": streamUrl, + "updateTime": updateTime, + "delayTime": delay.strftime(dt_format) + }, + "config": { + "forceNotBroadcasting": forceNotBroadcasting, + "forceNotDownload": forceNotDownload, + "forceNotUpload": forceNotUpload, + "forceNotEncode": forceNotEncode, + "downloadOnly": config['dlO'], + }, + } diff --git a/WebMain.py b/WebMain.py index 7a502c0..4c95660 100644 --- a/WebMain.py +++ b/WebMain.py @@ -30,14 +30,14 @@ def writeConfig(): # TODO : 完善 Common.appendOperation("更新配置") Common.reloadConfig() - return jsonify({"message":"ok","code":200,"status":0,"data":request.form}) + return jsonify({"message": "ok", "code": 200, "status": 0, "data": request.form}) @app.route("/force/not/upload", methods=["POST"]) def toggleForceNotUpload(): Common.forceNotUpload = not Common.forceNotUpload Common.appendOperation("将强制不上传的值改为:{}".format(Common.forceNotUpload)) - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { "forceNotUpload": Common.forceNotUpload, }}) @@ -46,7 +46,7 @@ def toggleForceNotUpload(): def toggleForceNotEncode(): Common.forceNotEncode = not Common.forceNotEncode Common.appendOperation("将强制不编码的值改为:{}".format(Common.forceNotEncode)) - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { "forceNotEncode": Common.forceNotEncode, }}) @@ -55,7 +55,7 @@ def toggleForceNotEncode(): def toggleForceNotDownload(): Common.forceNotDownload = not Common.forceNotDownload Common.appendOperation("将强制不下载的值改为:{}".format(Common.forceNotDownload)) - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { "forceNotDownload": Common.forceNotDownload, }}) @@ -63,7 +63,7 @@ def toggleForceNotDownload(): @app.route("/force/not/broadcast", methods=["POST"]) def toggleForceNotBroadcast(): Common.forceNotBroadcasting = not Common.forceNotBroadcasting - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { "forceNotBroadcasting": Common.forceNotBroadcasting, }}) @@ -72,7 +72,7 @@ def toggleForceNotBroadcast(): def toggleForceStartEncodeThread(): Common.forceStartEncodeThread = True Common.appendOperation("强制运行编码线程") - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { }}) @@ -80,7 +80,7 @@ def toggleForceStartEncodeThread(): def toggleForceStartUploadThread(): Common.forceStartUploadThread = True Common.appendOperation("强制运行上传线程") - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { }}) @@ -88,7 +88,7 @@ def toggleForceStartUploadThread(): def startForceCleanDisk(): Common.doClean(True) Common.appendOperation("强制执行清理程序") - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { }}) @@ -97,9 +97,9 @@ def insertEncode(): if "filename" in request.form and os.path.exists(request.form["filename"]): Common.appendOperation("添加编码文件:{}".format(request.form["filename"])) Common.encodeQueue.put(request.form["filename"]) - return jsonify({"message":"ok","code":200,"status":0}) + return jsonify({"message": "ok", "code": 200, "status": 0}) else: - return jsonify({"message":"no filename specific","code":400,"status":1}) + return jsonify({"message": "no filename specific", "code": 400, "status": 1}) @app.route("/upload/insert", methods=["POST"]) @@ -107,68 +107,33 @@ def insertUpload(): if "filename" in request.form and os.path.exists(request.form["filename"]): Common.appendOperation("添加上传文件:{}".format(request.form["filename"])) Common.uploadQueue.put(request.form["filename"]) - return jsonify({"message":"ok","code":200,"status":0}) + return jsonify({"message": "ok", "code": 200, "status": 0}) else: - return jsonify({"message":"no filename specific","code":400,"status":1}) + return jsonify({"message": "no filename specific", "code": 400, "status": 1}) @app.route("/upload/finish", methods=["POST"]) def finishUpload(): Common.appendOperation("设置当前已完成上传") Common.uploadQueue.put(True) - return jsonify({"message":"ok","code":200,"status":0}) + return jsonify({"message": "ok", "code": 200, "status": 0}) @app.route("/stats", methods=["GET"]) def getAllStats(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ - "download":Common.downloadStatus, - "encode": Common.encodeStatus, - "encodeQueueSize": Common.encodeQueue.qsize(), - "upload": Common.uploadStatus, - "uploadQueueSize": Common.uploadQueue.qsize(), - "error": Common.errors, - "operation": Common.operations, - "broadcast": { - "broadcaster": Common.broadcaster.__str__(), - "isBroadcasting": Common.isBroadcasting, - "streamUrl": Common.streamUrl, - "updateTime": Common.updateTime, - "delayTime": Common.delay - }, - "config": { - "forceNotBroadcasting": Common.forceNotBroadcasting, - "forceNotDownload": Common.forceNotDownload, - "forceNotUpload": Common.forceNotUpload, - "forceNotEncode": Common.forceNotEncode, - "downloadOnly": Common.config['dlO'], - }, - }}) + return jsonify({"message": "ok", "code": 200, "status": 0, "data": Common.collectInfomation()}) @app.route("/stats/device", methods=["GET"]) def getDeviceStatus(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { "status": Common.getCurrentStatus(), }}) -@app.route("/stats/broadcast", methods=["GET"]) -def getBroadcastStats(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ - "broadcast": { - "broadcaster": Common.broadcaster.__str__(), - "isBroadcasting": Common.isBroadcasting, - "streamUrl": Common.streamUrl, - "updateTime": Common.updateTime, - "delayTime": Common.delay - } - }}) - - @app.route("/stats/config", methods=["GET"]) def getConfigStats(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ + return jsonify({"message": "ok", "code": 200, "status": 0, "data": { "config": { "forceNotBroadcasting": Common.forceNotBroadcasting, "forceNotDownload": Common.forceNotDownload, @@ -179,33 +144,10 @@ def getConfigStats(): }}) -@app.route("/stats/download", methods=["GET"]) -def getDownloadStats(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ - "download":Common.downloadStatus, - }}) - - -@app.route("/stats/encode", methods=["GET"]) -def getEncodeStats(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ - "encode": Common.encodeStatus, - "encodeQueueSize": Common.encodeQueue.qsize(), - }}) - - -@app.route("/stats/upload", methods=["GET"]) -def getUploadStats(): - return jsonify({"message":"ok","code":200,"status":0,"data":{ - "upload": Common.uploadStatus, - "uploadQueueSize": Common.uploadQueue.qsize(), - }}) - - @app.route("/account/reLogin", methods=["POST"]) def accountRelogin(): res = Common.loginBilibili(True) - return jsonify({"message":"ok","code":200,"status":0,"data":{"result":res}}) + return jsonify({"message": "ok", "code": 200, "status": 0, "data": {"result": res}}) @app.route("/files/", methods=["GET"]) @@ -216,7 +158,7 @@ def fileIndex(): "name": i, "size": Common.parseSize(os.path.getsize(i)) }) - return render_template("files.html",files=a) + return render_template("files.html", files=a) @app.route("/files/download/", methods=["GET"]) @@ -226,9 +168,10 @@ def fileDownload(path): f.seek(offset) for row in f: yield row + if os.path.exists(path): if "RANGE" in request.headers: - offset = int(request.headers["RANGE"].replace("=","-").split("-")[1].strip()) + offset = int(request.headers["RANGE"].replace("=", "-").split("-")[1].strip()) code = 206 else: offset = 0 @@ -238,7 +181,8 @@ def fileDownload(path): mimetype='application/octet-stream', headers={ "Content-Length": os.path.getsize(path), - "Content-Range": "bytes {}-{}/{}".format(offset,os.path.getsize(path)-1,os.path.getsize(path)), + "Content-Range": "bytes {}-{}/{}".format(offset, os.path.getsize(path) - 1, + os.path.getsize(path)), "Accept-Ranges": "bytes", "Range": "bytes", }) From 74120850a408360cf7b2468a5edeb6e9fc1b3c48 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 9 Jan 2020 09:26:04 +0800 Subject: [PATCH 24/70] =?UTF-8?q?=E7=81=B5=E6=B4=BB=E4=B8=8B=E6=92=AD?= =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 8 +++----- api.py | 2 ++ 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Common.py b/Common.py index 30e2158..4b04efe 100644 --- a/Common.py +++ b/Common.py @@ -153,7 +153,6 @@ dt_format = "%Y/%m/%d %H:%M:%S" reloadConfig() broadcaster = "" streamUrl = "" -isBroadcasting = False updateTime = "" forceNotDownload = False @@ -308,16 +307,15 @@ class downloader(XiGuaLiveApi): playlist = None def updRoomInfo(self, force=False): - global broadcaster, isBroadcasting, updateTime + global broadcaster, updateTime _prev_status = self.isLive doClean() _result = super(downloader, self).updRoomInfo(force) - updateTime = datetime.strftime(datetime.now(), dt_format) + updateTime = datetime.now().strftime(dt_format) if _prev_status != self.isLive: resetDelay() if _result: broadcaster = self.broadcaster - isBroadcasting = self.isLive if self.isLive: self.updPlayList() else: @@ -397,7 +395,7 @@ def collectInfomation(): "operation": operations, "broadcast": { "broadcaster": broadcaster.__str__(), - "isBroadcasting": isBroadcasting, + "isBroadcasting": api.isLive, "streamUrl": streamUrl, "updateTime": updateTime, "delayTime": delay.strftime(dt_format) diff --git a/api.py b/api.py index 9c53202..3c36f8c 100644 --- a/api.py +++ b/api.py @@ -176,6 +176,7 @@ class XiGuaLiveApi: :return: """ if self.broadcaster is None: + self.isValidUser = False return False _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": self.broadcaster.ID} _url = USER_INFO_API.format_map(_formatData).format_map(_formatData) @@ -199,6 +200,7 @@ class XiGuaLiveApi: def _getRoomInfo(self, force=False): if self.roomID == 0: + self.isLive = False return False if not force or (self._updRoomAt + timedelta(minutes=2) > datetime.now()): return self.isLive From 68fecca012bb4ddc40e7c4cc67dd3c8a64f7756b Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 10 Jan 2020 09:18:32 +0800 Subject: [PATCH 25/70] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=88=BF=E9=97=B4?= =?UTF-8?q?=E6=97=B6=E6=9B=B4=E6=96=B0=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=EF=BC=8C=E6=B5=8B=E8=AF=95=E4=B8=8B=E6=92=AD=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 6 ++---- api.py | 5 +++++ bilibili.py | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Common.py b/Common.py index 4b04efe..113b004 100644 --- a/Common.py +++ b/Common.py @@ -153,7 +153,6 @@ dt_format = "%Y/%m/%d %H:%M:%S" reloadConfig() broadcaster = "" streamUrl = "" -updateTime = "" forceNotDownload = False forceNotBroadcasting = False @@ -307,11 +306,10 @@ class downloader(XiGuaLiveApi): playlist = None def updRoomInfo(self, force=False): - global broadcaster, updateTime + global broadcaster _prev_status = self.isLive doClean() _result = super(downloader, self).updRoomInfo(force) - updateTime = datetime.now().strftime(dt_format) if _prev_status != self.isLive: resetDelay() if _result: @@ -397,7 +395,7 @@ def collectInfomation(): "broadcaster": broadcaster.__str__(), "isBroadcasting": api.isLive, "streamUrl": streamUrl, - "updateTime": updateTime, + "updateTime": api.updateAt.strftime(dt_format), "delayTime": delay.strftime(dt_format) }, "config": { diff --git a/api.py b/api.py index 3c36f8c..0e6fbc3 100644 --- a/api.py +++ b/api.py @@ -188,6 +188,7 @@ class XiGuaLiveApi: if "user_info" not in d and d["user_info"] is None: self.apiChangedError("Api发生改变,请及时联系我", d) return False + self._updRoomAt = datetime.now() self.broadcaster = User(d) if not self._checkUsernameIsMatched(): self.isLive = False @@ -230,3 +231,7 @@ class XiGuaLiveApi: return self._updateUserInfo() else: return self._getRoomInfo(force) + + @property + def updateAt(self): + return self._updRoomAt diff --git a/bilibili.py b/bilibili.py index 8ed3553..4d34055 100644 --- a/bilibili.py +++ b/bilibili.py @@ -142,7 +142,7 @@ class Bilibili: ) json = r.json() - if json['code'] is not 0: + if json['code'] != 0: return r.text ls = [] From 39318a4cc9b7d8707303dfa0abba4e653784237a Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 10 Jan 2020 11:41:14 +0800 Subject: [PATCH 26/70] =?UTF-8?q?=E7=B2=BE=E7=AE=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Common.py b/Common.py index 113b004..4cd7700 100644 --- a/Common.py +++ b/Common.py @@ -63,7 +63,7 @@ network = [{ def reloadConfig(): global config - if (os.path.exists('config.json')): + if os.path.exists('config.json'): _config_fp = open("config.json", "r", encoding="utf8") _config = json.load(_config_fp) config.update(_config) @@ -341,7 +341,7 @@ def refreshDownloader(): def uploadVideo(name): if not os.path.exists(name): - Common.appendError("Upload File Not Exist {}".format(name)) + appendError("Upload File Not Exist {}".format(name)) return loginBilibili() doClean() @@ -349,7 +349,7 @@ def uploadVideo(name): b.preUpload(VideoPart(name, os.path.basename(name))) else: appendUploadStatus("设置了不上传,所以[{}]不会上传了".format(name)) - if not Common.forceNotEncode: + if not forceNotEncode: os.remove(name) From 11843661c070a07a468e5c8428b283a6853eb70d Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 10 Jan 2020 20:06:47 +0800 Subject: [PATCH 27/70] =?UTF-8?q?=E5=86=99=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.py b/api.py index 0e6fbc3..d53886e 100644 --- a/api.py +++ b/api.py @@ -203,7 +203,7 @@ class XiGuaLiveApi: if self.roomID == 0: self.isLive = False return False - if not force or (self._updRoomAt + timedelta(minutes=2) > datetime.now()): + if (self._updRoomAt + timedelta(minutes=2) > datetime.now()) or not force: return self.isLive _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "roomId": self.roomID} _url = ROOM_INFO_API.format_map(_formatData).format_map(_formatData) From 0f81dfd030b4601c79e4899e966526e53d71c804 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 10 Jan 2020 21:23:23 +0800 Subject: [PATCH 28/70] =?UTF-8?q?=E5=86=99=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.py b/api.py index d53886e..c7229d2 100644 --- a/api.py +++ b/api.py @@ -203,7 +203,7 @@ class XiGuaLiveApi: if self.roomID == 0: self.isLive = False return False - if (self._updRoomAt + timedelta(minutes=2) > datetime.now()) or not force: + if (self._updRoomAt + timedelta(minutes=2) > datetime.now()) and not force: return self.isLive _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "roomId": self.roomID} _url = ROOM_INFO_API.format_map(_formatData).format_map(_formatData) From 179dc18ec869cf26f94d3e8481c86ee979f348f2 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 10 Jan 2020 21:34:21 +0800 Subject: [PATCH 29/70] Dict url --- Common.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Common.py b/Common.py index 4cd7700..937bc72 100644 --- a/Common.py +++ b/Common.py @@ -324,6 +324,10 @@ class downloader(XiGuaLiveApi): global streamUrl if self.isLive and "stream_url" in self._rawRoomInfo: self.playlist = self._rawRoomInfo["stream_url"]["flv_pull_url"] + if type(self.playlist) is dict: + for _ in self.playlist.values(): + self.playlist = _ + break self.playlist = self.playlist.replace("_uhd", "").replace("_sd", "").replace("_ld", "") streamUrl = self.playlist else: From 53fd5c3f6553f1e5287a682b79696053a6bd811e Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 10 Jan 2020 22:00:28 +0800 Subject: [PATCH 30/70] stop downloading with update room --- api.py | 2 +- liveDownloader.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/api.py b/api.py index c7229d2..fd122a1 100644 --- a/api.py +++ b/api.py @@ -203,7 +203,7 @@ class XiGuaLiveApi: if self.roomID == 0: self.isLive = False return False - if (self._updRoomAt + timedelta(minutes=2) > datetime.now()) and not force: + if (self._updRoomAt + timedelta(minutes=3) > datetime.now()) and not force: return self.isLive _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "roomId": self.roomID} _url = ROOM_INFO_API.format_map(_formatData).format_map(_formatData) diff --git a/liveDownloader.py b/liveDownloader.py index ade2a87..f0bed4b 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -36,6 +36,7 @@ def download(): Common.modifyLastDownloadStatus("Download >{}< Finished".format(path)) except Exception as e: Common.appendError("Download >{}< With Exception {}".format(path, e.__str__())) + Common.api.updRoomInfo(True) f.close() if os.path.getsize(path) < 1024 * 1024: Common.modifyLastDownloadStatus("Downloaded File >{}< is too small, will ignore it".format(path)) From cadfe922c0b984f09e67567c4d28f20aa529ab2c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 12 Jan 2020 08:58:23 +0800 Subject: [PATCH 31/70] Negative delay fix --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 937bc72..1cd8f71 100644 --- a/Common.py +++ b/Common.py @@ -77,7 +77,7 @@ def resetDelay(): def doDelay(): global delay - if getTimeDelta(datetime.now(), delay) < 120: + if -120 < getTimeDelta(datetime.now(), delay) < 120: delay = datetime.fromtimestamp(0) return True return False From 18c02b51562baa05767d7c983d22623d3697b1fd Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 12 Jan 2020 09:00:03 +0800 Subject: [PATCH 32/70] stream timeout set small --- liveDownloader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liveDownloader.py b/liveDownloader.py index f0bed4b..4b4f8f8 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -13,7 +13,7 @@ def download(): Common.appendError("Download with No StreamUrl Specific") break path = datetime.strftime(datetime.now(), "%Y%m%d_%H%M.flv") - p = session.get(Common.streamUrl, stream=True, timeout=5) + p = session.get(Common.streamUrl, stream=True, timeout=3) if p.status_code != 200: Common.appendDownloadStatus("Download with Response {}".format(p.status_code)) Common.api.updRoomInfo(True) From 9757051c8917260c58c20afb5de13f8c55de8e52 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 15 Jan 2020 13:01:57 +0800 Subject: [PATCH 33/70] =?UTF-8?q?=E9=81=BF=E5=85=8D=E8=BF=87=E4=BA=8E?= =?UTF-8?q?=E9=A2=91=E7=B9=81=E6=9B=B4=E6=96=B0=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (cherry picked from commit 7102a45382cb52cf6b0c47663f7a6ffa891235d7) --- api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api.py b/api.py index fd122a1..192631c 100644 --- a/api.py +++ b/api.py @@ -168,6 +168,7 @@ class XiGuaLiveApi: self.isValidUser = True self.broadcaster = _user break + self._updRoomAt = datetime.now() return self._updateUserInfo() def _updateUserInfo(self): @@ -225,6 +226,8 @@ class XiGuaLiveApi: 更新房间信息 :return: """ + if not force and (self._updRoomAt + timedelta(minutes=2) > datetime.now()): + return self.isLive if not self.isValidUser: return self._forceSearchUser() elif not self.isLive: From db961deace2040249ec64f43e1f5726bde606195 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 15 Jan 2020 19:08:12 +0800 Subject: [PATCH 34/70] =?UTF-8?q?URL=E9=83=BD=E6=B2=A1=E4=BA=86=E8=BF=98?= =?UTF-8?q?=E4=B8=8D=E6=9B=B4=E6=96=B0=EF=BC=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liveDownloader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/liveDownloader.py b/liveDownloader.py index 4b4f8f8..78893e2 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -11,6 +11,7 @@ def download(): while Common.api.isLive and not Common.forceNotDownload: if not Common.streamUrl: Common.appendError("Download with No StreamUrl Specific") + Common.api.updRoomInfo(True) break path = datetime.strftime(datetime.now(), "%Y%m%d_%H%M.flv") p = session.get(Common.streamUrl, stream=True, timeout=3) From 5a72550598e75bfae03850cb56ff61cf6a5156c3 Mon Sep 17 00:00:00 2001 From: Jerry-Lubo-Server <792602257@qq.com> Date: Mon, 30 Mar 2020 18:54:39 +0800 Subject: [PATCH 35/70] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=BC=8F=E6=B4=9E,?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E6=B3=84?= =?UTF-8?q?=E9=9C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebMain.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/WebMain.py b/WebMain.py index 4c95660..9139aa7 100644 --- a/WebMain.py +++ b/WebMain.py @@ -168,7 +168,8 @@ def fileDownload(path): f.seek(offset) for row in f: yield row - + if not (".mp4" in path or ".flv" in path): + return Response(status=404) if os.path.exists(path): if "RANGE" in request.headers: offset = int(request.headers["RANGE"].replace("=", "-").split("-")[1].strip()) From 9b69e90021c6d0e8a11ce6488edbceee64e40756 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 1 Apr 2020 11:33:14 +0800 Subject: [PATCH 36/70] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8A=95=E7=A8=BF?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E5=8F=AF=E8=87=AA=E5=AE=9A=E4=B9=89=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 4 +++- liveDownloader.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Common.py b/Common.py index 1cd8f71..fc79d23 100644 --- a/Common.py +++ b/Common.py @@ -34,6 +34,8 @@ config = { "dlO": True, # 下播延迟投稿 "dly": 30, + # 短的时间的格式 + "sdf": "%Y%m%d", "enc": "ffmpeg -i {f} -c:v copy -c:a copy -f mp4 {t} -y" } doCleanTime = datetime.fromtimestamp(0) @@ -77,7 +79,7 @@ def resetDelay(): def doDelay(): global delay - if -120 < getTimeDelta(datetime.now(), delay) < 120: + if -120 < getTimeDelta(datetime.now(), delay) < 60: delay = datetime.fromtimestamp(0) return True return False diff --git a/liveDownloader.py b/liveDownloader.py index 78893e2..9b6a91a 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -54,7 +54,7 @@ def encode(): def upload(): - date = datetime.strftime(datetime.now(), "%Y_%m_%d") + date = datetime.strftime(datetime.now(), Common.config["sdf"]) Common.appendUploadStatus("Upload Daemon Starting") i = Common.uploadQueue.get() while True: From bd4082f6901bd4c540e7aba3afce9ec4824731ce Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 4 Apr 2020 16:42:21 +0800 Subject: [PATCH 37/70] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E5=88=A4=E6=96=AD=EF=BC=8C=E5=90=8E=E6=9C=9F=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/api.py b/api.py index 192631c..f02429a 100644 --- a/api.py +++ b/api.py @@ -195,9 +195,15 @@ class XiGuaLiveApi: self.isLive = False return False self.isLive = d["user_info"]["is_living"] - self._rawRoomInfo = d["user_info"]['live_info'] + if d["user_info"]['live_info'] is None: + if d["live_data"] is None: + self.isLive = False + else: + self._rawRoomInfo = d["user_info"]['live_info'] + else: + self._rawRoomInfo = d["user_info"]['live_info'] if self.isLive: - self.roomID = d["user_info"]['live_info']['room_id'] + self.roomID = self._rawRoomInfo['room_id'] return self.isLive def _getRoomInfo(self, force=False): From 44211bcbc9a1910598b46700094edb7d989069b5 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 4 Apr 2020 16:47:22 +0800 Subject: [PATCH 38/70] TAT --- api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.py b/api.py index f02429a..0ebe0c4 100644 --- a/api.py +++ b/api.py @@ -199,7 +199,7 @@ class XiGuaLiveApi: if d["live_data"] is None: self.isLive = False else: - self._rawRoomInfo = d["user_info"]['live_info'] + self._rawRoomInfo = d["live_data"]['live_info'] else: self._rawRoomInfo = d["user_info"]['live_info'] if self.isLive: From 3225952c694706f9c19ff009cdd90019d034a09f Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 6 Apr 2020 15:48:38 +0800 Subject: [PATCH 39/70] TEST --- liveDownloader.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/liveDownloader.py b/liveDownloader.py index 9b6a91a..728af2c 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -23,12 +23,12 @@ def download(): f = open(path, "wb") _size = 0 try: - for t in p.iter_content(chunk_size=64 * 1024): + for T in p.iter_content(chunk_size=64 * 1024): if Common.forceNotDownload: Common.modifyLastDownloadStatus("Force Stop Download".format(path)) - return - f.write(t) - _size += len(t) + break + f.write(T) + _size += len(T) Common.modifyLastDownloadStatus( "Downloading >{}< @ {:.2f}%".format(path, 100.0 * _size / Common.config["p_s"])) if _size > Common.config["p_s"]: @@ -42,7 +42,7 @@ def download(): if os.path.getsize(path) < 1024 * 1024: Common.modifyLastDownloadStatus("Downloaded File >{}< is too small, will ignore it".format(path)) os.remove(path) - return False + break Common.encodeQueue.put(path) From 3ae8176abb7220530ab7cd7ee39276530ee285cd Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Apr 2020 11:09:29 +0800 Subject: [PATCH 40/70] TEST --- api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.py b/api.py index 0ebe0c4..751a3cd 100644 --- a/api.py +++ b/api.py @@ -176,8 +176,8 @@ class XiGuaLiveApi: 获取用户信息 :return: """ + self.isValidUser = False if self.broadcaster is None: - self.isValidUser = False return False _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": self.broadcaster.ID} _url = USER_INFO_API.format_map(_formatData).format_map(_formatData) From 0260fce84513f300a52c5ec4432f9a5f6e12c94d Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Apr 2020 12:24:23 +0800 Subject: [PATCH 41/70] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bilibili.py | 71 +++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 38 deletions(-) diff --git a/bilibili.py b/bilibili.py index 4d34055..c96ff33 100644 --- a/bilibili.py +++ b/bilibili.py @@ -49,8 +49,8 @@ class Bilibili: APPKEY = '4409e2ce8ffd12b8' ACTIONKEY = 'appkey' BUILD = 101800 - DEVICE = 'android' - MOBI_APP = 'android' + DEVICE = 'android_tv_yst' + MOBI_APP = 'android_tv_yst' PLATFORM = 'android' APPSECRET = '59b43e04ad6965f34319062b478f83dd' @@ -94,11 +94,16 @@ class Bilibili: data = json['data'] return data['hash'], data['key'] - def cnn_captcha(img): - url = "http://47.95.255.188:5000/code" - data = {"image": img} - r = requests.post(url, data=data) - return r.text + def access_token_2_cookie(access_token): + r = self.session.get( + 'https://passport.bilibili.com/api/login/sso?' + \ + signed_body( + 'access_key={access_token}&appkey={appkey}&gourl=https%3A%2F%2Faccount.bilibili.com%2Faccount%2Fhome' + .format(access_token=access_token, appkey=APPKEY), + ), + allow_redirects=False, + ) + return r.cookies.get_dict(domain=".bilibili.com") self.session.headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8' h, k = getkey() @@ -112,9 +117,13 @@ class Bilibili: pwd = parse.quote_plus(pwd) r = self.session.post( - 'https://passport.bilibili.com/api/v2/oauth2/login', - signed_body('appkey={appkey}&password={password}&username={username}' - .format(appkey=APPKEY, username=user, password=pwd)) + 'https://passport.snm0516.aisee.tv/api/tv/login', + signed_body( + 'appkey={appkey}&build={build}&captcha=&channel=master&' + 'guid=XYEBAA3E54D502E37BD606F0589A356902FCF&mobi_app={mobi_app}&' + 'password={password}&platform={platform}&token=5598158bcd8511e2&ts=0&username={username}' + .format(appkey=APPKEY, build=BUILD, platform=PLATFORM, mobi_app=MOBI_APP, username=user, + password=pwd)), ) try: json = r.json() @@ -123,32 +132,17 @@ class Bilibili: if json['code'] == -105: # need captcha - self.session.headers['cookie'] = 'sid=xxxxxxxx' - r = self.session.get('https://passport.bilibili.com/captcha') - captcha = cnn_captcha(base64.b64encode(r.content)) - r = self.session.post( - 'https://passport.bilibili.com/api/v2/oauth2/login', - signed_body('actionKey={actionKey}&appkey={appkey}&build={build}&captcha={captcha}&device={device}' - '&mobi_app={mobi_app}&password={password}&platform={platform}&username={username}' - .format(actionKey=ACTIONKEY, - appkey=APPKEY, - build=BUILD, - captcha=captcha, - device=DEVICE, - mobi_app=MOBI_APP, - password=pwd, - platform=PLATFORM, - username=user)), - ) - json = r.json() + raise Exception('TODO: login with captcha') if json['code'] != 0: return r.text - ls = [] - for item in json['data']['cookie_info']['cookies']: - ls.append(item['name'] + '=' + item['value']) - cookie = '; '.join(ls) + access_token = json['data']['token_info']['access_token'] + cookie_dict = access_token_2_cookie(access_token) + cookie = '; '.join( + '%s=%s' % (k, v) + for k, v in cookie_dict.items() + ) self.session.headers["cookie"] = cookie self.csrf = re.search('bili_jct=(.*?);', cookie).group(1) @@ -244,7 +238,8 @@ class Bilibili: chunks_num = math.ceil(filesize / chunk_size) chunks_index = 0 chunks_data = f.read(chunk_size) - Common.modifyLastUploadStatus("Uploading >{}< @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) + Common.modifyLastUploadStatus( + "Uploading >{}< @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) while True: _d = datetime.now() if not chunks_data: @@ -268,8 +263,9 @@ class Bilibili: continue chunks_data = f.read(chunk_size) chunks_index += 1 # start with 0 - Common.modifyLastUploadStatus("Uploading >{}< @ {:.2f}%".format(filepath, 100.0*chunks_index/chunks_num)) - if (datetime.now()-_d).seconds < 2: + Common.modifyLastUploadStatus( + "Uploading >{}< @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) + if (datetime.now() - _d).seconds < 2: sleep(1) # NOT DELETE! Refer to https://github.com/comwrg/bilibiliupload/issues/15#issuecomment-424379769 @@ -287,10 +283,9 @@ class Bilibili: 'title': part.title, 'desc': part.desc}) Common.modifyLastUploadStatus("Upload >{}< Finished".format(filepath)) - __f = open("uploaded.json","w") + __f = open("uploaded.json", "w") JSON.dump(self.videos, __f) - def finishUpload(self, title, tid, @@ -356,7 +351,7 @@ class Bilibili: def clear(self): self.files.clear() self.videos.clear() - if(os.path.exists("uploaded.json")): + if (os.path.exists("uploaded.json")): os.remove("uploaded.json") def appendUpload(self, From 866b789a3d0f114af2dd70f60258f1acfe85a3ba Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Apr 2020 15:55:58 +0800 Subject: [PATCH 42/70] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bilibili.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/bilibili.py b/bilibili.py index c96ff33..5308abe 100644 --- a/bilibili.py +++ b/bilibili.py @@ -44,7 +44,7 @@ class Bilibili: :param pwd: password :type pwd: str :return: if success return True - else return msg json + else raise Exception """ APPKEY = '4409e2ce8ffd12b8' ACTIONKEY = 'appkey' @@ -122,20 +122,16 @@ class Bilibili: 'appkey={appkey}&build={build}&captcha=&channel=master&' 'guid=XYEBAA3E54D502E37BD606F0589A356902FCF&mobi_app={mobi_app}&' 'password={password}&platform={platform}&token=5598158bcd8511e2&ts=0&username={username}' - .format(appkey=APPKEY, build=BUILD, platform=PLATFORM, mobi_app=MOBI_APP, username=user, - password=pwd)), + .format(appkey=APPKEY, build=BUILD, platform=PLATFORM, mobi_app=MOBI_APP, username=user, password=pwd)), ) - try: - json = r.json() - except: - return r.text + json = r.json() if json['code'] == -105: # need captcha raise Exception('TODO: login with captcha') if json['code'] != 0: - return r.text + raise Exception(r.text) access_token = json['data']['token_info']['access_token'] cookie_dict = access_token_2_cookie(access_token) @@ -144,14 +140,12 @@ class Bilibili: for k, v in cookie_dict.items() ) self.session.headers["cookie"] = cookie - - self.csrf = re.search('bili_jct=(.*?);', cookie).group(1) - self.mid = re.search('DedeUserID=(.*?);', cookie).group(1) + self.csrf = re.search('bili_jct=(.*?)(;|$)', cookie).group(1) + self.mid = re.search('DedeUserID=(.*?)(;|$)', cookie).group(1) self.session.headers['Accept'] = 'application/json, text/javascript, */*; q=0.01' self.session.headers['Referer'] = 'https://space.bilibili.com/{mid}/#!/'.format(mid=self.mid) return True - def upload(self, parts, title, From 9e9cb5883872d8a3ebf3cb18ed5f1573220cff97 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Apr 2020 16:11:51 +0800 Subject: [PATCH 43/70] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bilibili.py | 81 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 56 insertions(+), 25 deletions(-) diff --git a/bilibili.py b/bilibili.py index 5308abe..8d27040 100644 --- a/bilibili.py +++ b/bilibili.py @@ -5,6 +5,10 @@ import re import json as JSON from datetime import datetime from time import sleep + +from requests.adapters import HTTPAdapter +from urllib3 import Retry + import Common import rsa import math @@ -146,6 +150,7 @@ class Bilibili: self.session.headers['Referer'] = 'https://space.bilibili.com/{mid}/#!/'.format(mid=self.mid) return True + def upload(self, parts, title, @@ -180,8 +185,9 @@ class Bilibili: self.finishUpload(title, tid, tag, desc, source, cover, no_reprint) self.clear() - def preUpload(self, parts): + def preUpload(self, parts, max_retry=5): """ + :param max_retry: :param parts: e.g. VideoPart('part path', 'part title', 'part desc'), or [VideoPart(...), VideoPart(...)] :type parts: VideoPart or list """ @@ -189,6 +195,16 @@ class Bilibili: if not isinstance(parts, list): parts = [parts] + # retry by status + retries = Retry( + total=max_retry, + backoff_factor=1, + status_forcelist=(504, ), + ) + self.session.mount('https://', HTTPAdapter(max_retries=retries)) + self.session.mount('http://', HTTPAdapter(max_retries=retries)) + # + for part in parts: filepath = part.path filename = os.path.basename(filepath) @@ -197,7 +213,7 @@ class Bilibili: self.files.append(part) r = self.session.get('https://member.bilibili.com/preupload?' 'os=upos&upcdn=ws&name={name}&size={size}&r=upos&profile=ugcupos%2Fyb&ssl=0' - .format(name=filename, size=filesize)) + .format(name=parse.quote_plus(filename), size=filesize)) """return example { "upos_uri": "upos://ugc/i181012ws18x52mti3gg0h33chn3tyhp.mp4", @@ -223,8 +239,7 @@ class Bilibili: biz_id = json['biz_id'] chunk_size = json['chunk_size'] self.session.headers['X-Upos-Auth'] = auth # add auth header - r = self.session.post( - 'https:{}/{}?uploads&output=json'.format(endpoint, upos_uri.replace('upos://', ''))) + r = self.session.post('https:{}/{}?uploads&output=json'.format(endpoint, upos_uri.replace('upos://', ''))) # {"upload_id":"72eb747b9650b8c7995fdb0efbdc2bb6","key":"\/i181012ws2wg1tb7tjzswk2voxrwlk1u.mp4","OK":1,"bucket":"ugc"} json = r.json() upload_id = json['upload_id'] @@ -235,32 +250,47 @@ class Bilibili: Common.modifyLastUploadStatus( "Uploading >{}< @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) while True: - _d = datetime.now() if not chunks_data: break - r = self.session.put('https:{endpoint}/{upos_uri}?' - 'partNumber={part_number}&uploadId={upload_id}&chunk={chunk}&chunks={chunks}&size={size}&start={start}&end={end}&total={total}' - .format(endpoint=endpoint, - upos_uri=upos_uri.replace('upos://', ''), - part_number=chunks_index + 1, # starts with 1 - upload_id=upload_id, - chunk=chunks_index, - chunks=chunks_num, - size=len(chunks_data), - start=chunks_index * chunk_size, - end=chunks_index * chunk_size + len(chunks_data), - total=filesize, - ), - chunks_data, - ) - if r.status_code != 200: + + def upload_chunk(): + r = self.session.put('https:{endpoint}/{upos_uri}?' + 'partNumber={part_number}&uploadId={upload_id}&chunk={chunk}&chunks={chunks}&size={size}&start={start}&end={end}&total={total}' + .format(endpoint=endpoint, + upos_uri=upos_uri.replace('upos://', ''), + part_number=chunks_index + 1, # starts with 1 + upload_id=upload_id, + chunk=chunks_index, + chunks=chunks_num, + size=len(chunks_data), + start=chunks_index * chunk_size, + end=chunks_index * chunk_size + len(chunks_data), + total=filesize, + ), + chunks_data, + ) + return r + + def retry_upload_chunk(): + """return :class:`Response` if upload success, else return None.""" + for i in range(max_retry): + r = upload_chunk() + if r.status_code == 200: + return r + Common.modifyLastUploadStatus( + "Uploading >{}< @ {:.2f}% RETRY[{}]".format(filepath, 100.0 * chunks_index / chunks_num, max_retry)) + return None + + r = retry_upload_chunk() + if r: + Common.modifyLastUploadStatus( + "Uploading >{}< @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) + else: + Common.modifyLastUploadStatus( + "Uploading >{}< FAILED @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) continue chunks_data = f.read(chunk_size) chunks_index += 1 # start with 0 - Common.modifyLastUploadStatus( - "Uploading >{}< @ {:.2f}%".format(filepath, 100.0 * chunks_index / chunks_num)) - if (datetime.now() - _d).seconds < 2: - sleep(1) # NOT DELETE! Refer to https://github.com/comwrg/bilibiliupload/issues/15#issuecomment-424379769 self.session.post('https:{endpoint}/{upos_uri}?' @@ -279,6 +309,7 @@ class Bilibili: Common.modifyLastUploadStatus("Upload >{}< Finished".format(filepath)) __f = open("uploaded.json", "w") JSON.dump(self.videos, __f) + __f.close() def finishUpload(self, title, From 47cccb4aa8ef128f9369e9e120460ade169a1498 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 8 Apr 2020 16:12:11 +0800 Subject: [PATCH 44/70] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bilibili.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/bilibili.py b/bilibili.py index 8d27040..25de102 100644 --- a/bilibili.py +++ b/bilibili.py @@ -3,12 +3,6 @@ import os import re import json as JSON -from datetime import datetime -from time import sleep - -from requests.adapters import HTTPAdapter -from urllib3 import Retry - import Common import rsa import math @@ -16,6 +10,8 @@ import base64 import hashlib import requests from urllib import parse +from requests.adapters import HTTPAdapter +from urllib3 import Retry class VideoPart: From d0a6aadb56cc2f44c01d019dfd3413ef2a93852d Mon Sep 17 00:00:00 2001 From: Jerry-Lubo-Server <792602257@qq.com> Date: Thu, 9 Apr 2020 08:36:01 +0800 Subject: [PATCH 45/70] TEST2 --- liveDownloader.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/liveDownloader.py b/liveDownloader.py index 728af2c..1c6965b 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -11,13 +11,15 @@ def download(): while Common.api.isLive and not Common.forceNotDownload: if not Common.streamUrl: Common.appendError("Download with No StreamUrl Specific") - Common.api.updRoomInfo(True) break path = datetime.strftime(datetime.now(), "%Y%m%d_%H%M.flv") - p = session.get(Common.streamUrl, stream=True, timeout=3) + try: + p = session.get(Common.streamUrl, stream=True, timeout=3) + except Exception as e: + Common.appendError("Download >{}< with Exception [{}]".format(path,e.__str__())) + break if p.status_code != 200: Common.appendDownloadStatus("Download with Response {}".format(p.status_code)) - Common.api.updRoomInfo(True) break Common.appendDownloadStatus("Download >{}< Start".format(path)) f = open(path, "wb") @@ -42,8 +44,9 @@ def download(): if os.path.getsize(path) < 1024 * 1024: Common.modifyLastDownloadStatus("Downloaded File >{}< is too small, will ignore it".format(path)) os.remove(path) - break + continue Common.encodeQueue.put(path) + Common.api.updRoomInfo(True) def encode(): From 9d7939061c30510366c3fc94650bc3d04b05954f Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 9 Apr 2020 10:59:06 +0800 Subject: [PATCH 46/70] TEST3 --- Common.py | 7 ++++++- liveDownloader.py | 27 ++++++++++++--------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Common.py b/Common.py index fc79d23..d47d502 100644 --- a/Common.py +++ b/Common.py @@ -26,7 +26,12 @@ config = { "l_c": 5, # 错误Log条数 "elc": 10, + # 每一chunk大小 + "c_s": 16 * 1024, + # 每一块视频大小 "p_s": 2141000000, + # 忽略的大小 + "i_s": 2048000, "max": 75, "exp": 1, "dow": "echo 'clean'", @@ -79,7 +84,7 @@ def resetDelay(): def doDelay(): global delay - if -120 < getTimeDelta(datetime.now(), delay) < 60: + if -60 < getTimeDelta(datetime.now(), delay) < 60: delay = datetime.fromtimestamp(0) return True return False diff --git a/liveDownloader.py b/liveDownloader.py index 1c6965b..1d577f0 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -15,37 +15,34 @@ def download(): path = datetime.strftime(datetime.now(), "%Y%m%d_%H%M.flv") try: p = session.get(Common.streamUrl, stream=True, timeout=3) + p.raise_for_status() except Exception as e: Common.appendError("Download >{}< with Exception [{}]".format(path,e.__str__())) break - if p.status_code != 200: - Common.appendDownloadStatus("Download with Response {}".format(p.status_code)) - break Common.appendDownloadStatus("Download >{}< Start".format(path)) f = open(path, "wb") _size = 0 try: - for T in p.iter_content(chunk_size=64 * 1024): + for T in p.iter_content(chunk_size=Common.config["c_s"]): if Common.forceNotDownload: Common.modifyLastDownloadStatus("Force Stop Download".format(path)) - break + return f.write(T) _size += len(T) Common.modifyLastDownloadStatus( "Downloading >{}< @ {:.2f}%".format(path, 100.0 * _size / Common.config["p_s"])) if _size > Common.config["p_s"]: Common.modifyLastDownloadStatus("Download >{}< Exceed MaxSize".format(path)) - break Common.modifyLastDownloadStatus("Download >{}< Finished".format(path)) except Exception as e: Common.appendError("Download >{}< With Exception {}".format(path, e.__str__())) Common.api.updRoomInfo(True) - f.close() - if os.path.getsize(path) < 1024 * 1024: + finally: + f.close() + if os.path.getsize(path) < Common.config["i_s"]: Common.modifyLastDownloadStatus("Downloaded File >{}< is too small, will ignore it".format(path)) - os.remove(path) - continue - Common.encodeQueue.put(path) + else: + Common.encodeQueue.put(path) Common.api.updRoomInfo(True) @@ -68,8 +65,9 @@ def upload(): Common.uploadVideo(i) except Exception as e: Common.appendError(e.__str__()) - time.sleep(120) continue + finally: + time.sleep(120) i = Common.uploadQueue.get() Common.appendUploadStatus("Upload Daemon Quiting") @@ -127,9 +125,8 @@ def run(): Common.api.updRoomInfo() except Exception as e: Common.appendError(e.__str__()) - time.sleep(2) - continue - time.sleep(0.5) + finally: + time.sleep(1) else: try: Common.api.updRoomInfo() From 113c8f2a5304421cfdcc6d39de9c05a5036b1599 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 9 Apr 2020 17:14:35 +0800 Subject: [PATCH 47/70] TEST4 --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index d47d502..acc37a6 100644 --- a/Common.py +++ b/Common.py @@ -317,7 +317,7 @@ class downloader(XiGuaLiveApi): _prev_status = self.isLive doClean() _result = super(downloader, self).updRoomInfo(force) - if _prev_status != self.isLive: + if _prev_status != self.isLive and _prev_status: resetDelay() if _result: broadcaster = self.broadcaster From 1cc824d6242dcdb549991aaad4d4b1a97b050cfb Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 9 Apr 2020 17:19:48 +0800 Subject: [PATCH 48/70] TEST5 --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index acc37a6..0be2d45 100644 --- a/Common.py +++ b/Common.py @@ -317,7 +317,7 @@ class downloader(XiGuaLiveApi): _prev_status = self.isLive doClean() _result = super(downloader, self).updRoomInfo(force) - if _prev_status != self.isLive and _prev_status: + if _prev_status != self.isLive and not self.isLive: resetDelay() if _result: broadcaster = self.broadcaster From c31e3a8106f7600fc1b52a320ca97178df8acf08 Mon Sep 17 00:00:00 2001 From: Jerry-Lubo-Server <792602257@qq.com> Date: Thu, 9 Apr 2020 23:53:07 +0800 Subject: [PATCH 49/70] =?UTF-8?q?=E5=BF=98=E8=AE=B0=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liveDownloader.py | 1 + 1 file changed, 1 insertion(+) diff --git a/liveDownloader.py b/liveDownloader.py index 1d577f0..51b562f 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -33,6 +33,7 @@ def download(): "Downloading >{}< @ {:.2f}%".format(path, 100.0 * _size / Common.config["p_s"])) if _size > Common.config["p_s"]: Common.modifyLastDownloadStatus("Download >{}< Exceed MaxSize".format(path)) + break Common.modifyLastDownloadStatus("Download >{}< Finished".format(path)) except Exception as e: Common.appendError("Download >{}< With Exception {}".format(path, e.__str__())) From 3b7943ca23fb697e21c8c457bc0a5d88b63abe74 Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Sat, 11 Apr 2020 11:48:17 +0800 Subject: [PATCH 50/70] TEST7 --- api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api.py b/api.py index 751a3cd..e938bb4 100644 --- a/api.py +++ b/api.py @@ -207,7 +207,7 @@ class XiGuaLiveApi: return self.isLive def _getRoomInfo(self, force=False): - if self.roomID == 0: + if self.roomID == 0 or not self.roomID: self.isLive = False return False if (self._updRoomAt + timedelta(minutes=3) > datetime.now()) and not force: From b38431bf4c3e7b69cc25ecdd26261df4a3d970e7 Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Sun, 12 Apr 2020 20:37:33 +0800 Subject: [PATCH 51/70] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B6=85=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api.py b/api.py index e938bb4..e351cd1 100644 --- a/api.py +++ b/api.py @@ -76,6 +76,8 @@ class XiGuaLiveApi: self.roomPopularity = _data["data"]["popularity"] def getJson(self, url, **kwargs): + if "timeout" not in kwargs: + kwargs["timeout"] = 10 try: p = self.s.get(url, **kwargs) except Exception as e: From df4c3a34b197c6cb1e147275e0cb35d9d8683e52 Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Sun, 12 Apr 2020 20:38:13 +0800 Subject: [PATCH 52/70] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B6=85=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/api.py b/api.py index e351cd1..4df0684 100644 --- a/api.py +++ b/api.py @@ -99,6 +99,8 @@ class XiGuaLiveApi: return None def postJson(self, url, data, **kwargs): + if "timeout" not in kwargs: + kwargs["timeout"] = 10 try: p = self.s.post(url, data, **kwargs) except Exception as e: From 47baa8b2e482fdaecf5a10627f0071b0e57bc08e Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 14 Apr 2020 14:03:13 +0800 Subject: [PATCH 53/70] USE SEND_FILE INSTEAD OF blablabla --- WebMain.py | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/WebMain.py b/WebMain.py index 9139aa7..8468ee7 100644 --- a/WebMain.py +++ b/WebMain.py @@ -2,7 +2,7 @@ import os from glob import glob from time import sleep from flask_cors import CORS -from flask import Flask, jsonify, request, redirect, render_template, Response +from flask import Flask, jsonify, request, render_template, Response, send_file import Common import threading from liveDownloader import run as RUN @@ -163,30 +163,10 @@ def fileIndex(): @app.route("/files/download/", methods=["GET"]) def fileDownload(path): - def generate(file, offset=0): - with open(file, "rb") as f: - f.seek(offset) - for row in f: - yield row if not (".mp4" in path or ".flv" in path): return Response(status=404) if os.path.exists(path): - if "RANGE" in request.headers: - offset = int(request.headers["RANGE"].replace("=", "-").split("-")[1].strip()) - code = 206 - else: - offset = 0 - code = 200 - return Response(generate(path, offset), - status=code, - mimetype='application/octet-stream', - headers={ - "Content-Length": os.path.getsize(path), - "Content-Range": "bytes {}-{}/{}".format(offset, os.path.getsize(path) - 1, - os.path.getsize(path)), - "Accept-Ranges": "bytes", - "Range": "bytes", - }) + return send_file(path, as_attachment=True) else: return Response(status=404) From 28a62ae6c3c068df6156ee97d5bbc40df849b22b Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Thu, 23 Apr 2020 20:55:25 +0800 Subject: [PATCH 54/70] =?UTF-8?q?=E8=A5=BF=E7=93=9C=E5=8F=88=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Struct/User.py | 8 ++++++-- api.py | 15 +++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Struct/User.py b/Struct/User.py index 87c2c42..4db684c 100644 --- a/Struct/User.py +++ b/Struct/User.py @@ -23,13 +23,17 @@ class User: self.type = json["extra"]["user_room_auth_status"]["user_type"] self.block = json["extra"]["user_room_auth_status"]["is_block"] self.mute = json["extra"]["user_room_auth_status"]["is_silence"] - elif "user_info" in json and json["user_info"] is not None: + if "user_info" in json and json["user_info"] is not None: self.ID = json['user_info']['user_id'] self.name = json['user_info']['name'] - elif "anchor" in json and json["anchor"] is not None: + if "anchor" in json and json["anchor"] is not None: if "user_info" in json["anchor"] and json["anchor"]['user_info'] is not None: self.ID = json["anchor"]['user_info']['user_id'] self.name = json["anchor"]['user_info']['name'] + if "user_id" in json: + self.ID = json["user_id"] + if "user_name" in json: + self.name = json["user_name"] if self.type is None: self.type = 0 if isinstance(self.level, str): diff --git a/api.py b/api.py index 4df0684..c8e9639 100644 --- a/api.py +++ b/api.py @@ -162,16 +162,19 @@ class XiGuaLiveApi: for i in d["data"]: if self.broadcaster is not None: break - if i["block_type"] != 0: + if i["block_type"] != 2: continue if "cells" not in i or len(i["cells"]) == 0: break for _j in i["cells"]: - _user = User(_j) - if self._checkUsernameIsMatched(_user): - self.isValidUser = True - self.broadcaster = _user - break + if "room" in _j: + _user = User(_j["room"]) + self.roomID = _j["room"]["room_id"] + self.isLive = _j["room"]["is_living"] + if self._checkUsernameIsMatched(_user): + self.isValidUser = True + self.broadcaster = _user + break self._updRoomAt = datetime.now() return self._updateUserInfo() From c8d8ba843543678409a40791311d00d97336b09e Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Fri, 24 Apr 2020 20:23:03 +0800 Subject: [PATCH 55/70] =?UTF-8?q?=E8=A5=BF=E7=93=9C=E5=8F=88=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E4=BA=86(=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/api.py b/api.py index c8e9639..714b011 100644 --- a/api.py +++ b/api.py @@ -1,7 +1,4 @@ # coding=utf-8 -import json -import sys -import random from Struct.User import User import requests @@ -10,18 +7,19 @@ from datetime import datetime, timedelta DEBUG = False COMMON_GET_PARAM = ( - "&iid=96159232732&device_id=55714661189&channel=xiaomi&aid=32&app_name=video_article&version_code=816" - "&version_name=8.1.6&device_platform=android&ab_version=941090,785218,668858,1046292,1073579,830454,956074,929436," - "797199,1135476,1179370,994679,959010,900042,1113833,668854,1193963,901277,1043330,1038721,994822,1002058,1230687," - "1189797,1143356,1143441,1143501,1143698,1143713,1371009,1243997,1392586,1395695,1395486,1398858,668852,668856," - "668853,1186421,668851,668859,999124,668855,1039075&device_type=MI+8+SE&device_brand=Xiaomi&language=zh" - "&os_api=28&os_version=9&openudid=70d6668d41512c39&manifest_version_code=412&update_version_code=81606" - "&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1290000" + "&iid=96159232732&device_id=55714661189&channel=xiaomi&aid=32&app_name=video_article&version_code=844" + "&version_name=8.4.4&device_platform=android&ab_version=668855,1640207,1652557,1143698,1043330,1143713," + "1477978,1189797,1635895,1631832,994822,900042,956074,1143356,1046292,1481027,929436,994679,1419059," + "1073579,668854,1143441,668852,668853,941090,668858,668851,668859,668856," + "1639440,1630487&device_type=MI+8+SE&device_brand=Xiaomi&language=zh" + "&os_api=28&os_version=9&openudid=70d6668d41512c39&manifest_version_code=444&update_version_code=84407" + "&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1.53.0.5" "&cdid=ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d&oaid=a625f466e0975d42") SEARCH_USER_API = ( - "https://security.snssdk.com/video/app/search/live/?format=json&search_sug=0&forum=0&m_tab=live&is_native_req=0" - "&offset=0&from=live&en_qc=1&pd=xigua_live&ssmix=a{COMMON}&keyword={keyword}") -USER_INFO_API = "https://is.snssdk.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" + "https://search-hl.ixigua.com/video/app/search/search_content/?format=json" + "&fss=&keyword_type=input&offset=0&count=10&search_sug=0&forum=0&is_native_req=0" + "&search_start_time={TIMESTAMP:.0f}&from=live&en_qc=1&pd=xigua_live&ssmix=a{COMMON}&keyword={keyword}") +USER_INFO_API = "https://api3-normal-c-hl.ixigua.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" ROOM_INFO_API = "https://webcast3.ixigua.com/webcast/room/enter/?room_id={roomId}&pack_level=4{COMMON}" COMMON_HEADERS = { "sdk-version": '1', From e0736f1658f616f50113159eb35aa854b2da0aa8 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 28 May 2020 10:20:06 +0800 Subject: [PATCH 56/70] =?UTF-8?q?=E4=BB=85=E4=B8=8B=E8=BD=BD=E6=97=B6?= =?UTF-8?q?=E6=97=A0=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liveDownloader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liveDownloader.py b/liveDownloader.py index 51b562f..54ddbf4 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -31,7 +31,7 @@ def download(): _size += len(T) Common.modifyLastDownloadStatus( "Downloading >{}< @ {:.2f}%".format(path, 100.0 * _size / Common.config["p_s"])) - if _size > Common.config["p_s"]: + if _size > Common.config["p_s"] and not Common.config["dlO"]: Common.modifyLastDownloadStatus("Download >{}< Exceed MaxSize".format(path)) break Common.modifyLastDownloadStatus("Download >{}< Finished".format(path)) From 7beddaf91eba10e4f6b5eee933bf069a1611f746 Mon Sep 17 00:00:00 2001 From: JerryYan <792602257@qq.com> Date: Thu, 2 Jul 2020 22:01:39 +0800 Subject: [PATCH 57/70] =?UTF-8?q?=E6=88=90=E5=8A=9F=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=E7=AB=8B=E5=88=BB=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/api.py b/api.py index 714b011..b5c76d3 100644 --- a/api.py +++ b/api.py @@ -209,6 +209,7 @@ class XiGuaLiveApi: self._rawRoomInfo = d["user_info"]['live_info'] if self.isLive: self.roomID = self._rawRoomInfo['room_id'] + return self._getRoomInfo(True) return self.isLive def _getRoomInfo(self, force=False): From 5cf4ab2fc19ad22e9fc9b8d3f01b3e00bee6d031 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 6 Jul 2020 12:03:47 +0800 Subject: [PATCH 58/70] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Common.py b/Common.py index 0be2d45..e825ec1 100644 --- a/Common.py +++ b/Common.py @@ -299,12 +299,21 @@ def appendError(obj): def loginBilibili(force=False): if config["dlO"] is False or forceNotUpload is False: global loginTime + global b if getTimeDelta(datetime.now(), loginTime) < 86400 * 10 and not force: return False - res = b.login(config["b_u"], config["b_p"]) - loginTime = datetime.now() - appendOperation("登陆账号,结果为:[{}]".format(res)) - return res + if os.path.exists('cookie'): + try: + with open('cookie', 'r', encoding='utf8') as f: + _cookie = f.read(4096) + b = Bilibili(_cookie) + loginTime = datetime.now() + appendOperation("Cookie 登录") + return True + except Exception as e: + appendError(e) + appendOperation("Cookie 登录失败") + return False else: appendOperation("设置了不上传,所以不会登陆") From b72437758f7a93e1088c70af8ab3cca22f79249c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 22 Nov 2020 14:31:17 +0800 Subject: [PATCH 59/70] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=EF=BC=888.4.4->9.1.8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 59 ++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 22 deletions(-) diff --git a/api.py b/api.py index b5c76d3..e8525e4 100644 --- a/api.py +++ b/api.py @@ -7,23 +7,29 @@ from datetime import datetime, timedelta DEBUG = False COMMON_GET_PARAM = ( - "&iid=96159232732&device_id=55714661189&channel=xiaomi&aid=32&app_name=video_article&version_code=844" - "&version_name=8.4.4&device_platform=android&ab_version=668855,1640207,1652557,1143698,1043330,1143713," - "1477978,1189797,1635895,1631832,994822,900042,956074,1143356,1046292,1481027,929436,994679,1419059," - "1073579,668854,1143441,668852,668853,941090,668858,668851,668859,668856," - "1639440,1630487&device_type=MI+8+SE&device_brand=Xiaomi&language=zh" - "&os_api=28&os_version=9&openudid=70d6668d41512c39&manifest_version_code=444&update_version_code=84407" - "&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1.53.0.5" + "&iid=844059075938396&device_id=71008241150&channel=xiaomi&aid=32&app_name=video_article&version_code=918" + "&version_name=9.1.8&device_platform=android&ab_version=668852,668853,668858,668851,668859,668856,668855," + "668854,1477978,994679,2186472,1477978,1189797,1635895,1631832,994822,900042,956074,1143356,1046292,1481027," + "929436,994679,1419059,1073579,668854,1143441,668852,668853,941090,668858,668851,668859,668856,1639440,1630487&" + "device_typeMI+9&device_type=MI 9&device_brand=Xiaomi&language=zh" + "&os_api=29&os_version=10&openudid=4aeb1e2b627697be&manifest_version_code=518&update_version_code=91806" + "&_rticket={TIMESTAMP:.0f}&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1790001" + "&rom_version=miui_V12_V12.0.5.0.QFACNXM&oaid=693ea85657ef38ca" "&cdid=ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d&oaid=a625f466e0975d42") SEARCH_USER_API = ( "https://search-hl.ixigua.com/video/app/search/search_content/?format=json" - "&fss=&keyword_type=input&offset=0&count=10&search_sug=0&forum=0&is_native_req=0" + "&fss=search_subtab_switch&target_channel=video_search&keyword_type=search_subtab_switch&offset=0&count=10" + "&search_sug=1&forum=1&is_native_req=0&m_tab=video&pd=user&tab=user&_s_tma=SEARCH_STANDARD.list.fe_get_data" + '&_s_page_sub_route=/&_s_ec={{"filterDataType":[],"reserveFilterBar":true}}&__use_xigua_native_bridge_fetch__=1' + '&ab_param={{"is_show_filter_feature": 1, "is_hit_new_ui": 1}}' "&search_start_time={TIMESTAMP:.0f}&from=live&en_qc=1&pd=xigua_live&ssmix=a{COMMON}&keyword={keyword}") -USER_INFO_API = "https://api3-normal-c-hl.ixigua.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" -ROOM_INFO_API = "https://webcast3.ixigua.com/webcast/room/enter/?room_id={roomId}&pack_level=4{COMMON}" +USER_INFO_API = "https://api100-quic-c-hl.ixigua.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" +ROOM_INFO_API = ("https://webcast3.ixigua.com/webcast/room/enter/?room_id={roomId}&webcast_sdk_version=1350" + "&webcast_language=zh&webcast_locale=zh_CN&pack_level=4{COMMON}") COMMON_HEADERS = { - "sdk-version": '1', - "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9) VideoArticle/8.1.6 cronet/TTNetVersion:b97574c0 2019-09-24", + "sdk-version": '2', + "passport-sdk-version": "19", + "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9) VideoArticle/9.1.8 cronet/TTNetVersion:b97574c0 2020-09-24", "Accept-Encoding": "gzip, deflate" } @@ -40,6 +46,7 @@ class XiGuaLiveApi: name = "永恒de草薙" self.broadcaster = None self.isValidUser = False + self.name = str(name) if type(name) == User: self.broadcaster = name self.name = name.name @@ -53,12 +60,13 @@ class XiGuaLiveApi: self._rawRoomInfo = {} self.roomID = 0 self.roomPopularity = 0 - self._cursor = "0" self.lottery = None self.s = requests.session() self.s.headers.update(COMMON_HEADERS) self._updRoomAt = datetime.fromtimestamp(0) self.updRoomInfo() + self._ext = "" + self._cursor = "0" def _updateRoomPopularity(self, _data): """ @@ -100,7 +108,7 @@ class XiGuaLiveApi: if "timeout" not in kwargs: kwargs["timeout"] = 10 try: - p = self.s.post(url, data, **kwargs) + p = self.s.post(url, data=data, **kwargs) except Exception as e: print("网络请求失败") if DEBUG: @@ -142,20 +150,23 @@ class XiGuaLiveApi: compare = self.broadcaster if self.name is None or compare is None: return False - return self.name == compare.__str__() or compare.__str__() in self.name or self.name in compare.__str__() + return self.name == compare.__str__() or compare.__repr__() in self.name or self.name in compare.__repr__() def _forceSearchUser(self): """ 搜索主播名 :return: """ - _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "keyword": self.name} - _url = SEARCH_USER_API.format_map(_formatData).format_map(_formatData) + _formatData = {"TIMESTAMP": time.time() * 1000, "keyword": self.name} + _COMMON = COMMON_GET_PARAM.format_map(_formatData) + _formatData['COMMON'] = _COMMON + _url = SEARCH_USER_API.format_map(_formatData) d = self.getJson(_url) if d is None: print("搜索接口请求失败") return False self.broadcaster = None + self.isValidUser = False if "data" in d and d["data"] is not None: for i in d["data"]: if self.broadcaster is not None: @@ -181,11 +192,13 @@ class XiGuaLiveApi: 获取用户信息 :return: """ - self.isValidUser = False if self.broadcaster is None: + self.isValidUser = False return False - _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "userId": self.broadcaster.ID} - _url = USER_INFO_API.format_map(_formatData).format_map(_formatData) + _formatData = {"TIMESTAMP": time.time() * 1000, "userId": self.broadcaster.ID} + _COMMON = COMMON_GET_PARAM.format_map(_formatData) + _formatData['COMMON'] = _COMMON + _url = USER_INFO_API.format_map(_formatData) d = self.getJson(_url) if d is None: print("获取用户信息失败") @@ -218,8 +231,10 @@ class XiGuaLiveApi: return False if (self._updRoomAt + timedelta(minutes=3) > datetime.now()) and not force: return self.isLive - _formatData = {"COMMON": COMMON_GET_PARAM, "TIMESTAMP": time.time() * 1000, "roomId": self.roomID} - _url = ROOM_INFO_API.format_map(_formatData).format_map(_formatData) + _formatData = {"TIMESTAMP": time.time() * 1000, "roomId": self.roomID} + _COMMON = COMMON_GET_PARAM.format_map(_formatData) + _formatData['COMMON'] = _COMMON + _url = ROOM_INFO_API.format_map(_formatData) d = self.getJson(_url) if d is None: print("获取房间信息接口请求失败") From 2281f872bf9554372e3184038dff9bddac01273a Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Wed, 2 Dec 2020 08:11:16 +0000 Subject: [PATCH 60/70] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- liveDownloader.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Common.py b/Common.py index e825ec1..36610f9 100644 --- a/Common.py +++ b/Common.py @@ -328,8 +328,8 @@ class downloader(XiGuaLiveApi): _result = super(downloader, self).updRoomInfo(force) if _prev_status != self.isLive and not self.isLive: resetDelay() + broadcaster = self.broadcaster if _result: - broadcaster = self.broadcaster if self.isLive: self.updPlayList() else: diff --git a/liveDownloader.py b/liveDownloader.py index 54ddbf4..a99d9c0 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -5,9 +5,10 @@ import Common import os import requests +session = requests.session() + def download(): - session = requests.session() while Common.api.isLive and not Common.forceNotDownload: if not Common.streamUrl: Common.appendError("Download with No StreamUrl Specific") @@ -68,7 +69,7 @@ def upload(): Common.appendError(e.__str__()) continue finally: - time.sleep(120) + time.sleep(90) i = Common.uploadQueue.get() Common.appendUploadStatus("Upload Daemon Quiting") From ecdcde92309e7f0fdba19c3eaa87473649c31f2c Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 5 Dec 2020 15:57:58 +0800 Subject: [PATCH 61/70] =?UTF-8?q?=E4=BE=8B=E8=A1=8C=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=EF=BC=889.1.8->9.2.6=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/api.py b/api.py index e8525e4..324332b 100644 --- a/api.py +++ b/api.py @@ -7,13 +7,13 @@ from datetime import datetime, timedelta DEBUG = False COMMON_GET_PARAM = ( - "&iid=844059075938396&device_id=71008241150&channel=xiaomi&aid=32&app_name=video_article&version_code=918" - "&version_name=9.1.8&device_platform=android&ab_version=668852,668853,668858,668851,668859,668856,668855," + "&iid=844059075938396&device_id=71008241150&channel=xiaomi&aid=32&app_name=video_article&version_code=926" + "&version_name=9.2.6&device_platform=android&ab_version=668852,668853,668858,668851,668859,668856,668855," "668854,1477978,994679,2186472,1477978,1189797,1635895,1631832,994822,900042,956074,1143356,1046292,1481027," "929436,994679,1419059,1073579,668854,1143441,668852,668853,941090,668858,668851,668859,668856,1639440,1630487&" "device_typeMI+9&device_type=MI 9&device_brand=Xiaomi&language=zh" - "&os_api=29&os_version=10&openudid=4aeb1e2b627697be&manifest_version_code=518&update_version_code=91806" - "&_rticket={TIMESTAMP:.0f}&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1790001" + "&os_api=29&os_version=10&openudid=4aeb1e2b627697be&manifest_version_code=518&update_version_code=92609" + "&_rticket={TIMESTAMP:.0f}&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1830001" "&rom_version=miui_V12_V12.0.5.0.QFACNXM&oaid=693ea85657ef38ca" "&cdid=ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d&oaid=a625f466e0975d42") SEARCH_USER_API = ( @@ -24,12 +24,14 @@ SEARCH_USER_API = ( '&ab_param={{"is_show_filter_feature": 1, "is_hit_new_ui": 1}}' "&search_start_time={TIMESTAMP:.0f}&from=live&en_qc=1&pd=xigua_live&ssmix=a{COMMON}&keyword={keyword}") USER_INFO_API = "https://api100-quic-c-hl.ixigua.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" -ROOM_INFO_API = ("https://webcast3.ixigua.com/webcast/room/enter/?room_id={roomId}&webcast_sdk_version=1350" +ROOM_INFO_API = ("https://webcast3-normal-c-hl.ixigua.com/webcast/room/enter/?room_id={roomId}&webcast_sdk_version=1350" "&webcast_language=zh&webcast_locale=zh_CN&pack_level=4{COMMON}") COMMON_HEADERS = { "sdk-version": '2', "passport-sdk-version": "19", - "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 9) VideoArticle/9.1.8 cronet/TTNetVersion:b97574c0 2020-09-24", + "X-SS-DP": "32", + "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10) VideoArticle/9.2.6 cronet/TTNetVersion:828f6f3c 2020-09-06 " + "QuicVersion:7aee791b 2020-06-05", "Accept-Encoding": "gzip, deflate" } @@ -59,8 +61,6 @@ class XiGuaLiveApi: self.isLive = False self._rawRoomInfo = {} self.roomID = 0 - self.roomPopularity = 0 - self.lottery = None self.s = requests.session() self.s.headers.update(COMMON_HEADERS) self._updRoomAt = datetime.fromtimestamp(0) @@ -68,19 +68,6 @@ class XiGuaLiveApi: self._ext = "" self._cursor = "0" - def _updateRoomPopularity(self, _data): - """ - 更新房间人气的方法 - Update Room Popularity - :param _data: Received Message - """ - if "extra" in _data: - if "member_count" in _data["extra"] and _data["extra"]["member_count"] > 0: - self.roomPopularity = _data["extra"]["member_count"] - if "data" in _data: - if "popularity" in _data["data"]: - self.roomPopularity = _data["data"]["popularity"] - def getJson(self, url, **kwargs): if "timeout" not in kwargs: kwargs["timeout"] = 10 @@ -245,7 +232,6 @@ class XiGuaLiveApi: self._rawRoomInfo = d["data"] self.isLive = d["data"]["status"] == 2 self._updRoomAt = datetime.now() - self._updateRoomPopularity(d) return self.isLive def updRoomInfo(self, force=False): From 9e1b725c0cdb1afab345734bbe3adff8db2800d3 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 6 Dec 2020 11:14:10 +0800 Subject: [PATCH 62/70] =?UTF-8?q?URL=E5=8F=82=E6=95=B0=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/api.py b/api.py index 324332b..9d7d039 100644 --- a/api.py +++ b/api.py @@ -6,16 +6,42 @@ import time from datetime import datetime, timedelta DEBUG = False +# 自己抓的自己设备的参数,建议开发者自己抓一个长期使用 +# 如果有大佬破解初次激活设备时的数据也行,可以自己生成一堆用 +CUSTOM_INFO = { + 'iid': "96159232732", + 'device_id': "55714661189", + 'cdid': "ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d", + 'openudid': "70d6668d41512c39", + 'aid': "32", + 'channel': "xiaomi", + 'device_brand': "Xiaomi", + 'device_type': "MI+8+SE", + 'os_api': "28", + 'os_version': "9", + 'rom_version': "miui_V12_V12.0.2.0.QEBCNXM", +} +VERSION_INFO = { + 'app_name': "video_article", + 'version_code': "926", + 'version_code_full': "92609", + 'version_name': "9.2.6", + 'ab_version': "941090,785218,668858,1046292,1073579,830454,956074,929436,797199,1135476,1179370,994679,959010," + "900042,1113833,668854,1193963,901277,1043330,1038721,994822,1002058,1230687,1189797,1143356,1143441," + "1143501,1143698,1143713,1371009,1243997,1392586,1395695,1395486,1398858,668852,668856,668853," + "1186421,668851,668859,999124,668855,1039075", + 'manifest_version_code': "518", + 'tma_jssdk_version': "1830001", + # 一个定值,几个版本换设备都没变过 + 'oaid': "a625f466e0975d42", +} COMMON_GET_PARAM = ( - "&iid=844059075938396&device_id=71008241150&channel=xiaomi&aid=32&app_name=video_article&version_code=926" - "&version_name=9.2.6&device_platform=android&ab_version=668852,668853,668858,668851,668859,668856,668855," - "668854,1477978,994679,2186472,1477978,1189797,1635895,1631832,994822,900042,956074,1143356,1046292,1481027," - "929436,994679,1419059,1073579,668854,1143441,668852,668853,941090,668858,668851,668859,668856,1639440,1630487&" - "device_typeMI+9&device_type=MI 9&device_brand=Xiaomi&language=zh" - "&os_api=29&os_version=10&openudid=4aeb1e2b627697be&manifest_version_code=518&update_version_code=92609" - "&_rticket={TIMESTAMP:.0f}&_rticket={TIMESTAMP:.0f}&cdid_ts={TIMESTAMP:.0f}&fp=a_fake_fp&tma_jssdk_version=1830001" - "&rom_version=miui_V12_V12.0.5.0.QFACNXM&oaid=693ea85657ef38ca" - "&cdid=ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d&oaid=a625f466e0975d42") + "&iid={iid}&device_id={device_id}&channel={channel}&aid={aid}&app_name={app_name}&version_code={version_code}&" + "version_name={version_name}&device_platform=android&ab_version={ab_version}&device_type={device_type}&" + "device_brand={device_brand}&language=zh&os_api={os_api}&os_version={os_version}&openudid={openudid}&fp=a_fake_fp&" + "manifest_version_code={manifest_version_code}&update_version_code={version_code_full}&_rticket={{TIMESTAMP:.0f}}&" + "_rticket={{TIMESTAMP:.0f}}&cdid_ts={{TIMESTAMP:.0f}}&tma_jssdk_version={tma_jssdk_version}&" + "rom_version={rom_version}&oaid={oaid}&cdid={cdid}").format_map({**CUSTOM_INFO, **VERSION_INFO}) SEARCH_USER_API = ( "https://search-hl.ixigua.com/video/app/search/search_content/?format=json" "&fss=search_subtab_switch&target_channel=video_search&keyword_type=search_subtab_switch&offset=0&count=10" @@ -32,6 +58,7 @@ COMMON_HEADERS = { "X-SS-DP": "32", "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10) VideoArticle/9.2.6 cronet/TTNetVersion:828f6f3c 2020-09-06 " "QuicVersion:7aee791b 2020-06-05", + # 最好别加br,requests库好像自带没法解析 "Accept-Encoding": "gzip, deflate" } From 302b4d4596972048c273df15e1e107409e501d41 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sun, 6 Dec 2020 16:09:44 +0800 Subject: [PATCH 63/70] =?UTF-8?q?URL=E6=A0=BC=E5=BC=8F=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/api.py b/api.py index 9d7d039..dde4341 100644 --- a/api.py +++ b/api.py @@ -13,7 +13,7 @@ CUSTOM_INFO = { 'device_id': "55714661189", 'cdid': "ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d", 'openudid': "70d6668d41512c39", - 'aid': "32", + # 'aid': "32", # 又是一个不变的值 'channel': "xiaomi", 'device_brand': "Xiaomi", 'device_type': "MI+8+SE", @@ -32,16 +32,15 @@ VERSION_INFO = { "1186421,668851,668859,999124,668855,1039075", 'manifest_version_code': "518", 'tma_jssdk_version': "1830001", - # 一个定值,几个版本换设备都没变过 - 'oaid': "a625f466e0975d42", + # 'oaid': "a625f466e0975d42", # 一个定值,几个版本换设备都没变过 } COMMON_GET_PARAM = ( - "&iid={iid}&device_id={device_id}&channel={channel}&aid={aid}&app_name={app_name}&version_code={version_code}&" + "&iid={iid}&device_id={device_id}&channel={channel}&aid=32&app_name={app_name}&version_code={version_code}&" "version_name={version_name}&device_platform=android&ab_version={ab_version}&device_type={device_type}&" "device_brand={device_brand}&language=zh&os_api={os_api}&os_version={os_version}&openudid={openudid}&fp=a_fake_fp&" "manifest_version_code={manifest_version_code}&update_version_code={version_code_full}&_rticket={{TIMESTAMP:.0f}}&" "_rticket={{TIMESTAMP:.0f}}&cdid_ts={{TIMESTAMP:.0f}}&tma_jssdk_version={tma_jssdk_version}&" - "rom_version={rom_version}&oaid={oaid}&cdid={cdid}").format_map({**CUSTOM_INFO, **VERSION_INFO}) + "rom_version={rom_version}&cdid={cdid}&oaid=a625f466e0975d42").format_map({**VERSION_INFO, **CUSTOM_INFO}) SEARCH_USER_API = ( "https://search-hl.ixigua.com/video/app/search/search_content/?format=json" "&fss=search_subtab_switch&target_channel=video_search&keyword_type=search_subtab_switch&offset=0&count=10" From 0b4068b9e9ceba64c7b84ca4d65ae0c9e3f6a8e9 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 12 Jan 2021 09:36:51 +0800 Subject: [PATCH 64/70] =?UTF-8?q?=E9=81=BF=E5=85=8D=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E4=BA=86=E6=8D=A2=E8=A1=8C=E5=AF=BC=E8=87=B4requests=E8=A3=82?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Common.py b/Common.py index 36610f9..20856b4 100644 --- a/Common.py +++ b/Common.py @@ -305,7 +305,7 @@ def loginBilibili(force=False): if os.path.exists('cookie'): try: with open('cookie', 'r', encoding='utf8') as f: - _cookie = f.read(4096) + _cookie = f.readline().strip() b = Bilibili(_cookie) loginTime = datetime.now() appendOperation("Cookie 登录") From 30a91a38f9a5a7cd5c4528db888f8c40ab6bb06a Mon Sep 17 00:00:00 2001 From: root Date: Tue, 12 Jan 2021 09:43:09 +0800 Subject: [PATCH 65/70] =?UTF-8?q?=E7=BB=86=E8=8A=82=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 2 +- liveDownloader.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Common.py b/Common.py index e825ec1..36610f9 100644 --- a/Common.py +++ b/Common.py @@ -328,8 +328,8 @@ class downloader(XiGuaLiveApi): _result = super(downloader, self).updRoomInfo(force) if _prev_status != self.isLive and not self.isLive: resetDelay() + broadcaster = self.broadcaster if _result: - broadcaster = self.broadcaster if self.isLive: self.updPlayList() else: diff --git a/liveDownloader.py b/liveDownloader.py index 54ddbf4..a99d9c0 100644 --- a/liveDownloader.py +++ b/liveDownloader.py @@ -5,9 +5,10 @@ import Common import os import requests +session = requests.session() + def download(): - session = requests.session() while Common.api.isLive and not Common.forceNotDownload: if not Common.streamUrl: Common.appendError("Download with No StreamUrl Specific") @@ -68,7 +69,7 @@ def upload(): Common.appendError(e.__str__()) continue finally: - time.sleep(120) + time.sleep(90) i = Common.uploadQueue.get() Common.appendUploadStatus("Upload Daemon Quiting") From 734a7204f874eacf5ca7efd22524bd07d08a38ed Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 30 Jan 2021 19:54:40 +0800 Subject: [PATCH 66/70] =?UTF-8?q?=E9=A2=9D=E5=A4=96=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Common.py | 3 + Struct/Chat.py | 40 +++++++ Struct/Digg.py | 0 Struct/Gift.py | 72 +++++++++++++ Struct/Lottery.py | 71 +++++++++++++ Struct/LuckyUser.py | 19 ++++ Struct/MemberMsg.py | 36 +++++++ Struct/User.py | 36 +++++-- api.py | 250 +++++++++++++++++++++++++++++++++++++++++--- 9 files changed, 502 insertions(+), 25 deletions(-) create mode 100644 Struct/Chat.py create mode 100644 Struct/Digg.py create mode 100644 Struct/Gift.py create mode 100644 Struct/Lottery.py create mode 100644 Struct/LuckyUser.py create mode 100644 Struct/MemberMsg.py diff --git a/Common.py b/Common.py index 20856b4..14092a5 100644 --- a/Common.py +++ b/Common.py @@ -321,6 +321,9 @@ def loginBilibili(force=False): class downloader(XiGuaLiveApi): playlist = None + def _checkUsernameIsMatched(self, compare=None): + return True + def updRoomInfo(self, force=False): global broadcaster _prev_status = self.isLive diff --git a/Struct/Chat.py b/Struct/Chat.py new file mode 100644 index 0000000..b226dce --- /dev/null +++ b/Struct/Chat.py @@ -0,0 +1,40 @@ +from .User import User +from .Lottery import Lottery +from XiguaMessage_pb2 import ChatMessage + +class Chat: + content = "" + user = None + filterString = ["", ] + isFiltered = False + + def __init__(self, json=None, lottery: Lottery = None): + if lottery: + self.filterString.append(lottery.content) + if json: + if type(json) == bytes: + self.parsePb(json) + else: + self.parse(json) + + def parsePb(self, raw): + _message = ChatMessage() + _message.ParseFromString(raw) + self.user = User(_message.user) + self.content = _message.content + if self.content in self.filterString: + self.isFiltered = True + + def parse(self, json): + self.user = User(json) + if "extra" in json: + if "content" in json["extra"]: + self.content = json["extra"]['content'] + if self.content in self.filterString: + self.isFiltered = True + + def __str__(self): + return "{} : {}".format(self.user, self.content) + + def __unicode__(self): + return self.__str__() diff --git a/Struct/Digg.py b/Struct/Digg.py new file mode 100644 index 0000000..e69de29 diff --git a/Struct/Gift.py b/Struct/Gift.py new file mode 100644 index 0000000..e154c99 --- /dev/null +++ b/Struct/Gift.py @@ -0,0 +1,72 @@ +import requests +from .User import User +from XiguaMessage_pb2 import GiftMessage + + +class Gift: + giftList = {} + + def __init__(self, json=None): + self.ID = 0 + self.count = 0 + self.user = None + self.isFinished = False + self.backupName = None + if json: + if type(json) == bytes: + self.parsePb(json) + else: + self.parse(json) + + def parsePb(self, raw): + _message = GiftMessage() + _message.ParseFromString(raw) + self.user = User(_message.user) + self.ID = _message.giftId + self.count = _message.repeated + self.isFinished = _message.isFinished + self.backupName = _message.commonInfo.displayText.params.gifts.gift.name + + def parse(self, json): + self.user = User(json) + if "extra" in json and json["extra"] is not None: + if "present_info" in json["extra"] and json["extra"]['present_info'] is not None: + self.ID = int(json["extra"]['present_info']['id']) + self.count = json["extra"]['present_info']['repeat_count'] + elif "present_end_info" in json["extra"] and json["extra"]['present_end_info'] is not None: + self.ID = int(json["extra"]['present_end_info']['id']) + self.count = json["extra"]['present_end_info']['count'] + + def isAnimate(self): + if self.ID != 0 and self.ID in self.giftList: + if 'combo' in self.giftList[self.ID]: + return self.giftList[self.ID]["combo"] == False + elif 'meta' in self.giftList[self.ID] and 'combo' in self.giftList[self.ID]['meta']: + return self.giftList[self.ID]['meta']["combo"] == False + elif 'type' in self.giftList[self.ID]: + return self.giftList[self.ID]["type"] == 2 + return False + + def _getGiftName(self): + if self.ID in self.giftList: + return self.giftList[self.ID]["name"] + elif self.backupName is not None: + return self.backupName + else: + return "未知礼物[{}]".format(self.ID) + + def __str__(self): + return "{user} 送出的 {count} 个 {name}".format(user=self.user, count=self.count, name=self._getGiftName()) + + def __unicode__(self): + return self.__str__() + + def __repr__(self): + return "西瓜礼物【{}(ID:{})】".format(self._getGiftName(), self.ID) + + @classmethod + def addGift(cls, _gift): + if 'id' not in _gift: + return + _id = int(_gift["id"]) + cls.giftList[_id] = _gift diff --git a/Struct/Lottery.py b/Struct/Lottery.py new file mode 100644 index 0000000..e2d9eb8 --- /dev/null +++ b/Struct/Lottery.py @@ -0,0 +1,71 @@ +# coding=utf-8 +import requests +import time +from .LuckyUser import LuckyUser + + +class Lottery: + ID = 0 + isActive = False + content = "" + isFinished = False + luckyUsers = [] + joinedUserCount = 0 + prizeName = "" + finish = 0 + + def __init__(self, json=None): + if json: + self.parse(json) + + def parse(self, json): + if "lottery_info" in json and json["lottery_info"] is not None: + self.isActive = int(json["lottery_info"]["status"]) > 0 + self.ID = json["lottery_info"]["lottery_id"] + for i in json["lottery_info"]['conditions']: + if i['type'] != 3: + continue + self.content = i["content"] + self.joinedUserCount = int(json["lottery_info"]["candidate_num"]) + self.prizeName = json["lottery_info"]["prize_info"]["name"] + _delta = int(json["lottery_info"]["draw_time"]) - int(json["lottery_info"]["current_time"]) + self.finish = time.time()+_delta+1 + elif "extra" in json and json["extra"] is not None: + if "lottery_info" in json["extra"] and json["extra"]["lottery_info"] is not None: + return self.parse(json["extra"]) + + def update(self): + if self.isActive: + if not self.isFinished and self.finish > time.time(): + self.checkFinished() + return True + return False + + def checkFinished(self): + p = requests.get("https://i.snssdk.com/videolive/lottery/check_user_right?lottery_id={}" + "&version_code=730&device_platform=android".format( + self.ID + )) + d = p.json() + if d["base_resp"]["status_code"] != 0: + self.isActive = False + self.isFinished = False + return + self.isActive = int(d["lottery_info"]["status"]) > 0 + self.isFinished = int(d["lottery_info"]["status"]) == 2 + self.joinedUserCount = int(d["lottery_info"]["candidate_num"]) + if self.isFinished: + self.luckyUsers = [ LuckyUser(i) for i in d["lottery_info"]["lucky_users"] ] + + def __str__(self): + if self.isFinished: + ret = "恭喜以下中奖用户:\n" + for i in self.luckyUsers: + ret += "> {} {}\n".format(i,self.prizeName) + ret += "> 参与人数:{}".format(self.joinedUserCount) + return ret + elif self.isActive: + return "正在抽奖中。。。\n" \ + "> 参与人数:{}".format(self.joinedUserCount) + else: + return "抽奖已失效" diff --git a/Struct/LuckyUser.py b/Struct/LuckyUser.py new file mode 100644 index 0000000..2fb195e --- /dev/null +++ b/Struct/LuckyUser.py @@ -0,0 +1,19 @@ +from .User import User + +class LuckyUser: + + user = None + count = 0 + + def __init__(self, json=None): + if json: + self.parse(json) + + def parse(self, json): + self.user = User() + self.user.ID = json['user_id'] + self.user.name = json['user_name'] + self.count = int(json["grant_count"]) + + def __str__(self): + return "用户 {} 获得了 {} 个".format(self.user,self.count) diff --git a/Struct/MemberMsg.py b/Struct/MemberMsg.py new file mode 100644 index 0000000..2dcdeea --- /dev/null +++ b/Struct/MemberMsg.py @@ -0,0 +1,36 @@ +from .User import User + + +class MemberMsg: + type = 0 + content = "" + user = None + + def __init__(self, json=None): + if json: + self.parse(json) + + def parse(self, json): + self.user = User(json) + if "extra" in json: + if "action" in json["extra"]: + self.type = json["extra"]['action'] + elif "content" in json["extra"]: + self.content = json["extra"]['content'] + + def __str__(self): + if self.type == 3: + return "{} 被禁言了".format(self.user) + elif self.type == 4: + return "{} 被取消禁言了".format(self.user) + elif self.type == 5: + return "{} 被任命为房管".format(self.user) + elif self.type == 1: + return "{} 进入了房间".format(self.user) + else: + if self.content == "": + return "未知消息{} 关于用户 {}".format(self.type, self.user) + return self.content.format(self.user) + + def __unicode__(self): + return self.__str__() \ No newline at end of file diff --git a/Struct/User.py b/Struct/User.py index 4db684c..d58acf8 100644 --- a/Struct/User.py +++ b/Struct/User.py @@ -1,15 +1,33 @@ -class User: - ID = 0 - name = "" - brand = "" - level = 0 - type = 0 - block = False - mute = False +from XiguaUser_pb2 import User as UserPb + +class User: def __init__(self, json=None): + self.ID = 0 + self.name = "" + self.brand = "" + self.level = 0 + self.type = 0 + self.block = False + self.mute = False if json: - self.parse(json) + if type(json) == bytes: + self.parsePb(json) + elif type(json) == UserPb: + self.parseUserPb(json) + else: + self.parse(json) + + def parseUserPb(self, _user): + self.ID = _user.id + self.name = _user.nickname + self.brand = _user.fansClub.fansClub.title + self.level = _user.fansClub.fansClub.level + + def parsePb(self, raw): + _user = UserPb() + _user.ParseFromString(raw) + self.parseUserPb(_user) def parse(self, json): if "extra" in json: diff --git a/api.py b/api.py index dde4341..ab0c7bb 100644 --- a/api.py +++ b/api.py @@ -1,9 +1,15 @@ # coding=utf-8 +import sys +from Struct.MemberMsg import MemberMsg from Struct.User import User +from Struct.Gift import Gift +from Struct.Chat import Chat import requests import time from datetime import datetime, timedelta +from Xigua_pb2 import XiguaLive +from XiguaMessage_pb2 import FansClubMessage, SocialMessage DEBUG = False # 自己抓的自己设备的参数,建议开发者自己抓一个长期使用 @@ -13,7 +19,7 @@ CUSTOM_INFO = { 'device_id': "55714661189", 'cdid': "ed4295e8-5d9a-4cb9-b2a2-04009a3baa2d", 'openudid': "70d6668d41512c39", - # 'aid': "32", # 又是一个不变的值 + # 'aid': "32", # 是一个不变的值 'channel': "xiaomi", 'device_brand': "Xiaomi", 'device_type': "MI+8+SE", @@ -23,16 +29,14 @@ CUSTOM_INFO = { } VERSION_INFO = { 'app_name': "video_article", - 'version_code': "926", - 'version_code_full': "92609", - 'version_name': "9.2.6", - 'ab_version': "941090,785218,668858,1046292,1073579,830454,956074,929436,797199,1135476,1179370,994679,959010," - "900042,1113833,668854,1193963,901277,1043330,1038721,994822,1002058,1230687,1189797,1143356,1143441," - "1143501,1143698,1143713,1371009,1243997,1392586,1395695,1395486,1398858,668852,668856,668853," - "1186421,668851,668859,999124,668855,1039075", - 'manifest_version_code': "518", + 'version_code': "942", + 'version_code_full': "94214", + 'version_name': "9.4.2", + 'ab_version': "668852,668853,668858,668851,668859,668856,668855,2358970," + "668854,2393607,1477978,994679,2408463,2412359", + 'manifest_version_code': "542", 'tma_jssdk_version': "1830001", - # 'oaid': "a625f466e0975d42", # 一个定值,几个版本换设备都没变过 + 'oaid': "693ea85657ef38ca", } COMMON_GET_PARAM = ( "&iid={iid}&device_id={device_id}&channel={channel}&aid=32&app_name={app_name}&version_code={version_code}&" @@ -40,7 +44,8 @@ COMMON_GET_PARAM = ( "device_brand={device_brand}&language=zh&os_api={os_api}&os_version={os_version}&openudid={openudid}&fp=a_fake_fp&" "manifest_version_code={manifest_version_code}&update_version_code={version_code_full}&_rticket={{TIMESTAMP:.0f}}&" "_rticket={{TIMESTAMP:.0f}}&cdid_ts={{TIMESTAMP:.0f}}&tma_jssdk_version={tma_jssdk_version}&" - "rom_version={rom_version}&cdid={cdid}&oaid=a625f466e0975d42").format_map({**VERSION_INFO, **CUSTOM_INFO}) + "rom_version={rom_version}&cdid={cdid}&oaid={oaid}").format_map({**VERSION_INFO, **CUSTOM_INFO}) +WEBCAST_GET_PARAMS = "webcast_sdk_version=1350&webcast_language=zh&webcast_locale=zh_CN" SEARCH_USER_API = ( "https://search-hl.ixigua.com/video/app/search/search_content/?format=json" "&fss=search_subtab_switch&target_channel=video_search&keyword_type=search_subtab_switch&offset=0&count=10" @@ -49,15 +54,18 @@ SEARCH_USER_API = ( '&ab_param={{"is_show_filter_feature": 1, "is_hit_new_ui": 1}}' "&search_start_time={TIMESTAMP:.0f}&from=live&en_qc=1&pd=xigua_live&ssmix=a{COMMON}&keyword={keyword}") USER_INFO_API = "https://api100-quic-c-hl.ixigua.com/video/app/user/home/v7/?to_user_id={userId}{COMMON}" -ROOM_INFO_API = ("https://webcast3-normal-c-hl.ixigua.com/webcast/room/enter/?room_id={roomId}&webcast_sdk_version=1350" - "&webcast_language=zh&webcast_locale=zh_CN&pack_level=4{COMMON}") +ROOM_INFO_API = "https://webcast3-normal-c-hl.ixigua.com/webcast/room/enter/?room_id={roomId}&pack_level=4{COMMON}" +DANMAKU_GET_API = "https://webcast3-normal-c-hl.ixigua.com/webcast/im/fetch/?{WEBCAST}{COMMON}" +GIFT_DATA_API = ("https://webcast3-normal-c-hl.ixigua.com/webcast/gift/list/?room_id={roomId}&to_room_id={roomId}&" + "gift_scene=1&fetch_giftlist_from=2¤t_network_quality_info={{}}&" + "{WEBCAST}{COMMON}") COMMON_HEADERS = { "sdk-version": '2', - "passport-sdk-version": "19", + "passport-sdk-version": "21", "X-SS-DP": "32", + "x-vc-bdturing-sdk-version": "2.0.1", "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 10) VideoArticle/9.2.6 cronet/TTNetVersion:828f6f3c 2020-09-06 " "QuicVersion:7aee791b 2020-06-05", - # 最好别加br,requests库好像自带没法解析 "Accept-Encoding": "gzip, deflate" } @@ -87,6 +95,7 @@ class XiGuaLiveApi: self.isLive = False self._rawRoomInfo = {} self.roomID = 0 + self.roomPopularity = 0 self.s = requests.session() self.s.headers.update(COMMON_HEADERS) self._updRoomAt = datetime.fromtimestamp(0) @@ -94,6 +103,19 @@ class XiGuaLiveApi: self._ext = "" self._cursor = "0" + def _updateRoomPopularity(self, _data): + """ + 更新房间人气的方法 + Update Room Popularity + :param _data: Received Message + """ + if "extra" in _data: + if "member_count" in _data["extra"] and _data["extra"]["member_count"] > 0: + self.roomPopularity = _data["extra"]["member_count"] + if "data" in _data: + if "popularity" in _data["data"]: + self.roomPopularity = _data["data"]["popularity"] + def getJson(self, url, **kwargs): if "timeout" not in kwargs: kwargs["timeout"] = 10 @@ -152,13 +174,93 @@ class XiGuaLiveApi: if DEBUG: print(*args) + def onPresent(self, gift: Gift): + """ + 礼物连击中的消息 + Message On Sending Presents + :param gift: Struct of Gift Message + """ + print("礼物连击 :", gift) + + def onPresentEnd(self, gift: Gift): + """ + 礼物送完了的提示信息 + Message On Finished Send Present + :param gift: Struct of Gift Message + """ + print("感谢", gift) + + def onAd(self, i): + """ + 全局广播 + All Channel Broadcasting Message( Just An Ad ) + :param i: JSON DATA if you wanna using it + """ + # print(i) + pass + + def onChat(self, chat: Chat): + """ + 聊天信息 + On Chatting + :param chat: Struct of Chat Message + """ + if not chat.isFiltered: + print(chat) + + def onEnter(self, msg: MemberMsg): + """ + 进入房间消息 + On Entering Room + :param msg: Struct of Member Message + """ + print("提示 :", msg) + + def onSubscribe(self, user: User): + """ + 关注主播时的消息 + On Subscribe + :param user: Struct of User Message + """ + print("消息 :", user, "关注了主播") + + def onJoin(self, user: User): + """ + 加入粉丝团消息 + :param user: + """ + print("欢迎", user, "加入了粉丝团") + + def onMessage(self, msg: str): + """ + 系统消息 + :param msg: + """ + print("消息 :", msg) + + def onLike(self, user: User): + """ + 点击喜欢的消息 + On Like + :param user: + """ + print("用户", user, "点了喜欢") + + def onLeave(self, json: any): + """ + 下播消息 + On Liver Leave + :param json: + """ + print("消息 :", "主播离开了") + self.updRoomInfo() + def _checkUsernameIsMatched(self, compare=None): """ 验证主播名字是自己想要的那个 Check name matched :return: bool: 是否匹配 """ - return True if compare is None: compare = self.broadcaster if self.name is None or compare is None: @@ -258,6 +360,7 @@ class XiGuaLiveApi: self._rawRoomInfo = d["data"] self.isLive = d["data"]["status"] == 2 self._updRoomAt = datetime.now() + self._updateRoomPopularity(d) return self.isLive def updRoomInfo(self, force=False): @@ -274,6 +377,121 @@ class XiGuaLiveApi: else: return self._getRoomInfo(force) + def updGiftInfo(self): + self.updRoomInfo() + _formatData = {"TIMESTAMP": time.time() * 1000, "roomId": self.roomID} + _COMMON = COMMON_GET_PARAM.format_map(_formatData) + _formatData['COMMON'] = _COMMON + _formatData['WEBCAST'] = WEBCAST_GET_PARAMS + _url = GIFT_DATA_API.format_map(_formatData) + d = self.getJson(_url) + if d is None or d["status_code"] != 0: + return "异常" + elif 'pages' in d["data"]: + for _page in d["data"]['pages']: + if 'gifts' in _page: + for _gift in _page['gifts']: + Gift.addGift(_gift) + return len(Gift.giftList) + + def getDanmaku(self): + """ + 获取弹幕 + """ + self.updRoomInfo() + _formatData = {"TIMESTAMP": time.time() * 1000, "roomId": self.roomID} + _COMMON = COMMON_GET_PARAM.format_map(_formatData) + _formatData['COMMON'] = _COMMON + _formatData['WEBCAST'] = WEBCAST_GET_PARAMS + _url = DANMAKU_GET_API.format_map(_formatData) + p = self.s.post(_url, data="room_id={roomId}&fetch_rule=0&cursor={cursor}&" + "resp_content_type=protobuf&live_id=3&user_id=0&identity=audience&" + "last_rtt=85&internal_ext={ext}" + .format_map({"roomId":self.roomID, "cursor": self._cursor, "ext": self._ext}), + headers={"Content-Type": "application/x-www-form-urlencoded"}) + if p.status_code != 200: + return + data = XiguaLive() + data.ParseFromString(p.content) + self._cursor = data.cursor + self._ext = data.internal_ext + for _each in data.data: + if _each.method == "WebcastGiftMessage": + _gift = Gift(_each.raw) + if _gift.isAnimate() or _gift.isFinished: + self.onPresentEnd(_gift) + else: + self.onPresent(_gift) + elif _each.method == "WebcastChatMessage": + _chat = Chat(_each.raw) + self.onChat(_chat) + elif _each.method == "WebcastControlMessage": + # 下播的时候会有个这个 + self.onLeave(None) + elif _each.method == "WebcastSocialMessage": + _socialMessage = SocialMessage() + _socialMessage.ParseFromString(_each.raw) + _user = User(_socialMessage.user) + self.onSubscribe(_user) + elif _each.method == "WebcastFansclubMessage": + _fansClubMessage = FansClubMessage() + _fansClubMessage.ParseFromString(_each.raw) + # 升级是1,加入是2 + if _fansClubMessage.type == 2: + _user = User(_fansClubMessage.user) + self.onJoin(_user) + else: + self.onMessage(_fansClubMessage.content) + else: + pass + @property def updateAt(self): return self._updRoomAt + + +def public_hello(): + print("西瓜直播弹幕助手 by JerryYan") + print("接口版本:{version_name}({version_code_full})".format_map(VERSION_INFO)) + + +if __name__ == "__main__": + name = "永恒de草薙" + if len(sys.argv) > 2: + if sys.argv[-1] == "d": + DEBUG = True + name = sys.argv[1] + public_hello() + print("搜索【", name, "】", end="\t", flush=True) + api = XiGuaLiveApi(name) + if not api.isValidUser: + input("用户不存在") + sys.exit() + print("OK") + print(api.broadcaster.__repr__()) + print("更新房间信息,请稍后", end="\t", flush=True) + if api.updRoomInfo(True): + print("OK") + else: + print("FAIL") + print("更新房间礼物信息", end="\t", flush=True) + __res = api.updGiftInfo() + if __res < 0: + print("FAIL") + else: + print('OK\n礼物种数:', __res) + print("=" * 30) + while True: + if api.isLive: + try: + api.getDanmaku() + time.sleep(1) + except requests.exceptions.BaseHTTPError: + print("网络错误,请确认网络") + time.sleep(5) + # except Exception as e: + # print(e) + else: + print("主播未开播,等待1分钟后重试") + time.sleep(60) + api.updRoomInfo(True) From 11a73f1aca6288daec0bf7280363e57ee15b7e54 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Sat, 30 Jan 2021 19:56:00 +0800 Subject: [PATCH 67/70] =?UTF-8?q?=E9=A2=9D=E5=A4=96=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XiguaGift_pb2.py | 122 +++++++ XiguaMessage_pb2.py | 797 ++++++++++++++++++++++++++++++++++++++++++++ XiguaUser_pb2.py | 727 ++++++++++++++++++++++++++++++++++++++++ Xigua_pb2.py | 143 ++++++++ 4 files changed, 1789 insertions(+) create mode 100644 XiguaGift_pb2.py create mode 100644 XiguaMessage_pb2.py create mode 100644 XiguaUser_pb2.py create mode 100644 Xigua_pb2.py diff --git a/XiguaGift_pb2.py b/XiguaGift_pb2.py new file mode 100644 index 0000000..b014283 --- /dev/null +++ b/XiguaGift_pb2.py @@ -0,0 +1,122 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: XiguaGift.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='XiguaGift.proto', + package='', + syntax='proto2', + serialized_options=None, + serialized_pb=b'\n\x0fXiguaGift.proto\" \n\x04Gift\x12\n\n\x02id\x18\x01 \x02(\t\x12\x0c\n\x04name\x18\x02 \x02(\t\"+\n\x08GiftPack\x12\n\n\x02id\x18\x01 \x02(\x05\x12\x13\n\x04gift\x18\x02 \x02(\x0b\x32\x05.Gift' +) + + + + +_GIFT = _descriptor.Descriptor( + name='Gift', + full_name='Gift', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='Gift.id', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='name', full_name='Gift.name', index=1, + number=2, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=19, + serialized_end=51, +) + + +_GIFTPACK = _descriptor.Descriptor( + name='GiftPack', + full_name='GiftPack', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='GiftPack.id', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='gift', full_name='GiftPack.gift', index=1, + number=2, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=53, + serialized_end=96, +) + +_GIFTPACK.fields_by_name['gift'].message_type = _GIFT +DESCRIPTOR.message_types_by_name['Gift'] = _GIFT +DESCRIPTOR.message_types_by_name['GiftPack'] = _GIFTPACK +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Gift = _reflection.GeneratedProtocolMessageType('Gift', (_message.Message,), { + 'DESCRIPTOR' : _GIFT, + '__module__' : 'XiguaGift_pb2' + # @@protoc_insertion_point(class_scope:Gift) + }) +_sym_db.RegisterMessage(Gift) + +GiftPack = _reflection.GeneratedProtocolMessageType('GiftPack', (_message.Message,), { + 'DESCRIPTOR' : _GIFTPACK, + '__module__' : 'XiguaGift_pb2' + # @@protoc_insertion_point(class_scope:GiftPack) + }) +_sym_db.RegisterMessage(GiftPack) + + +# @@protoc_insertion_point(module_scope) diff --git a/XiguaMessage_pb2.py b/XiguaMessage_pb2.py new file mode 100644 index 0000000..a88c6f7 --- /dev/null +++ b/XiguaMessage_pb2.py @@ -0,0 +1,797 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: XiguaMessage.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + +import XiguaUser_pb2 as XiguaUser__pb2 +import XiguaGift_pb2 as XiguaGift__pb2 + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='XiguaMessage.proto', + package='', + syntax='proto2', + serialized_options=None, + serialized_pb=b'\n\x12XiguaMessage.proto\x1a\x0fXiguaUser.proto\x1a\x0fXiguaGift.proto\"*\n\x07Message\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\"f\n\x0f\x46\x61nsClubMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x0c\n\x04type\x18\x02 \x02(\x05\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\t\x12\x13\n\x04user\x18\x04 \x02(\x0b\x32\x05.User\"U\n\x14\x46\x61nsClubStatsMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\r\n\x05title\x18\x02 \x02(\t\x12\r\n\x05\x63ount\x18\x03 \x02(\x05\"]\n\x0eUserSeqMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x16\n\x0epopularityText\x18\x04 \x02(\t\x12\x12\n\npopularity\x18\x06 \x02(\x05\"D\n\x10\x44\x61ilyRankMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x0f\n\x07ranking\x18\n \x02(\x05\"T\n\x0b\x43hatMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x13\n\x04user\x18\x02 \x02(\x0b\x32\x05.User\x12\x0f\n\x07\x63ontent\x18\x03 \x02(\t\"]\n\rMemberMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x13\n\x04user\x18\x02 \x02(\x0b\x32\x05.User\x12\x16\n\x0epopularityText\x18\x0e \x02(\t\"\xa1\x01\n\x0bGiftMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x0e\n\x06giftId\x18\x02 \x02(\x05\x12\x10\n\x08\x63ontent4\x18\x04 \x02(\x05\x12\x10\n\x08repeated\x18\x05 \x02(\x05\x12\r\n\x05\x63ombo\x18\x06 \x02(\x05\x12\x13\n\x04user\x18\x07 \x01(\x0b\x32\x05.User\x12\x19\n\nisFinished\x18\t \x01(\x08:\x05\x66\x61lse\"f\n\rSocialMessage\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x13\n\x04user\x18\x02 \x02(\x0b\x32\x05.User\x12\x0c\n\x04int4\x18\x04 \x02(\x05\x12\x11\n\tfansCount\x18\x06 \x02(\x05\"*\n\x05Style\x12\r\n\x05\x63olor\x18\x01 \x01(\t\x12\x12\n\nfontWeight\x18\x04 \x01(\x05\"q\n\x06Params\x12\x0c\n\x04type\x18\x01 \x02(\x05\x12\x15\n\x05style\x18\x02 \x01(\x0b\x32\x06.Style\x12\x0e\n\x06string\x18\x0b \x01(\t\x12\x18\n\x05users\x18\x15 \x01(\x0b\x32\t.UserPack\x12\x18\n\x05gifts\x18\x16 \x01(\x0b\x32\t.GiftPack\"_\n\x0b\x44isplayText\x12\x0e\n\x06method\x18\x01 \x02(\t\x12\x0e\n\x06\x66ormat\x18\x02 \x02(\t\x12\x17\n\x07\x62gStyle\x18\x03 \x01(\x0b\x32\x06.Style\x12\x17\n\x06params\x18\x04 \x02(\x0b\x32\x07.Params\"\x87\x01\n\nCommonInfo\x12\x0e\n\x06method\x18\x01 \x02(\t\x12\x0e\n\x06msg_id\x18\x02 \x02(\x05\x12\x0f\n\x07room_id\x18\x03 \x02(\x05\x12\x13\n\x0b\x63reate_time\x18\x04 \x02(\x05\x12\x10\n\x08someEnum\x18\x06 \x01(\x05\x12!\n\x0b\x64isplayText\x18\x08 \x01(\x0b\x32\x0c.DisplayText' + , + dependencies=[XiguaUser__pb2.DESCRIPTOR,XiguaGift__pb2.DESCRIPTOR,]) + + + + +_MESSAGE = _descriptor.Descriptor( + name='Message', + full_name='Message', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='Message.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=56, + serialized_end=98, +) + + +_FANSCLUBMESSAGE = _descriptor.Descriptor( + name='FansClubMessage', + full_name='FansClubMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='FansClubMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='type', full_name='FansClubMessage.type', index=1, + number=2, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='content', full_name='FansClubMessage.content', index=2, + number=3, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='user', full_name='FansClubMessage.user', index=3, + number=4, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=100, + serialized_end=202, +) + + +_FANSCLUBSTATSMESSAGE = _descriptor.Descriptor( + name='FansClubStatsMessage', + full_name='FansClubStatsMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='FansClubStatsMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='title', full_name='FansClubStatsMessage.title', index=1, + number=2, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='count', full_name='FansClubStatsMessage.count', index=2, + number=3, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=204, + serialized_end=289, +) + + +_USERSEQMESSAGE = _descriptor.Descriptor( + name='UserSeqMessage', + full_name='UserSeqMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='UserSeqMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='popularityText', full_name='UserSeqMessage.popularityText', index=1, + number=4, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='popularity', full_name='UserSeqMessage.popularity', index=2, + number=6, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=291, + serialized_end=384, +) + + +_DAILYRANKMESSAGE = _descriptor.Descriptor( + name='DailyRankMessage', + full_name='DailyRankMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='DailyRankMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='ranking', full_name='DailyRankMessage.ranking', index=1, + number=10, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=386, + serialized_end=454, +) + + +_CHATMESSAGE = _descriptor.Descriptor( + name='ChatMessage', + full_name='ChatMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='ChatMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='user', full_name='ChatMessage.user', index=1, + number=2, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='content', full_name='ChatMessage.content', index=2, + number=3, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=456, + serialized_end=540, +) + + +_MEMBERMESSAGE = _descriptor.Descriptor( + name='MemberMessage', + full_name='MemberMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='MemberMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='user', full_name='MemberMessage.user', index=1, + number=2, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='popularityText', full_name='MemberMessage.popularityText', index=2, + number=14, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=542, + serialized_end=635, +) + + +_GIFTMESSAGE = _descriptor.Descriptor( + name='GiftMessage', + full_name='GiftMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='GiftMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='giftId', full_name='GiftMessage.giftId', index=1, + number=2, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='content4', full_name='GiftMessage.content4', index=2, + number=4, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='repeated', full_name='GiftMessage.repeated', index=3, + number=5, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='combo', full_name='GiftMessage.combo', index=4, + number=6, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='user', full_name='GiftMessage.user', index=5, + number=7, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='isFinished', full_name='GiftMessage.isFinished', index=6, + number=9, type=8, cpp_type=7, label=1, + has_default_value=True, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=638, + serialized_end=799, +) + + +_SOCIALMESSAGE = _descriptor.Descriptor( + name='SocialMessage', + full_name='SocialMessage', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='commonInfo', full_name='SocialMessage.commonInfo', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='user', full_name='SocialMessage.user', index=1, + number=2, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='int4', full_name='SocialMessage.int4', index=2, + number=4, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fansCount', full_name='SocialMessage.fansCount', index=3, + number=6, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=801, + serialized_end=903, +) + + +_STYLE = _descriptor.Descriptor( + name='Style', + full_name='Style', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='color', full_name='Style.color', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fontWeight', full_name='Style.fontWeight', index=1, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=905, + serialized_end=947, +) + + +_PARAMS = _descriptor.Descriptor( + name='Params', + full_name='Params', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='type', full_name='Params.type', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='style', full_name='Params.style', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='string', full_name='Params.string', index=2, + number=11, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='users', full_name='Params.users', index=3, + number=21, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='gifts', full_name='Params.gifts', index=4, + number=22, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=949, + serialized_end=1062, +) + + +_DISPLAYTEXT = _descriptor.Descriptor( + name='DisplayText', + full_name='DisplayText', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='method', full_name='DisplayText.method', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='format', full_name='DisplayText.format', index=1, + number=2, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='bgStyle', full_name='DisplayText.bgStyle', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='params', full_name='DisplayText.params', index=3, + number=4, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1064, + serialized_end=1159, +) + + +_COMMONINFO = _descriptor.Descriptor( + name='CommonInfo', + full_name='CommonInfo', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='method', full_name='CommonInfo.method', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='msg_id', full_name='CommonInfo.msg_id', index=1, + number=2, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='room_id', full_name='CommonInfo.room_id', index=2, + number=3, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='create_time', full_name='CommonInfo.create_time', index=3, + number=4, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='someEnum', full_name='CommonInfo.someEnum', index=4, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='displayText', full_name='CommonInfo.displayText', index=5, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1162, + serialized_end=1297, +) + +_MESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_FANSCLUBMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_FANSCLUBMESSAGE.fields_by_name['user'].message_type = XiguaUser__pb2._USER +_FANSCLUBSTATSMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_USERSEQMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_DAILYRANKMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_CHATMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_CHATMESSAGE.fields_by_name['user'].message_type = XiguaUser__pb2._USER +_MEMBERMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_MEMBERMESSAGE.fields_by_name['user'].message_type = XiguaUser__pb2._USER +_GIFTMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_GIFTMESSAGE.fields_by_name['user'].message_type = XiguaUser__pb2._USER +_SOCIALMESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO +_SOCIALMESSAGE.fields_by_name['user'].message_type = XiguaUser__pb2._USER +_PARAMS.fields_by_name['style'].message_type = _STYLE +_PARAMS.fields_by_name['users'].message_type = XiguaUser__pb2._USERPACK +_PARAMS.fields_by_name['gifts'].message_type = XiguaGift__pb2._GIFTPACK +_DISPLAYTEXT.fields_by_name['bgStyle'].message_type = _STYLE +_DISPLAYTEXT.fields_by_name['params'].message_type = _PARAMS +_COMMONINFO.fields_by_name['displayText'].message_type = _DISPLAYTEXT +DESCRIPTOR.message_types_by_name['Message'] = _MESSAGE +DESCRIPTOR.message_types_by_name['FansClubMessage'] = _FANSCLUBMESSAGE +DESCRIPTOR.message_types_by_name['FansClubStatsMessage'] = _FANSCLUBSTATSMESSAGE +DESCRIPTOR.message_types_by_name['UserSeqMessage'] = _USERSEQMESSAGE +DESCRIPTOR.message_types_by_name['DailyRankMessage'] = _DAILYRANKMESSAGE +DESCRIPTOR.message_types_by_name['ChatMessage'] = _CHATMESSAGE +DESCRIPTOR.message_types_by_name['MemberMessage'] = _MEMBERMESSAGE +DESCRIPTOR.message_types_by_name['GiftMessage'] = _GIFTMESSAGE +DESCRIPTOR.message_types_by_name['SocialMessage'] = _SOCIALMESSAGE +DESCRIPTOR.message_types_by_name['Style'] = _STYLE +DESCRIPTOR.message_types_by_name['Params'] = _PARAMS +DESCRIPTOR.message_types_by_name['DisplayText'] = _DISPLAYTEXT +DESCRIPTOR.message_types_by_name['CommonInfo'] = _COMMONINFO +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +Message = _reflection.GeneratedProtocolMessageType('Message', (_message.Message,), { + 'DESCRIPTOR' : _MESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:Message) + }) +_sym_db.RegisterMessage(Message) + +FansClubMessage = _reflection.GeneratedProtocolMessageType('FansClubMessage', (_message.Message,), { + 'DESCRIPTOR' : _FANSCLUBMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:FansClubMessage) + }) +_sym_db.RegisterMessage(FansClubMessage) + +FansClubStatsMessage = _reflection.GeneratedProtocolMessageType('FansClubStatsMessage', (_message.Message,), { + 'DESCRIPTOR' : _FANSCLUBSTATSMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:FansClubStatsMessage) + }) +_sym_db.RegisterMessage(FansClubStatsMessage) + +UserSeqMessage = _reflection.GeneratedProtocolMessageType('UserSeqMessage', (_message.Message,), { + 'DESCRIPTOR' : _USERSEQMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:UserSeqMessage) + }) +_sym_db.RegisterMessage(UserSeqMessage) + +DailyRankMessage = _reflection.GeneratedProtocolMessageType('DailyRankMessage', (_message.Message,), { + 'DESCRIPTOR' : _DAILYRANKMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:DailyRankMessage) + }) +_sym_db.RegisterMessage(DailyRankMessage) + +ChatMessage = _reflection.GeneratedProtocolMessageType('ChatMessage', (_message.Message,), { + 'DESCRIPTOR' : _CHATMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:ChatMessage) + }) +_sym_db.RegisterMessage(ChatMessage) + +MemberMessage = _reflection.GeneratedProtocolMessageType('MemberMessage', (_message.Message,), { + 'DESCRIPTOR' : _MEMBERMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:MemberMessage) + }) +_sym_db.RegisterMessage(MemberMessage) + +GiftMessage = _reflection.GeneratedProtocolMessageType('GiftMessage', (_message.Message,), { + 'DESCRIPTOR' : _GIFTMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:GiftMessage) + }) +_sym_db.RegisterMessage(GiftMessage) + +SocialMessage = _reflection.GeneratedProtocolMessageType('SocialMessage', (_message.Message,), { + 'DESCRIPTOR' : _SOCIALMESSAGE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:SocialMessage) + }) +_sym_db.RegisterMessage(SocialMessage) + +Style = _reflection.GeneratedProtocolMessageType('Style', (_message.Message,), { + 'DESCRIPTOR' : _STYLE, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:Style) + }) +_sym_db.RegisterMessage(Style) + +Params = _reflection.GeneratedProtocolMessageType('Params', (_message.Message,), { + 'DESCRIPTOR' : _PARAMS, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:Params) + }) +_sym_db.RegisterMessage(Params) + +DisplayText = _reflection.GeneratedProtocolMessageType('DisplayText', (_message.Message,), { + 'DESCRIPTOR' : _DISPLAYTEXT, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:DisplayText) + }) +_sym_db.RegisterMessage(DisplayText) + +CommonInfo = _reflection.GeneratedProtocolMessageType('CommonInfo', (_message.Message,), { + 'DESCRIPTOR' : _COMMONINFO, + '__module__' : 'XiguaMessage_pb2' + # @@protoc_insertion_point(class_scope:CommonInfo) + }) +_sym_db.RegisterMessage(CommonInfo) + + +# @@protoc_insertion_point(module_scope) diff --git a/XiguaUser_pb2.py b/XiguaUser_pb2.py new file mode 100644 index 0000000..8c0a2f4 --- /dev/null +++ b/XiguaUser_pb2.py @@ -0,0 +1,727 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: XiguaUser.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='XiguaUser.proto', + package='', + syntax='proto2', + serialized_options=None, + serialized_pb=b'\n\x0fXiguaUser.proto\"\x1f\n\x08UserPack\x12\x13\n\x04user\x18\x01 \x02(\x0b\x32\x05.User\"\xb6\x01\n\x05\x42\x61\x64ge\x12\x0b\n\x03url\x18\x01 \x03(\t\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\r\n\x05width\x18\x04 \x01(\x05\x12\x0c\n\x04type\x18\x06 \x01(\x05\x12\x0f\n\x07\x63lickTo\x18\x07 \x01(\t\x12\'\n\x0b\x66\x61nClubText\x18\x08 \x01(\x0b\x32\x12.Badge.FanClubText\x1a\x39\n\x0b\x46\x61nClubText\x12\x0c\n\x04text\x18\x01 \x02(\t\x12\r\n\x05\x63olor\x18\x02 \x01(\t\x12\r\n\x05level\x18\x03 \x02(\x05\"y\n\x0c\x46\x61nsClubPack\x12(\n\x08\x66\x61nsClub\x18\x01 \x02(\x0b\x32\x16.FansClubPack.FansClub\x1a?\n\x08\x46\x61nsClub\x12\x0f\n\x05title\x18\x01 \x02(\t:\x00\x12\x10\n\x05level\x18\x02 \x02(\x05:\x01\x30\x12\x10\n\x08someEnum\x18\x03 \x01(\x05\"\xd8\x05\n\x04User\x12\n\n\x02id\x18\x01 \x02(\x03\x12\x10\n\x08nickname\x18\x03 \x02(\t\x12\x0e\n\x06gender\x18\x04 \x02(\x05\x12!\n\x0b\x61vatarThumb\x18\t \x02(\x0b\x32\x0c.User.Avatar\x12\"\n\x0c\x61vatarMedium\x18\n \x01(\x0b\x32\x0c.User.Avatar\x12!\n\x0b\x61vatarLarge\x18\x0b \x01(\x0b\x32\x0c.User.Avatar\x12\x15\n\x05\x62\x61\x64ge\x18\x15 \x03(\x0b\x32\x06.Badge\x12\x1c\n\x06\x66ollow\x18\x16 \x01(\x0b\x32\x0c.User.Follow\x12 \n\x08payGrade\x18\x17 \x02(\x0b\x32\x0e.User.PayGrade\x12\x1f\n\x08\x66\x61nsClub\x18\x18 \x02(\x0b\x32\r.FansClubPack\x12\x11\n\ttotalPaid\x18\" \x02(\x05\x1a!\n\x06\x41vatar\x12\x0b\n\x03url\x18\x01 \x02(\t\x12\n\n\x02id\x18\x02 \x01(\t\x1a\x33\n\x06\x46ollow\x12\x14\n\tfollowing\x18\x01 \x01(\x05:\x01\x30\x12\x13\n\x08\x66ollower\x18\x02 \x01(\x05:\x01\x30\x1a\x9c\x01\n\x08PayGrade\x12\x0f\n\x07\x63urrent\x18\x01 \x02(\x05\x12\r\n\x05level\x18\x06 \x02(\x05\x12\x18\n\x10\x63urrentLevelNeed\x18\n \x01(\x05\x12\x15\n\rnextLevelNeed\x18\x0b \x01(\x05\x12\x0f\n\x07\x63ontent\x18\r \x01(\t\x12\x15\n\x05\x62\x61\x64ge\x18\x13 \x02(\x0b\x32\x06.Badge\x12\x17\n\x0ftoNextLevelNeed\x18\x15 \x01(\x05\x1a#\n\nHonorLevel\x12\x15\n\x05\x62\x61\x64ge\x18\x13 \x02(\x0b\x32\x06.Badge\x1a\x90\x01\n\x05Noble\x12\x0f\n\x07\x63ontent\x18\x04 \x02(\t\x12)\n\x07\x62oarder\x18\x08 \x01(\x0b\x32\x18.User.Noble.NobleBoarder\x1aK\n\x0cNobleBoarder\x12\x0f\n\x07urlList\x18\x01 \x03(\t\x12\x0b\n\x03uri\x18\x02 \x02(\t\x12\x0e\n\x06height\x18\x03 \x01(\x05\x12\r\n\x05width\x18\x04 \x01(\x05' +) + + + + +_USERPACK = _descriptor.Descriptor( + name='UserPack', + full_name='UserPack', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='user', full_name='UserPack.user', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=19, + serialized_end=50, +) + + +_BADGE_FANCLUBTEXT = _descriptor.Descriptor( + name='FanClubText', + full_name='Badge.FanClubText', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='text', full_name='Badge.FanClubText.text', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='color', full_name='Badge.FanClubText.color', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='level', full_name='Badge.FanClubText.level', index=2, + number=3, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=178, + serialized_end=235, +) + +_BADGE = _descriptor.Descriptor( + name='Badge', + full_name='Badge', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='url', full_name='Badge.url', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='height', full_name='Badge.height', index=1, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='width', full_name='Badge.width', index=2, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='type', full_name='Badge.type', index=3, + number=6, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='clickTo', full_name='Badge.clickTo', index=4, + number=7, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fanClubText', full_name='Badge.fanClubText', index=5, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_BADGE_FANCLUBTEXT, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=53, + serialized_end=235, +) + + +_FANSCLUBPACK_FANSCLUB = _descriptor.Descriptor( + name='FansClub', + full_name='FansClubPack.FansClub', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='title', full_name='FansClubPack.FansClub.title', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=True, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='level', full_name='FansClubPack.FansClub.level', index=1, + number=2, type=5, cpp_type=1, label=2, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='someEnum', full_name='FansClubPack.FansClub.someEnum', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=295, + serialized_end=358, +) + +_FANSCLUBPACK = _descriptor.Descriptor( + name='FansClubPack', + full_name='FansClubPack', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='fansClub', full_name='FansClubPack.fansClub', index=0, + number=1, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_FANSCLUBPACK_FANSCLUB, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=237, + serialized_end=358, +) + + +_USER_AVATAR = _descriptor.Descriptor( + name='Avatar', + full_name='User.Avatar', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='url', full_name='User.Avatar.url', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='id', full_name='User.Avatar.id', index=1, + number=2, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=660, + serialized_end=693, +) + +_USER_FOLLOW = _descriptor.Descriptor( + name='Follow', + full_name='User.Follow', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='following', full_name='User.Follow.following', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='follower', full_name='User.Follow.follower', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=True, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=695, + serialized_end=746, +) + +_USER_PAYGRADE = _descriptor.Descriptor( + name='PayGrade', + full_name='User.PayGrade', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='current', full_name='User.PayGrade.current', index=0, + number=1, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='level', full_name='User.PayGrade.level', index=1, + number=6, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='currentLevelNeed', full_name='User.PayGrade.currentLevelNeed', index=2, + number=10, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='nextLevelNeed', full_name='User.PayGrade.nextLevelNeed', index=3, + number=11, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='content', full_name='User.PayGrade.content', index=4, + number=13, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='badge', full_name='User.PayGrade.badge', index=5, + number=19, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='toNextLevelNeed', full_name='User.PayGrade.toNextLevelNeed', index=6, + number=21, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=749, + serialized_end=905, +) + +_USER_HONORLEVEL = _descriptor.Descriptor( + name='HonorLevel', + full_name='User.HonorLevel', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='badge', full_name='User.HonorLevel.badge', index=0, + number=19, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=907, + serialized_end=942, +) + +_USER_NOBLE_NOBLEBOARDER = _descriptor.Descriptor( + name='NobleBoarder', + full_name='User.Noble.NobleBoarder', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='urlList', full_name='User.Noble.NobleBoarder.urlList', index=0, + number=1, type=9, cpp_type=9, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='uri', full_name='User.Noble.NobleBoarder.uri', index=1, + number=2, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='height', full_name='User.Noble.NobleBoarder.height', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='width', full_name='User.Noble.NobleBoarder.width', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1014, + serialized_end=1089, +) + +_USER_NOBLE = _descriptor.Descriptor( + name='Noble', + full_name='User.Noble', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='content', full_name='User.Noble.content', index=0, + number=4, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='boarder', full_name='User.Noble.boarder', index=1, + number=8, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_USER_NOBLE_NOBLEBOARDER, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=945, + serialized_end=1089, +) + +_USER = _descriptor.Descriptor( + name='User', + full_name='User', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='id', full_name='User.id', index=0, + number=1, type=3, cpp_type=2, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='nickname', full_name='User.nickname', index=1, + number=3, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='gender', full_name='User.gender', index=2, + number=4, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='avatarThumb', full_name='User.avatarThumb', index=3, + number=9, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='avatarMedium', full_name='User.avatarMedium', index=4, + number=10, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='avatarLarge', full_name='User.avatarLarge', index=5, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='badge', full_name='User.badge', index=6, + number=21, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='follow', full_name='User.follow', index=7, + number=22, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='payGrade', full_name='User.payGrade', index=8, + number=23, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fansClub', full_name='User.fansClub', index=9, + number=24, type=11, cpp_type=10, label=2, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='totalPaid', full_name='User.totalPaid', index=10, + number=34, type=5, cpp_type=1, label=2, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_USER_AVATAR, _USER_FOLLOW, _USER_PAYGRADE, _USER_HONORLEVEL, _USER_NOBLE, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=361, + serialized_end=1089, +) + +_USERPACK.fields_by_name['user'].message_type = _USER +_BADGE_FANCLUBTEXT.containing_type = _BADGE +_BADGE.fields_by_name['fanClubText'].message_type = _BADGE_FANCLUBTEXT +_FANSCLUBPACK_FANSCLUB.containing_type = _FANSCLUBPACK +_FANSCLUBPACK.fields_by_name['fansClub'].message_type = _FANSCLUBPACK_FANSCLUB +_USER_AVATAR.containing_type = _USER +_USER_FOLLOW.containing_type = _USER +_USER_PAYGRADE.fields_by_name['badge'].message_type = _BADGE +_USER_PAYGRADE.containing_type = _USER +_USER_HONORLEVEL.fields_by_name['badge'].message_type = _BADGE +_USER_HONORLEVEL.containing_type = _USER +_USER_NOBLE_NOBLEBOARDER.containing_type = _USER_NOBLE +_USER_NOBLE.fields_by_name['boarder'].message_type = _USER_NOBLE_NOBLEBOARDER +_USER_NOBLE.containing_type = _USER +_USER.fields_by_name['avatarThumb'].message_type = _USER_AVATAR +_USER.fields_by_name['avatarMedium'].message_type = _USER_AVATAR +_USER.fields_by_name['avatarLarge'].message_type = _USER_AVATAR +_USER.fields_by_name['badge'].message_type = _BADGE +_USER.fields_by_name['follow'].message_type = _USER_FOLLOW +_USER.fields_by_name['payGrade'].message_type = _USER_PAYGRADE +_USER.fields_by_name['fansClub'].message_type = _FANSCLUBPACK +DESCRIPTOR.message_types_by_name['UserPack'] = _USERPACK +DESCRIPTOR.message_types_by_name['Badge'] = _BADGE +DESCRIPTOR.message_types_by_name['FansClubPack'] = _FANSCLUBPACK +DESCRIPTOR.message_types_by_name['User'] = _USER +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +UserPack = _reflection.GeneratedProtocolMessageType('UserPack', (_message.Message,), { + 'DESCRIPTOR' : _USERPACK, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:UserPack) + }) +_sym_db.RegisterMessage(UserPack) + +Badge = _reflection.GeneratedProtocolMessageType('Badge', (_message.Message,), { + + 'FanClubText' : _reflection.GeneratedProtocolMessageType('FanClubText', (_message.Message,), { + 'DESCRIPTOR' : _BADGE_FANCLUBTEXT, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:Badge.FanClubText) + }) + , + 'DESCRIPTOR' : _BADGE, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:Badge) + }) +_sym_db.RegisterMessage(Badge) +_sym_db.RegisterMessage(Badge.FanClubText) + +FansClubPack = _reflection.GeneratedProtocolMessageType('FansClubPack', (_message.Message,), { + + 'FansClub' : _reflection.GeneratedProtocolMessageType('FansClub', (_message.Message,), { + 'DESCRIPTOR' : _FANSCLUBPACK_FANSCLUB, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:FansClubPack.FansClub) + }) + , + 'DESCRIPTOR' : _FANSCLUBPACK, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:FansClubPack) + }) +_sym_db.RegisterMessage(FansClubPack) +_sym_db.RegisterMessage(FansClubPack.FansClub) + +User = _reflection.GeneratedProtocolMessageType('User', (_message.Message,), { + + 'Avatar' : _reflection.GeneratedProtocolMessageType('Avatar', (_message.Message,), { + 'DESCRIPTOR' : _USER_AVATAR, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User.Avatar) + }) + , + + 'Follow' : _reflection.GeneratedProtocolMessageType('Follow', (_message.Message,), { + 'DESCRIPTOR' : _USER_FOLLOW, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User.Follow) + }) + , + + 'PayGrade' : _reflection.GeneratedProtocolMessageType('PayGrade', (_message.Message,), { + 'DESCRIPTOR' : _USER_PAYGRADE, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User.PayGrade) + }) + , + + 'HonorLevel' : _reflection.GeneratedProtocolMessageType('HonorLevel', (_message.Message,), { + 'DESCRIPTOR' : _USER_HONORLEVEL, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User.HonorLevel) + }) + , + + 'Noble' : _reflection.GeneratedProtocolMessageType('Noble', (_message.Message,), { + + 'NobleBoarder' : _reflection.GeneratedProtocolMessageType('NobleBoarder', (_message.Message,), { + 'DESCRIPTOR' : _USER_NOBLE_NOBLEBOARDER, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User.Noble.NobleBoarder) + }) + , + 'DESCRIPTOR' : _USER_NOBLE, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User.Noble) + }) + , + 'DESCRIPTOR' : _USER, + '__module__' : 'XiguaUser_pb2' + # @@protoc_insertion_point(class_scope:User) + }) +_sym_db.RegisterMessage(User) +_sym_db.RegisterMessage(User.Avatar) +_sym_db.RegisterMessage(User.Follow) +_sym_db.RegisterMessage(User.PayGrade) +_sym_db.RegisterMessage(User.HonorLevel) +_sym_db.RegisterMessage(User.Noble) +_sym_db.RegisterMessage(User.Noble.NobleBoarder) + + +# @@protoc_insertion_point(module_scope) diff --git a/Xigua_pb2.py b/Xigua_pb2.py new file mode 100644 index 0000000..7344782 --- /dev/null +++ b/Xigua_pb2.py @@ -0,0 +1,143 @@ +# -*- coding: utf-8 -*- +# Generated by the protocol buffer compiler. DO NOT EDIT! +# source: Xigua.proto + +from google.protobuf import descriptor as _descriptor +from google.protobuf import message as _message +from google.protobuf import reflection as _reflection +from google.protobuf import symbol_database as _symbol_database +# @@protoc_insertion_point(imports) + +_sym_db = _symbol_database.Default() + + + + +DESCRIPTOR = _descriptor.FileDescriptor( + name='Xigua.proto', + package='', + syntax='proto2', + serialized_options=None, + serialized_pb=b'\n\x0bXigua.proto\"\x9a\x01\n\tXiguaLive\x12\x1d\n\x04\x64\x61ta\x18\x01 \x03(\x0b\x32\x0f.XiguaLive.Data\x12\x0e\n\x06\x63ursor\x18\x02 \x02(\t\x12\x16\n\x0e\x66\x65tch_interval\x18\x03 \x01(\x05\x12\x0b\n\x03now\x18\x04 \x01(\x05\x12\x14\n\x0cinternal_ext\x18\x05 \x02(\t\x1a#\n\x04\x44\x61ta\x12\x0e\n\x06method\x18\x01 \x02(\t\x12\x0b\n\x03raw\x18\x02 \x02(\x0c' +) + + + + +_XIGUALIVE_DATA = _descriptor.Descriptor( + name='Data', + full_name='XiguaLive.Data', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='method', full_name='XiguaLive.Data.method', index=0, + number=1, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='raw', full_name='XiguaLive.Data.raw', index=1, + number=2, type=12, cpp_type=9, label=2, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=135, + serialized_end=170, +) + +_XIGUALIVE = _descriptor.Descriptor( + name='XiguaLive', + full_name='XiguaLive', + filename=None, + file=DESCRIPTOR, + containing_type=None, + fields=[ + _descriptor.FieldDescriptor( + name='data', full_name='XiguaLive.data', index=0, + number=1, type=11, cpp_type=10, label=3, + has_default_value=False, default_value=[], + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='cursor', full_name='XiguaLive.cursor', index=1, + number=2, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='fetch_interval', full_name='XiguaLive.fetch_interval', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='now', full_name='XiguaLive.now', index=3, + number=4, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + _descriptor.FieldDescriptor( + name='internal_ext', full_name='XiguaLive.internal_ext', index=4, + number=5, type=9, cpp_type=9, label=2, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR), + ], + extensions=[ + ], + nested_types=[_XIGUALIVE_DATA, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto2', + extension_ranges=[], + oneofs=[ + ], + serialized_start=16, + serialized_end=170, +) + +_XIGUALIVE_DATA.containing_type = _XIGUALIVE +_XIGUALIVE.fields_by_name['data'].message_type = _XIGUALIVE_DATA +DESCRIPTOR.message_types_by_name['XiguaLive'] = _XIGUALIVE +_sym_db.RegisterFileDescriptor(DESCRIPTOR) + +XiguaLive = _reflection.GeneratedProtocolMessageType('XiguaLive', (_message.Message,), { + + 'Data' : _reflection.GeneratedProtocolMessageType('Data', (_message.Message,), { + 'DESCRIPTOR' : _XIGUALIVE_DATA, + '__module__' : 'Xigua_pb2' + # @@protoc_insertion_point(class_scope:XiguaLive.Data) + }) + , + 'DESCRIPTOR' : _XIGUALIVE, + '__module__' : 'Xigua_pb2' + # @@protoc_insertion_point(class_scope:XiguaLive) + }) +_sym_db.RegisterMessage(XiguaLive) +_sym_db.RegisterMessage(XiguaLive.Data) + + +# @@protoc_insertion_point(module_scope) From 821244a0c5b66ca57eaf69df4fda1b3042117a62 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Mon, 1 Feb 2021 10:51:25 +0800 Subject: [PATCH 68/70] =?UTF-8?q?=E9=81=BF=E5=85=8D=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=8A=B6=E6=80=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/api.py b/api.py index ab0c7bb..94f1b12 100644 --- a/api.py +++ b/api.py @@ -282,6 +282,7 @@ class XiGuaLiveApi: return False self.broadcaster = None self.isValidUser = False + self.isLive = False if "data" in d and d["data"] is not None: for i in d["data"]: if self.broadcaster is not None: @@ -310,6 +311,7 @@ class XiGuaLiveApi: if self.broadcaster is None: self.isValidUser = False return False + self.isLive = False _formatData = {"TIMESTAMP": time.time() * 1000, "userId": self.broadcaster.ID} _COMMON = COMMON_GET_PARAM.format_map(_formatData) _formatData['COMMON'] = _COMMON @@ -346,6 +348,7 @@ class XiGuaLiveApi: return False if (self._updRoomAt + timedelta(minutes=3) > datetime.now()) and not force: return self.isLive + self.isLive = False _formatData = {"TIMESTAMP": time.time() * 1000, "roomId": self.roomID} _COMMON = COMMON_GET_PARAM.format_map(_formatData) _formatData['COMMON'] = _COMMON From 8a810d18691b84301a09540996794f4a2bf4ca60 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 8 Apr 2021 11:36:51 +0800 Subject: [PATCH 69/70] SB bootcdn --- templates/head.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/head.html b/templates/head.html index c9f310b..b67ab28 100644 --- a/templates/head.html +++ b/templates/head.html @@ -1,5 +1,5 @@ - +