mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-30 20:31:50 +08:00
feat: add downloader incomplete suffix toggles
This commit is contained in:
@@ -23,6 +23,7 @@ class Qbittorrent:
|
||||
apikey: Optional[str] = None,
|
||||
category: Optional[bool] = False, sequentail: Optional[bool] = False,
|
||||
force_resume: Optional[bool] = False, first_last_piece=False,
|
||||
incomplete_files_ext: Optional[bool] = True,
|
||||
**kwargs):
|
||||
"""
|
||||
若不设置参数,则创建配置文件设置的下载器
|
||||
@@ -42,6 +43,7 @@ class Qbittorrent:
|
||||
self._sequentail = sequentail
|
||||
self._force_resume = force_resume
|
||||
self._first_last_piece = first_last_piece
|
||||
self._incomplete_files_ext = incomplete_files_ext
|
||||
self.qbc = self.__login_qbittorrent()
|
||||
|
||||
@staticmethod
|
||||
@@ -154,18 +156,19 @@ class Qbittorrent:
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def __enable_incomplete_file_suffix(qbt: Client) -> None:
|
||||
def __sync_incomplete_file_suffix(qbt: Client, enabled: bool) -> None:
|
||||
"""
|
||||
开启未完成文件后缀,避免监控流程提前整理仍在下载的媒体文件。
|
||||
同步未完成文件后缀开关,避免监控流程提前整理仍在下载的媒体文件。
|
||||
"""
|
||||
try:
|
||||
preferences = qbt.app_preferences() or {}
|
||||
if isinstance(preferences, dict) and preferences.get("incomplete_files_ext") is True:
|
||||
if isinstance(preferences, dict) and preferences.get("incomplete_files_ext") is enabled:
|
||||
return
|
||||
qbt.app_set_preferences({"incomplete_files_ext": True})
|
||||
logger.info("已开启 qbittorrent 未完成文件追加 .!qB 后缀")
|
||||
qbt.app_set_preferences({"incomplete_files_ext": enabled})
|
||||
action = "开启" if enabled else "关闭"
|
||||
logger.info(f"已{action} qbittorrent 未完成文件追加 .!qB 后缀")
|
||||
except Exception as err:
|
||||
logger.warning(f"开启 qbittorrent 未完成文件后缀失败:{str(err)}")
|
||||
logger.warning(f"同步 qbittorrent 未完成文件后缀失败:{str(err)}")
|
||||
|
||||
def is_inactive(self) -> bool:
|
||||
"""
|
||||
@@ -212,7 +215,7 @@ class Qbittorrent:
|
||||
stack_trace = "".join(traceback.format_exception(None, e, e.__traceback__))[:2000]
|
||||
logger.error(f"qbittorrent 登录失败:{str(e)}\n{stack_trace}")
|
||||
return None
|
||||
self.__enable_incomplete_file_suffix(qbt)
|
||||
self.__sync_incomplete_file_suffix(qbt, enabled=bool(self._incomplete_files_ext))
|
||||
return qbt
|
||||
except Exception as err:
|
||||
logger.error(f"qbittorrent 连接出错:{str(err)}")
|
||||
|
||||
@@ -20,7 +20,8 @@ class Transmission:
|
||||
"error", "errorString", "doneDate", "queuePosition", "activityDate", "trackers"]
|
||||
|
||||
def __init__(self, host: Optional[str] = None, port: Optional[int] = None,
|
||||
username: Optional[str] = None, password: Optional[str] = None, **kwargs):
|
||||
username: Optional[str] = None, password: Optional[str] = None,
|
||||
rename_partial_files: Optional[bool] = True, **kwargs):
|
||||
"""
|
||||
若不设置参数,则创建配置文件设置的下载器
|
||||
"""
|
||||
@@ -39,12 +40,13 @@ class Transmission:
|
||||
return
|
||||
self._username = username
|
||||
self._password = password
|
||||
self._rename_partial_files = rename_partial_files
|
||||
self.trc = self.__login_transmission()
|
||||
|
||||
@staticmethod
|
||||
def __enable_incomplete_file_suffix(trt: Client) -> None:
|
||||
def __sync_incomplete_file_suffix(trt: Client, enabled: bool) -> None:
|
||||
"""
|
||||
开启未完成文件后缀,避免监控流程提前整理仍在下载的媒体文件。
|
||||
同步未完成文件后缀开关,避免监控流程提前整理仍在下载的媒体文件。
|
||||
"""
|
||||
try:
|
||||
session = trt.get_session()
|
||||
@@ -53,12 +55,13 @@ class Transmission:
|
||||
rename_partial_files = getter("rename-partial-files")
|
||||
else:
|
||||
rename_partial_files = getattr(session, "rename_partial_files", None)
|
||||
if rename_partial_files is True:
|
||||
if rename_partial_files is enabled:
|
||||
return
|
||||
trt.set_session(rename_partial_files=True)
|
||||
logger.info("已开启 transmission 未完成文件追加 .part 后缀")
|
||||
trt.set_session(rename_partial_files=enabled)
|
||||
action = "开启" if enabled else "关闭"
|
||||
logger.info(f"已{action} transmission 未完成文件追加 .part 后缀")
|
||||
except Exception as err:
|
||||
logger.warning(f"开启 transmission 未完成文件后缀失败:{str(err)}")
|
||||
logger.warning(f"同步 transmission 未完成文件后缀失败:{str(err)}")
|
||||
|
||||
def __login_transmission(self) -> Optional[Client]:
|
||||
"""
|
||||
@@ -76,7 +79,7 @@ class Transmission:
|
||||
username=self._username,
|
||||
password=self._password,
|
||||
timeout=60)
|
||||
self.__enable_incomplete_file_suffix(trt)
|
||||
self.__sync_incomplete_file_suffix(trt, enabled=bool(self._rename_partial_files))
|
||||
return trt
|
||||
except Exception as err:
|
||||
logger.error(f"transmission 连接出错:{str(err)}")
|
||||
|
||||
Reference in New Issue
Block a user