""" Download models """ from dataclasses import dataclass from typing import Optional, Dict, Any from enum import Enum from .base import BaseRequest, BaseResponse, OperationStatus class PodcastPlatform(str, Enum): """Supported podcast platforms""" APPLE_PODCAST = "apple_podcast" XIAOYUZHOU = "xiaoyuzhou" @dataclass class DownloadRequest(BaseRequest): """Request model for podcast download""" url: str platform: PodcastPlatform output_directory: Optional[str] = None auto_transcribe: bool = False enable_speaker_diarization: bool = False @dataclass class DownloadResponse(BaseResponse): """Response model for podcast download""" original_url: str = "" audio_file_path: Optional[str] = None file_size_mb: Optional[float] = None duration_seconds: Optional[float] = None @classmethod def success( cls, original_url: str, audio_file_path: str, file_size_mb: Optional[float] = None, duration_seconds: Optional[float] = None, message: str = "下载成功" ) -> "DownloadResponse": """Create successful response""" return cls( status=OperationStatus.SUCCESS, message=message, original_url=original_url, audio_file_path=audio_file_path, file_size_mb=file_size_mb, duration_seconds=duration_seconds ) @classmethod def failed( cls, original_url: str, error_message: str, error_code: str = "DOWNLOAD_ERROR", error_details: Optional[Dict[str, Any]] = None ) -> "DownloadResponse": """Create failed response""" return cls( status=OperationStatus.FAILED, message=error_message, error_code=error_code, error_details=error_details, original_url=original_url )