| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- # Copyright (C) 2025 AIDC-AI
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- # http://www.apache.org/licenses/LICENSE-2.0
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- """
- Frame/Template rendering API schemas
- """
- from typing import Optional, Dict, Any, List
- from pydantic import BaseModel, Field
- class FrameRenderRequest(BaseModel):
- """Frame rendering request"""
- template: str = Field(
- ...,
- description="Template key (e.g., '1080x1920/default.html'). Can also be just filename (e.g., 'default.html') to use default size."
- )
- title: Optional[str] = Field(None, description="Frame title (optional)")
- text: str = Field(..., description="Frame text content")
- image: Optional[str] = Field(None, description="Image path or URL (optional)")
-
- class Config:
- json_schema_extra = {
- "example": {
- "template": "1080x1920/default.html",
- "title": "Sample Title",
- "text": "This is a sample text for the frame.",
- "image": "resources/example.png"
- }
- }
- class FrameRenderResponse(BaseModel):
- """Frame rendering response"""
- success: bool = True
- message: str = "Success"
- frame_path: str = Field(..., description="Path to generated frame image")
- width: int = Field(..., description="Frame width in pixels")
- height: int = Field(..., description="Frame height in pixels")
- class TemplateParamConfig(BaseModel):
- """Single template parameter configuration"""
- type: str = Field(..., description="Parameter type: 'text', 'number', 'color', 'bool'")
- default: Any = Field(..., description="Default value")
- label: str = Field(..., description="Display label for the parameter")
- class TemplateParamsResponse(BaseModel):
- """Template parameters response"""
- success: bool = True
- message: str = "Success"
- template: str = Field(..., description="Template path")
- media_width: int = Field(..., description="Media width from template meta tags")
- media_height: int = Field(..., description="Media height from template meta tags")
- params: Dict[str, TemplateParamConfig] = Field(
- default_factory=dict,
- description="Custom parameters defined in template. Key is parameter name, value is config."
- )
|