From 2b462a1b9cc921bdabd8e9400999107e622d9ef4 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Mon, 28 Aug 2023 13:04:18 +0800 Subject: [PATCH] fix #305 --- app/chain/download.py | 23 +++++++++++++++++------ app/core/context.py | 4 ++++ app/modules/filetransfer/__init__.py | 11 ++++++++--- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/app/chain/download.py b/app/chain/download.py index feb2a964..4bb4a066 100644 --- a/app/chain/download.py +++ b/app/chain/download.py @@ -110,29 +110,40 @@ class DownloadChain(ChainBase): # 下载目录 if not save_path: if settings.DOWNLOAD_CATEGORY and _media and _media.category: + # 开启下载二级目录 if _media.type == MediaType.MOVIE: + # 电影 download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) / _media.category else: - media_genrs_ids = _media.tmdb_info.get("genre_ids") - if settings.DOWNLOAD_ANIME_PATH and media_genrs_ids and set(media_genrs_ids).intersection( - set(settings.ANIME_GENREIDS)): + if settings.DOWNLOAD_ANIME_PATH \ + and _media.genre_ids \ + and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)): + # 动漫 download_dir = Path(settings.DOWNLOAD_ANIME_PATH) else: + # 电视剧 download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) / _media.category elif _media: + # 未开启下载二级目录 if _media.type == MediaType.MOVIE: + # 电影 download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) else: - media_genrs_ids = _media.tmdb_info.get("genre_ids") - if settings.DOWNLOAD_ANIME_PATH and media_genrs_ids and set(media_genrs_ids).intersection( - set(settings.ANIME_GENREIDS)): + if settings.DOWNLOAD_ANIME_PATH \ + and _media.genre_ids \ + and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)): + # 动漫 download_dir = Path(settings.DOWNLOAD_ANIME_PATH) else: + # 电视剧 download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) else: + # 未识别 download_dir = Path(settings.DOWNLOAD_PATH) else: + # 自定义下载目录 download_dir = Path(save_path) + # 添加下载 result: Optional[tuple] = self.download(torrent_path=torrent_file, cookie=_torrent.site_cookie, diff --git a/app/core/context.py b/app/core/context.py index c5043514..d2bd0466 100644 --- a/app/core/context.py +++ b/app/core/context.py @@ -148,6 +148,8 @@ class MediaInfo: vote_average: int = 0 # 描述 overview: str = None + # 风格ID + genre_ids: list = field(default_factory=list) # 所有别名和译名 names: list = field(default_factory=list) # 各季的剧集清单信息 @@ -338,6 +340,8 @@ class MediaInfo: self.vote_average = round(float(info.get('vote_average')), 1) if info.get('vote_average') else 0 # 描述 self.overview = info.get('overview') + # 风格 + self.genre_ids = info.get('genre_ids') or [] # 原语种 self.original_language = info.get('original_language') if self.type == MediaType.MOVIE: diff --git a/app/modules/filetransfer/__init__.py b/app/modules/filetransfer/__init__.py index 728d04d7..8d5db792 100644 --- a/app/modules/filetransfer/__init__.py +++ b/app/modules/filetransfer/__init__.py @@ -347,6 +347,7 @@ class FileTransferModule(_ModuleBase): return TransferInfo(message=f"{target_dir} 目标路径不存在") if mediainfo.type == MediaType.MOVIE: + # 电影 if settings.LIBRARY_MOVIE_NAME: target_dir = target_dir / settings.LIBRARY_MOVIE_NAME / mediainfo.category else: @@ -354,11 +355,14 @@ class FileTransferModule(_ModuleBase): target_dir = target_dir / mediainfo.type.value / mediainfo.category if mediainfo.type == MediaType.TV: - media_genrs_ids = mediainfo.tmdb_info.get("genre_ids") - if settings.LIBRARY_ANIME_NAME and media_genrs_ids and set(media_genrs_ids).intersection( - set(settings.ANIME_GENREIDS)): + # 电视剧 + if settings.LIBRARY_ANIME_NAME \ + and mediainfo.genre_ids \ + and set(mediainfo.genre_ids).intersection(set(settings.ANIME_GENREIDS)): + # 动漫 target_dir = target_dir / settings.LIBRARY_ANIME_NAME / mediainfo.category elif settings.LIBRARY_TV_NAME: + # 电视剧 target_dir = target_dir / settings.LIBRARY_TV_NAME / mediainfo.category else: # 目的目录加上类型和二级分类 @@ -609,6 +613,7 @@ class FileTransferModule(_ModuleBase): max_length = len(relative) target_path = path except Exception as e: + logger.debug(f"计算目标路径时出错:{e}") continue if target_path: return Path(target_path)