added parsers for new social networks, rework master service

This commit is contained in:
nikili0n
2023-09-15 01:29:43 +03:00
committed by Dantenerosas
parent 26740ef9ed
commit 5f9b092832
9 changed files with 1205 additions and 27 deletions

View File

@@ -1,6 +1,5 @@
import asyncio
import concurrent.futures as pool
import os.path
import subprocess
from functools import partial
@@ -11,8 +10,10 @@ from src.core.async_queue import AsyncQueue
from src.core.rabbitmq import get_messages
from src.core.redis_client import RedisClient
from src.core.result import Result, ResultTypeEnum
from src.core.ydl import VideoDownloader
from src.exceptions.download_exceptions import SiteNotImplementedException
from src.parsers.MyMail.my_mail_parser import MyMailParser
from src.parsers.Yappy.yappy_parser import YappyParser
from src.parsers.base_parser import BaseParser
class MasterService:
@@ -53,21 +54,9 @@ class MasterService:
@staticmethod
def video_download(video_params: dict):
ydl_opts = {
"format": video_params["format"],
"merge_output_format": video_params["merge_output_format"],
'outtmpl': video_params["outtmpl"],
"quiet": True
}
downloader = VideoDownloader(link=video_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)
downloader: BaseParser | YappyParser | MyMailParser = MasterService.get_parser(video_params)
try:
downloader.ydl_opts["quiet"] = False
result = downloader.download()
result = downloader.video_download()
return result
except SiteNotImplementedException as ex:
raise HTTPException(
@@ -75,6 +64,15 @@ class MasterService:
detail=ex.message
)
@staticmethod
def get_parser(params: dict):
parser_mapping = {
"MyMailRu": MyMailParser(params),
"base": BaseParser(params),
"Yappy": YappyParser(params),
}
return parser_mapping[params["parser"]]
@staticmethod
def video_processing_executor(video_params: dict):
try: