feat: Implement video generation functionality and integrate with Kling API.

This commit is contained in:
xds
2026-02-12 10:27:07 +03:00
parent d1f67c773f
commit 32ff77e04b
13 changed files with 405 additions and 5 deletions

View File

@@ -7,6 +7,7 @@ from pydantic import BaseModel, computed_field, Field, model_validator
class AssetContentType(str, Enum):
IMAGE = 'image'
VIDEO = 'video'
PROMPT = 'prompt'
class AssetType(str, Enum):

View File

@@ -16,6 +16,7 @@ class GenerationStatus(str, Enum):
class Generation(BaseModel):
id: Optional[str] = None
status: GenerationStatus = GenerationStatus.RUNNING
gen_type: GenType = GenType.IMAGE
failed_reason: Optional[str] = None
linked_character_id: Optional[str] = None
telegram_id: Optional[int] = None
@@ -37,6 +38,10 @@ class Generation(BaseModel):
album_id: Optional[str] = None
created_by: Optional[str] = None # Stores User ID (Telegram ID or Web User ObjectId)
project_id: Optional[str] = None
# Video-specific fields
kling_task_id: Optional[str] = None
video_duration: Optional[int] = None # 5 or 10 seconds
video_mode: Optional[str] = None # "std" or "pro"
created_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))

View File

@@ -34,10 +34,12 @@ class Quality(str, Enum):
class GenType(str, Enum):
TEXT = 'Text'
IMAGE = 'Image'
VIDEO = 'Video'
@property
def value_type(self) -> str:
return {
GenType.TEXT: 'Text',
GenType.IMAGE: 'Image',
GenType.VIDEO: 'Video',
}[self]