Spaces:
Paused
Paused
| import abc | |
| import logging | |
| import sys | |
| if sys.version_info >= (3, 4): | |
| ABC = abc.ABC # noqa | |
| else: | |
| ABC = abc.ABCMeta('ABC', (), {}) | |
| # ------------------------------------------------------------------------------- # | |
| captchaSolvers = {} | |
| # ------------------------------------------------------------------------------- # | |
| class Captcha(ABC): | |
| def __init__(self, name): | |
| captchaSolvers[name] = self | |
| # ------------------------------------------------------------------------------- # | |
| def dynamicImport(cls, name): | |
| if name not in captchaSolvers: | |
| try: | |
| __import__(f'{cls.__module__}.{name}') | |
| if not isinstance(captchaSolvers.get(name), Captcha): | |
| raise ImportError('The anti captcha provider was not initialized.') | |
| except ImportError as e: | |
| sys.tracebacklimit = 0 | |
| logging.error(f'Unable to load {name} anti captcha provider -> {e}') | |
| raise | |
| return captchaSolvers[name] | |
| # ------------------------------------------------------------------------------- # | |
| def getCaptchaAnswer(self, captchaType, url, siteKey, captchaParams): | |
| pass | |
| # ------------------------------------------------------------------------------- # | |
| def solveCaptcha(self, captchaType, url, siteKey, captchaParams): | |
| return self.getCaptchaAnswer(captchaType, url, siteKey, captchaParams) | |