mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-04-14 02:00:31 +08:00
add remove queue api
This commit is contained in:
@@ -56,6 +56,17 @@ def query_queue(_: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||
return TransferChain().get_queue_tasks()
|
||||
|
||||
|
||||
@router.delete("/queue", summary="从整理队列中删除任务", response_model=schemas.Response)
|
||||
def remove_queue(fileitem: schemas.FileItem, _: schemas.TokenPayload = Depends(verify_token)) -> Any:
|
||||
"""
|
||||
查询整理队列
|
||||
:param fileitem: 文件项
|
||||
:param _: Token校验
|
||||
"""
|
||||
TransferChain().remove_from_queue(fileitem)
|
||||
return schemas.Response(success=True)
|
||||
|
||||
|
||||
@router.post("/manual", summary="手动转移", response_model=schemas.Response)
|
||||
def manual_transfer(transer_item: ManualTransferItem,
|
||||
background: bool = False,
|
||||
|
||||
@@ -170,6 +170,25 @@ class JobManager:
|
||||
set(self._season_episodes[__mediaid__]) - set(task.meta.episode_list)
|
||||
)
|
||||
|
||||
def remove_task(self, fileitem: FileItem):
|
||||
"""
|
||||
移除整理任务
|
||||
"""
|
||||
with job_lock:
|
||||
for mediaid, job in self._job_view.items():
|
||||
for task in job["tasks"]:
|
||||
if task["fileitem"].path == fileitem.path and task["fileitem"].storage == fileitem.storage:
|
||||
job["tasks"].remove(task)
|
||||
# 如果没有作业了,则移除作业
|
||||
if not job["tasks"]:
|
||||
self._job_view.pop(mediaid)
|
||||
# 移除季集信息
|
||||
if mediaid in self._season_episodes:
|
||||
self._season_episodes[mediaid] = list(
|
||||
set(self._season_episodes[mediaid]) - set(task["meta"].episode_list)
|
||||
)
|
||||
break
|
||||
|
||||
def remove_job(self, media: MediaInfo, season: int = None) -> Optional[Dict[str, Any]]:
|
||||
"""
|
||||
移除作业
|
||||
@@ -180,10 +199,10 @@ class JobManager:
|
||||
with job_lock:
|
||||
# 移除作业
|
||||
if __mediaid__ in self._job_view:
|
||||
# 移除季集信息
|
||||
if __mediaid__ in self._season_episodes:
|
||||
self._season_episodes.pop(__mediaid__)
|
||||
return self._job_view.pop(__mediaid__)
|
||||
# 移除季集信息
|
||||
if __mediaid__ in self._season_episodes:
|
||||
self._season_episodes.pop(__mediaid__)
|
||||
|
||||
def is_finished(self, media: MediaInfo, season: int = None) -> bool:
|
||||
"""
|
||||
@@ -367,6 +386,14 @@ class TransferChain(ChainBase, metaclass=Singleton):
|
||||
callback=callback or self.__default_callback
|
||||
))
|
||||
|
||||
def remove_from_queue(self, fileitem: FileItem):
|
||||
"""
|
||||
从待整理队列移除
|
||||
"""
|
||||
if not fileitem:
|
||||
return
|
||||
self.jobview.remove_task(fileitem)
|
||||
|
||||
def __start_transfer(self):
|
||||
"""
|
||||
处理队列
|
||||
@@ -728,7 +755,7 @@ class TransferChain(ChainBase, metaclass=Singleton):
|
||||
file_items = [f for f in file_items if formaterHandler.match(f[0].name)]
|
||||
|
||||
# 过滤后缀和大小
|
||||
file_items = [f for f in file_items if f[1] # 蓝光目录不过滤
|
||||
file_items = [f for f in file_items if f[1] # 蓝光目录不过滤
|
||||
or __is_allow_extensions(f[0].extension) and __is_allow_filesize(f[0].size, min_filesize)]
|
||||
if not file_items:
|
||||
logger.warn(f"{fileitem.path} 没有找到可整理的媒体文件")
|
||||
|
||||
Reference in New Issue
Block a user