added parsers for new social networks, rework master service
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user