Апи для получения скоров на карте

This commit is contained in:
2025-12-15 19:28:50 +03:00
parent 527b52c362
commit d5a6bfffd1
2 changed files with 35 additions and 1 deletions

View File

@ -1,6 +1,6 @@
[project] [project]
name = "osuclient" name = "osuclient"
version = "0.5.5" version = "0.6.0"
description = "Client for osu! API" description = "Client for osu! API"
readme = "README.md" readme = "README.md"
authors = [ authors = [

View File

@ -117,6 +117,40 @@ class osuAPIClient(AioHTTPXClient):
self.logger.error(req.text) self.logger.error(req.text)
raise s.Error(500, 'Internal Server Error') raise s.Error(500, 'Internal Server Error')
async def get_user_beatmap_scores(
self,
access_token: str,
beatmap_id: int,
user_id: int,
legacy_only: Literal[0, 1] = 0,
ruleset: Literal['osu', 'taiko', 'fruits', 'mania'] | None = None,
):
req = await self.get(
f'/beatmaps/{beatmap_id}/scores/users/{user_id}/all',
params=self.clean_dict(
{'legacy_only': legacy_only, 'ruleset': ruleset}
),
headers=self.clean_dict(
{
'Authorization': f'Bearer {access_token}',
}
),
)
match req.status_code:
case st.OK:
return [s.Score.model_validate(score) for score in req.json()]
case st.NOT_FOUND:
raise s.Error(req.status_code, 'Not Found')
case st.UNAUTHORIZED:
raise s.Error(req.status_code, 'Unauthorized')
case _:
self.logger.error(req.text)
raise s.Error(500, 'Internal Server Error')
async def get_user( async def get_user(
self, self,
access_token: str, access_token: str,