fix 动漫分类
This commit is contained in:
@ -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")
|
||||||
|
|
||||||
|
@ -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):
|
||||||
# 父目录非根目录,才删除父目录
|
# 父目录非根目录,才删除父目录
|
||||||
|
@ -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
|
||||||
|
@ -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]]:
|
||||||
|
@ -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
|
||||||
|
@ -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,否则使用年份和标题
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user