mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2025-12-10 22:44:54 +08:00
* feat(api-nodes): add Kling O1 model support * fix: increase max allowed duration to 10.05 seconds * fix(VideoInput): respect "format" argument
67 lines
2.6 KiB
Python
67 lines
2.6 KiB
Python
from pydantic import BaseModel, Field
|
|
|
|
|
|
class OmniProText2VideoRequest(BaseModel):
|
|
model_name: str = Field(..., description="kling-video-o1")
|
|
aspect_ratio: str = Field(..., description="'16:9', '9:16' or '1:1'")
|
|
duration: str = Field(..., description="'5' or '10'")
|
|
prompt: str = Field(...)
|
|
mode: str = Field("pro")
|
|
|
|
|
|
class OmniParamImage(BaseModel):
|
|
image_url: str = Field(...)
|
|
type: str | None = Field(None, description="Can be 'first_frame' or 'end_frame'")
|
|
|
|
|
|
class OmniParamVideo(BaseModel):
|
|
video_url: str = Field(...)
|
|
refer_type: str | None = Field(..., description="Can be 'base' or 'feature'")
|
|
keep_original_sound: str = Field(..., description="'yes' or 'no'")
|
|
|
|
|
|
class OmniProFirstLastFrameRequest(BaseModel):
|
|
model_name: str = Field(..., description="kling-video-o1")
|
|
image_list: list[OmniParamImage] = Field(..., min_length=1, max_length=7)
|
|
duration: str = Field(..., description="'5' or '10'")
|
|
prompt: str = Field(...)
|
|
mode: str = Field("pro")
|
|
|
|
|
|
class OmniProReferences2VideoRequest(BaseModel):
|
|
model_name: str = Field(..., description="kling-video-o1")
|
|
aspect_ratio: str | None = Field(..., description="'16:9', '9:16' or '1:1'")
|
|
image_list: list[OmniParamImage] | None = Field(
|
|
None, max_length=7, description="Max length 4 when video is present."
|
|
)
|
|
video_list: list[OmniParamVideo] | None = Field(None, max_length=1)
|
|
duration: str | None = Field(..., description="From 3 to 10.")
|
|
prompt: str = Field(...)
|
|
mode: str = Field("pro")
|
|
|
|
|
|
class TaskStatusVideoResult(BaseModel):
|
|
duration: str | None = Field(None, description="Total video duration")
|
|
id: str | None = Field(None, description="Generated video ID")
|
|
url: str | None = Field(None, description="URL for generated video")
|
|
|
|
|
|
class TaskStatusVideoResults(BaseModel):
|
|
videos: list[TaskStatusVideoResult] | None = Field(None)
|
|
|
|
|
|
class TaskStatusVideoResponseData(BaseModel):
|
|
created_at: int | None = Field(None, description="Task creation time")
|
|
updated_at: int | None = Field(None, description="Task update time")
|
|
task_status: str | None = None
|
|
task_status_msg: str | None = Field(None, description="Additional failure reason. Only for polling endpoint.")
|
|
task_id: str | None = Field(None, description="Task ID")
|
|
task_result: TaskStatusVideoResults | None = Field(None)
|
|
|
|
|
|
class TaskStatusVideoResponse(BaseModel):
|
|
code: int | None = Field(None, description="Error code")
|
|
message: str | None = Field(None, description="Error message")
|
|
request_id: str | None = Field(None, description="Request ID")
|
|
data: TaskStatusVideoResponseData | None = Field(None)
|