From cf488d5f5ff23626721dd6e8ae106ff0ec16b7a3 Mon Sep 17 00:00:00 2001 From: noone Date: Thu, 25 Dec 2025 19:09:45 +0800 Subject: [PATCH] =?UTF-8?q?fix(qbittorrent):=20=E4=BF=AE=E5=A4=8D=E7=A7=8D?= =?UTF-8?q?=E5=AD=90=E6=96=87=E4=BB=B6=E8=AF=BB=E5=8F=96=E5=92=8C=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=A3=80=E6=9F=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将变量名从 torrent 改为 torrent_from_file 以避免混淆 - 修复添加种子任务失败时的错误检查逻辑 - 使用 getattr 函数安全获取种子文件的名称和大小属性 - 修复已存在种子任务检查时的属性访问问题 fix(transmission): 修复种子添加和重复检查逻辑 - 将变量名从 torrent 改为 torrent_from_file 以避免混淆 - 修复添加任务后的返回值变量名 - 使用 getattr 函数安全获取种子文件的名称和大小属性 - 修复已存在种子任务检查时的属性访问问题 - 修正种子哈希获取的变量引用 --- app/modules/qbittorrent/__init__.py | 8 ++++---- app/modules/transmission/__init__.py | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/modules/qbittorrent/__init__.py b/app/modules/qbittorrent/__init__.py index 4ee36440..9943a557 100644 --- a/app/modules/qbittorrent/__init__.py +++ b/app/modules/qbittorrent/__init__.py @@ -124,12 +124,12 @@ class QbittorrentModule(_ModuleBase, _DownloaderBase[Qbittorrent]): return None, None, None, "下载内容为空" # 读取种子的名称 - torrent, content = __get_torrent_info() + torrent_from_file, content = __get_torrent_info() # 检查是否为磁力链接 is_magnet = isinstance(content, str) and content.startswith("magnet:") or isinstance(content, bytes) and content.startswith( b"magnet:") - if not torrent and not is_magnet: + if not torrent_from_file and not is_magnet: return None, None, None, f"添加种子任务失败:无法读取种子文件" # 获取下载器 @@ -170,8 +170,8 @@ class QbittorrentModule(_ModuleBase, _DownloaderBase[Qbittorrent]): try: for torrent in torrents: # 名称与大小相等则认为是同一个种子 - if torrent.get("name") == torrent.name \ - and torrent.get("total_size") == torrent.total_size: + if torrent.get("name") == getattr(torrent_from_file, 'name', '') \ + and torrent.get("total_size") == getattr(torrent_from_file, 'total_size', 0): torrent_hash = torrent.get("hash") torrent_tags = [str(tag).strip() for tag in torrent.get("tags").split(',')] logger.warn(f"下载器中已存在该种子任务:{torrent_hash} - {torrent.get('name')}") diff --git a/app/modules/transmission/__init__.py b/app/modules/transmission/__init__.py index def26677..b29882b1 100644 --- a/app/modules/transmission/__init__.py +++ b/app/modules/transmission/__init__.py @@ -125,12 +125,12 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]): return None, None, None, "下载内容为空" # 读取种子的名称 - torrent, content = __get_torrent_info() + torrent_from_file, content = __get_torrent_info() # 检查是否为磁力链接 is_magnet = isinstance(content, str) and content.startswith("magnet:") or isinstance(content, bytes) and content.startswith( b"magnet:") - if not torrent and not is_magnet: + if not torrent_from_file and not is_magnet: return None, None, None, f"添加种子任务失败:无法读取种子文件" # 获取下载器 @@ -149,7 +149,7 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]): else: labels = None # 添加任务 - torrent = server.add_torrent( + added_torrent = server.add_torrent( content=content, download_dir=download_dir.as_posix(), is_paused=is_paused, @@ -159,7 +159,7 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]): # TR 始终使用原始种子布局, 返回"Original" torrent_layout = "Original" - if not torrent: + if not added_torrent: # 查询所有下载器的种子 torrents, error = server.get_torrents() if error: @@ -168,7 +168,7 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]): try: for torrent in torrents: # 名称与大小相等则认为是同一个种子 - if torrent.name == torrent.name and torrent.total_size == torrent.total_size: + if torrent.name == getattr(torrent_from_file, 'name', '') and torrent.total_size == getattr(torrent_from_file, 'total_size', 0): torrent_hash = torrent.hashString logger.warn(f"下载器中已存在该种子任务:{torrent_hash} - {torrent.name}") # 给种子打上标签 @@ -189,7 +189,7 @@ class TransmissionModule(_ModuleBase, _DownloaderBase[Transmission]): del torrents return None, None, None, f"添加种子任务失败:{content}" else: - torrent_hash = torrent.hashString + torrent_hash = added_torrent.hashString if is_paused: # 选择文件 torrent_files = server.get_files(torrent_hash)