feat 电视剧无法识别集时发送消息
This commit is contained in:
parent
59b947fa65
commit
52e89747b7
@ -16,7 +16,6 @@ from app.core.context import MediaInfo, TorrentInfo
|
|||||||
from app.core.event import EventManager
|
from app.core.event import EventManager
|
||||||
from app.core.meta import MetaBase
|
from app.core.meta import MetaBase
|
||||||
from app.core.module import ModuleManager
|
from app.core.module import ModuleManager
|
||||||
from app.helper.format import FormatParser
|
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.schemas import TransferInfo, TransferTorrent, ExistMediaInfo, DownloadingTorrent, CommingMessage, Notification, \
|
from app.schemas import TransferInfo, TransferTorrent, ExistMediaInfo, DownloadingTorrent, CommingMessage, Notification, \
|
||||||
WebhookEventInfo
|
WebhookEventInfo
|
||||||
@ -273,9 +272,7 @@ class ChainBase(metaclass=ABCMeta):
|
|||||||
return self.run_module("list_torrents", status=status, hashs=hashs)
|
return self.run_module("list_torrents", status=status, hashs=hashs)
|
||||||
|
|
||||||
def transfer(self, path: Path, meta: MetaBase, mediainfo: MediaInfo,
|
def transfer(self, path: Path, meta: MetaBase, mediainfo: MediaInfo,
|
||||||
transfer_type: str,
|
transfer_type: str, target: Path = None) -> Optional[TransferInfo]:
|
||||||
target: Path = None,
|
|
||||||
formater: FormatParser = None) -> Optional[TransferInfo]:
|
|
||||||
"""
|
"""
|
||||||
文件转移
|
文件转移
|
||||||
:param path: 文件路径
|
:param path: 文件路径
|
||||||
@ -283,12 +280,10 @@ class ChainBase(metaclass=ABCMeta):
|
|||||||
:param mediainfo: 识别的媒体信息
|
:param mediainfo: 识别的媒体信息
|
||||||
:param transfer_type: 转移模式
|
:param transfer_type: 转移模式
|
||||||
:param target: 转移目标路径
|
:param target: 转移目标路径
|
||||||
:param formater: 自定义剧集识别格式
|
|
||||||
:return: {path, target_path, message}
|
:return: {path, target_path, message}
|
||||||
"""
|
"""
|
||||||
return self.run_module("transfer", path=path, meta=meta, mediainfo=mediainfo,
|
return self.run_module("transfer", path=path, meta=meta, mediainfo=mediainfo,
|
||||||
transfer_type=transfer_type, target=target,
|
transfer_type=transfer_type, target=target)
|
||||||
formater=formater)
|
|
||||||
|
|
||||||
def transfer_completed(self, hashs: Union[str, list], path: Path = None) -> None:
|
def transfer_completed(self, hashs: Union[str, list], path: Path = None) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -178,6 +178,16 @@ class TransferChain(ChainBase):
|
|||||||
err_msgs.append(f"{file_path} 无法识别有效信息")
|
err_msgs.append(f"{file_path} 无法识别有效信息")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# 自定义识别
|
||||||
|
if formaterHandler:
|
||||||
|
# 开始集、结束集、PART
|
||||||
|
begin_ep, end_ep, part = formaterHandler.split_episode(file_path.stem)
|
||||||
|
if begin_ep is not None:
|
||||||
|
file_meta.begin_episode = begin_ep
|
||||||
|
file_meta.part = part
|
||||||
|
if end_ep is not None:
|
||||||
|
file_meta.end_episode = end_ep
|
||||||
|
|
||||||
if not mediainfo:
|
if not mediainfo:
|
||||||
# 识别媒体信息
|
# 识别媒体信息
|
||||||
file_mediainfo = self.recognize_media(meta=file_meta)
|
file_mediainfo = self.recognize_media(meta=file_meta)
|
||||||
@ -202,6 +212,28 @@ class TransferChain(ChainBase):
|
|||||||
|
|
||||||
logger.info(f"{file_path.name} 识别为:{file_mediainfo.type.value} {file_mediainfo.title_year}")
|
logger.info(f"{file_path.name} 识别为:{file_mediainfo.type.value} {file_mediainfo.title_year}")
|
||||||
|
|
||||||
|
# 电视剧没有集无法转移
|
||||||
|
if file_mediainfo.type == MediaType.TV and not file_meta.episode:
|
||||||
|
# 转移失败
|
||||||
|
logger.warn(f"{file_path.name} 入库失败:未识别到集数")
|
||||||
|
err_msgs.append(f"{file_path.name} 未识别到集数")
|
||||||
|
# 新增转移失败历史记录
|
||||||
|
self.transferhis.add_fail(
|
||||||
|
src_path=file_path,
|
||||||
|
mode=settings.TRANSFER_TYPE,
|
||||||
|
download_hash=download_hash,
|
||||||
|
meta=file_meta,
|
||||||
|
mediainfo=file_mediainfo
|
||||||
|
)
|
||||||
|
# 发送消息
|
||||||
|
self.post_message(Notification(
|
||||||
|
mtype=NotificationType.Manual,
|
||||||
|
title=f"{file_path.name} 入库失败!",
|
||||||
|
text=f"原因:未识别到集数",
|
||||||
|
image=file_mediainfo.get_message_image()
|
||||||
|
))
|
||||||
|
continue
|
||||||
|
|
||||||
# 更新媒体图片
|
# 更新媒体图片
|
||||||
self.obtain_images(mediainfo=file_mediainfo)
|
self.obtain_images(mediainfo=file_mediainfo)
|
||||||
|
|
||||||
@ -215,8 +247,7 @@ class TransferChain(ChainBase):
|
|||||||
mediainfo=file_mediainfo,
|
mediainfo=file_mediainfo,
|
||||||
path=file_path,
|
path=file_path,
|
||||||
transfer_type=transfer_type,
|
transfer_type=transfer_type,
|
||||||
target=target,
|
target=target)
|
||||||
formater=formaterHandler)
|
|
||||||
if not transferinfo:
|
if not transferinfo:
|
||||||
logger.error("文件转移模块运行失败")
|
logger.error("文件转移模块运行失败")
|
||||||
return False, "文件转移模块运行失败"
|
return False, "文件转移模块运行失败"
|
||||||
@ -235,6 +266,7 @@ class TransferChain(ChainBase):
|
|||||||
)
|
)
|
||||||
# 发送消息
|
# 发送消息
|
||||||
self.post_message(Notification(
|
self.post_message(Notification(
|
||||||
|
mtype=NotificationType.Manual,
|
||||||
title=f"{file_mediainfo.title_year} {file_meta.season_episode} 入库失败!",
|
title=f"{file_mediainfo.title_year} {file_meta.season_episode} 入库失败!",
|
||||||
text=f"原因:{transferinfo.message or '未知'}",
|
text=f"原因:{transferinfo.message or '未知'}",
|
||||||
image=file_mediainfo.get_message_image()
|
image=file_mediainfo.get_message_image()
|
||||||
|
@ -9,7 +9,6 @@ from app.core.config import settings
|
|||||||
from app.core.context import MediaInfo
|
from app.core.context import MediaInfo
|
||||||
from app.core.meta import MetaBase
|
from app.core.meta import MetaBase
|
||||||
from app.core.metainfo import MetaInfo
|
from app.core.metainfo import MetaInfo
|
||||||
from app.helper.format import FormatParser
|
|
||||||
from app.log import logger
|
from app.log import logger
|
||||||
from app.modules import _ModuleBase
|
from app.modules import _ModuleBase
|
||||||
from app.schemas import TransferInfo
|
from app.schemas import TransferInfo
|
||||||
@ -31,8 +30,7 @@ class FileTransferModule(_ModuleBase):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def transfer(self, path: Path, meta: MetaBase, mediainfo: MediaInfo,
|
def transfer(self, path: Path, meta: MetaBase, mediainfo: MediaInfo,
|
||||||
transfer_type: str, target: Path = None,
|
transfer_type: str, target: Path = None) -> TransferInfo:
|
||||||
formater: FormatParser = None) -> TransferInfo:
|
|
||||||
"""
|
"""
|
||||||
文件转移
|
文件转移
|
||||||
:param path: 文件路径
|
:param path: 文件路径
|
||||||
@ -40,7 +38,6 @@ class FileTransferModule(_ModuleBase):
|
|||||||
:param mediainfo: 识别的媒体信息
|
:param mediainfo: 识别的媒体信息
|
||||||
:param transfer_type: 转移方式
|
:param transfer_type: 转移方式
|
||||||
:param target: 目标路径
|
:param target: 目标路径
|
||||||
:param formater: 集识别格式
|
|
||||||
:return: {path, target_path, message}
|
:return: {path, target_path, message}
|
||||||
"""
|
"""
|
||||||
# 获取目标路径
|
# 获取目标路径
|
||||||
@ -54,8 +51,7 @@ class FileTransferModule(_ModuleBase):
|
|||||||
in_meta=meta,
|
in_meta=meta,
|
||||||
mediainfo=mediainfo,
|
mediainfo=mediainfo,
|
||||||
transfer_type=transfer_type,
|
transfer_type=transfer_type,
|
||||||
target_dir=target,
|
target_dir=target)
|
||||||
formater=formater)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __transfer_command(file_item: Path, target_file: Path, transfer_type: str) -> int:
|
def __transfer_command(file_item: Path, target_file: Path, transfer_type: str) -> int:
|
||||||
@ -321,7 +317,6 @@ class FileTransferModule(_ModuleBase):
|
|||||||
mediainfo: MediaInfo,
|
mediainfo: MediaInfo,
|
||||||
transfer_type: str,
|
transfer_type: str,
|
||||||
target_dir: Path,
|
target_dir: Path,
|
||||||
formater: FormatParser = None,
|
|
||||||
) -> TransferInfo:
|
) -> TransferInfo:
|
||||||
"""
|
"""
|
||||||
识别并转移一个文件或者一个目录下的所有文件
|
识别并转移一个文件或者一个目录下的所有文件
|
||||||
@ -330,7 +325,6 @@ class FileTransferModule(_ModuleBase):
|
|||||||
:param mediainfo: 媒体信息
|
:param mediainfo: 媒体信息
|
||||||
:param target_dir: 目的文件夹,非空的转移到该文件夹,为空时则按类型转移到配置文件中的媒体库文件夹
|
:param target_dir: 目的文件夹,非空的转移到该文件夹,为空时则按类型转移到配置文件中的媒体库文件夹
|
||||||
:param transfer_type: 文件转移方式
|
:param transfer_type: 文件转移方式
|
||||||
:param formater: 识别的剧集格式
|
|
||||||
:return: TransferInfo、错误信息
|
:return: TransferInfo、错误信息
|
||||||
"""
|
"""
|
||||||
# 检查目录路径
|
# 检查目录路径
|
||||||
@ -396,24 +390,16 @@ class FileTransferModule(_ModuleBase):
|
|||||||
# 转移单个文件
|
# 转移单个文件
|
||||||
# 文件结束季为空
|
# 文件结束季为空
|
||||||
in_meta.end_season = None
|
in_meta.end_season = None
|
||||||
|
|
||||||
# 文件总季数为1
|
# 文件总季数为1
|
||||||
if in_meta.total_season:
|
if in_meta.total_season:
|
||||||
in_meta.total_season = 1
|
in_meta.total_season = 1
|
||||||
|
|
||||||
# 文件不可能有多集
|
# 文件不可能有多集
|
||||||
if in_meta.total_episode > 2:
|
if in_meta.total_episode > 2:
|
||||||
in_meta.total_episode = 1
|
in_meta.total_episode = 1
|
||||||
in_meta.end_episode = None
|
in_meta.end_episode = None
|
||||||
|
|
||||||
# 自定义识别集数、PART
|
|
||||||
if formater:
|
|
||||||
# 开始集、结束集、PART
|
|
||||||
begin_ep, end_ep, part = formater.split_episode(in_path.stem)
|
|
||||||
if begin_ep is not None:
|
|
||||||
in_meta.begin_episode = begin_ep
|
|
||||||
in_meta.part = part
|
|
||||||
if end_ep is not None:
|
|
||||||
in_meta.end_episode = end_ep
|
|
||||||
|
|
||||||
# 目的文件名
|
# 目的文件名
|
||||||
new_file = self.get_rename_path(
|
new_file = self.get_rename_path(
|
||||||
path=target_dir,
|
path=target_dir,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user