Ai_GirlFriend/lover/main_simple.py

98 lines
3.2 KiB
Python
Raw Normal View History

2026-03-04 12:04:21 +08:00
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from fastapi import FastAPI, HTTPException, Request
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from fastapi.staticfiles import StaticFiles
import logging
import dashscope
from pathlib import Path
2026-03-05 13:34:40 +08:00
# 导入所有路由
from lover.routers import config as config_router
from lover.routers import lover as lover_router
from lover.routers import user_basic as user_basic_router
from lover.routers import outfit as outfit_router
from lover.routers import chat as chat_router
2026-03-04 12:04:21 +08:00
from lover.routers import voice_call as voice_call_router
2026-03-05 13:34:40 +08:00
from lover.routers import dance as dance_router
from lover.routers import dynamic as dynamic_router
from lover.routers import sing as sing_router
from lover.routers import friend as friend_router
from lover.routers import msg as msg_router
from lover.routers import huanxin as huanxin_router
from lover.routers import user as user_router
from lover.routers import music_library as music_library_router
2026-03-04 12:04:21 +08:00
from lover.response import ApiResponse
from lover.config import settings
# 初始化 DashScope API Key
if settings.DASHSCOPE_API_KEY:
dashscope.api_key = settings.DASHSCOPE_API_KEY
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
app = FastAPI(title="LOVER API - Simple")
# 创建 TTS 文件目录
tts_dir = Path("public/tts")
tts_dir.mkdir(parents=True, exist_ok=True)
# 挂载静态文件服务(用于提供 TTS 音频文件)
app.mount("/tts", StaticFiles(directory=str(tts_dir)), name="tts")
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 简化 CORS 配置
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
2026-03-05 13:34:40 +08:00
# 包含所有路由
app.include_router(config_router.router)
app.include_router(lover_router.router)
app.include_router(user_basic_router.router)
app.include_router(outfit_router.router)
app.include_router(chat_router.router)
2026-03-04 12:04:21 +08:00
app.include_router(voice_call_router.router)
2026-03-05 13:34:40 +08:00
app.include_router(dance_router.router)
app.include_router(dynamic_router.router)
app.include_router(sing_router.router)
app.include_router(friend_router.router)
app.include_router(msg_router.router)
app.include_router(huanxin_router.router)
app.include_router(user_router.router)
app.include_router(music_library_router.router)
2026-03-04 12:04:21 +08:00
@app.exception_handler(HTTPException)
async def http_exception_handler(request: Request, exc: HTTPException):
detail = exc.detail
msg = detail if isinstance(detail, str) else str(detail)
return JSONResponse(
status_code=exc.status_code,
content={"code": exc.status_code, "msg": msg, "data": None},
)
@app.exception_handler(Exception)
async def generic_exception_handler(request: Request, exc: Exception):
logging.exception("Unhandled error", exc_info=exc)
return JSONResponse(
status_code=500,
content={"code": 500, "msg": "服务器内部错误", "data": None},
)
@app.get("/health", response_model=ApiResponse[dict])
async def health():
return ApiResponse(code=1, msg="ok", data={"status": "ok"})
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=30102)