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
+8 -3
View File
@@ -18,7 +18,7 @@ from app.core.meta import MetaBase
from app.core.module import ModuleManager
from app.log import logger
from app.schemas import TransferInfo, TransferTorrent, ExistMediaInfo, DownloadingTorrent, CommingMessage, Notification, \
WebhookEventInfo
WebhookEventInfo, EpisodeFormat
from app.schemas.types import TorrentStatus, MediaType, MediaImageType, EventType
from app.utils.object import ObjectUtils
@@ -274,7 +274,9 @@ class ChainBase(metaclass=ABCMeta):
def transfer(self, path: Path, mediainfo: MediaInfo,
transfer_type: str,
target: Path = None,
meta: MetaBase = None) -> Optional[TransferInfo]:
meta: MetaBase = None,
epformat: EpisodeFormat = None,
min_filesize: int = 0) -> Optional[TransferInfo]:
"""
文件转移
:param path: 文件路径
@@ -282,10 +284,13 @@ class ChainBase(metaclass=ABCMeta):
:param transfer_type: 转移模式
:param target: 转移目标路径
:param meta: 预识别的元数据,仅单文件转移时传递
:param epformat: 自定义剧集识别格式
:param min_filesize: 最小文件大小
:return: {path, target_path, message}
"""
return self.run_module("transfer", path=path, mediainfo=mediainfo,
transfer_type=transfer_type, target=target, meta=meta)
transfer_type=transfer_type, target=target, meta=meta,
epformat=epformat, min_filesize=min_filesize)
def transfer_completed(self, hashs: Union[str, list], transinfo: TransferInfo = None) -> None:
"""
+58 -3
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):
"""
新增转移成功历史记录
"""