fix transfer apis

This commit is contained in:
jxxghp
2024-12-26 19:58:23 +08:00
parent 15cc02b083
commit 78dab5038c
4 changed files with 11 additions and 9 deletions
+1 -3
View File
@@ -91,9 +91,7 @@ def delete_transfer_history(history_in: schemas.TransferHistory,
# 册除媒体库文件 # 册除媒体库文件
if deletedest and history.dest_fileitem: if deletedest and history.dest_fileitem:
dest_fileitem = schemas.FileItem(**history.dest_fileitem) dest_fileitem = schemas.FileItem(**history.dest_fileitem)
state = StorageChain().delete_media_file(fileitem=dest_fileitem, mtype=MediaType(history.type)) StorageChain().delete_media_file(fileitem=dest_fileitem, mtype=MediaType(history.type))
if not state:
return schemas.Response(success=False, message=f"{dest_fileitem.path} 删除失败")
# 删除源文件 # 删除源文件
if deletesrc and history.src_fileitem: if deletesrc and history.src_fileitem:
+6 -5
View File
@@ -49,7 +49,7 @@ class JobManager:
"tasks": [ "tasks": [
{ {
"fileitem": schema.FileItem, "fileitem": schema.FileItem,
"meta": schema.MetaBase, "meta": schema.MetaInfo,
"state": "running" | "waiting" | "failed" | "completed", "state": "running" | "waiting" | "failed" | "completed",
} }
] ]
@@ -175,7 +175,8 @@ class JobManager:
移除整理任务 移除整理任务
""" """
with job_lock: with job_lock:
for mediaid, job in self._job_view.items(): for mediaid in list(self._job_view):
job = self._job_view[mediaid]
for task in job["tasks"]: for task in job["tasks"]:
if task["fileitem"].path == fileitem.path and task["fileitem"].storage == fileitem.storage: if task["fileitem"].path == fileitem.path and task["fileitem"].storage == fileitem.storage:
job["tasks"].remove(task) job["tasks"].remove(task)
@@ -214,7 +215,7 @@ class JobManager:
if __mediaid__ not in self._job_view: if __mediaid__ not in self._job_view:
return False return False
with job_lock: with job_lock:
return all([job["state"] == "completed" for job in self._job_view[__mediaid__]["tasks"]]) return all([job["state"] in ["completed", "failed"] for job in self._job_view[__mediaid__]["tasks"]])
def count(self, media: MediaInfo, season: int = None) -> int: def count(self, media: MediaInfo, season: int = None) -> int:
""" """
@@ -266,7 +267,7 @@ class TransferChain(ChainBase, metaclass=Singleton):
_transfer_thread = None _transfer_thread = None
# 文件整理检查间隔(秒) # 文件整理检查间隔(秒)
_transfer_interval = 600 if settings.DEV else 10 _transfer_interval = 0
def __init__(self): def __init__(self):
super().__init__() super().__init__()
@@ -420,7 +421,7 @@ class TransferChain(ChainBase, metaclass=Singleton):
# 失败数量 # 失败数量
fail_num = 0 fail_num = 0
while not global_vars.is_system_stopped: while not global_vars.is_system_stopped and self._transfer_interval:
try: try:
item: TransferQueue = self._queue.get(timeout=self._transfer_interval) item: TransferQueue = self._queue.get(timeout=self._transfer_interval)
if item: if item:
+2 -1
View File
@@ -589,9 +589,10 @@ class MetaBase(object):
""" """
转为字典 转为字典
""" """
dicts = asdict(self) dicts = vars(self).copy()
dicts["type"] = self.type.value if self.type else None dicts["type"] = self.type.value if self.type else None
dicts["season_episode"] = self.season_episode dicts["season_episode"] = self.season_episode
dicts["edition"] = self.edition dicts["edition"] = self.edition
dicts["name"] = self.name dicts["name"] = self.name
dicts["episode_list"] = self.episode_list
return dicts return dicts
+2
View File
@@ -39,6 +39,8 @@ class MetaInfo(BaseModel):
end_episode: Optional[int] = None end_episode: Optional[int] = None
# SxxExx # SxxExx
season_episode: Optional[str] = None season_episode: Optional[str] = None
# 集列表
episode_list: Optional[List[int]] = Field(default_factory=list)
# Partx Cd Dvd Disk Disc # Partx Cd Dvd Disk Disc
part: Optional[str] = None part: Optional[str] = None
# 识别的资源类型 # 识别的资源类型