47 lines
1.4 KiB
Python
Raw Normal View History

import errno
import os
from fastapi import HTTPException
from src.core.result import ResultTypeEnum, Result
from src.core.ydl import VideoDownloader
from src.exceptions.download_exceptions import SiteNotImplementedException
class BaseParser:
BASE_ENCODING = 'utf-8'
BASE_DIR = None
def __init__(self, params: dict):
self.params = params
def video_download(self):
ydl_opts = {
"format": self.params["format"],
"merge_output_format": self.params["merge_output_format"],
'outtmpl': self.params["outtmpl"],
"quiet": True
}
downloader = VideoDownloader(link=self.params["link"], ydl_opts=ydl_opts)
video_info = downloader.get_info()
if os.path.exists(
os.path.join(os.getcwd() + f"Youtube/{video_info['id']}_{video_info['width']}.{video_info['ext']}")
):
return Result(result_type=ResultTypeEnum.EXIST)
try:
downloader.ydl_opts["quiet"] = False
result = downloader.download()
return result
except SiteNotImplementedException as ex:
raise HTTPException(
status_code=400,
detail=ex.message
)
def make_sure_path_exists(self,):
try:
os.makedirs(self.BASE_DIR)
except OSError as exception:
if exception.errno != errno.EEXIST:
raise