mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-19 03:35:22 +08:00
* chore(api-nodes): remove non-used; extract model to separate files * chore(api-nodes): remove non-needed prefix in filenames
128 lines
3.6 KiB
Python
128 lines
3.6 KiB
Python
from enum import Enum
|
|
from typing import Optional, List, Union
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field, RootModel
|
|
|
|
|
|
class RunwayAspectRatioEnum(str, Enum):
|
|
field_1280_720 = '1280:720'
|
|
field_720_1280 = '720:1280'
|
|
field_1104_832 = '1104:832'
|
|
field_832_1104 = '832:1104'
|
|
field_960_960 = '960:960'
|
|
field_1584_672 = '1584:672'
|
|
field_1280_768 = '1280:768'
|
|
field_768_1280 = '768:1280'
|
|
|
|
|
|
class Position(str, Enum):
|
|
first = 'first'
|
|
last = 'last'
|
|
|
|
|
|
class RunwayPromptImageDetailedObject(BaseModel):
|
|
position: Position = Field(
|
|
...,
|
|
description="The position of the image in the output video. 'last' is currently supported for gen3a_turbo only.",
|
|
)
|
|
uri: str = Field(
|
|
..., description='A HTTPS URL or data URI containing an encoded image.'
|
|
)
|
|
|
|
|
|
class RunwayPromptImageObject(
|
|
RootModel[Union[str, List[RunwayPromptImageDetailedObject]]]
|
|
):
|
|
root: Union[str, List[RunwayPromptImageDetailedObject]] = Field(
|
|
...,
|
|
description='Image(s) to use for the video generation. Can be a single URI or an array of image objects with positions.',
|
|
)
|
|
|
|
|
|
class RunwayModelEnum(str, Enum):
|
|
gen4_turbo = 'gen4_turbo'
|
|
gen3a_turbo = 'gen3a_turbo'
|
|
|
|
|
|
class RunwayDurationEnum(int, Enum):
|
|
integer_5 = 5
|
|
integer_10 = 10
|
|
|
|
|
|
class RunwayImageToVideoRequest(BaseModel):
|
|
duration: RunwayDurationEnum
|
|
model: RunwayModelEnum
|
|
promptImage: RunwayPromptImageObject
|
|
promptText: Optional[str] = Field(
|
|
None, description='Text prompt for the generation', max_length=1000
|
|
)
|
|
ratio: RunwayAspectRatioEnum
|
|
seed: int = Field(
|
|
..., description='Random seed for generation', ge=0, le=4294967295
|
|
)
|
|
|
|
|
|
class RunwayImageToVideoResponse(BaseModel):
|
|
id: Optional[str] = Field(None, description='Task ID')
|
|
|
|
|
|
class RunwayTaskStatusEnum(str, Enum):
|
|
SUCCEEDED = 'SUCCEEDED'
|
|
RUNNING = 'RUNNING'
|
|
FAILED = 'FAILED'
|
|
PENDING = 'PENDING'
|
|
CANCELLED = 'CANCELLED'
|
|
THROTTLED = 'THROTTLED'
|
|
|
|
|
|
class RunwayTaskStatusResponse(BaseModel):
|
|
createdAt: datetime = Field(..., description='Task creation timestamp')
|
|
id: str = Field(..., description='Task ID')
|
|
output: Optional[List[str]] = Field(None, description='Array of output video URLs')
|
|
progress: Optional[float] = Field(
|
|
None,
|
|
description='Float value between 0 and 1 representing the progress of the task. Only available if status is RUNNING.',
|
|
ge=0.0,
|
|
le=1.0,
|
|
)
|
|
status: RunwayTaskStatusEnum
|
|
|
|
|
|
class Model4(str, Enum):
|
|
gen4_image = 'gen4_image'
|
|
|
|
|
|
class ReferenceImage(BaseModel):
|
|
uri: Optional[str] = Field(
|
|
None, description='A HTTPS URL or data URI containing an encoded image'
|
|
)
|
|
|
|
|
|
class RunwayTextToImageAspectRatioEnum(str, Enum):
|
|
field_1920_1080 = '1920:1080'
|
|
field_1080_1920 = '1080:1920'
|
|
field_1024_1024 = '1024:1024'
|
|
field_1360_768 = '1360:768'
|
|
field_1080_1080 = '1080:1080'
|
|
field_1168_880 = '1168:880'
|
|
field_1440_1080 = '1440:1080'
|
|
field_1080_1440 = '1080:1440'
|
|
field_1808_768 = '1808:768'
|
|
field_2112_912 = '2112:912'
|
|
|
|
|
|
class RunwayTextToImageRequest(BaseModel):
|
|
model: Model4 = Field(..., description='Model to use for generation')
|
|
promptText: str = Field(
|
|
..., description='Text prompt for the image generation', max_length=1000
|
|
)
|
|
ratio: RunwayTextToImageAspectRatioEnum
|
|
referenceImages: Optional[List[ReferenceImage]] = Field(
|
|
None, description='Array of reference images to guide the generation'
|
|
)
|
|
|
|
|
|
class RunwayTextToImageResponse(BaseModel):
|
|
id: Optional[str] = Field(None, description='Task ID')
|