diff --git a/Demo/XiguaCommon.proto b/Demo/XiguaCommon.proto index 8e70e23..264fe59 100644 --- a/Demo/XiguaCommon.proto +++ b/Demo/XiguaCommon.proto @@ -3,7 +3,9 @@ import "XiguaUser.proto"; import "XiguaGift.proto"; message Message { required CommonInfo commonInfo = 1; - required bytes contents = 2; + required bytes content2 = 2; + required bytes content3 = 3; + required bytes content4 = 4; optional bool isFinished = 9 [ default = false ]; } // 样式 diff --git a/WinMain.py b/WinMain.py index 1fd95d7..a71cfa6 100644 --- a/WinMain.py +++ b/WinMain.py @@ -182,22 +182,27 @@ def warning(*args): if __name__ == "__main__": name = "永恒de草薙" resetColor() - print("西瓜直播弹幕助手 by JerryYan") + print("西瓜直播礼物助手 by JerryYan") + print("接口版本8.1.6") 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) + print("搜索【", name, "】", end="\t", flush=True) api = WinMain(name) - while not api.isValidUser: - set_cmd_text_color(FOREGROUND_RED) - print("未找到对应房间或未开播,等待1分钟后重试") - resetColor() - time.sleep(60) - api.updRoomInfo() - print("进入", api.broadcaster, "的直播间") + if not api.isValidUser: + input("用户不存在") + sys.exit() + print("OK") + print(api.broadcaster.__repr__()) + print("更新房间信息,请稍后", end="\t", flush=True) os.system("title {}".format(api.getTitle())) + if api.updRoomInfo(True): + print("OK") + else: + print("FAIL") print("=" * 30) while True: if api.isLive: @@ -215,4 +220,4 @@ if __name__ == "__main__": print("主播未开播,等待1分钟后重试") resetColor() time.sleep(60) - api.updRoomInfo() + api.updRoomInfo(True) diff --git a/XiguaCommon_pb2.py b/XiguaCommon_pb2.py index 345878d..effb16a 100644 --- a/XiguaCommon_pb2.py +++ b/XiguaCommon_pb2.py @@ -20,7 +20,7 @@ DESCRIPTOR = _descriptor.FileDescriptor( package='', syntax='proto2', serialized_options=None, - serialized_pb=b'\n\x11XiguaCommon.proto\x1a\x0fXiguaUser.proto\x1a\x0fXiguaGift.proto\"W\n\x07Message\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x10\n\x08\x63ontents\x18\x02 \x02(\x0c\x12\x19\n\nisFinished\x18\t \x01(\x08:\x05\x66\x61lse\"*\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\"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' + serialized_pb=b'\n\x11XiguaCommon.proto\x1a\x0fXiguaUser.proto\x1a\x0fXiguaGift.proto\"{\n\x07Message\x12\x1f\n\ncommonInfo\x18\x01 \x02(\x0b\x32\x0b.CommonInfo\x12\x10\n\x08\x63ontent2\x18\x02 \x02(\x0c\x12\x10\n\x08\x63ontent3\x18\x03 \x02(\x0c\x12\x10\n\x08\x63ontent4\x18\x04 \x02(\x0c\x12\x19\n\nisFinished\x18\t \x01(\x08:\x05\x66\x61lse\"*\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\"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,]) @@ -42,14 +42,28 @@ _MESSAGE = _descriptor.Descriptor( is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( - name='contents', full_name='Message.contents', index=1, + name='content2', full_name='Message.content2', 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), _descriptor.FieldDescriptor( - name='isFinished', full_name='Message.isFinished', index=2, + name='content3', full_name='Message.content3', index=2, + number=3, 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), + _descriptor.FieldDescriptor( + name='content4', full_name='Message.content4', index=3, + number=4, 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), + _descriptor.FieldDescriptor( + name='isFinished', full_name='Message.isFinished', index=4, 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, @@ -68,7 +82,7 @@ _MESSAGE = _descriptor.Descriptor( oneofs=[ ], serialized_start=55, - serialized_end=142, + serialized_end=178, ) @@ -105,8 +119,8 @@ _STYLE = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=144, - serialized_end=186, + serialized_start=180, + serialized_end=222, ) @@ -164,8 +178,8 @@ _PARAMS = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=188, - serialized_end=301, + serialized_start=224, + serialized_end=337, ) @@ -216,8 +230,8 @@ _DISPLAYTEXT = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=303, - serialized_end=398, + serialized_start=339, + serialized_end=434, ) @@ -275,8 +289,8 @@ _COMMONINFO = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], - serialized_start=400, - serialized_end=517, + serialized_start=436, + serialized_end=553, ) _MESSAGE.fields_by_name['commonInfo'].message_type = _COMMONINFO diff --git a/api.py b/api.py index 9aa3522..f4e76d7 100644 --- a/api.py +++ b/api.py @@ -12,6 +12,7 @@ import requests import time from datetime import datetime, timedelta from Xigua_pb2 import XiguaLive +from XiguaUser_pb2 import User as UserPb DEBUG = False COMMON_GET_PARAM = ( @@ -359,8 +360,19 @@ class XiGuaLiveApi: _gift.user = _user _gift.backupName = _each.message.commonInfo.displayText.params.gifts.gift.name self.onPresentEnd(_gift) + elif _each.method == "WebcastFansclubMessage": + continue + _userRawData = _each.message.content4 + _userPb = UserPb() + _userPb.ParseFromString(_userRawData) + _user = User() + _user.id = _userPb.id + _user.name = _userPb.nickname + self.onJoin(_user) + print(_each.message.content2) + print(_each.message.content3) else: - print(_each.message.contents) + pass # 更新抽奖信息 if self.lottery is not None and self.lottery.ID != 0: self.lottery.update() @@ -375,6 +387,7 @@ if __name__ == "__main__": DEBUG = True name = sys.argv[1] print("西瓜直播弹幕助手 by JerryYan") + print("接口版本8.1.6") print("搜索【", name, "】", end="\t", flush=True) api = XiGuaLiveApi(name) if not api.isValidUser: