feat: add downloader incomplete suffix toggles

This commit is contained in:
jxxghp
2026-06-13 08:43:37 +08:00
parent ab9eeedb3e
commit 303e7ee16e
4 changed files with 240 additions and 201 deletions

View File

@@ -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)}")

View File

@@ -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)}")