feat: Implement video generation functionality and integrate with Kling API.
This commit is contained in:
@@ -9,6 +9,7 @@ from api.dependency import get_generation_service, get_project_id, get_dao
|
||||
from repos.dao import DAO
|
||||
|
||||
from api.models.GenerationRequest import GenerationResponse, GenerationRequest, GenerationsResponse, PromptResponse, PromptRequest
|
||||
from api.models.VideoGenerationRequest import VideoGenerationRequest
|
||||
from api.service.generation_service import GenerationService
|
||||
from models.Generation import Generation
|
||||
|
||||
@@ -113,6 +114,25 @@ async def get_running_generations(request: Request,
|
||||
return await generation_service.get_running_generations(user_id=user_id_filter, project_id=project_id)
|
||||
|
||||
|
||||
@router.post("/video/_run", response_model=GenerationResponse)
|
||||
async def post_video_generation(
|
||||
video_request: VideoGenerationRequest,
|
||||
request: Request,
|
||||
generation_service: GenerationService = Depends(get_generation_service),
|
||||
current_user: dict = Depends(get_current_user),
|
||||
project_id: Optional[str] = Depends(get_project_id),
|
||||
dao: DAO = Depends(get_dao),
|
||||
) -> GenerationResponse:
|
||||
"""Start image-to-video generation using Kling AI."""
|
||||
logger.info(f"post_video_generation called. AssetId: {video_request.image_asset_id}, Duration: {video_request.duration}s, Mode: {video_request.mode}")
|
||||
|
||||
if project_id:
|
||||
project = await dao.projects.get_project(project_id)
|
||||
if not project or str(current_user["_id"]) not in project.members:
|
||||
raise HTTPException(status_code=403, detail="Project access denied")
|
||||
video_request.project_id = project_id
|
||||
|
||||
return await generation_service.create_video_generation_task(video_request, user_id=str(current_user.get("_id")))
|
||||
|
||||
|
||||
@router.post("/import", response_model=GenerationResponse)
|
||||
|
||||
Reference in New Issue
Block a user