From 1281e75bb16df766dc9b2b57a82244b40a90d9a6 Mon Sep 17 00:00:00 2001 From: MingxuanGame Date: Thu, 31 Jul 2025 02:29:51 +0000 Subject: [PATCH] feat(beatmapset): support download beatmapset --- app/router/beatmapset.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/router/beatmapset.py b/app/router/beatmapset.py index e551727..80396fd 100644 --- a/app/router/beatmapset.py +++ b/app/router/beatmapset.py @@ -12,7 +12,8 @@ from app.fetcher import Fetcher from .api_router import router -from fastapi import Depends, HTTPException +from fastapi import Depends, HTTPException, Query +from fastapi.responses import RedirectResponse from httpx import HTTPStatusError from sqlalchemy.orm import selectinload from sqlmodel import select @@ -42,3 +43,20 @@ async def get_beatmapset( else: resp = BeatmapsetResp.from_db(beatmapset) return resp + + +@router.get("/beatmapsets/{beatmapset}/download", tags=["beatmapset"]) +async def download_beatmapset( + beatmapset: int, + no_video: bool = Query(True, alias="noVideo"), + current_user: User = Depends(get_current_user), +): + if current_user.country_code == "CN": + return RedirectResponse( + f"https://txy1.sayobot.cn/beatmaps/download/" + f"{'novideo' if no_video else 'full'}/{beatmapset}?server=auto" + ) + else: + return RedirectResponse( + f"https://api.nerinyan.moe/d/{beatmapset}?noVideo={no_video}" + )