fix 动漫分类

This commit is contained in:
jxxghp
2024-05-24 17:21:03 +08:00
parent 355dad9205
commit 04280021b4
7 changed files with 21 additions and 49 deletions

View File

@ -512,7 +512,7 @@ class ChainBase(metaclass=ABCMeta):
def media_category(self) -> Optional[Dict[str, list]]: def media_category(self) -> Optional[Dict[str, list]]:
""" """
获取媒体分类 获取媒体分类
:return: 获取二级分类配置字典项,需包括电影、电视剧、动漫 :return: 获取二级分类配置字典项,需包括电影、电视剧
""" """
return self.run_module("media_category") return self.run_module("media_category")

View File

@ -16,6 +16,7 @@ from app.db.models.downloadhistory import DownloadHistory
from app.db.models.transferhistory import TransferHistory from app.db.models.transferhistory import TransferHistory
from app.db.systemconfig_oper import SystemConfigOper from app.db.systemconfig_oper import SystemConfigOper
from app.db.transferhistory_oper import TransferHistoryOper from app.db.transferhistory_oper import TransferHistoryOper
from app.helper.directory import DirectoryHelper
from app.helper.format import FormatParser from app.helper.format import FormatParser
from app.helper.progress import ProgressHelper from app.helper.progress import ProgressHelper
from app.log import logger from app.log import logger
@ -41,6 +42,7 @@ class TransferChain(ChainBase):
self.mediachain = MediaChain() self.mediachain = MediaChain()
self.tmdbchain = TmdbChain() self.tmdbchain = TmdbChain()
self.systemconfig = SystemConfigOper() self.systemconfig = SystemConfigOper()
self.directoryhelper = DirectoryHelper()
def process(self) -> bool: def process(self) -> bool:
""" """
@ -625,8 +627,7 @@ class TransferChain(ChainBase):
mtype=NotificationType.Organize, mtype=NotificationType.Organize,
title=msg_title, text=msg_str, image=mediainfo.get_message_image())) title=msg_title, text=msg_str, image=mediainfo.get_message_image()))
@staticmethod def delete_files(self, path: Path) -> Tuple[bool, str]:
def delete_files(path: Path) -> Tuple[bool, str]:
""" """
删除转移后的文件以及空目录 删除转移后的文件以及空目录
:param path: 文件路径 :param path: 文件路径
@ -657,16 +658,12 @@ class TransferChain(ChainBase):
# 判断当前媒体父路径下是否有媒体文件,如有则无需遍历父级 # 判断当前媒体父路径下是否有媒体文件,如有则无需遍历父级
if not SystemUtils.exits_files(path.parent, settings.RMT_MEDIAEXT): if not SystemUtils.exits_files(path.parent, settings.RMT_MEDIAEXT):
# 媒体库二级分类根路径 # 媒体库二级分类根路径
library_root_names = [ library_roots = self.directoryhelper.get_library_dirs()
settings.LIBRARY_MOVIE_NAME or '电影', library_root_names = [Path(library_root.path).name for library_root in library_roots if library_root.path]
settings.LIBRARY_TV_NAME or '电视剧',
settings.LIBRARY_ANIME_NAME or '动漫',
]
# 判断父目录是否为空, 为空则删除 # 判断父目录是否为空, 为空则删除
for parent_path in path.parents: for parent_path in path.parents:
# 遍历父目录到媒体库二级分类根路径 # 遍历父目录到媒体库二级分类根路径
if str(parent_path.name) in library_root_names: if parent_path.name in library_root_names:
break break
if str(parent_path.parent) != str(path.root): if str(parent_path.parent) != str(path.root):
# 父目录非根目录,才删除父目录 # 父目录非根目录,才删除父目录

View File

@ -41,10 +41,7 @@ class DirectoryHelper:
:param media: 媒体信息 :param media: 媒体信息
""" """
# 处理类型 # 处理类型
if media and media.genre_ids \ if media:
and set(media.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
media_type = "动漫"
elif media:
media_type = media.type.value media_type = media.type.value
else: else:
media_type = MediaType.UNKNOWN.value media_type = MediaType.UNKNOWN.value
@ -72,10 +69,7 @@ class DirectoryHelper:
:param in_path: 源目录 :param in_path: 源目录
""" """
# 处理类型 # 处理类型
if media and media.genre_ids \ if media:
and set(media.genre_ids).intersection(set(settings.ANIME_GENREIDS)):
media_type = "动漫"
elif media:
media_type = media.type.value media_type = media.type.value
else: else:
media_type = MediaType.UNKNOWN.value media_type = MediaType.UNKNOWN.value

View File

@ -228,12 +228,11 @@ class TheMovieDbModule(_ModuleBase):
def media_category(self) -> Optional[Dict[str, list]]: def media_category(self) -> Optional[Dict[str, list]]:
""" """
获取媒体分类 获取媒体分类
:return: 获取二级分类配置字典项,需包括电影、电视剧、动漫 :return: 获取二级分类配置字典项,需包括电影、电视剧
""" """
return { return {
"电影": list(self.category.movie_categorys), MediaType.MOVIE.value: list(self.category.movie_categorys),
"电视剧": list(self.category.tv_categorys), MediaType.TV.value: list(self.category.tv_categorys)
"动漫": list(self.category.anime_categorys)
} }
def search_medias(self, meta: MetaBase) -> Optional[List[MediaInfo]]: def search_medias(self, meta: MetaBase) -> Optional[List[MediaInfo]]:

View File

@ -15,7 +15,6 @@ class CategoryHelper(metaclass=Singleton):
_categorys = {} _categorys = {}
_movie_categorys = {} _movie_categorys = {}
_tv_categorys = {} _tv_categorys = {}
_anime_categorys = {}
def __init__(self): def __init__(self):
self._category_path: Path = settings.CONFIG_PATH / "category.yaml" self._category_path: Path = settings.CONFIG_PATH / "category.yaml"
@ -44,7 +43,6 @@ class CategoryHelper(metaclass=Singleton):
if self._categorys: if self._categorys:
self._movie_categorys = self._categorys.get('movie') self._movie_categorys = self._categorys.get('movie')
self._tv_categorys = self._categorys.get('tv') self._tv_categorys = self._categorys.get('tv')
self._anime_categorys = self._categorys.get('anime')
logger.info(f"已加载二级分类策略 category.yaml") logger.info(f"已加载二级分类策略 category.yaml")
@property @property
@ -83,15 +81,6 @@ class CategoryHelper(metaclass=Singleton):
return [] return []
return self._tv_categorys.keys() return self._tv_categorys.keys()
@property
def anime_categorys(self) -> list:
"""
获取动漫分类清单
"""
if not self._anime_categorys:
return []
return self._anime_categorys.keys()
def get_movie_category(self, tmdb_info) -> str: def get_movie_category(self, tmdb_info) -> str:
""" """
判断电影的分类 判断电影的分类
@ -106,10 +95,6 @@ class CategoryHelper(metaclass=Singleton):
:param tmdb_info: 识别的TMDB中的信息 :param tmdb_info: 识别的TMDB中的信息
:return: 二级分类的名称 :return: 二级分类的名称
""" """
genre_ids = tmdb_info.get("genre_ids") or []
if self._anime_categorys and genre_ids \
and set(genre_ids).intersection(set(settings.ANIME_GENREIDS)):
return self.get_category(self._anime_categorys, tmdb_info)
return self.get_category(self._tv_categorys, tmdb_info) return self.get_category(self._tv_categorys, tmdb_info)
@staticmethod @staticmethod

View File

@ -530,7 +530,7 @@ class TmdbApi:
tmdbid: int) -> dict: tmdbid: int) -> dict:
""" """
给定TMDB号查询一条媒体信息 给定TMDB号查询一条媒体信息
:param mtype: 类型:电影、电视剧、动漫,为空时都查(此时用不上年份) :param mtype: 类型:电影、电视剧,为空时都查(此时用不上年份)
:param tmdbid: TMDB的ID有tmdbid时优先使用tmdbid否则使用年份和标题 :param tmdbid: TMDB的ID有tmdbid时优先使用tmdbid否则使用年份和标题
""" """

View File

@ -23,9 +23,16 @@ movie:
# 配置电视剧的分类策略 # 配置电视剧的分类策略
tv: tv:
# 分类名同时也是目录名 # 分类名同时也是目录名
: :
# 匹配 genre_ids 内容类型16是动漫 # 匹配 genre_ids 内容类型16是动漫
genre_ids: '16' genre_ids: '16'
# 匹配 origin_country 国家CN是中国大陆TW是中国台湾HK是中国香港
origin_country: 'CN,TW,HK'
日番:
# 匹配 genre_ids 内容类型16是动漫
genre_ids: '16'
# 匹配 origin_country 国家JP是日本
origin_country: 'JP'
纪录片: 纪录片:
# 匹配 genre_ids 内容类型99是纪录片 # 匹配 genre_ids 内容类型99是纪录片
genre_ids: '99' genre_ids: '99'
@ -47,16 +54,6 @@ tv:
# 未匹配以上分类,则命名为未分类 # 未匹配以上分类,则命名为未分类
未分类: 未分类:
# 配置动漫的分类策略
anime:
国漫:
# 匹配 origin_country 国家CN是中国大陆TW是中国台湾HK是中国香港
origin_country: 'CN,TW,HK'
日番:
# 匹配 origin_country 国家JP是日本
origin_country: 'JP'
未分类:
## genre_ids 内容类型 字典,注意部分中英文是不一样的 ## genre_ids 内容类型 字典,注意部分中英文是不一样的
# 28 Action # 28 Action
# 12 Adventure # 12 Adventure