This commit is contained in:
qwerdvd 2023-12-27 13:43:17 +08:00
parent 47beeedf75
commit 2c7c61188a
No known key found for this signature in database
GPG Key ID: A3AF89C783404769
6 changed files with 380 additions and 372 deletions

View File

@ -49,10 +49,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(uid)
if isinstance(char_id_list, str):
raise MihomoRequestError
msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None:
raise MihomoRequestError
msg = "char_data_dict is None"
raise MihomoRequestError(msg)
if char_id not in char_id_list:
raise NotInCharacterShowcaseError
@ -72,10 +74,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(mihomo_raw=mihomo_data)
if isinstance(char_id_list, str):
raise MihomoRequestError
msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None:
raise MihomoRequestError
msg = "char_data_dict is None"
raise MihomoRequestError(msg)
if char_id not in char_id_list:
raise NotInCharacterShowcaseError
@ -89,10 +93,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(mihomo_raw=mihomo_data)
if isinstance(char_id_list, str):
raise MihomoRequestError
msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None:
raise MihomoRequestError
msg = "char_data_dict is None"
raise MihomoRequestError(msg)
damage_dict = {}
@ -107,10 +113,12 @@ class DamageCal:
char_id_list, char_data_dict = await api_to_dict(uid=uid)
if isinstance(char_id_list, str):
raise MihomoRequestError
msg = "char_id_list is str"
raise MihomoRequestError(msg)
if char_data_dict is None:
raise MihomoRequestError
msg = "char_data_dict is None"
raise MihomoRequestError(msg)
damage_dict = {}

View File

@ -1,9 +1,12 @@
from typing import Union
class UidNotfoundError(Exception):
def __init__(self, uid: str):
self.uid = uid
def __str__(self):
return repr(self.uid)
return self.uid
class CharNameError(Exception):
@ -11,11 +14,28 @@ class CharNameError(Exception):
self.char_name = char_name
def __str__(self):
return repr(self.char_name)
return self.char_name
class MihomoModelError(Exception):
def __init__(self, exce: Union[Exception, str]):
self.exce = exce.args[0] if isinstance(exce, Exception) else exce
def __str__(self):
return self.exce
class MihomoQueueTimeoutError(Exception):
def __str__(self):
return "Mihomo queue timeout, please try again later."
class MihomoRequestError(Exception):
pass
def __init__(self, exce: Union[Exception, str]):
self.exce = exce.args[0] if isinstance(exce, Exception) else exce
def __str__(self):
return self.exce
class NotInCharacterShowcaseError(Exception):
@ -27,4 +47,4 @@ class CharacterShowcaseNotOpenError(Exception):
self.uid = uid
def __str__(self):
return repr(self.uid)
return self.uid

View File

@ -47,11 +47,11 @@ class Challenge(Struct):
class PlayerSpaceInfo(Struct):
challengeInfo: Challenge
maxRogueChallengeScore: int
equipmentCount: int
avatarCount: int
achievementCount: int
challengeInfo: Union[int, None] = None
class PlayerDetailInfo(Struct):

View File

@ -1,10 +1,13 @@
from __future__ import annotations
import json
from pathlib import Path
import msgspec
from httpx import AsyncClient
from msgspec import convert
from starrail_damage_cal.exception import MihomoModelError, MihomoQueueTimeoutError
from starrail_damage_cal.mihomo.models import MihomoData
_HEADER = {"User-Agent": "StarRailDamageCal/"}
@ -25,4 +28,11 @@ async def get_char_card_info(
path.mkdir(parents=True, exist_ok=True)
with Path.open(path / f"{uid!s}.json", "w") as file:
file.write(req.text)
return convert(req.json(), type=MihomoData)
try:
return convert(req.json(), type=MihomoData)
except msgspec.ValidationError as e:
if req.text == '{"detail":"Queue timeout"}':
raise MihomoQueueTimeoutError from e
raise MihomoModelError(e) from e
except json.decoder.JSONDecodeError as e:
raise MihomoModelError(e) from e

View File

@ -43,10 +43,7 @@ async def api_to_dict(
if not mihomo_raw:
if not uid:
raise KeyError
try:
sr_data = await get_char_card_info(uid)
except Exception as e: # noqa: BLE001
raise MihomoRequestError from e
sr_data = await get_char_card_info(uid)
else:
sr_data = mihomo_raw

View File

@ -1,399 +1,142 @@
{
"detailInfo": {
"level": 69,
"worldLevel": 6,
"nickname": "qwerdvd",
"headIcon": 201102,
"level": 70,
"friendCount": 53,
"nickname": "\u5c0f\u590f",
"avatarDetailList": [
{
"level": 80,
"skillTreeList": [
{ "pointId": 1212001, "level": 6 },
{ "pointId": 1212002, "level": 10 },
{ "pointId": 1212003, "level": 10 },
{ "pointId": 1212004, "level": 10 },
{ "pointId": 1212007, "level": 1 },
{ "pointId": 1212101, "level": 1 },
{ "pointId": 1212102, "level": 1 },
{ "pointId": 1212103, "level": 1 },
{ "pointId": 1212201, "level": 1 },
{ "pointId": 1212202, "level": 1 },
{ "pointId": 1212203, "level": 1 },
{ "pointId": 1212204, "level": 1 },
{ "pointId": 1212205, "level": 1 },
{ "pointId": 1212206, "level": 1 },
{ "pointId": 1212207, "level": 1 },
{ "pointId": 1212208, "level": 1 },
{ "pointId": 1212209, "level": 1 },
{ "pointId": 1212210, "level": 1 }
],
"relicList": [
{
"mainAffixId": 1,
"tid": 61021,
"tid": 61041,
"type": 1,
"subAffixList": [
{ "affixId": 3, "cnt": 1 },
{ "affixId": 5, "cnt": 3, "step": 5 },
{ "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 8, "cnt": 3, "step": 4 }
{ "affixId": 5, "cnt": 3, "step": 4 },
{ "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 9, "cnt": 1, "step": 2 },
{ "affixId": 11, "cnt": 1, "step": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"mainAffixId": 1,
"tid": 61022,
"tid": 61042,
"type": 2,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 5, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 1, "step": 1 }
{ "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 1 },
{ "affixId": 9, "cnt": 2, "step": 1 },
{ "affixId": 11, "cnt": 3, "step": 3 }
],
"mainAffixId": 1,
"level": 15
},
{
"mainAffixId": 5,
"tid": 61023,
"tid": 61043,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 5, "cnt": 3, "step": 4 },
{ "affixId": 6, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 2 }
{ "affixId": 1, "cnt": 1 },
{ "affixId": 3, "cnt": 1 },
{ "affixId": 5, "cnt": 5, "step": 6 },
{ "affixId": 11, "cnt": 1, "step": 2 }
],
"mainAffixId": 5,
"level": 15
},
{
"mainAffixId": 2,
"tid": 61024,
"tid": 61044,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 4, "cnt": 3, "step": 3 },
{ "affixId": 8, "cnt": 3, "step": 4 },
{ "affixId": 12, "cnt": 1, "step": 2 }
{ "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 4, "cnt": 2, "step": 3 },
{ "affixId": 5, "cnt": 2, "step": 2 },
{ "affixId": 8, "cnt": 2 }
],
"mainAffixId": 4,
"level": 15
},
{
"mainAffixId": 10,
"tid": 63095,
"type": 5,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 10, "cnt": 2, "step": 1 },
{ "affixId": 12, "cnt": 2, "step": 2 }
{ "affixId": 4, "cnt": 2, "step": 4 },
{ "affixId": 5, "cnt": 3, "step": 5 },
{ "affixId": 6, "cnt": 1, "step": 2 },
{ "affixId": 9, "cnt": 3, "step": 2 }
],
"mainAffixId": 6,
"level": 15
},
{
"mainAffixId": 4,
"tid": 63096,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 1 },
{ "affixId": 9, "cnt": 1, "step": 1 },
{ "affixId": 12, "cnt": 3, "step": 3 }
],
"level": 15
}
],
"equipment": { "tid": 23015, "promotion": 6, "rank": 1, "level": 80 },
"level": 80,
"avatarId": 1213,
"promotion": 6,
"skillTreeList": [
{ "pointId": 1213001, "level": 6 },
{ "pointId": 1213002, "level": 10 },
{ "pointId": 1213003, "level": 10 },
{ "pointId": 1213004, "level": 10 },
{ "pointId": 1213007, "level": 1 },
{ "pointId": 1213101, "level": 1 },
{ "pointId": 1213102, "level": 1 },
{ "pointId": 1213103, "level": 1 },
{ "pointId": 1213201, "level": 1 },
{ "pointId": 1213202, "level": 1 },
{ "pointId": 1213203, "level": 1 },
{ "pointId": 1213204, "level": 1 },
{ "pointId": 1213205, "level": 1 },
{ "pointId": 1213206, "level": 1 },
{ "pointId": 1213207, "level": 1 },
{ "pointId": 1213208, "level": 1 },
{ "pointId": 1213209, "level": 1 },
{ "pointId": 1213210, "level": 1 }
]
},
{
"relicList": [
{
"mainAffixId": 1,
"tid": 61081,
"type": 1,
"subAffixList": [
{ "affixId": 8, "cnt": 1 },
{ "affixId": 1, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 3 },
{ "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 11, "cnt": 2, "step": 3 },
{ "affixId": 12, "cnt": 3, "step": 3 }
{ "affixId": 11, "cnt": 2, "step": 3 }
],
"level": 15
},
{
"mainAffixId": 1,
"tid": 61082,
"type": 2,
"subAffixList": [
{ "affixId": 1, "cnt": 3, "step": 4 },
{ "affixId": 3, "cnt": 3, "step": 5 },
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 4,
"tid": 61083,
"type": 3,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 1 },
{ "affixId": 4, "cnt": 3, "step": 2 },
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 10, "cnt": 2, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 2,
"tid": 61084,
"type": 4,
"subAffixList": [
{ "affixId": 3, "cnt": 4, "step": 6 },
{ "affixId": 4, "cnt": 1, "step": 2 },
{ "affixId": 7, "cnt": 1, "step": 1 },
{ "affixId": 10, "cnt": 2, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 3,
"tid": 63035,
"type": 5,
"exp": 830,
"subAffixList": [
{ "affixId": 5, "cnt": 2, "step": 3 },
{ "affixId": 8, "cnt": 1 },
{ "affixId": 9, "cnt": 2, "step": 1 },
{ "affixId": 10, "cnt": 1, "step": 2 }
],
"level": 11
},
{
"mainAffixId": 2,
"tid": 63036,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 3, "step": 5 },
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 12, "cnt": 2, "step": 4 }
],
"level": 15
}
],
"equipment": { "tid": 22000, "promotion": 6, "rank": 5, "level": 80 },
"level": 80,
"avatarId": 1006,
"rank": 1,
"avatarId": 1212,
"promotion": 6,
"pos": 1,
"skillTreeList": [
{ "pointId": 1006001, "level": 6 },
{ "pointId": 1006002, "level": 10 },
{ "pointId": 1006003, "level": 10 },
{ "pointId": 1006004, "level": 10 },
{ "pointId": 1006007, "level": 1 },
{ "pointId": 1006101, "level": 1 },
{ "pointId": 1006102, "level": 1 },
{ "pointId": 1006103, "level": 1 },
{ "pointId": 1006201, "level": 1 },
{ "pointId": 1006202, "level": 1 },
{ "pointId": 1006203, "level": 1 },
{ "pointId": 1006204, "level": 1 },
{ "pointId": 1006205, "level": 1 },
{ "pointId": 1006206, "level": 1 },
{ "pointId": 1006207, "level": 1 },
{ "pointId": 1006208, "level": 1 },
{ "pointId": 1006209, "level": 1 },
{ "pointId": 1006210, "level": 1 }
]
},
{
"relicList": [
{
"mainAffixId": 1,
"tid": 61081,
"type": 1,
"subAffixList": [
{ "affixId": 4, "cnt": 2, "step": 3 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 3, "step": 4 },
{ "affixId": 12, "cnt": 1 }
],
"level": 15
},
{
"mainAffixId": 1,
"tid": 61082,
"type": 2,
"subAffixList": [
{ "affixId": 6, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 2, "step": 2 },
{ "affixId": 10, "cnt": 3, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 5,
"tid": 61083,
"type": 3,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 5, "cnt": 3, "step": 1 },
{ "affixId": 6, "cnt": 1 },
{ "affixId": 8, "cnt": 2, "step": 3 }
],
"level": 15
},
{
"mainAffixId": 2,
"tid": 61084,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 3 },
{ "affixId": 7, "cnt": 3, "step": 3 },
{ "affixId": 11, "cnt": 2, "step": 3 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 9,
"tid": 63065,
"type": 5,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 2 },
{ "affixId": 3, "cnt": 1 },
{ "affixId": 8, "cnt": 3, "step": 6 },
{ "affixId": 12, "cnt": 2, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 4,
"tid": 63066,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 1, "step": 2 },
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 5, "step": 6 },
{ "affixId": 11, "cnt": 1, "step": 2 }
],
"level": 15
}
],
"equipment": { "tid": 24001, "promotion": 6, "rank": 5, "level": 80 },
"level": 80,
"avatarId": 1102,
"promotion": 6,
"pos": 2,
"skillTreeList": [
{ "pointId": 1102001, "level": 6 },
{ "pointId": 1102002, "level": 10 },
{ "pointId": 1102003, "level": 10 },
{ "pointId": 1102004, "level": 10 },
{ "pointId": 1102007, "level": 1 },
{ "pointId": 1102101, "level": 1 },
{ "pointId": 1102102, "level": 1 },
{ "pointId": 1102103, "level": 1 },
{ "pointId": 1102201, "level": 1 },
{ "pointId": 1102202, "level": 1 },
{ "pointId": 1102203, "level": 1 },
{ "pointId": 1102204, "level": 1 },
{ "pointId": 1102205, "level": 1 },
{ "pointId": 1102206, "level": 1 },
{ "pointId": 1102207, "level": 1 },
{ "pointId": 1102208, "level": 1 },
{ "pointId": 1102209, "level": 1 },
{ "pointId": 1102210, "level": 1 }
]
"equipment": { "tid": 24000, "level": 80, "promotion": 6, "rank": 5 }
}
],
"recordInfo": {
"avatarCount": 29,
"achievementCount": 378,
"maxRogueChallengeScore": 8,
"equipmentCount": 151
},
"uid": 102840119,
"isDisplayAvatar": true,
"assistAvatarDetail": {
"relicList": [
{
"mainAffixId": 1,
"tid": 61021,
"type": 1,
"subAffixList": [
{ "affixId": 3, "cnt": 1 },
{ "affixId": 5, "cnt": 3, "step": 5 },
{ "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 8, "cnt": 3, "step": 4 }
],
"level": 15
},
{
"mainAffixId": 1,
"tid": 61022,
"type": 2,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 4 },
{ "affixId": 5, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 1, "step": 1 }
],
"level": 15
},
{
"mainAffixId": 5,
"tid": 61023,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 5, "cnt": 3, "step": 4 },
{ "affixId": 6, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 2,
"tid": 61024,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 4, "cnt": 3, "step": 3 },
{ "affixId": 8, "cnt": 3, "step": 4 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 10,
"tid": 63095,
"type": 5,
"subAffixList": [
{ "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 10, "cnt": 2, "step": 1 },
{ "affixId": 12, "cnt": 2, "step": 2 }
],
"level": 15
},
{
"mainAffixId": 4,
"tid": 63096,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 8, "cnt": 2, "step": 1 },
{ "affixId": 9, "cnt": 1, "step": 1 },
{ "affixId": 12, "cnt": 3, "step": 3 }
],
"level": 15
}
],
"equipment": { "tid": 23015, "promotion": 6, "rank": 1, "level": 80 },
"level": 80,
"avatarId": 1213,
"promotion": 6,
"skillTreeList": [
{ "pointId": 1005001, "level": 5 },
{ "pointId": 1005002, "level": 9 },
{ "pointId": 1005003, "level": 8 },
{ "pointId": 1005004, "level": 9 },
{ "pointId": 1005007, "level": 1 },
{ "pointId": 1005101, "level": 1 },
{ "pointId": 1005102, "level": 1 },
{ "pointId": 1005103, "level": 1 },
{ "pointId": 1005201, "level": 1 },
{ "pointId": 1005202, "level": 1 },
{ "pointId": 1005203, "level": 1 },
{ "pointId": 1005204, "level": 1 },
{ "pointId": 1005205, "level": 1 },
{ "pointId": 1005206, "level": 1 },
{ "pointId": 1005207, "level": 1 },
{ "pointId": 1005210, "level": 1 },
{ "pointId": 1213001, "level": 6 },
{ "pointId": 1213002, "level": 10 },
{ "pointId": 1213002, "level": 9 },
{ "pointId": 1213003, "level": 10 },
{ "pointId": 1213004, "level": 10 },
{ "pointId": 1213004, "level": 9 },
{ "pointId": 1213007, "level": 1 },
{ "pointId": 1213101, "level": 1 },
{ "pointId": 1213102, "level": 1 },
@ -407,19 +150,249 @@
{ "pointId": 1213207, "level": 1 },
{ "pointId": 1213208, "level": 1 },
{ "pointId": 1213209, "level": 1 },
{ "pointId": 1213210, "level": 1 }
]
{ "pointId": 1213210, "level": 1 },
{ "pointId": 1205001, "level": 6 },
{ "pointId": 1205002, "level": 10 },
{ "pointId": 1205003, "level": 9 },
{ "pointId": 1205004, "level": 7 },
{ "pointId": 1205007, "level": 1 },
{ "pointId": 1205101, "level": 1 },
{ "pointId": 1205102, "level": 1 },
{ "pointId": 1205103, "level": 1 },
{ "pointId": 1205201, "level": 1 },
{ "pointId": 1205202, "level": 1 },
{ "pointId": 1205203, "level": 1 },
{ "pointId": 1205205, "level": 1 },
{ "pointId": 1205206, "level": 1 },
{ "pointId": 1205207, "level": 1 },
{ "pointId": 1205208, "level": 1 },
{ "pointId": 1205209, "level": 1 },
{ "pointId": 1205210, "level": 1 }
],
"relicList": [
{
"tid": 61091,
"type": 1,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 5, "cnt": 2, "step": 2 },
{ "affixId": 8, "cnt": 2, "step": 2 },
{ "affixId": 11, "cnt": 2, "step": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61092,
"type": 2,
"subAffixList": [
{ "affixId": 5, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 3, "step": 4 },
{ "affixId": 10, "cnt": 3, "step": 4 },
{ "affixId": 11, "cnt": 2, "step": 3 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61093,
"type": 3,
"subAffixList": [
{ "affixId": 3, "cnt": 1, "step": 2 },
{ "affixId": 7, "cnt": 3, "step": 4 },
{ "affixId": 8, "cnt": 2, "step": 4 },
{ "affixId": 10, "cnt": 3, "step": 2 }
],
"mainAffixId": 2,
"level": 15
},
{
"tid": 61094,
"type": 4,
"subAffixList": [
{ "affixId": 2, "cnt": 2, "step": 1 },
{ "affixId": 3, "cnt": 2, "step": 1 },
{ "affixId": 5, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 1, "step": 2 }
],
"mainAffixId": 4,
"level": 15
},
{
"tid": 63015,
"type": 5,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 2, "cnt": 3, "step": 4 },
{ "affixId": 3, "cnt": 1 },
{ "affixId": 5, "cnt": 3, "step": 3 }
],
"mainAffixId": 7,
"level": 15
},
{
"tid": 63016,
"type": 6,
"subAffixList": [
{ "affixId": 2, "cnt": 3, "step": 4 },
{ "affixId": 4, "cnt": 2, "step": 3 },
{ "affixId": 6, "cnt": 2, "step": 1 },
{ "affixId": 9, "cnt": 1, "step": 2 }
],
"mainAffixId": 4,
"level": 15
},
{
"tid": 61021,
"type": 1,
"subAffixList": [
{ "affixId": 5, "cnt": 4, "step": 4 },
{ "affixId": 7, "cnt": 1 },
{ "affixId": 8, "cnt": 2, "step": 3 },
{ "affixId": 9, "cnt": 2 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61022,
"type": 2,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 3, "cnt": 2 },
{ "affixId": 9, "cnt": 4, "step": 3 },
{ "affixId": 12, "cnt": 2, "step": 2 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61023,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 2 },
{ "affixId": 2, "cnt": 1 },
{ "affixId": 3, "cnt": 4, "step": 2 },
{ "affixId": 5, "cnt": 1 }
],
"mainAffixId": 5,
"level": 15
},
{
"tid": 61024,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 2 },
{ "affixId": 8, "cnt": 4, "step": 4 },
{ "affixId": 10, "cnt": 1 },
{ "affixId": 11, "cnt": 2, "step": 1 }
],
"mainAffixId": 2,
"level": 15
},
{
"tid": 63095,
"type": 5,
"subAffixList": [
{ "affixId": 8, "cnt": 3, "step": 3 },
{ "affixId": 10, "cnt": 2, "step": 4 },
{ "affixId": 11, "cnt": 2, "step": 4 },
{ "affixId": 12, "cnt": 1, "step": 2 }
],
"mainAffixId": 10,
"level": 15
},
{
"tid": 63096,
"type": 6,
"subAffixList": [
{ "affixId": 6, "cnt": 1, "step": 1 },
{ "affixId": 8, "cnt": 1, "step": 1 },
{ "affixId": 9, "cnt": 3, "step": 5 },
{ "affixId": 11, "cnt": 3, "step": 5 }
],
"mainAffixId": 4,
"level": 15
},
{
"tid": 61131,
"type": 1,
"subAffixList": [
{ "affixId": 6, "cnt": 2, "step": 2 },
{ "affixId": 8, "cnt": 4, "step": 3 },
{ "affixId": 9, "cnt": 1, "step": 2 },
{ "affixId": 10, "cnt": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61132,
"type": 2,
"subAffixList": [
{ "affixId": 6, "cnt": 5, "step": 4 },
{ "affixId": 8, "cnt": 1, "step": 1 },
{ "affixId": 9, "cnt": 2, "step": 3 },
{ "affixId": 12, "cnt": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 61133,
"type": 3,
"subAffixList": [
{ "affixId": 1, "cnt": 1, "step": 1 },
{ "affixId": 3, "cnt": 4, "step": 3 },
{ "affixId": 5, "cnt": 2, "step": 2 },
{ "affixId": 6, "cnt": 2, "step": 1 }
],
"mainAffixId": 5,
"level": 15
},
{
"tid": 61134,
"type": 4,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 2 },
{ "affixId": 5, "cnt": 3, "step": 3 },
{ "affixId": 9, "cnt": 2, "step": 2 },
{ "affixId": 12, "cnt": 2, "step": 1 }
],
"mainAffixId": 1,
"level": 15
},
{
"tid": 63065,
"type": 5,
"subAffixList": [
{ "affixId": 1, "cnt": 2, "step": 1 },
{ "affixId": 3, "cnt": 2, "step": 2 },
{ "affixId": 4, "cnt": 2, "step": 4 },
{ "affixId": 8, "cnt": 2, "step": 4 }
],
"mainAffixId": 8,
"level": 15
},
{
"tid": 63066,
"type": 6,
"subAffixList": [
{ "affixId": 1, "cnt": 3, "step": 2 },
{ "affixId": 2, "cnt": 1 },
{ "affixId": 5, "cnt": 1 },
{ "affixId": 8, "cnt": 4, "step": 6 }
],
"mainAffixId": 3,
"level": 15
}
],
"avatarId": 1205,
"promotion": 6,
"equipment": { "tid": 23009, "level": 80, "promotion": 6, "rank": 1 },
"pos": 2
},
"friendCount": 18,
"recordInfo": {
"achievementCount": 276,
"avatarCount": 24,
"maxRogueChallengeScore": 7,
"challengeInfo": { "noneScheduleMaxLevel": 16 },
"equipmentCount": 154
},
"uid": 100086290,
"platform": "PC",
"isDisplayAvatar": true
"platform": "IOS",
"headIcon": 200107
}
}