mirror of
https://github.com/JefferyHcool/BiliNote.git
synced 2026-05-11 18:10:06 +08:00
39 lines
1.1 KiB
Python
39 lines
1.1 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 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) -> 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
|