From b7d2168f8e98c8243597fe4d38401cc8ab8fb62c Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 4 Sep 2023 19:30:06 +0800 Subject: [PATCH] fix #434 --- app/chain/download.py | 7 ++++++- app/helper/torrent.py | 9 ++++++--- app/modules/subtitle/__init__.py | 15 +++++---------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/chain/download.py b/app/chain/download.py index 2f19d5c9..fb3091a1 100644 --- a/app/chain/download.py +++ b/app/chain/download.py @@ -159,9 +159,14 @@ class DownloadChain(ChainBase): _hash, error_msg = None, "未知错误" if _hash: + # 下载文件路径 + if _folder_name: + download_path = download_dir / _folder_name + else: + download_path = download_dir / _file_list[0] if _file_list else download_dir # 登记下载记录 self.downloadhis.add( - path=_folder_name or _torrent.title, + path=download_path, type=_media.type.value, title=_media.title, year=_media.year, diff --git a/app/helper/torrent.py b/app/helper/torrent.py index bfb416ed..824a678f 100644 --- a/app/helper/torrent.py +++ b/app/helper/torrent.py @@ -130,19 +130,22 @@ class TorrentHelper: """ 获取种子文件的文件夹名和文件清单 :param torrent_path: 种子文件路径 - :return: 文件夹名、文件清单 + :return: 文件夹名、文件清单,单文件种子返回空文件夹名 """ if not torrent_path or not torrent_path.exists(): return "", [] try: torrentinfo = Torrent.from_file(torrent_path) - # 获取目录名 - folder_name = torrentinfo.name # 获取文件清单 if not torrentinfo.files: + # 单文件种子目录名返回空 + folder_name = "" # 单文件种子 file_list = [torrentinfo.name] else: + # 目录名 + folder_name = torrentinfo.name + # 文件清单 file_list = [fileinfo.name for fileinfo in torrentinfo.files] logger.debug(f"{torrent_path.stem} -> 目录:{folder_name},文件清单:{file_list}") return folder_name, file_list diff --git a/app/modules/subtitle/__init__.py b/app/modules/subtitle/__init__.py index 18afbbf3..973172b4 100644 --- a/app/modules/subtitle/__init__.py +++ b/app/modules/subtitle/__init__.py @@ -50,21 +50,16 @@ class SubtitleModule(_ModuleBase): logger.info("开始从站点下载字幕:%s" % torrent.page_url) # 获取种子信息 folder_name, _ = TorrentHelper.get_torrent_info(torrent_path) - # 下载目录,也可能是文件名 - download_dir = download_dir / (folder_name or "") - # 等待文件或者目录存在 + # 文件保存目录,如果是单文件种子,则folder_name是空,此时文件保存目录就是下载目录 + download_dir = download_dir / folder_name + # 等待目录存在 for _ in range(30): if download_dir.exists(): break time.sleep(1) - # 目录仍然不存在,且是目录则创建目录 - if not download_dir.exists() \ - and download_dir.suffix not in settings.RMT_MEDIAEXT: + # 目录仍然不存在,且有文件夹名,则创建目录 + if not download_dir.exists() and folder_name: download_dir.mkdir(parents=True, exist_ok=True) - # 不是目录说明是单文件种子,直接使用下载目录 - if download_dir.is_file() \ - or download_dir.suffix in settings.RMT_MEDIAEXT: - download_dir = download_dir.parent # 读取网站代码 request = RequestUtils(cookies=torrent.site_cookie, ua=torrent.site_ua) res = request.get_res(torrent.page_url)