mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
113 lines
2.8 KiB
Python
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
|