feat(beatmapset): support search beatmapset

This commit is contained in:
MingxuanGame
2025-08-13 07:55:48 +00:00
parent 50375c7b12
commit 4b5aefb946
6 changed files with 386 additions and 30 deletions

View File

@@ -1,7 +1,9 @@
from __future__ import annotations
from app.database.beatmapset import BeatmapsetResp
from app.database.beatmapset import BeatmapsetResp, SearchBeatmapsetsResp
from app.log import logger
from app.models.beatmap import SearchQueryModel
from app.models.model import Cursor
from ._base import BaseFetcher
@@ -17,3 +19,23 @@ class BeatmapsetFetcher(BaseFetcher):
f"https://osu.ppy.sh/api/v2/beatmapsets/{beatmap_set_id}"
)
)
async def search_beatmapset(
self, query: SearchQueryModel, cursor: Cursor
) -> SearchBeatmapsetsResp:
logger.opt(colors=True).debug(
f"<blue>[BeatmapsetFetcher]</blue> search_beatmapset: <y>{query}</y>"
)
params = query.model_dump(
exclude_none=True, exclude_unset=True, exclude_defaults=True
)
for k, v in cursor.items():
params[f"cursor[{k}]"] = v
resp = SearchBeatmapsetsResp.model_validate(
await self.request_api(
"https://osu.ppy.sh/api/v2/beatmapsets/search",
params=params,
)
)
return resp