hdmi
This commit is contained in:
52
web.py
52
web.py
@@ -1,4 +1,4 @@
|
||||
from fastapi import FastAPI, Query
|
||||
from fastapi import FastAPI, Query, Request
|
||||
from fastapi.responses import FileResponse, JSONResponse
|
||||
from pathlib import Path
|
||||
import asyncio
|
||||
@@ -7,19 +7,21 @@ from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
app = FastAPI(title="多进程录制控制台")
|
||||
|
||||
# ---------------- 配置 ----------------
|
||||
# ---------------- 配置(修正为根目录结构) ----------------
|
||||
BASE_DIR = Path(__file__).parent
|
||||
DEFAULT_LOG_DIR = BASE_DIR.parent / ".pm2" / "logs"
|
||||
CONFIG_DIR = BASE_DIR / "config" # 直接在根目录下
|
||||
DEFAULT_LOG_DIR = BASE_DIR / ".pm2" / "logs" # 直接在根目录下
|
||||
|
||||
MAX_LOG_LINES = 300
|
||||
|
||||
# 支持的进程列表(可扩展)
|
||||
# 支持的进程列表
|
||||
VALID_PROCESSES = {"tiktok", "youtube", "obs"}
|
||||
|
||||
# CORS
|
||||
# CORS(支持 POST)
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"],
|
||||
allow_methods=["GET"],
|
||||
allow_methods=["GET", "POST"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
@@ -84,7 +86,7 @@ async def get_process_info(process: str) -> dict:
|
||||
out_path = value
|
||||
elif key == "err_log_path":
|
||||
err_path = value
|
||||
# 备用默认路径(仅当 describe 未提供时)
|
||||
# 备用默认路径(修正为根目录)
|
||||
if not out_path:
|
||||
out_path = str(DEFAULT_LOG_DIR / f"{process}-out.log")
|
||||
if not err_path:
|
||||
@@ -95,7 +97,41 @@ async def get_process_info(process: str) -> dict:
|
||||
"err_path": err_path,
|
||||
}
|
||||
|
||||
# ---------------- 路由 ----------------
|
||||
# ---------------- 配置路由 ----------------
|
||||
@app.get("/get_config")
|
||||
async def get_config(process: str = Query(..., description="进程名")):
|
||||
if process != "youtube":
|
||||
return JSONResponse({"error": "仅 youtube 支持配置编辑"}, status_code=400)
|
||||
|
||||
config_file = CONFIG_DIR / "youtube.ini"
|
||||
if not config_file.exists():
|
||||
return {"content": "# youtube.ini 文件不存在,将创建空文件\n"}
|
||||
try:
|
||||
content = config_file.read_text(encoding="utf-8")
|
||||
return {"content": content}
|
||||
except Exception as e:
|
||||
return JSONResponse({"error": f"读取失败: {str(e)}"}, status_code=500)
|
||||
|
||||
@app.post("/save_config")
|
||||
async def save_config(request: Request, process: str = Query(..., description="进程名")):
|
||||
if process != "youtube":
|
||||
return JSONResponse({"error": "仅 youtube 支持配置编辑"}, status_code=400)
|
||||
|
||||
try:
|
||||
data = await request.json()
|
||||
content = data.get("content", "")
|
||||
except:
|
||||
return JSONResponse({"error": "无效的 JSON 数据"}, status_code=400)
|
||||
|
||||
config_file = CONFIG_DIR / "youtube.ini"
|
||||
try:
|
||||
CONFIG_DIR.mkdir(parents=True, exist_ok=True)
|
||||
config_file.write_text(content, encoding="utf-8")
|
||||
return {"message": "配置保存成功"}
|
||||
except Exception as e:
|
||||
return JSONResponse({"error": f"保存失败: {str(e)}"}, status_code=500)
|
||||
|
||||
# ---------------- 原有路由 ----------------
|
||||
@app.get("/start")
|
||||
async def start(process: str = Query(..., description="进程名")):
|
||||
if process not in VALID_PROCESSES:
|
||||
|
||||
Reference in New Issue
Block a user