mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
111 lines
5.3 KiB
Python
111 lines
5.3 KiB
Python
from typing import Optional, List
|
||
|
||
from pydantic import BaseModel, Field, ConfigDict
|
||
|
||
from app.schemas.context import Context, MediaInfo
|
||
from app.schemas.download import DownloadTask
|
||
from app.schemas.file import FileItem
|
||
from app.schemas.site import Site
|
||
from app.schemas.subscribe import Subscribe
|
||
|
||
|
||
class Workflow(BaseModel):
|
||
"""
|
||
工作流信息
|
||
"""
|
||
id: Optional[int] = Field(default=None, description="工作流ID")
|
||
name: Optional[str] = Field(default=None, description="工作流名称")
|
||
description: Optional[str] = Field(default=None, description="工作流描述")
|
||
timer: Optional[str] = Field(default=None, description="定时器")
|
||
trigger_type: Optional[str] = Field(default='timer', description="触发类型:timer-定时触发 event-事件触发 manual-手动触发")
|
||
event_type: Optional[str] = Field(default=None, description="事件类型(当trigger_type为event时使用)")
|
||
event_conditions: Optional[dict] = Field(default={}, description="事件条件(JSON格式,用于过滤事件)")
|
||
state: Optional[str] = Field(default=None, description="状态")
|
||
current_action: Optional[str] = Field(default=None, description="已执行动作")
|
||
result: Optional[str] = Field(default=None, description="任务执行结果")
|
||
run_count: Optional[int] = Field(default=0, description="已执行次数")
|
||
actions: Optional[list] = Field(default=[], description="任务列表")
|
||
flows: Optional[list] = Field(default=[], description="任务流")
|
||
add_time: Optional[str] = Field(default=None, description="创建时间")
|
||
last_time: Optional[str] = Field(default=None, description="最后执行时间")
|
||
|
||
model_config = ConfigDict(from_attributes=True)
|
||
|
||
|
||
class ActionParams(BaseModel):
|
||
"""
|
||
动作基础参数
|
||
"""
|
||
loop: Optional[bool] = Field(default=False, description="是否需要循环")
|
||
loop_interval: Optional[int] = Field(default=0, description="循环间隔 (秒)")
|
||
|
||
|
||
class Action(BaseModel):
|
||
"""
|
||
动作信息
|
||
"""
|
||
id: Optional[str] = Field(default=None, description="动作ID")
|
||
type: Optional[str] = Field(default=None, description="动作类型 (类名)")
|
||
name: Optional[str] = Field(default=None, description="动作名称")
|
||
description: Optional[str] = Field(default=None, description="动作描述")
|
||
position: Optional[dict] = Field(default={}, description="位置")
|
||
data: Optional[dict] = Field(default={}, description="参数")
|
||
|
||
|
||
class ActionExecution(BaseModel):
|
||
"""
|
||
动作执行情况
|
||
"""
|
||
action: Optional[str] = Field(default=None, description="当前动作(名称)")
|
||
result: Optional[bool] = Field(default=None, description="执行结果")
|
||
message: Optional[str] = Field(default=None, description="执行消息")
|
||
|
||
|
||
class ActionContext(BaseModel):
|
||
"""
|
||
动作基础上下文,各动作通用数据
|
||
"""
|
||
content: Optional[str] = Field(default=None, description="文本类内容")
|
||
torrents: Optional[List[Context]] = Field(default=[], description="资源列表")
|
||
medias: Optional[List[MediaInfo]] = Field(default=[], description="媒体列表")
|
||
fileitems: Optional[List[FileItem]] = Field(default=[], description="文件列表")
|
||
downloads: Optional[List[DownloadTask]] = Field(default=[], description="下载任务列表")
|
||
sites: Optional[List[Site]] = Field(default=[], description="站点列表")
|
||
subscribes: Optional[List[Subscribe]] = Field(default=[], description="订阅列表")
|
||
execute_history: Optional[List[ActionExecution]] = Field(default=[], description="执行历史")
|
||
progress: Optional[int] = Field(default=0, description="执行进度(%)")
|
||
|
||
|
||
class ActionFlow(BaseModel):
|
||
"""
|
||
工作流流程
|
||
"""
|
||
id: Optional[str] = Field(default=None, description="流程ID")
|
||
source: Optional[str] = Field(default=None, description="源动作")
|
||
target: Optional[str] = Field(default=None, description="目标动作")
|
||
animated: Optional[bool] = Field(default=True, description="是否动画流程")
|
||
|
||
|
||
class WorkflowShare(BaseModel):
|
||
"""
|
||
工作流分享信息
|
||
"""
|
||
id: Optional[int] = Field(default=None, description="分享ID")
|
||
share_title: Optional[str] = Field(default=None, description="分享标题")
|
||
share_comment: Optional[str] = Field(default=None, description="分享说明")
|
||
share_user: Optional[str] = Field(default=None, description="分享人")
|
||
share_uid: Optional[str] = Field(default=None, description="分享人唯一ID")
|
||
name: Optional[str] = Field(default=None, description="工作流名称")
|
||
description: Optional[str] = Field(default=None, description="工作流描述")
|
||
timer: Optional[str] = Field(default=None, description="定时器")
|
||
trigger_type: Optional[str] = Field(default=None, description="触发类型")
|
||
event_type: Optional[str] = Field(default=None, description="事件类型")
|
||
event_conditions: Optional[str] = Field(default=None, description="事件条件")
|
||
actions: Optional[str] = Field(default=None, description="任务列表(JSON字符串)")
|
||
flows: Optional[str] = Field(default=None, description="任务流(JSON字符串)")
|
||
context: Optional[str] = Field(default=None, description="执行上下文(JSON字符串)")
|
||
date: Optional[str] = Field(default=None, description="分享时间")
|
||
count: Optional[int] = Field(default=0, description="复用人次")
|
||
|
||
model_config = ConfigDict(from_attributes=True)
|