61 lines
2.6 KiB
Python
61 lines
2.6 KiB
Python
"""Pydantic models for Facebook Reel functionality."""
|
|
|
|
from typing import Optional, List, Dict, Any
|
|
from pydantic import BaseModel, Field
|
|
from enum import Enum
|
|
|
|
|
|
class ReelType(str, Enum):
|
|
"""Reel type options."""
|
|
PRODUCT_DEMO = "Product demonstration"
|
|
TUTORIAL = "Tutorial/How-to"
|
|
ENTERTAINMENT = "Entertainment"
|
|
EDUCATIONAL = "Educational"
|
|
TREND_BASED = "Trend-based"
|
|
BEHIND_SCENES = "Behind the scenes"
|
|
USER_GENERATED = "User-generated content"
|
|
CUSTOM = "Custom"
|
|
|
|
|
|
class ReelLength(str, Enum):
|
|
"""Reel length options."""
|
|
SHORT = "15-30 seconds"
|
|
MEDIUM = "30-60 seconds"
|
|
LONG = "60-90 seconds"
|
|
|
|
|
|
class ReelStyle(str, Enum):
|
|
"""Reel style options."""
|
|
FAST_PACED = "Fast-paced"
|
|
RELAXED = "Relaxed"
|
|
DRAMATIC = "Dramatic"
|
|
MINIMALIST = "Minimalist"
|
|
VIBRANT = "Vibrant"
|
|
CUSTOM = "Custom"
|
|
|
|
|
|
class FacebookReelRequest(BaseModel):
|
|
"""Request model for Facebook reel generation."""
|
|
business_type: str = Field(..., description="Type of business")
|
|
target_audience: str = Field(..., description="Target audience description")
|
|
reel_type: ReelType = Field(..., description="Type of reel to create")
|
|
custom_reel_type: Optional[str] = Field(None, description="Custom reel type if 'Custom' is selected")
|
|
reel_length: ReelLength = Field(..., description="Desired length of the reel")
|
|
reel_style: ReelStyle = Field(..., description="Style of the reel")
|
|
custom_style: Optional[str] = Field(None, description="Custom style if 'Custom' is selected")
|
|
topic: str = Field(..., description="Main topic or focus of the reel")
|
|
include: Optional[str] = Field(None, description="Elements to include in the reel")
|
|
avoid: Optional[str] = Field(None, description="Elements to avoid in the reel")
|
|
music_preference: Optional[str] = Field(None, description="Music style preference")
|
|
|
|
|
|
class FacebookReelResponse(BaseModel):
|
|
"""Response model for Facebook reel generation."""
|
|
success: bool = Field(..., description="Whether the generation was successful")
|
|
script: Optional[str] = Field(None, description="Generated reel script")
|
|
scene_breakdown: Optional[List[str]] = Field(None, description="Scene-by-scene breakdown")
|
|
music_suggestions: Optional[List[str]] = Field(None, description="Music suggestions")
|
|
hashtag_suggestions: Optional[List[str]] = Field(None, description="Hashtag suggestions")
|
|
engagement_tips: Optional[List[str]] = Field(None, description="Engagement optimization tips")
|
|
error: Optional[str] = Field(None, description="Error message if generation failed")
|
|
metadata: Optional[Dict[str, Any]] = Field(None, description="Additional metadata about the generation") |