76 lines
1.8 KiB
Python
76 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
海报生成相关接口定义
|
|
"""
|
|
|
|
from abc import ABC, abstractmethod
|
|
from typing import Dict, List, Any, Optional, Union
|
|
from dataclasses import dataclass
|
|
from pathlib import Path
|
|
|
|
|
|
@dataclass
|
|
class PosterRequest:
|
|
"""海报生成请求"""
|
|
content: str
|
|
template_name: str = "vibrant"
|
|
size: str = "1080x1080"
|
|
style_params: Optional[Dict[str, Any]] = None
|
|
|
|
|
|
@dataclass
|
|
class PosterResult:
|
|
"""海报生成结果"""
|
|
image_path: str
|
|
thumbnail_path: Optional[str] = None
|
|
metadata: Dict[str, Any] = None
|
|
success: bool = True
|
|
error_message: Optional[str] = None
|
|
|
|
|
|
class IPosterGenerator(ABC):
|
|
"""海报生成器接口"""
|
|
|
|
@abstractmethod
|
|
async def generate_poster(self, request: PosterRequest) -> PosterResult:
|
|
"""生成海报"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def get_available_templates(self) -> List[str]:
|
|
"""获取可用模板列表"""
|
|
pass
|
|
|
|
|
|
class ITextGenerator(ABC):
|
|
"""海报文案生成器接口"""
|
|
|
|
@abstractmethod
|
|
async def generate_poster_text(self, content: str, style: str = "default") -> str:
|
|
"""为海报生成文案"""
|
|
pass
|
|
|
|
|
|
class IPosterService(ABC):
|
|
"""海报服务接口 - 应用服务层"""
|
|
|
|
@abstractmethod
|
|
async def create_poster_with_content(
|
|
self,
|
|
content: str,
|
|
template_name: str = "vibrant",
|
|
generate_text: bool = True
|
|
) -> PosterResult:
|
|
"""根据内容创建海报(可选生成专用文案)"""
|
|
pass
|
|
|
|
@abstractmethod
|
|
async def batch_generate_posters(
|
|
self,
|
|
contents: List[str],
|
|
template_name: str = "vibrant"
|
|
) -> List[PosterResult]:
|
|
"""批量生成海报"""
|
|
pass |