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