feat 整合历史记录Api

This commit is contained in:
jxxghp 2023-10-14 13:05:00 +08:00
parent d4f202c2b1
commit bc8a243a6d
3 changed files with 26 additions and 27 deletions

View File

@ -11,7 +11,6 @@ from app.core.security import verify_token
from app.db import get_db from app.db import get_db
from app.db.models.downloadhistory import DownloadHistory from app.db.models.downloadhistory import DownloadHistory
from app.db.models.transferhistory import TransferHistory from app.db.models.transferhistory import TransferHistory
from app.schemas import MediaType
from app.schemas.types import EventType from app.schemas.types import EventType
router = APIRouter() router = APIRouter()
@ -90,23 +89,3 @@ def delete_transfer_history(history_in: schemas.TransferHistory,
# 删除记录 # 删除记录
TransferHistory.delete(db, history_in.id) TransferHistory.delete(db, history_in.id)
return schemas.Response(success=True) return schemas.Response(success=True)
@router.post("/transfer", summary="历史记录重新转移", response_model=schemas.Response)
def redo_transfer_history(history_in: schemas.TransferHistory,
mtype: str = None,
new_tmdbid: int = None,
db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(verify_token)) -> Any:
"""
历史记录重新转移不输入 mtype new_tmdbid 自动使用文件名重新识别
"""
if mtype and new_tmdbid:
state, errmsg = TransferChain(db).re_transfer(logid=history_in.id,
mtype=MediaType(mtype), tmdbid=new_tmdbid)
else:
state, errmsg = TransferChain(db).re_transfer(logid=history_in.id)
if state:
return schemas.Response(success=True)
else:
return schemas.Response(success=False, message=errmsg)

View File

@ -8,13 +8,15 @@ from app import schemas
from app.chain.transfer import TransferChain from app.chain.transfer import TransferChain
from app.core.security import verify_token from app.core.security import verify_token
from app.db import get_db from app.db import get_db
from app.db.models.transferhistory import TransferHistory
from app.schemas import MediaType from app.schemas import MediaType
router = APIRouter() router = APIRouter()
@router.post("/manual", summary="手动转移", response_model=schemas.Response) @router.post("/manual", summary="手动转移", response_model=schemas.Response)
def manual_transfer(path: str, def manual_transfer(path: str = None,
logid: int = None,
target: str = None, target: str = None,
tmdbid: int = None, tmdbid: int = None,
type_name: str = None, type_name: str = None,
@ -28,8 +30,9 @@ def manual_transfer(path: str,
db: Session = Depends(get_db), db: Session = Depends(get_db),
_: schemas.TokenPayload = Depends(verify_token)) -> Any: _: schemas.TokenPayload = Depends(verify_token)) -> Any:
""" """
手动转移支持自定义剧集识别格式 手动转移文件或历史记录支持自定义剧集识别格式
:param path: 转移路径或文件 :param path: 转移路径或文件
:param logid: 转移历史记录ID
:param target: 目标路径 :param target: 目标路径
:param type_name: 媒体类型电影/电视剧 :param type_name: 媒体类型电影/电视剧
:param tmdbid: tmdbid :param tmdbid: tmdbid
@ -43,7 +46,24 @@ def manual_transfer(path: str,
:param db: 数据库 :param db: 数据库
:param _: Token校验 :param _: Token校验
""" """
if logid:
# 查询历史记录
history = TransferHistory.get(db, logid)
if not history:
return schemas.Response(success=False, message=f"历史记录不存在ID{logid}")
# 源路径
in_path = Path(history.src)
# 目的路径
if history.dest:
# 删除旧的已整理文件
TransferChain(db).delete_files(Path(history.dest))
if not target:
target = history.dest
elif path:
in_path = Path(path) in_path = Path(path)
else:
return schemas.Response(success=False, message=f"缺少参数path/logid")
if target: if target:
target = Path(target) target = Path(target)
if not target.exists(): if not target.exists():

View File

@ -489,7 +489,7 @@ class TransferChain(ChainBase):
def re_transfer(self, logid: int, def re_transfer(self, logid: int,
mtype: MediaType = None, tmdbid: int = None) -> Tuple[bool, str]: mtype: MediaType = None, tmdbid: int = None) -> Tuple[bool, str]:
""" """
根据历史记录重新识别转移处理对应的src目录 根据历史记录重新识别转移支持简单条件
:param logid: 历史记录ID :param logid: 历史记录ID
:param mtype: 媒体类型 :param mtype: 媒体类型
:param tmdbid: TMDB ID :param tmdbid: TMDB ID
@ -499,7 +499,7 @@ class TransferChain(ChainBase):
if not history: if not history:
logger.error(f"历史记录不存在ID{logid}") logger.error(f"历史记录不存在ID{logid}")
return False, "历史记录不存在" return False, "历史记录不存在"
# 没有下载记录,按源目录路径重新转移 # 按源目录路径重新转移
src_path = Path(history.src) src_path = Path(history.src)
if not src_path.exists(): if not src_path.exists():
return False, f"源目录不存在:{src_path}" return False, f"源目录不存在:{src_path}"
@ -541,7 +541,7 @@ class TransferChain(ChainBase):
epformat: EpisodeFormat = None, epformat: EpisodeFormat = None,
min_filesize: int = 0) -> Tuple[bool, Union[str, list]]: min_filesize: int = 0) -> Tuple[bool, Union[str, list]]:
""" """
手动转移 手动转移支持复杂条件带进度显示
:param in_path: 源文件路径 :param in_path: 源文件路径
:param target: 目标路径 :param target: 目标路径
:param tmdbid: TMDB ID :param tmdbid: TMDB ID