添加音频代理
This commit is contained in:
@@ -23,8 +23,6 @@ async def get_audio_proxy_dependency(redis_client: Annotated[redis.Redis, Depend
|
||||
return get_audio_proxy_service(redis_client)
|
||||
|
||||
|
||||
|
||||
|
||||
@router.get("/beatmapset/{beatmapset_id}")
|
||||
async def get_beatmapset_audio(
|
||||
beatmapset_id: Annotated[int, Path(description="谱面集ID", ge=1)],
|
||||
@@ -53,7 +51,7 @@ async def get_beatmapset_audio(
|
||||
headers={
|
||||
"Cache-Control": "public, max-age=604800", # 7天缓存
|
||||
"Content-Length": str(len(audio_data)),
|
||||
"Content-Disposition": f"inline; filename=\"{beatmapset_id}.mp3\"",
|
||||
"Content-Disposition": f'inline; filename="{beatmapset_id}.mp3"',
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@ class AssetProxyService:
|
||||
self.asset_proxy_prefix = settings.asset_proxy_prefix
|
||||
self.avatar_proxy_prefix = settings.avatar_proxy_prefix
|
||||
self.beatmap_proxy_prefix = settings.beatmap_proxy_prefix
|
||||
# 音频代理接口URL
|
||||
self.audio_proxy_base_url = f"{settings.server_url}api/private/audio/beatmapset"
|
||||
|
||||
async def replace_asset_urls(self, data: Any) -> Any:
|
||||
"""
|
||||
@@ -52,13 +54,12 @@ class AssetProxyService:
|
||||
r"https://assets\.ppy\.sh/", f"https://{self.asset_proxy_prefix}.{self.custom_asset_domain}/", result
|
||||
)
|
||||
|
||||
# 替换 b.ppy.sh 预览音频 (保持//前缀)
|
||||
result = re.sub(r"//b\.ppy\.sh/", f"//{self.beatmap_proxy_prefix}.{self.custom_asset_domain}/", result)
|
||||
# 替换 b.ppy.sh 预览音频为我们的音频代理接口
|
||||
# 匹配 https://b.ppy.sh/preview/{beatmapset_id}.mp3 格式
|
||||
result = re.sub(r"https://b\.ppy\.sh/preview/(\d+)\.mp3", rf"{self.audio_proxy_base_url}/\1", result)
|
||||
|
||||
# 替换 https://b.ppy.sh 预览音频 (转换为//前缀)
|
||||
result = re.sub(
|
||||
r"https://b\.ppy\.sh/", f"//{self.beatmap_proxy_prefix}.{self.custom_asset_domain}/", result
|
||||
)
|
||||
# 匹配 //b.ppy.sh/preview/{beatmapset_id}.mp3 格式
|
||||
result = re.sub(r"//b\.ppy\.sh/preview/(\d+)\.mp3", rf"{self.audio_proxy_base_url}/\1", result)
|
||||
|
||||
# 替换 a.ppy.sh 头像
|
||||
result = re.sub(
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
||||
from fastapi import HTTPException
|
||||
import httpx
|
||||
from loguru import logger
|
||||
@@ -123,7 +122,6 @@ class AudioProxyService:
|
||||
return audio_data, content_type
|
||||
|
||||
|
||||
|
||||
def get_audio_proxy_service(redis_client: redis.Redis) -> AudioProxyService:
|
||||
"""获取音频代理服务实例"""
|
||||
# 每次创建新实例,避免全局状态
|
||||
|
||||
Reference in New Issue
Block a user