From 1f02c107f543bb67da61c56fec79d1651c51eb7f Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Sat, 3 Aug 2024 16:47:57 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20AR=E6=8E=92=E8=A1=8C=E6=A6=9C=20API?= =?UTF-8?q?=20=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../games/tetrio/api/schemas/base.py | 6 ++++ .../tetrio/api/schemas/leaderboards/ar.py | 27 ++++++++++++++++ .../tetrio/api/schemas/leaderboards/base.py | 30 ++++++++++++++++++ .../tetrio/api/schemas/leaderboards/xp.py | 31 ++----------------- .../tetrio/api/schemas/summaries/base.py | 6 ---- .../tetrio/api/schemas/summaries/solo.py | 4 +-- .../tetrio/api/schemas/summaries/zenith.py | 4 +-- 7 files changed, 69 insertions(+), 39 deletions(-) create mode 100644 nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/ar.py create mode 100644 nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/base.py diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/base.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/base.py index f6156eb..da809f6 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/base.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/base.py @@ -4,6 +4,12 @@ from typing import Literal from pydantic import BaseModel +class P(BaseModel): # what is P + pri: float + sec: float + ter: float + + class Cache(BaseModel): status: str cached_at: datetime diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/ar.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/ar.py new file mode 100644 index 0000000..455598c --- /dev/null +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/ar.py @@ -0,0 +1,27 @@ +from pydantic import BaseModel, Field + +from ..base import SuccessModel +from .base import Entry as BaseEntry + + +class ArCounts(BaseModel): + bronze: int | None = Field(None, alias='1') + silver: int | None = Field(None, alias='2') + gold: int | None = Field(None, alias='3') + platinum: int | None = Field(None, alias='4') + diamond: int | None = Field(None, alias='5') + issued: int | None = Field(None, alias='100') + top10: int | None = Field(None, alias='t10') + + +class Entry(BaseEntry): + ar: int + ar_counts: ArCounts + + +class Data(BaseModel): + entries: list[Entry] + + +class ArSuccessModel(SuccessModel): + data: Data diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/base.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/base.py new file mode 100644 index 0000000..4ab42f1 --- /dev/null +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/base.py @@ -0,0 +1,30 @@ +from datetime import datetime + +from pydantic import BaseModel, Field + +from ...typing import Rank +from ..base import P + + +class League(BaseModel): + gamesplayed: int + gameswon: int + rating: int + rank: Rank + decaying: bool + + +class Entry(BaseModel): + id: str = Field(..., alias='_id') + username: str + role: str + xp: float + league: League + supporter: bool | None = None + verified: bool + country: str | None = None + ts: datetime + gamesplayed: int + gameswon: int + gametime: float + p: P diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/xp.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/xp.py index 65415b5..c31645e 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/xp.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/leaderboards/xp.py @@ -1,34 +1,7 @@ -from datetime import datetime +from pydantic import BaseModel -from pydantic import BaseModel, Field - -from ...typing import Rank from ..base import SuccessModel -from ..summaries.base import P - - -class League(BaseModel): - gamesplayed: int - gameswon: int - rating: int - rank: Rank - decaying: bool - - -class Entry(BaseModel): - id: str = Field(..., alias='_id') - username: str - role: str - xp: float - league: League - supporter: bool | None = None - verified: bool - country: str | None = None - ts: datetime - gamesplayed: int - gameswon: int - gametime: float - p: P +from .base import Entry class Data(BaseModel): diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/base.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/base.py index 9350d44..210ecce 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/base.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/base.py @@ -21,9 +21,3 @@ class Finesse(BaseModel): combo: int faults: int perfectpieces: int - - -class P(BaseModel): # what is P - pri: float - sec: float - ter: float diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/solo.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/solo.py index 76ac773..0b56777 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/solo.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/solo.py @@ -3,8 +3,8 @@ from typing import Literal, TypeAlias from pydantic import BaseModel, Field -from ..base import FailedModel, SuccessModel -from .base import AggregateStats, Finesse, P, User +from ..base import FailedModel, P, SuccessModel +from .base import AggregateStats, Finesse, User class Time(BaseModel): diff --git a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/zenith.py b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/zenith.py index 9058c33..050b5cf 100644 --- a/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/zenith.py +++ b/nonebot_plugin_tetris_stats/games/tetrio/api/schemas/summaries/zenith.py @@ -3,8 +3,8 @@ from typing import Literal, TypeAlias from pydantic import BaseModel, Field -from ..base import FailedModel, SuccessModel -from .base import AggregateStats, Finesse, P, User +from ..base import FailedModel, P, SuccessModel +from .base import AggregateStats, Finesse, User class Clears(BaseModel):