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 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,

View File

@ -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:

View File

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