diff --git a/README.md b/README.md index 503ffaf..39bd8a2 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,7 @@ PlexPlaylistSync 是一个用于同步 Plex 播放列表和本地 `.m3u`/`.m3u8` 首次登录时使用用户名和密码连接 Plex 服务器,成功后程序会将获得的 `token` 保存在配置文件中,后续通信仅使用该 `token`,不再保存明文密码。 默认情况下 Plex 服务器使用 `32400` 端口,可在未修改服务器端口时直接使用该默认值。 +服务器地址字段支持包含 `http://` 或 `https://` 前缀,当提供 `https://` 前缀时将使用 HTTPS 连接。 ## 安装 diff --git a/app/templates/login.html b/app/templates/login.html index 7c80bd9..0c380cd 100644 --- a/app/templates/login.html +++ b/app/templates/login.html @@ -15,7 +15,7 @@
- +
diff --git a/app/utils/plex_client.py b/app/utils/plex_client.py index d67659a..6dab047 100644 --- a/app/utils/plex_client.py +++ b/app/utils/plex_client.py @@ -1,5 +1,6 @@ from plexapi.myplex import MyPlexAccount from plexapi.server import PlexServer +from urllib.parse import urlparse def connect_plex(config, username, password, url, port="32400"): @@ -10,7 +11,15 @@ def connect_plex(config, username, password, url, port="32400"): token = account.authenticationToken config["token"] = token - base_url = f"http://{url}:{port}" + parsed = urlparse(url) + + if parsed.scheme in ("http", "https"): + netloc = parsed.netloc or parsed.path + if ":" not in netloc and port: + netloc = f"{netloc}:{port}" + base_url = f"{parsed.scheme}://{netloc}" + else: + base_url = f"http://{url}:{port}" server = PlexServer(base_url, token) config.update({"server_url": url, "server_port": port}) return server