Files
meijiaka-zy/python-api/app/api/v1/materials.py
T
小鱼开发 588c2236e6 feat: 封面制作优化 + 素材配置远程化
- 背景图配置改为从七牛云 CDN 远程拉取,支持不发版新增图片
- 删除本地 public/bg/ 图片副本,减小包体积
- 封面制作:'换一组'按钮移至标签右侧、优化按钮样式、删除冗余提示
- 封面制作/视频合成右侧预览区分别添加'封面预览'/'视频预览'标题
- 素材匹配服务支持远程 fetch materials.json + reload API
2026-04-30 15:32:10 +08:00

47 lines
1.4 KiB
Python

"""
空镜素材 API
============
提供空镜素材匹配接口和配置重载接口。
"""
from fastapi import APIRouter
from app.schemas.common import ApiResponse, success_response
from app.schemas.materials import MatchMaterialRequest, MaterialInfo
from app.services.material_service import match_material, reload_config
router = APIRouter()
@router.post("/match", response_model=ApiResponse[MaterialInfo | None])
async def match_material_endpoint(request: MatchMaterialRequest):
"""
根据场景描述和所需时长匹配空镜素材
返回匹配到的素材信息,无匹配返回 data: null
"""
result = match_material(request.scene, request.duration, request.exclude_urls, request.strict)
if result is None:
return success_response(data=None, message="未匹配到素材")
return success_response(
data=MaterialInfo(url=result["url"], duration=result["duration"]),
message="匹配成功",
)
@router.post("/reload", response_model=ApiResponse[bool])
async def reload_materials_config():
"""
重新加载素材配置
从远程 CDN 拉取最新配置,失败则 fallback 到本地文件。
新增素材后调用此接口即可生效,无需重启服务。
"""
ok = reload_config()
if ok:
return success_response(data=True, message="素材配置已重新加载")
return success_response(data=False, message="素材配置重载失败")