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)
|