Update audio_proxy.py
This commit is contained in:
@@ -12,6 +12,7 @@ from app.service.audio_proxy_service import AudioProxyService, get_audio_proxy_s
|
|||||||
|
|
||||||
from fastapi import APIRouter, Depends, HTTPException, Path
|
from fastapi import APIRouter, Depends, HTTPException, Path
|
||||||
from fastapi.responses import Response
|
from fastapi.responses import Response
|
||||||
|
from fastapi_limiter.depends import RateLimiter
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
import redis.asyncio as redis
|
import redis.asyncio as redis
|
||||||
|
|
||||||
@@ -26,7 +27,13 @@ async def get_audio_proxy_dependency(
|
|||||||
return get_audio_proxy_service(redis_binary_client, redis_text_client)
|
return get_audio_proxy_service(redis_binary_client, redis_text_client)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/beatmapset/{beatmapset_id}")
|
@router.get(
|
||||||
|
"/beatmapset/{beatmapset_id}",
|
||||||
|
dependencies=[
|
||||||
|
Depends(RateLimiter(times=30, minutes=1)), # 每分钟最多30次请求
|
||||||
|
Depends(RateLimiter(times=5, seconds=10)), # 每10秒最多5次请求
|
||||||
|
],
|
||||||
|
)
|
||||||
async def get_beatmapset_audio(
|
async def get_beatmapset_audio(
|
||||||
beatmapset_id: Annotated[int, Path(description="谱面集ID", ge=1)],
|
beatmapset_id: Annotated[int, Path(description="谱面集ID", ge=1)],
|
||||||
audio_service: Annotated[AudioProxyService, Depends(get_audio_proxy_dependency)],
|
audio_service: Annotated[AudioProxyService, Depends(get_audio_proxy_dependency)],
|
||||||
@@ -37,6 +44,10 @@ async def get_beatmapset_audio(
|
|||||||
根据谱面集ID获取osu!官方的音频预览文件。
|
根据谱面集ID获取osu!官方的音频预览文件。
|
||||||
音频文件会被缓存7天以提高响应速度。
|
音频文件会被缓存7天以提高响应速度。
|
||||||
|
|
||||||
|
速率限制:
|
||||||
|
- 每分钟最多30次请求
|
||||||
|
- 每10秒最多5次请求
|
||||||
|
|
||||||
参数:
|
参数:
|
||||||
- beatmapset_id: 谱面集ID
|
- beatmapset_id: 谱面集ID
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user