44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
import errno
|
|
import os
|
|
|
|
# from loguru import logger
|
|
|
|
from src.core.ydl import VideoDownloader
|
|
from src.exceptions.download_exceptions import FileAlreadyExistException
|
|
|
|
|
|
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"],
|
|
# "logger": logger,
|
|
"merge_output_format": self.params["merge_output_format"],
|
|
'outtmpl': self.params["outtmpl"],
|
|
"quiet": True
|
|
}
|
|
downloader = VideoDownloader(link=self.params["link"], ydl_opts=ydl_opts)
|
|
downloader.get_info()
|
|
path_to_video = f"{downloader.info['extractor_key']}/{downloader.info['id']}_{downloader.info['width']}p.{downloader.info['ext']}"
|
|
if os.path.exists(os.path.join(os.getcwd() + "/downloads/" + path_to_video)):
|
|
raise FileAlreadyExistException(message=path_to_video)
|
|
downloader.ydl_opts["quiet"] = False
|
|
downloader.download()
|
|
return path_to_video
|
|
|
|
def make_sure_path_exists(self,):
|
|
try:
|
|
os.makedirs(self.BASE_DIR)
|
|
except OSError as exception:
|
|
if exception.errno != errno.EEXIST:
|
|
raise
|
|
|
|
'''
|
|
TODO: скорее всего добавить процедуру для конвертации итогого файла через ffmpeg, используя
|
|
'''
|