49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
|
||
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
地图格式转换API路由
|
||
提供SMAP到Scene、华睿地图等格式转换的API接口
|
||
"""
|
||
|
||
from fastapi import APIRouter, UploadFile, File, Request
|
||
import os
|
||
import time
|
||
from routes.common_api import format_response, error_response
|
||
from utils.logger import get_logger
|
||
from services import interactive_converter
|
||
|
||
# 创建路由
|
||
router = APIRouter(prefix="/api/vwed-map-converter", tags=["地图格式转换"])
|
||
|
||
# 设置日志
|
||
logger = get_logger("app.map_converter_api")
|
||
|
||
@router.post("/smap-to-scene")
|
||
async def smap_to_scene(
|
||
smap_file: UploadFile = File(..., description="上传的smap地图文件"),
|
||
scene_file: UploadFile = File(None, description="可选,参考scene文件")
|
||
):
|
||
"""
|
||
SMAP地图转Scene格式
|
||
支持可选参考scene文件,自动完成场景丰富化
|
||
"""
|
||
try:
|
||
# 保存上传的文件到临时目录
|
||
temp_dir = "temp_uploads"
|
||
os.makedirs(temp_dir, exist_ok=True)
|
||
smap_path = os.path.join(temp_dir, f"{int(time.time())}_{smap_file.filename}")
|
||
with open(smap_path, "wb") as f:
|
||
f.write(await smap_file.read())
|
||
scene_path = None
|
||
if scene_file:
|
||
scene_path = os.path.join(temp_dir, f"{int(time.time())}_{scene_file.filename}")
|
||
with open(scene_path, "wb") as f:
|
||
f.write(await scene_file.read())
|
||
# 执行转换
|
||
result = interactive_converter.convert_smap_to_scene(smap_path, scene_path)
|
||
return format_response(data=result, message="SMAP地图转换成功")
|
||
except Exception as e:
|
||
logger.error(f"SMAP地图转换失败: {str(e)}")
|
||
return error_response(f"SMAP地图转换失败: {str(e)}", 500)
|