mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-06-28 03:02:34 +08:00
Merge pull request #2913 from thsrite/v2
This commit is contained in:
@@ -138,7 +138,8 @@ class TransferChain(ChainBase):
|
||||
),
|
||||
target_storage=transfer_dirinfo.library_storage,
|
||||
mediainfo=mediainfo,
|
||||
download_hash=torrent.hash
|
||||
download_hash=torrent.hash,
|
||||
notify=transfer_dirinfo.notify
|
||||
)
|
||||
|
||||
# 设置下载任务状态
|
||||
@@ -154,7 +155,7 @@ class TransferChain(ChainBase):
|
||||
target_path: Path = None, transfer_type: str = None,
|
||||
season: int = None, epformat: EpisodeFormat = None,
|
||||
min_filesize: int = 0, scrape: bool = None,
|
||||
force: bool = False) -> Tuple[bool, str]:
|
||||
force: bool = False, notify: bool = True) -> Tuple[bool, str]:
|
||||
"""
|
||||
执行一个复杂目录的整理操作
|
||||
:param fileitem: 文件项
|
||||
@@ -240,7 +241,7 @@ class TransferChain(ChainBase):
|
||||
if not file_items:
|
||||
logger.warn(f"{fileitem.path} 没有找到可整理的媒体文件")
|
||||
return False, f"{fileitem.name} 没有找到可整理的媒体文件"
|
||||
|
||||
|
||||
logger.info(f"正在整理 {len(file_items)} 个文件...")
|
||||
|
||||
# 整理所有文件
|
||||
@@ -453,13 +454,14 @@ class TransferChain(ChainBase):
|
||||
transfer_meta = metas[mkey]
|
||||
transfer_info = transfers[mkey]
|
||||
# 发送通知
|
||||
se_str = None
|
||||
if media.type == MediaType.TV:
|
||||
se_str = f"{transfer_meta.season} {StringUtils.format_ep(season_episodes[mkey])}"
|
||||
self.send_transfer_message(meta=transfer_meta,
|
||||
mediainfo=media,
|
||||
transferinfo=transfer_info,
|
||||
season_episode=se_str)
|
||||
if notify:
|
||||
se_str = None
|
||||
if media.type == MediaType.TV:
|
||||
se_str = f"{transfer_meta.season} {StringUtils.format_ep(season_episodes[mkey])}"
|
||||
self.send_transfer_message(meta=transfer_meta,
|
||||
mediainfo=media,
|
||||
transferinfo=transfer_info,
|
||||
season_episode=se_str)
|
||||
# 刮削事件
|
||||
if scrape or transfer_info.need_scrape:
|
||||
self.eventmanager.send_event(EventType.MetadataScrape, {
|
||||
@@ -617,10 +619,19 @@ class TransferChain(ChainBase):
|
||||
if history.src_fileitem:
|
||||
# 解析源文件对象
|
||||
fileitem = FileItem(**history.src_fileitem)
|
||||
# 检查目录是否发送通知
|
||||
transfer_dirinfo = None
|
||||
for dir_info in self.directoryhelper.get_download_dirs():
|
||||
if not dir_info.download_path:
|
||||
continue
|
||||
if fileitem.path.is_relative_to(Path(dir_info.download_path)):
|
||||
transfer_dirinfo = dir_info
|
||||
break
|
||||
state, errmsg = self.__do_transfer(fileitem=fileitem,
|
||||
mediainfo=mediainfo,
|
||||
download_hash=history.download_hash,
|
||||
force=True)
|
||||
force=True,
|
||||
notify=transfer_dirinfo.notify if transfer_dirinfo else False)
|
||||
if not state:
|
||||
return False, errmsg
|
||||
|
||||
@@ -656,6 +667,15 @@ class TransferChain(ChainBase):
|
||||
"""
|
||||
logger.info(f"手动整理:{fileitem.path} ...")
|
||||
|
||||
# 检查目录是否发送通知
|
||||
transfer_dirinfo = None
|
||||
for dir_info in self.directoryhelper.get_download_dirs():
|
||||
if not dir_info.download_path:
|
||||
continue
|
||||
if fileitem.path.is_relative_to(Path(dir_info.download_path)):
|
||||
transfer_dirinfo = dir_info
|
||||
break
|
||||
|
||||
if tmdbid or doubanid:
|
||||
# 有输入TMDBID时单个识别
|
||||
# 识别媒体信息
|
||||
@@ -681,7 +701,8 @@ class TransferChain(ChainBase):
|
||||
epformat=epformat,
|
||||
min_filesize=min_filesize,
|
||||
scrape=scrape,
|
||||
force=force
|
||||
force=force,
|
||||
notify=transfer_dirinfo.notify if transfer_dirinfo else False
|
||||
)
|
||||
if not state:
|
||||
return False, errmsg
|
||||
@@ -699,7 +720,8 @@ class TransferChain(ChainBase):
|
||||
epformat=epformat,
|
||||
min_filesize=min_filesize,
|
||||
scrape=scrape,
|
||||
force=force)
|
||||
force=force,
|
||||
notify=transfer_dirinfo.notify if transfer_dirinfo else False)
|
||||
return state, errmsg
|
||||
|
||||
def send_transfer_message(self, meta: MetaBase, mediainfo: MediaInfo,
|
||||
|
||||
@@ -447,18 +447,18 @@ class Monitor(metaclass=Singleton):
|
||||
link=settings.MP_DOMAIN('#/history')
|
||||
))
|
||||
return
|
||||
else:
|
||||
# 转移成功
|
||||
logger.info(f"{event_path.name} 入库成功:{transferinfo.target_diritem.path}")
|
||||
# 新增转移成功历史记录
|
||||
self.transferhis.add_success(
|
||||
fileitem=file_item,
|
||||
mode=dir_info.transfer_type,
|
||||
download_hash=download_hash,
|
||||
meta=file_meta,
|
||||
mediainfo=mediainfo,
|
||||
transferinfo=transferinfo
|
||||
)
|
||||
|
||||
# 转移成功
|
||||
logger.info(f"{event_path.name} 入库成功:{transferinfo.target_diritem.path}")
|
||||
# 新增转移成功历史记录
|
||||
self.transferhis.add_success(
|
||||
fileitem=file_item,
|
||||
mode=dir_info.transfer_type,
|
||||
download_hash=download_hash,
|
||||
meta=file_meta,
|
||||
mediainfo=mediainfo,
|
||||
transferinfo=transferinfo
|
||||
)
|
||||
|
||||
# TODO 汇总刮削
|
||||
if dir_info.scraping:
|
||||
@@ -475,7 +475,8 @@ class Monitor(metaclass=Singleton):
|
||||
})
|
||||
|
||||
# 发送消息汇总
|
||||
self.__collect_msg_medias(mediainfo=mediainfo, file_meta=file_meta, transferinfo=transferinfo)
|
||||
if dir_info.notify:
|
||||
self.__collect_msg_medias(mediainfo=mediainfo, file_meta=file_meta, transferinfo=transferinfo)
|
||||
|
||||
# 移动模式删除空目录
|
||||
if dir_info.transfer_type in ["move"]:
|
||||
|
||||
@@ -131,3 +131,5 @@ class TransferDirectoryConf(BaseModel):
|
||||
library_type_folder: Optional[bool] = False
|
||||
# 媒体库类别子目录
|
||||
library_category_folder: Optional[bool] = False
|
||||
# 是否发送通知
|
||||
notify: Optional[bool] = True
|
||||
|
||||
Reference in New Issue
Block a user