You've already forked XiguaLiveDanmakuHelper
							
							
		
			
				
	
	
		
			78 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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:
 | |
|             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:
 | |
|             if "user" in json["extra"] and json["extra"]["user"] is not None:
 | |
|                 self.ID = json["extra"]['user']['user_id']
 | |
|                 self.name = json["extra"]['user']['name']
 | |
|             if "im_discipulus_info" in json["extra"] and json["extra"]["im_discipulus_info"] is not None:
 | |
|                 self.level = json["extra"]["im_discipulus_info"]["level"]
 | |
|                 self.brand = json["extra"]["im_discipulus_info"]["discipulus_group_title"]
 | |
|             if "user_room_auth_status" in json["extra"] and json["extra"]["user_room_auth_status"] is not None:
 | |
|                 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"]
 | |
|         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']
 | |
|         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):
 | |
|             self.level = int(self.level)
 | |
| 
 | |
|     def __str__(self):
 | |
|         if self.level == 0:
 | |
|             if self.type == 1:
 | |
|                 return "[房管]{}".format(self.name)
 | |
|             elif self.type == 3:
 | |
|                 return "[主播]{}".format(self.name)
 | |
|             else:
 | |
|                 return "{}".format(self.name)
 | |
|         else:
 | |
|             if self.type != 0:
 | |
|                 return "[{}{}]{}".format(self.brand, self.level, self.name)
 | |
|             return "<{}{}>{}".format(self.brand, self.level, self.name)
 | |
| 
 | |
|     def __unicode__(self):
 | |
|         return self.__str__()
 | |
| 
 | |
|     def __repr__(self):
 | |
|         return "西瓜用户【{}(ID:{})】".format(self.name, self.ID)
 |