Compare commits
2 Commits
da6056c1ae
...
6b14847598
| Author | SHA1 | Date | |
|---|---|---|---|
| 6b14847598 | |||
| 0ede137170 |
@@ -4,6 +4,7 @@
|
|||||||
"server_url": "",
|
"server_url": "",
|
||||||
"server_port": "32400",
|
"server_port": "32400",
|
||||||
"server_scheme": "https",
|
"server_scheme": "https",
|
||||||
|
"timeout": 9,
|
||||||
"library_name": "",
|
"library_name": "",
|
||||||
"sync_mode": "merge_local_primary",
|
"sync_mode": "merge_local_primary",
|
||||||
"local_path": "playlist",
|
"local_path": "playlist",
|
||||||
|
|||||||
+15
-1
@@ -92,6 +92,7 @@ class SyncSettingsResponse(BaseModel):
|
|||||||
server_url: str | None = None
|
server_url: str | None = None
|
||||||
scheme: str | None = None
|
scheme: str | None = None
|
||||||
port: str | None = None
|
port: str | None = None
|
||||||
|
timeout: int | None = None
|
||||||
token: str | None = None
|
token: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@@ -135,6 +136,7 @@ def _get_cloud_playlists() -> tuple[list[dict], str, dict, str, list[str]]:
|
|||||||
scheme=server_config.scheme,
|
scheme=server_config.scheme,
|
||||||
url=server_config.url,
|
url=server_config.url,
|
||||||
port=server_config.port,
|
port=server_config.port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
)
|
)
|
||||||
status = "connected" if plex_client.connected else "failed"
|
status = "connected" if plex_client.connected else "failed"
|
||||||
server_info.update(
|
server_info.update(
|
||||||
@@ -245,6 +247,7 @@ def _get_server_status() -> tuple[dict, str, list[dict]]:
|
|||||||
scheme=server_config.scheme,
|
scheme=server_config.scheme,
|
||||||
url=server_config.url,
|
url=server_config.url,
|
||||||
port=server_config.port,
|
port=server_config.port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
)
|
)
|
||||||
connection_status = "connected" if plex_client.connected else "failed"
|
connection_status = "connected" if plex_client.connected else "failed"
|
||||||
server_info.update(
|
server_info.update(
|
||||||
@@ -301,6 +304,7 @@ async def get_settings():
|
|||||||
server_url=server_config.url,
|
server_url=server_config.url,
|
||||||
scheme=server_config.scheme,
|
scheme=server_config.scheme,
|
||||||
port=server_config.port,
|
port=server_config.port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
token=server_config.token,
|
token=server_config.token,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -345,6 +349,7 @@ async def api_connect(payload: ConnectRequest):
|
|||||||
scheme=payload.protocol,
|
scheme=payload.protocol,
|
||||||
url=payload.address,
|
url=payload.address,
|
||||||
port=payload.port,
|
port=payload.port,
|
||||||
|
timeout=payload.timeout,
|
||||||
)
|
)
|
||||||
libraries = []
|
libraries = []
|
||||||
selected_library = payload.library_name or server_config.library_name
|
selected_library = payload.library_name or server_config.library_name
|
||||||
@@ -359,6 +364,7 @@ async def api_connect(payload: ConnectRequest):
|
|||||||
scheme=payload.protocol,
|
scheme=payload.protocol,
|
||||||
url=payload.address,
|
url=payload.address,
|
||||||
port=payload.port,
|
port=payload.port,
|
||||||
|
timeout=payload.timeout,
|
||||||
library_name=selected_library or "",
|
library_name=selected_library or "",
|
||||||
)
|
)
|
||||||
server_info = {
|
server_info = {
|
||||||
@@ -565,6 +571,7 @@ async def login_page(request: Request):
|
|||||||
scheme=server_config.scheme,
|
scheme=server_config.scheme,
|
||||||
url=server_config.url,
|
url=server_config.url,
|
||||||
port=server_config.port,
|
port=server_config.port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
)
|
)
|
||||||
music_libraries = plex_client.get_libs_name_list()
|
music_libraries = plex_client.get_libs_name_list()
|
||||||
if music_libraries:
|
if music_libraries:
|
||||||
@@ -612,6 +619,7 @@ async def login(
|
|||||||
scheme=scheme,
|
scheme=scheme,
|
||||||
url=url,
|
url=url,
|
||||||
port=port,
|
port=port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
)
|
)
|
||||||
# 成功连接后保存配置到配置文件
|
# 成功连接后保存配置到配置文件
|
||||||
music_libraries: list[str] = []
|
music_libraries: list[str] = []
|
||||||
@@ -632,12 +640,18 @@ async def login(
|
|||||||
scheme=scheme,
|
scheme=scheme,
|
||||||
url=url,
|
url=url,
|
||||||
port=port,
|
port=port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
library_name=selected_library,
|
library_name=selected_library,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
music_libraries = []
|
music_libraries = []
|
||||||
server_config.set_and_save_config(
|
server_config.set_and_save_config(
|
||||||
token=token_success, scheme=scheme, url=url, port=port, library_name=""
|
token=token_success,
|
||||||
|
scheme=scheme,
|
||||||
|
url=url,
|
||||||
|
port=port,
|
||||||
|
timeout=server_config.timeout,
|
||||||
|
library_name="",
|
||||||
)
|
)
|
||||||
return templates.TemplateResponse(
|
return templates.TemplateResponse(
|
||||||
"login.html",
|
"login.html",
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class ServerConfig:
|
|||||||
self.url = ""
|
self.url = ""
|
||||||
self.scheme = "https"
|
self.scheme = "https"
|
||||||
self.port = "32400"
|
self.port = "32400"
|
||||||
|
self.timeout = 9
|
||||||
self.library_name = ""
|
self.library_name = ""
|
||||||
self.sync_mode = DEFAULT_SYNC_MODE
|
self.sync_mode = DEFAULT_SYNC_MODE
|
||||||
self.local_path = "playlist"
|
self.local_path = "playlist"
|
||||||
@@ -43,6 +44,7 @@ class ServerConfig:
|
|||||||
self.url = config.get("server_url", "")
|
self.url = config.get("server_url", "")
|
||||||
self.scheme = config.get("server_scheme", "https")
|
self.scheme = config.get("server_scheme", "https")
|
||||||
self.port = config.get("server_port", "32400")
|
self.port = config.get("server_port", "32400")
|
||||||
|
self.timeout = config.get("timeout", 9)
|
||||||
self.library_name = config.get("library_name", "")
|
self.library_name = config.get("library_name", "")
|
||||||
self.sync_mode = config.get("sync_mode", DEFAULT_SYNC_MODE)
|
self.sync_mode = config.get("sync_mode", DEFAULT_SYNC_MODE)
|
||||||
self.local_path = config.get("local_path", "playlist")
|
self.local_path = config.get("local_path", "playlist")
|
||||||
@@ -56,6 +58,7 @@ class ServerConfig:
|
|||||||
"server_url": self.url,
|
"server_url": self.url,
|
||||||
"server_scheme": self.scheme,
|
"server_scheme": self.scheme,
|
||||||
"server_port": self.port,
|
"server_port": self.port,
|
||||||
|
"timeout": self.timeout,
|
||||||
"library_name": self.library_name,
|
"library_name": self.library_name,
|
||||||
"sync_mode": self.sync_mode,
|
"sync_mode": self.sync_mode,
|
||||||
"local_path": self.local_path,
|
"local_path": self.local_path,
|
||||||
@@ -74,6 +77,9 @@ class ServerConfig:
|
|||||||
def set_port(self, port: str) -> None:
|
def set_port(self, port: str) -> None:
|
||||||
self.port = port
|
self.port = port
|
||||||
|
|
||||||
|
def set_timeout(self, timeout: int) -> None:
|
||||||
|
self.timeout = timeout if timeout and timeout > 0 else 9
|
||||||
|
|
||||||
def set_token(self, token: str) -> None:
|
def set_token(self, token: str) -> None:
|
||||||
self.token = token
|
self.token = token
|
||||||
|
|
||||||
@@ -103,6 +109,7 @@ class ServerConfig:
|
|||||||
url: str = None,
|
url: str = None,
|
||||||
scheme: str = None,
|
scheme: str = None,
|
||||||
port: str = None,
|
port: str = None,
|
||||||
|
timeout: int | None = None,
|
||||||
library_name: str | None = None,
|
library_name: str | None = None,
|
||||||
sync_mode: str | None = None,
|
sync_mode: str | None = None,
|
||||||
local_path: str | None = None,
|
local_path: str | None = None,
|
||||||
@@ -118,6 +125,8 @@ class ServerConfig:
|
|||||||
self.set_scheme(scheme)
|
self.set_scheme(scheme)
|
||||||
if port is not None:
|
if port is not None:
|
||||||
self.set_port(port)
|
self.set_port(port)
|
||||||
|
if timeout is not None:
|
||||||
|
self.set_timeout(timeout)
|
||||||
if library_name is not None:
|
if library_name is not None:
|
||||||
self.set_library(library_name)
|
self.set_library(library_name)
|
||||||
if sync_mode is not None:
|
if sync_mode is not None:
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ class PlexClient:
|
|||||||
scheme: str = "https",
|
scheme: str = "https",
|
||||||
url: str = "",
|
url: str = "",
|
||||||
port: str = "32400",
|
port: str = "32400",
|
||||||
|
timeout: int | None = None,
|
||||||
) -> tuple[PlexServer, str]:
|
) -> tuple[PlexServer, str]:
|
||||||
"""Connect to the Plex server using username/password or token.
|
"""Connect to the Plex server using username/password or token.
|
||||||
|
|
||||||
@@ -69,11 +70,11 @@ class PlexClient:
|
|||||||
try:
|
try:
|
||||||
if not str_is_empty(token):
|
if not str_is_empty(token):
|
||||||
self.server, self.token = self._connect_with_token(
|
self.server, self.token = self._connect_with_token(
|
||||||
token, scheme, url, port
|
token, scheme, url, port, timeout
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
self.server, self.token = self._connect_with_pw(
|
self.server, self.token = self._connect_with_pw(
|
||||||
username, password, scheme, url, port
|
username, password, scheme, url, port, timeout
|
||||||
)
|
)
|
||||||
# Update the base URL and connection status
|
# Update the base URL and connection status
|
||||||
self.base_url = build_plex_url(scheme, url, port)
|
self.base_url = build_plex_url(scheme, url, port)
|
||||||
@@ -88,30 +89,41 @@ class PlexClient:
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
def _connect_with_pw(
|
def _connect_with_pw(
|
||||||
self, username: str, password: str, scheme: str, url: str, port: str = "32400"
|
self,
|
||||||
|
username: str,
|
||||||
|
password: str,
|
||||||
|
scheme: str,
|
||||||
|
url: str,
|
||||||
|
port: str = "32400",
|
||||||
|
timeout: int | None = None,
|
||||||
):
|
):
|
||||||
"""Return a connected PlexServer instance and update config with token and server info."""
|
"""Return a connected PlexServer instance and update config with token and server info."""
|
||||||
# url 初始化
|
# url 初始化
|
||||||
self.base_url = build_plex_url(scheme, url, port)
|
self.base_url = build_plex_url(scheme, url, port)
|
||||||
# account 初始化
|
# account 初始化
|
||||||
account = MyPlexAccount(username, password)
|
account = MyPlexAccount(username, password, timeout=timeout)
|
||||||
# token 获取
|
# token 获取
|
||||||
self.token = account.authenticationToken
|
self.token = account.authenticationToken
|
||||||
|
|
||||||
self.server = PlexServer(self.base_url, self.token)
|
self.server = PlexServer(self.base_url, self.token, timeout=timeout)
|
||||||
logger.debug(
|
logger.debug(
|
||||||
f"Connected to Plex server with username: {username}, token: {self.token}"
|
f"Connected to Plex server with username: {username}, token: {self.token}"
|
||||||
)
|
)
|
||||||
return self.server, self.token
|
return self.server, self.token
|
||||||
|
|
||||||
def _connect_with_token(
|
def _connect_with_token(
|
||||||
self, token: str, scheme: str, url: str, port: str = "32400"
|
self,
|
||||||
|
token: str,
|
||||||
|
scheme: str,
|
||||||
|
url: str,
|
||||||
|
port: str = "32400",
|
||||||
|
timeout: int | None = None,
|
||||||
):
|
):
|
||||||
"""Return a connected PlexServer instance using a token."""
|
"""Return a connected PlexServer instance using a token."""
|
||||||
# URL 初始化
|
# URL 初始化
|
||||||
self.base_url = build_plex_url(scheme, url, port)
|
self.base_url = build_plex_url(scheme, url, port)
|
||||||
|
|
||||||
self.server = PlexServer(self.base_url, token)
|
self.server = PlexServer(self.base_url, token, timeout=timeout)
|
||||||
logger.debug(f"Connected to Plex server with token: {token}")
|
logger.debug(f"Connected to Plex server with token: {token}")
|
||||||
return self.server, token
|
return self.server, token
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user