exracted parser mappings
This commit is contained in:
parent
0b314cfa6c
commit
87cf25ed61
@ -15,7 +15,8 @@ from src.parsers.MyMail.my_mail_parser import MyMailParser
|
|||||||
from src.parsers.Okru.ok_parser import OkParser
|
from src.parsers.Okru.ok_parser import OkParser
|
||||||
from src.parsers.Yappy.yappy_parser import YappyParser
|
from src.parsers.Yappy.yappy_parser import YappyParser
|
||||||
from src.parsers.base_parser import BaseParser
|
from src.parsers.base_parser import BaseParser
|
||||||
|
from loguru import logger
|
||||||
|
from src.parsers.parser_mapping import get_parser
|
||||||
# TODO: добавить логгер с временными метками в yt-dlp
|
# TODO: добавить логгер с временными метками в yt-dlp
|
||||||
|
|
||||||
|
|
||||||
@ -77,21 +78,23 @@ class MasterService:
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_parser(params: dict):
|
def get_parser(params: dict):
|
||||||
try:
|
try:
|
||||||
domain = urlparse(params["link"]).netloc
|
url_parse_result = urlparse(params["link"])
|
||||||
# TODO: похоже нужно переделать на регулярки, т.к. добавлять каждую вариацию домена моветон, вероятно я сделаю
|
uri = f"{url_parse_result.netloc}/{url_parse_result.path}"
|
||||||
parser_mapping = {
|
logger.info(uri)
|
||||||
"my.mail.ru": MyMailParser(params),
|
# # TODO: похоже нужно переделать на регулярки, т.к. добавлять каждую вариацию домена моветон, вероятно я сделаюне-
|
||||||
"www.youtube.com": BaseParser(params),
|
# parser_mapping = {
|
||||||
"youtube.com": BaseParser(params),
|
# "my.mail.ru": MyMailParser(params),
|
||||||
"youtu.be": BaseParser(params),
|
# "www.youtube.com": BaseParser(params),
|
||||||
"vk.com": BaseParser(params),
|
# "youtube.com": BaseParser(params),
|
||||||
"ok.ru": BaseParser(params) if "topic" not in params["link"] else OkParser(params),
|
# "youtu.be": BaseParser(params),
|
||||||
"likee.video": BaseParser(params),
|
# "vk.com": BaseParser(params),
|
||||||
"dzen.ru": BaseParser(params),
|
# "ok.ru": BaseParser(params) if "topic" not in params["link"] else OkParser(params),
|
||||||
"yappy.media": YappyParser(params),
|
# "likee.video": BaseParser(params),
|
||||||
"yandex.ru": BaseParser(params),
|
# "dzen.ru": BaseParser(params),
|
||||||
}
|
# "yappy.media": YappyParser(params),
|
||||||
return parser_mapping[domain]
|
# "yandex.ru": BaseParser(params),
|
||||||
|
# }
|
||||||
|
return get_parser(uri)(params)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise SiteNotImplementedException
|
raise SiteNotImplementedException
|
||||||
|
|
||||||
|
29
src/parsers/parser_mapping.py
Normal file
29
src/parsers/parser_mapping.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from collections import OrderedDict
|
||||||
|
import re
|
||||||
|
|
||||||
|
from src.parsers.MyMail.my_mail_parser import MyMailParser
|
||||||
|
from src.parsers.Okru.ok_parser import OkParser
|
||||||
|
from src.parsers.Yappy.yappy_parser import YappyParser
|
||||||
|
from src.parsers.base_parser import BaseParser
|
||||||
|
|
||||||
|
def compile_regex(regex):
|
||||||
|
return re.compile(regex, re.IGNORECASE | re.DOTALL | re.MULTILINE)
|
||||||
|
|
||||||
|
parser_mapping = OrderedDict(
|
||||||
|
{
|
||||||
|
compile_regex(r"^my.mail.ru/") : MyMailParser,
|
||||||
|
compile_regex(r"^(?:www.)?(?:youtube.com|youtu.be)/"): BaseParser,
|
||||||
|
compile_regex(r"^vk.com/"): BaseParser,
|
||||||
|
compile_regex(r"^ok.ru/okvideo/topic"): OkParser,
|
||||||
|
compile_regex(r"^ok.ru/video"): BaseParser,
|
||||||
|
compile_regex(r"^...?likee.video/"): BaseParser,
|
||||||
|
compile_regex(r"^dzen.ru/"): BaseParser,
|
||||||
|
compile_regex(r"^yappy.media/"): BaseParser,
|
||||||
|
compile_regex(r"^yandex.ru/"): BaseParser,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_parser(uri):
|
||||||
|
for regex in parser_mapping:
|
||||||
|
if regex.match(uri):
|
||||||
|
return parser_mapping[regex]
|
Loading…
Reference in New Issue
Block a user