mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2025-12-10 22:44:54 +08:00
87 lines
3.3 KiB
Python
87 lines
3.3 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 TaskStatusImageResult(BaseModel):
|
||
index: int = Field(..., description="Image Number,0-9")
|
||
url: str = Field(..., description="URL for generated image")
|
||
|
||
|
||
class OmniTaskStatusResults(BaseModel):
|
||
videos: list[TaskStatusVideoResult] | None = Field(None)
|
||
images: list[TaskStatusImageResult] | None = Field(None)
|
||
|
||
|
||
class OmniTaskStatusResponseData(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: OmniTaskStatusResults | None = Field(None)
|
||
|
||
|
||
class OmniTaskStatusResponse(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: OmniTaskStatusResponseData | None = Field(None)
|
||
|
||
|
||
class OmniImageParamImage(BaseModel):
|
||
image: str = Field(...)
|
||
|
||
|
||
class OmniProImageRequest(BaseModel):
|
||
model_name: str = Field(..., description="kling-image-o1")
|
||
resolution: str = Field(..., description="'1k' or '2k'")
|
||
aspect_ratio: str | None = Field(...)
|
||
prompt: str = Field(...)
|
||
mode: str = Field("pro")
|
||
n: int | None = Field(1, le=9)
|
||
image_list: list[OmniImageParamImage] | None = Field(..., max_length=10)
|