from __future__ import annotations from typing import Any, Literal from pydantic import BaseModel, ConfigDict, Field class URLInput(BaseModel): model_config = ConfigDict(extra="allow") url: str filename: str | None = None class Base64Input(BaseModel): model_config = ConfigDict(extra="allow") base64: str filename: str | None = None mime_type: str | None = None class WhisperOptions(BaseModel): model: Literal["tiny", "base", "small", "medium", "large-v3"] | None = None task: Literal["transcribe", "translate"] = "transcribe" language: str | None = None output_format: Literal["txt", "srt", "vtt", "json", "tsv"] = "json" beam_size: int = Field(default=5, ge=1, le=20) vad_filter: bool = True class YTDLPOptions(BaseModel): mode: Literal["video", "audio", "thumbnail", "metadata"] = "video" format: str | None = None audio_format: Literal["mp3", "m4a", "wav", "opus", "flac"] = "mp3" JsonDict = dict[str, Any]