mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-11-29 19:08:48 +00:00
213 lines
4.5 KiB
Python
213 lines
4.5 KiB
Python
|
from datetime import datetime
|
||
|
from enum import Enum
|
||
|
from typing import Dict, List, Any, Optional
|
||
|
|
||
|
from pydantic import BaseModel, Field
|
||
|
|
||
|
|
||
|
class AkashaSubStat(str, Enum):
|
||
|
CRR = "双暴"
|
||
|
ATK = "百分比攻击力"
|
||
|
HP = "百分比生命值"
|
||
|
DEF = "百分比防御力"
|
||
|
ATKF = "固定攻击力"
|
||
|
HPF = "固定生命值"
|
||
|
DEFF = "固定防御力"
|
||
|
EM = "元素精通"
|
||
|
ER = "元素充能效率"
|
||
|
CR = "暴击率"
|
||
|
CD = "暴击伤害"
|
||
|
|
||
|
|
||
|
class AkashaRankCalFit(BaseModel):
|
||
|
calculationId: str
|
||
|
short: str
|
||
|
name: str
|
||
|
details: str
|
||
|
result: float
|
||
|
ranking: str
|
||
|
outOf: int
|
||
|
priority: int
|
||
|
type: str
|
||
|
|
||
|
|
||
|
class AkashaRankCal(BaseModel):
|
||
|
fit: AkashaRankCalFit
|
||
|
|
||
|
|
||
|
class AkashaRank(BaseModel):
|
||
|
_id: str
|
||
|
characterId: int
|
||
|
uid = int
|
||
|
constellation: int
|
||
|
icon: str
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardCategoryWeapon(BaseModel):
|
||
|
name: str
|
||
|
icon: str
|
||
|
substat: str
|
||
|
type: str
|
||
|
rarity: str
|
||
|
refinement: int
|
||
|
calculationId: str
|
||
|
details: str
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardCategory(BaseModel):
|
||
|
_id: str
|
||
|
name: str
|
||
|
addDate: datetime
|
||
|
c6: str
|
||
|
characterId: int
|
||
|
characterName: str
|
||
|
count: int
|
||
|
details: str
|
||
|
element: str
|
||
|
new: int
|
||
|
rarity: int
|
||
|
short: str
|
||
|
weapons: List[AkashaLeaderboardCategoryWeapon]
|
||
|
weaponsCount: int
|
||
|
characterIcon: str
|
||
|
index: int
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardCalculation(BaseModel):
|
||
|
id: str
|
||
|
result: float
|
||
|
|
||
|
@property
|
||
|
def int(self) -> int:
|
||
|
return int(self.result)
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardArtifactSet(BaseModel):
|
||
|
icon: str
|
||
|
count: int
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardOwner(BaseModel):
|
||
|
nickname: str
|
||
|
adventureRank: float
|
||
|
profilePicture: Any
|
||
|
nameCard: str
|
||
|
patreon: Dict[str, Any]
|
||
|
region: str
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardStatsValue(BaseModel):
|
||
|
value: float
|
||
|
|
||
|
@property
|
||
|
def int(self) -> int:
|
||
|
return int(self.value)
|
||
|
|
||
|
@property
|
||
|
def percent(self) -> str:
|
||
|
return f"{self.value * 100:.1f}"
|
||
|
|
||
|
@property
|
||
|
def web_value(self) -> str:
|
||
|
return f"{self.value:.2f}"
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardStats(BaseModel):
|
||
|
maxHp: AkashaLeaderboardStatsValue
|
||
|
atk: AkashaLeaderboardStatsValue
|
||
|
def_: AkashaLeaderboardStatsValue = Field(..., alias="def")
|
||
|
elementalMastery: AkashaLeaderboardStatsValue
|
||
|
energyRecharge: AkashaLeaderboardStatsValue
|
||
|
healingBonus: AkashaLeaderboardStatsValue
|
||
|
critRate: AkashaLeaderboardStatsValue
|
||
|
critDamage: AkashaLeaderboardStatsValue
|
||
|
electroDamageBonus: Optional[AkashaLeaderboardStatsValue]
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardWeaponInfo(BaseModel):
|
||
|
level: int
|
||
|
promoteLevel: int
|
||
|
refinementLevel: AkashaLeaderboardStatsValue
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardWeapon(BaseModel):
|
||
|
weaponInfo: AkashaLeaderboardWeaponInfo
|
||
|
flat: Dict[str, Any]
|
||
|
name: str
|
||
|
icon: str
|
||
|
|
||
|
|
||
|
class AkashaLeaderboardCharacterMetadata(BaseModel):
|
||
|
element: str
|
||
|
|
||
|
|
||
|
class AkashaLeaderboard(BaseModel):
|
||
|
_id: str
|
||
|
calculation: AkashaLeaderboardCalculation
|
||
|
characterId: int
|
||
|
type: str
|
||
|
uid: str
|
||
|
artifactObjects: Dict[str, Any]
|
||
|
artifactSets: Dict[str, AkashaLeaderboardArtifactSet]
|
||
|
calculations: Dict[str, Any]
|
||
|
constellation: int
|
||
|
costumeId: str
|
||
|
critValue: float
|
||
|
md5: str
|
||
|
name: str
|
||
|
owner: AkashaLeaderboardOwner
|
||
|
propMap: Dict[str, Any]
|
||
|
proudSkillExtraLevelMap: Dict[str, Any]
|
||
|
stats: AkashaLeaderboardStats
|
||
|
talentsLevelMap: Dict[str, Any]
|
||
|
weapon: AkashaLeaderboardWeapon
|
||
|
icon: str
|
||
|
index: str
|
||
|
nameCardLink: str
|
||
|
profilePictureLink: str
|
||
|
characterMetadata: AkashaLeaderboardCharacterMetadata
|
||
|
|
||
|
|
||
|
class AkashaArtifactType(str, Enum):
|
||
|
BRACER = "EQUIP_BRACER"
|
||
|
"""生之花"""
|
||
|
NECKLACE = "EQUIP_NECKLACE"
|
||
|
"""死之羽"""
|
||
|
SHOES = "EQUIP_SHOES"
|
||
|
"""时之沙"""
|
||
|
RING = "EQUIP_RING"
|
||
|
"""空之杯"""
|
||
|
DRESS = "EQUIP_DRESS"
|
||
|
"""理之冠"""
|
||
|
|
||
|
@property
|
||
|
def real_name(self):
|
||
|
name_map = {
|
||
|
"EQUIP_BRACER": "生之花",
|
||
|
"EQUIP_NECKLACE": "死之羽",
|
||
|
"EQUIP_SHOES": "时之沙",
|
||
|
"EQUIP_RING": "空之杯",
|
||
|
"EQUIP_DRESS": "理之冠",
|
||
|
}
|
||
|
return name_map[self.value]
|
||
|
|
||
|
|
||
|
class AkashaArtifact(BaseModel):
|
||
|
_id: str
|
||
|
uid: int
|
||
|
critValue: float
|
||
|
equipType: AkashaArtifactType
|
||
|
icon: str
|
||
|
level: int
|
||
|
mainStatKey: str
|
||
|
mainStatValue: float
|
||
|
name: str
|
||
|
owner: AkashaLeaderboardOwner
|
||
|
setName: str
|
||
|
stars: int
|
||
|
substats: Dict[str, float]
|
||
|
substatsIdList: List[int]
|
||
|
index: int
|
||
|
nameCardLink: str
|
||
|
profilePictureLink: str
|