Skip to content

Commit

Permalink
Merge pull request #2913 from thsrite/v2
Browse files Browse the repository at this point in the history
  • Loading branch information
jxxghp authored Oct 23, 2024
2 parents c5e7050 + 51f8fc0 commit c4619ed
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 26 deletions.
48 changes: 35 additions & 13 deletions app/chain/transfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ def process(self) -> bool:
),
target_storage=transfer_dirinfo.library_storage,
mediainfo=mediainfo,
download_hash=torrent.hash
download_hash=torrent.hash,
notify=transfer_dirinfo.notify
)

# 设置下载任务状态
Expand All @@ -154,7 +155,7 @@ def __do_transfer(self, fileitem: FileItem,
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: 文件项
Expand Down Expand Up @@ -240,7 +241,7 @@ def __do_transfer(self, fileitem: FileItem,
if not file_items:
logger.warn(f"{fileitem.path} 没有找到可整理的媒体文件")
return False, f"{fileitem.name} 没有找到可整理的媒体文件"

logger.info(f"正在整理 {len(file_items)} 个文件...")

# 整理所有文件
Expand Down Expand Up @@ -453,13 +454,14 @@ def __do_transfer(self, fileitem: FileItem,
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, {
Expand Down Expand Up @@ -617,10 +619,19 @@ def __re_transfer(self, logid: int, mtype: MediaType = None,
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

Expand Down Expand Up @@ -656,6 +667,15 @@ def manual_transfer(self,
"""
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时单个识别
# 识别媒体信息
Expand All @@ -681,7 +701,8 @@ def manual_transfer(self,
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
Expand All @@ -699,7 +720,8 @@ def manual_transfer(self,
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,
Expand Down
27 changes: 14 additions & 13 deletions app/monitor.py
Original file line number Diff line number Diff line change
Expand Up @@ -447,18 +447,18 @@ def __get_bluray_dir(_path: Path):
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:
Expand All @@ -475,7 +475,8 @@ def __get_bluray_dir(_path: Path):
})

# 发送消息汇总
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"]:
Expand Down
2 changes: 2 additions & 0 deletions app/schemas/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,5 @@ class TransferDirectoryConf(BaseModel):
library_type_folder: Optional[bool] = False
# 媒体库类别子目录
library_category_folder: Optional[bool] = False
# 是否发送通知
notify: Optional[bool] = True

0 comments on commit c4619ed

Please sign in to comment.