Exemple #1
0
    def __init__(self,
                 name,
                 url_patterns,
                 opener_cls,
                 user_conf,
                 starts,
                 unit_cls=None,
                 login_hook=None,
                 error_handler=None,
                 finish_callback=None,
                 **kw):
        self.name = name
        if not JOB_NAME_RE.match(name):
            raise ConfigurationError(
                'Job name can only contain alphabet, number and space.')
        self.uniq_name = self._get_uniq_name(self.name)

        self.url_patterns = url_patterns
        self.opener_cls = opener_cls

        self.user_conf = user_conf
        self.starts = starts
        self.login_hook = login_hook
        self.error_handler = error_handler
        self.finish_callback = finish_callback

        self.settings = Settings(user_conf=user_conf, **kw)
        self.unit_cls = unit_cls or \
            (Bundle if self.settings.job.mode == 'bundle' else Url)
Exemple #2
0
    def __init__(self,
                 name,
                 url_patterns,
                 opener_cls,
                 starts,
                 is_bundle=False,
                 unit_cls=str,
                 instances=1,
                 debug=False,
                 user_conf=None,
                 login_hook=None):
        self.name = name
        self.real_name = self.name.replace(' ', '_')

        if not JOB_NAME_RE.match(name):
            raise ConfigurationError(
                'Job name can only contain alphabet, number and space.')
        self.url_patterns = url_patterns
        self.opener_cls = opener_cls
        self.starts = starts

        self.is_bundle = is_bundle
        self.unit_cls = unit_cls
        self.instances = instances
        self.debug = debug
        self.user_conf = user_conf
        self.login_hook = login_hook

        self.context = Context(user_conf=user_conf)
Exemple #3
0
 def _login(self, opener):
     if self.job.login_hook is not None:
         if 'login' not in self.ctx.job or \
             not isinstance(self.ctx.job.login, list):
             raise ConfigurationError(
                 'If login_hook set, config files must contains `login`')
         kw = random.choice(self.ctx.job.login)
         login_success = self.job.login_hook(opener, **kw)
         if not login_success:
             self.logger.info('login fail')
         return login_success
Exemple #4
0
 def _login(self, opener):
     if self.job.login_hook is not None:
         if 'login' not in self.ctx.job or \
             not isinstance(self.ctx.job.login, list):
             raise ConfigurationError(
                 'If login_hook set, config files must contains `login`')
         kw = random.choice(self.ctx.job.login)
         login_result = self.job.login_hook(opener, **kw)
         if isinstance(login_result, tuple) and len(login_result) == 2:
             self.logger.error('login fail, reason: %s' % login_result[1])
             return login_result[0]
         elif not login_result:
             self.logger.error('login fail')
         return login_result
     return True