mirror of
https://github.com/PaiGramTeam/SIMNet.git
synced 2024-11-22 06:17:57 +00:00
✨ Support starrail challenge story
This commit is contained in:
parent
0ebae4973f
commit
9f7d581f07
@ -7,6 +7,7 @@ from simnet.errors import BadRequest, DataNotPublic
|
|||||||
from simnet.models.lab.record import RecordCard
|
from simnet.models.lab.record import RecordCard
|
||||||
from simnet.models.starrail.chronicle.activity import StarRailActivity
|
from simnet.models.starrail.chronicle.activity import StarRailActivity
|
||||||
from simnet.models.starrail.chronicle.challenge import StarRailChallenge
|
from simnet.models.starrail.chronicle.challenge import StarRailChallenge
|
||||||
|
from simnet.models.starrail.chronicle.challenge_story import StarRailChallengeStory
|
||||||
from simnet.models.starrail.chronicle.characters import StarRailDetailCharacters
|
from simnet.models.starrail.chronicle.characters import StarRailDetailCharacters
|
||||||
from simnet.models.starrail.chronicle.museum import StarRailMuseumBasic, StarRailMuseumDetail
|
from simnet.models.starrail.chronicle.museum import StarRailMuseumBasic, StarRailMuseumDetail
|
||||||
from simnet.models.starrail.chronicle.notes import StarRailNote, StarRailNoteWidget, StarRailNoteOverseaWidget
|
from simnet.models.starrail.chronicle.notes import StarRailNote, StarRailNoteWidget, StarRailNoteOverseaWidget
|
||||||
@ -205,6 +206,30 @@ class StarRailBattleChronicleClient(BaseChronicleClient):
|
|||||||
data = await self._request_starrail_record("challenge", player_id, lang=lang, payload=payload)
|
data = await self._request_starrail_record("challenge", player_id, lang=lang, payload=payload)
|
||||||
return StarRailChallenge(**data)
|
return StarRailChallenge(**data)
|
||||||
|
|
||||||
|
async def get_starrail_challenge_story(
|
||||||
|
self,
|
||||||
|
player_id: Optional[int] = None,
|
||||||
|
previous: bool = False,
|
||||||
|
lang: Optional[str] = None,
|
||||||
|
) -> StarRailChallengeStory:
|
||||||
|
"""Get starrail challenge runs.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
player_id (Optional[int], optional): The player ID. Defaults to None.
|
||||||
|
previous (bool, optional): Whether to get previous runs. Defaults to False.
|
||||||
|
lang (Optional[str], optional): The language of the data. Defaults to None.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
StarRailChallengeStory: The requested challenge runs.
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
BadRequest: If the request is invalid.
|
||||||
|
DataNotPublic: If the requested data is not public.
|
||||||
|
"""
|
||||||
|
payload = dict(schedule_type=2 if previous else 1, need_all="true", type="story")
|
||||||
|
data = await self._request_starrail_record("challenge_story", player_id, lang=lang, payload=payload)
|
||||||
|
return StarRailChallengeStory(**data)
|
||||||
|
|
||||||
async def get_starrail_rogue(
|
async def get_starrail_rogue(
|
||||||
self,
|
self,
|
||||||
player_id: Optional[int] = None,
|
player_id: Optional[int] = None,
|
||||||
|
72
simnet/models/starrail/chronicle/challenge_story.py
Normal file
72
simnet/models/starrail/chronicle/challenge_story.py
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
"""Starrail chronicle challenge story."""
|
||||||
|
from typing import List
|
||||||
|
|
||||||
|
from pydantic import Field
|
||||||
|
|
||||||
|
from simnet.models.base import APIModel
|
||||||
|
from simnet.models.starrail.character import RogueCharacter
|
||||||
|
|
||||||
|
from .base import PartialTime
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"StarRailChallengeStoryGroup",
|
||||||
|
"StarRailChallengeStoryFloorNode",
|
||||||
|
"StarRailChallengeStoryFloor",
|
||||||
|
"StarRailChallengeStory",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class StarRailChallengeStoryGroup(APIModel):
|
||||||
|
"""Group in a challenge story."""
|
||||||
|
|
||||||
|
season: int = Field(alias="schedule_id")
|
||||||
|
begin_time: PartialTime
|
||||||
|
end_time: PartialTime
|
||||||
|
status: str
|
||||||
|
name_mi18n: str
|
||||||
|
|
||||||
|
|
||||||
|
class StarRailChallengeStoryBuff(APIModel):
|
||||||
|
"""Challenge Story Buff"""
|
||||||
|
|
||||||
|
id: int
|
||||||
|
name_mi18n: str
|
||||||
|
desc_mi18n: str
|
||||||
|
icon: str
|
||||||
|
|
||||||
|
|
||||||
|
class StarRailChallengeStoryFloorNode(APIModel):
|
||||||
|
"""Node for a floor."""
|
||||||
|
|
||||||
|
challenge_time: PartialTime
|
||||||
|
avatars: List[RogueCharacter]
|
||||||
|
|
||||||
|
challenge_time: PartialTime
|
||||||
|
avatars: List[RogueCharacter]
|
||||||
|
buff: StarRailChallengeStoryBuff
|
||||||
|
score: int
|
||||||
|
|
||||||
|
|
||||||
|
class StarRailChallengeStoryFloor(APIModel):
|
||||||
|
"""Floor in a challenge."""
|
||||||
|
|
||||||
|
name: str
|
||||||
|
round_num: int
|
||||||
|
star_num: int
|
||||||
|
node_1: StarRailChallengeStoryFloorNode
|
||||||
|
node_2: StarRailChallengeStoryFloorNode
|
||||||
|
is_fast: bool
|
||||||
|
maze_id: int
|
||||||
|
|
||||||
|
|
||||||
|
class StarRailChallengeStory(APIModel):
|
||||||
|
"""Challenge story in a season."""
|
||||||
|
|
||||||
|
groups: List[StarRailChallengeStoryGroup]
|
||||||
|
total_stars: int = Field(alias="star_num")
|
||||||
|
max_floor: str
|
||||||
|
max_floor_id: int
|
||||||
|
total_battles: int = Field(alias="battle_num")
|
||||||
|
has_data: bool
|
||||||
|
|
||||||
|
floors: List[StarRailChallengeStoryFloor] = Field(alias="all_floor_detail")
|
Loading…
Reference in New Issue
Block a user