This commit is contained in:
jxxghp 2023-08-28 13:04:18 +08:00
parent a6d0504900
commit 2b462a1b9c
3 changed files with 29 additions and 9 deletions

View File

@ -110,29 +110,40 @@ class DownloadChain(ChainBase):
# 下载目录 # 下载目录
if not save_path: if not save_path:
if settings.DOWNLOAD_CATEGORY and _media and _media.category: if settings.DOWNLOAD_CATEGORY and _media and _media.category:
# 开启下载二级目录
if _media.type == MediaType.MOVIE: if _media.type == MediaType.MOVIE:
# 电影
download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) / _media.category download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) / _media.category
else: else:
media_genrs_ids = _media.tmdb_info.get("genre_ids") if settings.DOWNLOAD_ANIME_PATH \
if settings.DOWNLOAD_ANIME_PATH and media_genrs_ids and set(media_genrs_ids).intersection( and _media.genre_ids \
set(settings.ANIME_GENREIDS)): and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
# 动漫
download_dir = Path(settings.DOWNLOAD_ANIME_PATH) download_dir = Path(settings.DOWNLOAD_ANIME_PATH)
else: else:
# 电视剧
download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) / _media.category download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) / _media.category
elif _media: elif _media:
# 未开启下载二级目录
if _media.type == MediaType.MOVIE: if _media.type == MediaType.MOVIE:
# 电影
download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH) download_dir = Path(settings.DOWNLOAD_MOVIE_PATH or settings.DOWNLOAD_PATH)
else: else:
media_genrs_ids = _media.tmdb_info.get("genre_ids") if settings.DOWNLOAD_ANIME_PATH \
if settings.DOWNLOAD_ANIME_PATH and media_genrs_ids and set(media_genrs_ids).intersection( and _media.genre_ids \
set(settings.ANIME_GENREIDS)): and set(_media.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
# 动漫
download_dir = Path(settings.DOWNLOAD_ANIME_PATH) download_dir = Path(settings.DOWNLOAD_ANIME_PATH)
else: else:
# 电视剧
download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH) download_dir = Path(settings.DOWNLOAD_TV_PATH or settings.DOWNLOAD_PATH)
else: else:
# 未识别
download_dir = Path(settings.DOWNLOAD_PATH) download_dir = Path(settings.DOWNLOAD_PATH)
else: else:
# 自定义下载目录
download_dir = Path(save_path) download_dir = Path(save_path)
# 添加下载 # 添加下载
result: Optional[tuple] = self.download(torrent_path=torrent_file, result: Optional[tuple] = self.download(torrent_path=torrent_file,
cookie=_torrent.site_cookie, cookie=_torrent.site_cookie,

View File

@ -148,6 +148,8 @@ class MediaInfo:
vote_average: int = 0 vote_average: int = 0
# 描述 # 描述
overview: str = None overview: str = None
# 风格ID
genre_ids: list = field(default_factory=list)
# 所有别名和译名 # 所有别名和译名
names: 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.vote_average = round(float(info.get('vote_average')), 1) if info.get('vote_average') else 0
# 描述 # 描述
self.overview = info.get('overview') self.overview = info.get('overview')
# 风格
self.genre_ids = info.get('genre_ids') or []
# 原语种 # 原语种
self.original_language = info.get('original_language') self.original_language = info.get('original_language')
if self.type == MediaType.MOVIE: if self.type == MediaType.MOVIE:

View File

@ -347,6 +347,7 @@ class FileTransferModule(_ModuleBase):
return TransferInfo(message=f"{target_dir} 目标路径不存在") return TransferInfo(message=f"{target_dir} 目标路径不存在")
if mediainfo.type == MediaType.MOVIE: if mediainfo.type == MediaType.MOVIE:
# 电影
if settings.LIBRARY_MOVIE_NAME: if settings.LIBRARY_MOVIE_NAME:
target_dir = target_dir / settings.LIBRARY_MOVIE_NAME / mediainfo.category target_dir = target_dir / settings.LIBRARY_MOVIE_NAME / mediainfo.category
else: else:
@ -354,11 +355,14 @@ class FileTransferModule(_ModuleBase):
target_dir = target_dir / mediainfo.type.value / mediainfo.category target_dir = target_dir / mediainfo.type.value / mediainfo.category
if mediainfo.type == MediaType.TV: 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( if settings.LIBRARY_ANIME_NAME \
set(settings.ANIME_GENREIDS)): and mediainfo.genre_ids \
and set(mediainfo.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
# 动漫
target_dir = target_dir / settings.LIBRARY_ANIME_NAME / mediainfo.category target_dir = target_dir / settings.LIBRARY_ANIME_NAME / mediainfo.category
elif settings.LIBRARY_TV_NAME: elif settings.LIBRARY_TV_NAME:
# 电视剧
target_dir = target_dir / settings.LIBRARY_TV_NAME / mediainfo.category target_dir = target_dir / settings.LIBRARY_TV_NAME / mediainfo.category
else: else:
# 目的目录加上类型和二级分类 # 目的目录加上类型和二级分类
@ -609,6 +613,7 @@ class FileTransferModule(_ModuleBase):
max_length = len(relative) max_length = len(relative)
target_path = path target_path = path
except Exception as e: except Exception as e:
logger.debug(f"计算目标路径时出错:{e}")
continue continue
if target_path: if target_path:
return Path(target_path) return Path(target_path)