From a27b8826c858b5e2847b39779abcbfa8f22ba0b0 Mon Sep 17 00:00:00 2001 From: shoucandanghehe Date: Mon, 21 Apr 2025 13:03:44 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=9B=B4=E6=96=B0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../utils/render/__init__.py | 33 +++---------------- .../utils/render/schemas/v1/base.py | 4 +-- .../utils/render/schemas/v1/tetrio/rank.py | 3 +- .../utils/render/schemas/v1/tos/info.py | 6 ++-- .../render/schemas/v2/tetrio/rank/__init__.py | 3 +- .../render/schemas/v2/tetrio/rank/detail.py | 3 +- .../render/schemas/v2/tetrio/record/base.py | 4 +-- .../render/schemas/v2/tetrio/tetra_league.py | 3 +- .../render/schemas/v2/tetrio/user/info.py | 14 ++++---- .../render/schemas/v2/tetrio/user/list.py | 4 +-- 10 files changed, 29 insertions(+), 48 deletions(-) diff --git a/nonebot_plugin_tetris_stats/utils/render/__init__.py b/nonebot_plugin_tetris_stats/utils/render/__init__.py index e25a560..c0c9250 100644 --- a/nonebot_plugin_tetris_stats/utils/render/__init__.py +++ b/nonebot_plugin_tetris_stats/utils/render/__init__.py @@ -4,6 +4,7 @@ from jinja2 import Environment, FileSystemLoader from nonebot.compat import PYDANTIC_V2 from ..templates import TEMPLATES_DIR +from .schemas.base import Base from .schemas.bind import Bind from .schemas.v1.tetrio.rank import Data as TETRIORankDataV1 from .schemas.v1.tetrio.user.info import Info as TETRIOUserInfoV1 @@ -15,7 +16,7 @@ from .schemas.v2.tetrio.record.blitz import Record as TETRIORecordBlitzV2 from .schemas.v2.tetrio.record.sprint import Record as TETRIORecordSprintV2 from .schemas.v2.tetrio.tetra_league import Data as TETRIOTetraLeagueDataV2 from .schemas.v2.tetrio.user.info import Info as TETRIOUserInfoV2 -from .schemas.v2.tetrio.user.list import Data as TETRIOUserListV2 +from .schemas.v2.tetrio.user.list import List as TETRIOUserListV2 env = Environment( loader=FileSystemLoader(TEMPLATES_DIR), @@ -50,35 +51,9 @@ async def render(render_type: Literal['v2/tetrio/tetra-league'], data: TETRIOTet async def render(render_type: Literal['v2/tetrio/user/info'], data: TETRIOUserInfoV2) -> str: ... @overload async def render(render_type: Literal['v2/tetrio/user/list'], data: TETRIOUserListV2) -> str: ... - - async def render( - render_type: Literal[ - 'v1/binding', - 'v1/tetrio/info', - 'v1/tetrio/rank', - 'v1/top/info', - 'v1/tos/info', - 'v2/tetrio/rank', - 'v2/tetrio/rank/detail', - 'v2/tetrio/record/blitz', - 'v2/tetrio/record/sprint', - 'v2/tetrio/tetra-league', - 'v2/tetrio/user/info', - 'v2/tetrio/user/list', - ], - data: Bind - | TETRIOUserInfoV1 - | TETRIORankDataV1 - | TOPInfoV1 - | TOSInfoV1 - | TETRIORankDataV2 - | TETRIORankDetailDataV2 - | TETRIORecordBlitzV2 - | TETRIORecordSprintV2 - | TETRIOTetraLeagueDataV2 - | TETRIOUserInfoV2 - | TETRIOUserListV2, + render_type: str, + data: Base, ) -> str: if PYDANTIC_V2: return await env.get_template('index.html').render_async( diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v1/base.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v1/base.py index 7f7c30a..6c4c366 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v1/base.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v1/base.py @@ -7,6 +7,6 @@ from ..base import HistoryData class History(BaseModel): data: list[HistoryData] split_interval: Number - min_tr: Number - max_tr: Number + min_value: Number + max_value: Number offset: Number diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tetrio/rank.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tetrio/rank.py index d8ea374..7d9238c 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tetrio/rank.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tetrio/rank.py @@ -3,6 +3,7 @@ from datetime import datetime from pydantic import BaseModel from ......games.tetrio.api.typedefs import ValidRank +from ...base import Base class ItemData(BaseModel): @@ -11,6 +12,6 @@ class ItemData(BaseModel): players: int -class Data(BaseModel): +class Data(Base): items: dict[ValidRank, ItemData] updated_at: datetime diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tos/info.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tos/info.py index f1fb718..43b6c84 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tos/info.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v1/tos/info.py @@ -1,12 +1,14 @@ from pydantic import BaseModel, Field from .....typedefs import Number -from ...base import People, Trending +from ...base import Base, People, Trending from ..base import History class Multiplayer(BaseModel): history: History + rating: Number + rd: Number lpm: Number pps: Number @@ -34,7 +36,7 @@ class Singleplayer(BaseModel): marathon: str -class Info(BaseModel): +class Info(Base): user: People multiplayer: Multiplayer singleplayer: Singleplayer diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/__init__.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/__init__.py index 49337d7..072c26d 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/__init__.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/__init__.py @@ -4,6 +4,7 @@ from pydantic import BaseModel from .......games.tetrio.api.typedefs import ValidRank from ......typedefs import Number +from ....base import Base class AverageData(BaseModel): @@ -21,6 +22,6 @@ class ItemData(BaseModel): players: Number -class Data(BaseModel): +class Data(Base): items: dict[ValidRank, ItemData] updated_at: datetime diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/detail.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/detail.py index f1f4c9c..f93dd17 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/detail.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/rank/detail.py @@ -4,6 +4,7 @@ from pydantic import BaseModel from .......games.tetrio.api.typedefs import ValidRank from ......typedefs import Number +from ....base import Base class SpecialData(BaseModel): @@ -19,7 +20,7 @@ class SpecialData(BaseModel): vs_holder: str | None = None -class Data(BaseModel): +class Data(Base): name: ValidRank trending: Number require_tr: Number diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/record/base.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/record/base.py index 2560b32..5912f65 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/record/base.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/record/base.py @@ -3,7 +3,7 @@ from typing import Literal from pydantic import BaseModel -from ....base import People +from ....base import Base, People class User(People): @@ -61,7 +61,7 @@ class Statistic(BaseModel): finesse: Finesse -class Record(BaseModel): +class Record(Base): type: Literal['best', 'personal_best', 'recent', 'disputed'] user: User diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/tetra_league.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/tetra_league.py index 24663a1..176b4c7 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/tetra_league.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/tetra_league.py @@ -3,6 +3,7 @@ from datetime import datetime from pydantic import BaseModel from .....typedefs import Number +from ...base import Base class StatisticalData(BaseModel): @@ -32,7 +33,7 @@ class Game(BaseModel): handling: Handling -class Data(BaseModel): +class Data(Base): replay_id: str games: list[Game] play_at: datetime diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/info.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/info.py index 996b1c1..086404c 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/info.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/info.py @@ -5,7 +5,7 @@ from pydantic import BaseModel from .......games.tetrio.api.typedefs import Rank from ......typedefs import Number -from ....base import Avatar, HistoryData +from ....base import Avatar, Base, HistoryData class Badge(BaseModel): @@ -37,7 +37,7 @@ class User(BaseModel): xp: Number ar: Number - achievements: list[Number] + achievements: list[int] playtime: str | None join_at: datetime | None @@ -100,24 +100,24 @@ class Zen(BaseModel): class Week(BaseModel): - altitude: int + altitude: Number global_rank: int | None country_rank: int | None play_at: datetime class Best(BaseModel): - altitude: int + altitude: Number global_rank: int | None play_at: datetime class Zenith(BaseModel): - week: Week - best: Best + week: Week | None + best: Best | None -class Info(BaseModel): +class Info(Base): user: User tetra_league: TetraLeague | None zenith: Zenith | None diff --git a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/list.py b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/list.py index e502fbc..1dd1104 100644 --- a/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/list.py +++ b/nonebot_plugin_tetris_stats/utils/render/schemas/v2/tetrio/user/list.py @@ -2,7 +2,7 @@ from pydantic import BaseModel from .......games.tetrio.api.typedefs import Rank from ......typedefs import Number -from ....base import Avatar +from ....base import Avatar, Base class TetraLeague(BaseModel): @@ -33,6 +33,6 @@ class Data(BaseModel): tetra_league: TetraLeague -class List(BaseModel): +class List(Base): show_index: bool data: list[Data]