This commit is contained in:
Your Name
2026-01-27 08:55:32 +00:00
parent 6fbd86bf43
commit 3ccbf3d973
9 changed files with 182 additions and 78 deletions

52
web.py
View File

@@ -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: