mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-05-06 20:42:52 +08:00
- 新增 YouTubeSubtitleFetcher 模块,通过 youtube-transcript-api 获取字幕 - 重构笔记生成流程:缓存 → 平台字幕 → 按需下载 → 转写 fallback - 有字幕时仅提取视频元信息,不下载音视频文件 - 添加 youtube-transcript-api 依赖 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
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):
|
||
#TODO 需要修改为可配置
|
||
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
|