diff --git a/app/config.json b/app/config.json index b8f325e..778965c 100644 --- a/app/config.json +++ b/app/config.json @@ -2,5 +2,6 @@ "theme": "auto", "token": "", "server_url": "", - "server_port": "32400" + "server_port": "", + "server_scheme": "" } \ No newline at end of file diff --git a/app/main.py b/app/main.py index d330b87..a80f7ee 100644 --- a/app/main.py +++ b/app/main.py @@ -14,11 +14,12 @@ templates = Jinja2Templates(directory=os.path.join(os.path.dirname(__file__), "t app.mount("/static", StaticFiles(directory=os.path.join(os.path.dirname(__file__), "static")), name="static") +# 显示主页 @app.get("/", response_class=HTMLResponse) async def home(request: Request): config = load_config() theme = config.get("theme", "auto") - scheme, host, port = get_server_settings(config) + token,scheme, host, port = get_server_settings(config) return templates.TemplateResponse( "login.html", { @@ -26,22 +27,25 @@ async def home(request: Request): "theme": theme, "path": "/login", "scheme": scheme, + "token": token, "server_url": host, "port": port, }, ) +# 登录页面和处理 @app.get("/login", response_class=HTMLResponse) async def login_page(request: Request): config = load_config() theme = config.get("theme", "auto") - scheme, host, port = get_server_settings(config) + token, scheme, host, port = get_server_settings(config) return templates.TemplateResponse( "login.html", { "request": request, "theme": theme, "path": "/login", + "token": token, "scheme": scheme, "server_url": host, "port": port, @@ -53,19 +57,26 @@ async def login( request: Request, user: str = Form(...), pw: str = Form(...), + token: str = Form(...), scheme: str = Form("https"), url: str = Form(...), - port: str = Form("32400") + port: str = Form("32400"), ): config = load_config() theme = config.get("theme", "auto") + # 尝试连接到 Plex 服务器 try: - full_url = url - if not full_url.startswith("http://") and not full_url.startswith("https://"): - full_url = f"{scheme}://{url}" - connect_plex(config, user, pw, full_url, port) + # 优先使用 token 连接,如果 token 为空则使用用户名和密码连接 + _, token_success = connect_plex(user, pw, token, scheme, url, port) + # 成功连接后保存配置到配置文件 + config.update({ + "server_url": url, + "server_scheme": scheme, + "server_port": port, + "token": token_success, + }) save_config(config) - scheme, host, port = get_server_settings(config) + token, scheme, host, port = get_server_settings(config) return templates.TemplateResponse( "login.html", { @@ -74,6 +85,7 @@ async def login( "success": True, "theme": theme, "path": "/login", + "token": token, "scheme": scheme, "server_url": host, "port": port, diff --git a/app/templates/login.html b/app/templates/login.html index 1103cab..c5bfd43 100644 --- a/app/templates/login.html +++ b/app/templates/login.html @@ -6,12 +6,16 @@