VWED_server/routes/map_converter_api.py

49 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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)