From d80b5da7be56a44577d48ae1b5acf818f2fa1e01 Mon Sep 17 00:00:00 2001 From: Miwory Date: Wed, 26 Nov 2025 14:39:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20get=5Fscore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/osuclient/api.py | 4 +- src/osuclient/schema.py | 87 ++++++++++++++++++++++------------------- 2 files changed, 49 insertions(+), 42 deletions(-) diff --git a/src/osuclient/api.py b/src/osuclient/api.py index b68de66..5737305 100644 --- a/src/osuclient/api.py +++ b/src/osuclient/api.py @@ -47,9 +47,9 @@ class osuAPIClient(AioHTTPXClient): case _: raise s.Error(500, 'Internal Server Error') - async def get_score(self, access_token: str, score_id: int): + async def get_score(self, access_token: str, mode: str, score_id: int): req = await self.get( - f'/scores/{score_id}', + f'/scores/{mode}/{score_id}', headers=self.clean_dict( { 'Authorization': f'Bearer {access_token}', diff --git a/src/osuclient/schema.py b/src/osuclient/schema.py index 2a71b6d..a7fc26d 100644 --- a/src/osuclient/schema.py +++ b/src/osuclient/schema.py @@ -34,7 +34,7 @@ class Country(BaseModel): class Cover(BaseModel): model_config = ConfigDict(extra='forbid') - custom_url: str + custom_url: str | None url: str id: int | None @@ -211,38 +211,6 @@ class Covers(BaseModel): slimcover_2x: str = Field(..., alias='slimcover@2x') -class Beatmap(BaseModel): - model_config = ConfigDict(extra='forbid') - - beatmapset_id: int - difficulty_rating: float - id: int - mode: str - status: str - total_length: int - user_id: int - version: str - accuracy: float - ar: float - bpm: float - convert: bool - count_circles: int - count_sliders: int - count_spinners: int - cs: float - deleted_at: datetime | None - drain: float - hit_length: int - is_scoreable: bool - last_updated: str - mode_int: int - passcount: int - playcount: int - ranked: int - url: str - checksum: str - - class Beatmapset(BaseModel): model_config = ConfigDict(extra='forbid') @@ -284,8 +252,12 @@ class User(BaseModel): is_supporter: bool last_visit: datetime | None pm_friends_only: bool - profile_colour: None + profile_colour: str | None username: str + country: Country | None = None + team: Team | None = None + cover: Cover | None = None + groups: list[str] | None = None class Weight(BaseModel): @@ -353,13 +325,48 @@ class BeatmapFailtimes(BaseModel): exit: list[int] +class Beatmap(BaseModel): + model_config = ConfigDict(extra='forbid') + + beatmapset_id: int + difficulty_rating: float + id: int + mode: str + status: str + total_length: int + user_id: int + version: str + accuracy: float + ar: float + bpm: float + convert: bool + count_circles: int + count_sliders: int + count_spinners: int + cs: float + deleted_at: datetime | None + drain: float + hit_length: int + is_scoreable: bool + last_updated: str + mode_int: int + passcount: int + playcount: int + ranked: int + url: str + checksum: str + max_combo: int | None = None + owners: list[BeatmapOwner] | None = None + user: User | None = None + + class BeatmapExtended(Beatmap): model_config = ConfigDict(extra='forbid') beatmapset: BeatmapsetExtended - max_combo: int + max_combo: int # type: ignore current_user_playcount: int - owners: list[BeatmapOwner] + owners: list[BeatmapOwner] # type: ignore failtimes: BeatmapFailtimes @@ -388,6 +395,7 @@ class Score(BaseModel): beatmapset: Beatmapset user: User weight: Weight | None = None + rank_global: int | None = None class GetUser(User): @@ -411,8 +419,8 @@ class GetUser(User): title_url: None twitter: str | None website: str | None - country: Country - cover: Cover + country: Country # type: ignore + cover: Cover # type: ignore kudosu: Kudosu account_history: list[str] active_tournament_banner: ActiveTournamentBanner | None @@ -425,7 +433,7 @@ class GetUser(User): favourite_beatmapset_count: int follower_count: int graveyard_beatmapset_count: int - groups: list[str] + groups: list[str] # type: ignore guest_beatmapset_count: int loved_beatmapset_count: int mapping_follower_count: int @@ -443,7 +451,6 @@ class GetUser(User): scores_recent_count: int statistics: UserStatistics support_level: int - team: Team | None user_achievements: list[UserAchievement] rank_history: RankHistory rankHistory: RankHistory