Files
mangaDownloader/manga-py-stable_1.x/manga_py/parser.py
2019-12-14 22:33:14 -05:00

46 lines
1.3 KiB
Python

from argparse import ArgumentParser
from loguru import logger
from .info import Info
from .providers import get_provider
class Parser:
params = None
provider = None
def __init__(self, args):
self.params = {}
self.args = args
self._add_params(args)
def _add_params(self, params: ArgumentParser = None):
if params is None:
params = self.args.parse_args()
else:
params = params.parse_args()
self.params = params.__dict__
def init_provider(
self,
progress: callable = None,
log: callable = None,
quest: callable = None,
info: Info = None,
quest_password: callable = None,
):
provider = get_provider(self.params.get('url', ''))
if isinstance(provider, bool):
raise AttributeError('Provider not found')
self.provider = provider(info) # provider __init__
self.provider.set_progress_callback(None if self.params['quiet'] else progress)
self.provider.set_log_callback(log)
self.provider.set_quest_callback(quest)
self.provider.set_quest_password_callback(quest_password)
@logger.catch
def start(self):
self.provider.process(self.params['url'], self.params)