| import enum |
|
|
| from abc import ABC, abstractmethod |
| from typing import Optional, Union |
|
|
| from app.enmus.note_enums import DownloadQuality |
| from app.models.notes_model import AudioDownloadResult |
| from app.models.transcriber_model import TranscriptResult |
| from os import getenv |
| QUALITY_MAP = { |
| "fast": "32", |
| "medium": "64", |
| "slow": "128" |
| } |
|
|
|
|
| class Downloader(ABC): |
| def __init__(self): |
| |
| self.quality = QUALITY_MAP.get('fast') |
| self.cache_data=getenv('DATA_DIR') |
|
|
| @abstractmethod |
| def download(self, video_url: str, output_dir: str = None, |
| quality: DownloadQuality = "fast", need_video: Optional[bool] = False, |
| skip_download: bool = False) -> AudioDownloadResult: |
| ''' |
| |
| :param need_video: |
| :param video_url: 资源链接 |
| :param output_dir: 输出路径 默认根目录data |
| :param quality: 音频质量 fast | medium | slow |
| :return:返回一个 AudioDownloadResult 类 |
| ''' |
| pass |
|
|
| @staticmethod |
| def download_video(self, video_url: str, |
| output_dir: Union[str, None] = None) -> str: |
| pass |
|
|
| def download_subtitles(self, video_url: str, output_dir: str = None, |
| langs: list = None) -> Optional[TranscriptResult]: |
| ''' |
| 尝试获取平台字幕(人工字幕或自动生成字幕) |
| |
| :param video_url: 视频链接 |
| :param output_dir: 输出路径 |
| :param langs: 优先语言列表,如 ['zh-Hans', 'zh', 'en'] |
| :return: TranscriptResult 或 None(无字幕时) |
| ''' |
| return None |
|
|