Files
MoviePilot/app/schemas/transfer.py
2024-07-01 18:30:15 +08:00

113 lines
2.8 KiB
Python

from pathlib import Path
from typing import Optional
from pydantic import BaseModel
class FileItem(BaseModel):
# 存储类型
storage: Optional[str] = "local"
# 类型 dir/file
type: Optional[str] = None
# 文件路径
path: Optional[str] = "/"
# 文件名
name: Optional[str] = None
# 文件名
basename: Optional[str] = None
# 文件后缀
extension: Optional[str] = None
# 文件大小
size: Optional[int] = None
# 修改时间
modify_time: Optional[float] = None
# 子节点
children: Optional[list] = []
# ID
fileid: Optional[str] = None
# 父ID
parent_fileid: Optional[str] = None
# 缩略图
thumbnail: Optional[str] = None
# 115 pickcode
pickcode: Optional[str] = None
# drive_id
drive_id: Optional[str] = None
class TransferTorrent(BaseModel):
"""
待转移任务信息
"""
title: Optional[str] = None
path: Optional[Path] = None
hash: Optional[str] = None
tags: Optional[str] = None
size: Optional[int] = 0
userid: Optional[str] = None
class DownloadingTorrent(BaseModel):
"""
下载中任务信息
"""
hash: Optional[str] = None
title: Optional[str] = None
name: Optional[str] = None
year: Optional[str] = None
season_episode: Optional[str] = None
size: Optional[float] = 0
progress: Optional[float] = 0
state: Optional[str] = 'downloading'
upspeed: Optional[str] = None
dlspeed: Optional[str] = None
media: Optional[dict] = {}
userid: Optional[str] = None
username: Optional[str] = None
left_time: Optional[str] = None
class TransferInfo(BaseModel):
"""
文件转移结果信息
"""
# 是否成功标志
success: bool = True
# 整理⼁路径
fileitem: Optional[FileItem] = None
# 转移后路径
target_item: Optional[FileItem] = None
# 处理文件数
file_count: Optional[int] = 0
# 处理文件清单
file_list: Optional[list] = []
# 目标文件清单
file_list_new: Optional[list] = []
# 总文件大小
total_size: Optional[float] = 0
# 失败清单
fail_list: Optional[list] = []
# 错误信息
message: Optional[str] = None
# 是否需要刮削
need_scrape: Optional[bool] = False
def to_dict(self):
"""
返回字典
"""
dicts = vars(self).copy()
dicts["fileitem"] = self.fileitem.dict() if self.fileitem else None
dicts["target_item"] = self.target_item.dict() if self.target_item else None
return dicts
class EpisodeFormat(BaseModel):
"""
剧集自定义识别格式
"""
format: Optional[str] = None
detail: Optional[str] = None
part: Optional[str] = None
offset: Optional[int] = None