feat 手动整理API

This commit is contained in:
jxxghp
2023-08-26 22:47:41 +08:00
parent c593f6423c
commit fc2312a045
9 changed files with 324 additions and 15 deletions

View File

@@ -17,7 +17,7 @@ from app.db.models.transferhistory import TransferHistory
from app.db.transferhistory_oper import TransferHistoryOper
from app.helper.progress import ProgressHelper
from app.log import logger
from app.schemas import TransferInfo, TransferTorrent, Notification
from app.schemas import TransferInfo, TransferTorrent, Notification, EpisodeFormat
from app.schemas.types import TorrentStatus, EventType, MediaType, ProgressKey, NotificationType, MessageChannel
from app.utils.string import StringUtils
from app.utils.system import SystemUtils
@@ -220,6 +220,7 @@ class TransferChain(ChainBase):
"""
远程重新转移,参数 历史记录ID TMDBID|类型
"""
def args_error():
self.post_message(Notification(channel=channel,
title="请输入正确的命令格式:/redo [id] [tmdbid]|[类型]"
@@ -331,8 +332,62 @@ class TransferChain(ChainBase):
return True, ""
def __insert_sucess_history(self, src_path: Path, download_hash: str, meta: MetaBase,
mediainfo: MediaInfo, transferinfo: TransferInfo):
def manual_transfer(self, in_path: Path,
mediainfo: MediaInfo,
transfer_type: str = settings.TRANSFER_TYPE,
target: Path = None,
meta: MetaBase = None,
epformat: EpisodeFormat = None,
min_filesize: int = 0) -> Tuple[bool, str]:
"""
手动转移
:param in_path: 源文件路径
:param mediainfo: 媒体信息
:param transfer_type: 转移类型
:param target: 目标路径
:param meta: 元数据
:param epformat: 剧集格式
:param min_filesize: 最小文件大小(MB)
"""
# 开始转移
transferinfo: TransferInfo = self.transfer(
path=in_path,
mediainfo=mediainfo,
transfer_type=transfer_type,
target=target,
meta=meta,
epformat=epformat,
min_filesize=min_filesize
)
if not transferinfo:
return False, "文件转移模块运行失败"
if not transferinfo.target_path:
return False, transferinfo.message
# 新增转移成功历史记录
self.__insert_sucess_history(
src_path=in_path,
meta=meta,
mediainfo=mediainfo,
transferinfo=transferinfo
)
# 刮削元数据
self.scrape_metadata(path=transferinfo.target_path, mediainfo=mediainfo)
# 刷新媒体库
self.refresh_mediaserver(mediainfo=mediainfo, file_path=transferinfo.target_path)
# 发送通知
self.send_transfer_message(meta=meta, mediainfo=mediainfo, transferinfo=transferinfo)
# 广播事件
self.eventmanager.send_event(EventType.TransferComplete, {
'meta': meta,
'mediainfo': mediainfo,
'transferinfo': transferinfo
})
return True, ""
def __insert_sucess_history(self, src_path: Path, meta: MetaBase,
mediainfo: MediaInfo, transferinfo: TransferInfo,
download_hash: str = None):
"""
新增转移成功历史记录
"""