add action templates

This commit is contained in:
jxxghp
2025-02-16 12:52:29 +08:00
parent 4e2d9e9165
commit 21ae36bc3a
12 changed files with 88 additions and 6 deletions

View File

@@ -2,7 +2,7 @@ from abc import ABC, abstractmethod
from pydantic.main import BaseModel
from app.schemas import ActionContext
from app.schemas import ActionContext, ActionParams
class BaseAction(BaseModel, ABC):
@@ -21,5 +21,5 @@ class BaseAction(BaseModel, ABC):
pass
@abstractmethod
async def execute(self, params: dict, context: ActionContext) -> ActionContext:
async def execute(self, params: ActionParams, context: ActionContext) -> ActionContext:
raise NotImplementedError

View File

View File

View File

33
app/actions/fetch_rss.py Normal file
View File

@@ -0,0 +1,33 @@
from typing import Optional
from pydantic import Field
from app.actions import BaseAction
from app.schemas import ActionParams, ActionContext
class FetchRssParams(ActionParams):
"""
获取RSS资源列表参数
"""
url: str = Field(None, description="RSS地址")
proxy: Optional[bool] = Field(False, description="是否使用代理")
timeout: Optional[int] = Field(15, description="超时时间")
headers: Optional[dict] = Field(None, description="请求头")
recognize: Optional[bool] = Field(False, description="是否识别")
class FetchRssAction(BaseAction):
"""
获取RSS资源列表
"""
@property
def name(self) -> str:
return "获取RSS资源列表"
@property
def description(self) -> str:
return "请求RSS地址获取数据并解析为资源列表"
async def execute(self, params: FetchRssParams, context: ActionContext) -> ActionContext:
pass

View File

View File

View File

@@ -0,0 +1,34 @@
from typing import Optional
from pydantic import Field
from app.actions import BaseAction
from app.schemas import ActionParams, ActionContext
class SearchTorrentsParams(ActionParams):
"""
搜索站点资源参数
"""
name: str = Field(None, description="资源名称")
year: Optional[int] = Field(None, description="年份")
type: Optional[str] = Field(None, description="资源类型 (电影/电视剧)")
season: Optional[int] = Field(None, description="季度")
recognize: Optional[bool] = Field(False, description="是否识别")
class SearchTorrentsAction(BaseAction):
"""
搜索站点资源
"""
@property
def name(self) -> str:
return "搜索站点资源"
@property
def description(self) -> str:
return "根据关键字搜索站点种子资源"
async def execute(self, params: SearchTorrentsParams, context: ActionContext) -> ActionContext:
pass

View File

View File

View File