更新模板

This commit is contained in:
2025-04-21 13:03:44 +08:00
parent 86198df4ed
commit a27b8826c8
10 changed files with 29 additions and 48 deletions

View File

@@ -4,6 +4,7 @@ from jinja2 import Environment, FileSystemLoader
from nonebot.compat import PYDANTIC_V2 from nonebot.compat import PYDANTIC_V2
from ..templates import TEMPLATES_DIR from ..templates import TEMPLATES_DIR
from .schemas.base import Base
from .schemas.bind import Bind from .schemas.bind import Bind
from .schemas.v1.tetrio.rank import Data as TETRIORankDataV1 from .schemas.v1.tetrio.rank import Data as TETRIORankDataV1
from .schemas.v1.tetrio.user.info import Info as TETRIOUserInfoV1 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.record.sprint import Record as TETRIORecordSprintV2
from .schemas.v2.tetrio.tetra_league import Data as TETRIOTetraLeagueDataV2 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.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( env = Environment(
loader=FileSystemLoader(TEMPLATES_DIR), 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: ... async def render(render_type: Literal['v2/tetrio/user/info'], data: TETRIOUserInfoV2) -> str: ...
@overload @overload
async def render(render_type: Literal['v2/tetrio/user/list'], data: TETRIOUserListV2) -> str: ... async def render(render_type: Literal['v2/tetrio/user/list'], data: TETRIOUserListV2) -> str: ...
async def render( async def render(
render_type: Literal[ render_type: str,
'v1/binding', data: Base,
'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,
) -> str: ) -> str:
if PYDANTIC_V2: if PYDANTIC_V2:
return await env.get_template('index.html').render_async( return await env.get_template('index.html').render_async(

View File

@@ -7,6 +7,6 @@ from ..base import HistoryData
class History(BaseModel): class History(BaseModel):
data: list[HistoryData] data: list[HistoryData]
split_interval: Number split_interval: Number
min_tr: Number min_value: Number
max_tr: Number max_value: Number
offset: Number offset: Number

View File

@@ -3,6 +3,7 @@ from datetime import datetime
from pydantic import BaseModel from pydantic import BaseModel
from ......games.tetrio.api.typedefs import ValidRank from ......games.tetrio.api.typedefs import ValidRank
from ...base import Base
class ItemData(BaseModel): class ItemData(BaseModel):
@@ -11,6 +12,6 @@ class ItemData(BaseModel):
players: int players: int
class Data(BaseModel): class Data(Base):
items: dict[ValidRank, ItemData] items: dict[ValidRank, ItemData]
updated_at: datetime updated_at: datetime

View File

@@ -1,12 +1,14 @@
from pydantic import BaseModel, Field from pydantic import BaseModel, Field
from .....typedefs import Number from .....typedefs import Number
from ...base import People, Trending from ...base import Base, People, Trending
from ..base import History from ..base import History
class Multiplayer(BaseModel): class Multiplayer(BaseModel):
history: History history: History
rating: Number
rd: Number
lpm: Number lpm: Number
pps: Number pps: Number
@@ -34,7 +36,7 @@ class Singleplayer(BaseModel):
marathon: str marathon: str
class Info(BaseModel): class Info(Base):
user: People user: People
multiplayer: Multiplayer multiplayer: Multiplayer
singleplayer: Singleplayer singleplayer: Singleplayer

View File

@@ -4,6 +4,7 @@ from pydantic import BaseModel
from .......games.tetrio.api.typedefs import ValidRank from .......games.tetrio.api.typedefs import ValidRank
from ......typedefs import Number from ......typedefs import Number
from ....base import Base
class AverageData(BaseModel): class AverageData(BaseModel):
@@ -21,6 +22,6 @@ class ItemData(BaseModel):
players: Number players: Number
class Data(BaseModel): class Data(Base):
items: dict[ValidRank, ItemData] items: dict[ValidRank, ItemData]
updated_at: datetime updated_at: datetime

View File

@@ -4,6 +4,7 @@ from pydantic import BaseModel
from .......games.tetrio.api.typedefs import ValidRank from .......games.tetrio.api.typedefs import ValidRank
from ......typedefs import Number from ......typedefs import Number
from ....base import Base
class SpecialData(BaseModel): class SpecialData(BaseModel):
@@ -19,7 +20,7 @@ class SpecialData(BaseModel):
vs_holder: str | None = None vs_holder: str | None = None
class Data(BaseModel): class Data(Base):
name: ValidRank name: ValidRank
trending: Number trending: Number
require_tr: Number require_tr: Number

View File

@@ -3,7 +3,7 @@ from typing import Literal
from pydantic import BaseModel from pydantic import BaseModel
from ....base import People from ....base import Base, People
class User(People): class User(People):
@@ -61,7 +61,7 @@ class Statistic(BaseModel):
finesse: Finesse finesse: Finesse
class Record(BaseModel): class Record(Base):
type: Literal['best', 'personal_best', 'recent', 'disputed'] type: Literal['best', 'personal_best', 'recent', 'disputed']
user: User user: User

View File

@@ -3,6 +3,7 @@ from datetime import datetime
from pydantic import BaseModel from pydantic import BaseModel
from .....typedefs import Number from .....typedefs import Number
from ...base import Base
class StatisticalData(BaseModel): class StatisticalData(BaseModel):
@@ -32,7 +33,7 @@ class Game(BaseModel):
handling: Handling handling: Handling
class Data(BaseModel): class Data(Base):
replay_id: str replay_id: str
games: list[Game] games: list[Game]
play_at: datetime play_at: datetime

View File

@@ -5,7 +5,7 @@ from pydantic import BaseModel
from .......games.tetrio.api.typedefs import Rank from .......games.tetrio.api.typedefs import Rank
from ......typedefs import Number from ......typedefs import Number
from ....base import Avatar, HistoryData from ....base import Avatar, Base, HistoryData
class Badge(BaseModel): class Badge(BaseModel):
@@ -37,7 +37,7 @@ class User(BaseModel):
xp: Number xp: Number
ar: Number ar: Number
achievements: list[Number] achievements: list[int]
playtime: str | None playtime: str | None
join_at: datetime | None join_at: datetime | None
@@ -100,24 +100,24 @@ class Zen(BaseModel):
class Week(BaseModel): class Week(BaseModel):
altitude: int altitude: Number
global_rank: int | None global_rank: int | None
country_rank: int | None country_rank: int | None
play_at: datetime play_at: datetime
class Best(BaseModel): class Best(BaseModel):
altitude: int altitude: Number
global_rank: int | None global_rank: int | None
play_at: datetime play_at: datetime
class Zenith(BaseModel): class Zenith(BaseModel):
week: Week week: Week | None
best: Best best: Best | None
class Info(BaseModel): class Info(Base):
user: User user: User
tetra_league: TetraLeague | None tetra_league: TetraLeague | None
zenith: Zenith | None zenith: Zenith | None

View File

@@ -2,7 +2,7 @@ from pydantic import BaseModel
from .......games.tetrio.api.typedefs import Rank from .......games.tetrio.api.typedefs import Rank
from ......typedefs import Number from ......typedefs import Number
from ....base import Avatar from ....base import Avatar, Base
class TetraLeague(BaseModel): class TetraLeague(BaseModel):
@@ -33,6 +33,6 @@ class Data(BaseModel):
tetra_league: TetraLeague tetra_league: TetraLeague
class List(BaseModel): class List(Base):
show_index: bool show_index: bool
data: list[Data] data: list[Data]