fix AddDownloadAction

This commit is contained in:
jxxghp
2025-02-19 15:24:13 +08:00
parent 15e1fb61ac
commit 351029a842
13 changed files with 50 additions and 57 deletions
+10 -2
View File
@@ -10,6 +10,9 @@ class BaseAction(BaseModel, ABC):
工作流动作基类
"""
# 完成标志
_done_flag = False
@property
@abstractmethod
def name(self) -> str:
@@ -28,12 +31,11 @@ class BaseAction(BaseModel, ABC):
raise NotImplementedError
@property
@abstractmethod
def done(self) -> bool:
"""
判断动作是否完成
"""
pass
return self._done_flag
@property
@abstractmethod
@@ -42,3 +44,9 @@ class BaseAction(BaseModel, ABC):
判断动作是否成功
"""
pass
def job_done(self):
"""
标记动作完成
"""
self._done_flag = True
+37 -8
View File
@@ -1,12 +1,19 @@
from pydantic import Field
from app.actions import BaseAction
from app.schemas import ActionParams, ActionContext
from app.chain.download import DownloadChain
from app.chain.media import MediaChain
from app.core.metainfo import MetaInfo
from app.log import logger
from app.schemas import ActionParams, ActionContext, DownloadTask
class AddDownloadParams(ActionParams):
"""
添加下载资源参数
"""
pass
downloader: str = Field(None, description="下载器")
save_path: str = Field(None, description="保存路径")
class AddDownloadAction(BaseAction):
@@ -14,6 +21,9 @@ class AddDownloadAction(BaseAction):
添加下载资源
"""
# 已添加的下载
_added_downloads = []
@property
def name(self) -> str:
return "添加下载资源"
@@ -22,13 +32,32 @@ class AddDownloadAction(BaseAction):
def description(self) -> str:
return "根据资源列表添加下载任务"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
return True if self._added_downloads else False
async def execute(self, params: AddDownloadParams, context: ActionContext) -> ActionContext:
pass
"""
将上下文中的torrents添加到下载任务中
"""
for t in context.torrents:
if not t.meta_info:
t.meta_info = MetaInfo(title=t.title, subtitle=t.description)
if not t.media_info:
t.media_info = MediaChain().recognize_media(meta=t.meta_info)
if not t.media_info:
logger.warning(f"{t.title} 未识别到媒体信息,无法下载")
continue
did = DownloadChain().download_single(context=t,
downloader=params.downloader,
save_path=params.save_path)
if did:
self._added_downloads.append(did)
if self._added_downloads:
logger.info(f"已添加 {len(self._added_downloads)} 个下载任务")
context.downloads.extend(
[DownloadTask(download_id=did, downloader=params.downloader) for did in self._added_downloads]
)
self.job_done()
return context
-4
View File
@@ -22,10 +22,6 @@ class AddSubscribeAction(BaseAction):
def description(self) -> str:
return "根据媒体列表添加订阅"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class FetchDownloadsAction(BaseAction):
def description(self) -> str:
return "获取下载任务,更新任务状态"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class FetchMediasAction(BaseAction):
def description(self) -> str:
return "获取媒体数据"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
+3 -7
View File
@@ -30,13 +30,9 @@ class FetchRssAction(BaseAction):
def description(self) -> str:
return "请求RSS地址获取数据,并解析为资源列表"
async def execute(self, params: FetchRssParams, context: ActionContext) -> ActionContext:
pass
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
async def execute(self, params: FetchRssParams, context: ActionContext) -> ActionContext:
pass
-4
View File
@@ -22,10 +22,6 @@ class FilterMediasAction(BaseAction):
def description(self) -> str:
return "过滤媒体数据列表"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class FilterTorrentsAction(BaseAction):
def description(self) -> str:
return "过滤资源数据列表"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class ScrapeFileAction(BaseAction):
def description(self) -> str:
return "刮削媒体信息和图片"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -30,10 +30,6 @@ class SearchTorrentsAction(BaseAction):
def description(self) -> str:
return "根据关键字搜索站点种子资源"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class SendEventAction(BaseAction):
def description(self) -> str:
return "发送特定事件"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class SendMessageAction(BaseAction):
def description(self) -> str:
return "发送特定消息"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True
-4
View File
@@ -22,10 +22,6 @@ class TransferFileAction(BaseAction):
def description(self) -> str:
return "整理和转移文件"
@property
def done(self) -> bool:
return True
@property
def success(self) -> bool:
return True