def relevant_resolvers(domain=None, include_universal=None, include_popups=None, include_external=False, include_disabled=False, order_matters=False): if include_external: load_external_plugins() if isinstance(domain, six.string_types): domain = domain.lower() if include_universal is None: include_universal = common.get_setting('allow_universal') == "true" if include_popups is None: include_popups = common.get_setting('allow_popups') == "true" if include_popups is False: common.logger.log_debug('Resolvers that require popups have been disabled') classes = UrlResolver.__class__.__subclasses__(UrlResolver) + UrlResolver.__class__.__subclasses__(GenericResolver) relevant = [] for resolver in classes: if include_disabled or resolver._is_enabled(): if (include_universal or not resolver.isUniversal()) and (include_popups or not resolver.isPopup()): if domain is None or ((domain and any(domain in res_domain.lower() for res_domain in resolver.domains)) or '*' in resolver.domains): relevant.append(resolver) if order_matters: relevant.sort(key=lambda x: x._get_priority()) common.logger.log_debug('Relevant Resolvers: %s' % relevant) return relevant
def __get_resolvers(self, include_disabled, include_universal, include_popups): if include_universal is None: include_universal = common.get_setting('allow_universal') == "true" if include_popups is None: include_popups = common.get_setting('allow_popups') == "true" klasses = urlresolver.relevant_resolvers( self._domain, include_universal=include_universal, include_popups=include_popups, include_external=True, include_disabled=include_disabled, order_matters=True) resolvers = [] for klass in klasses: if klass in resolver_cache: common.logger.log_debug('adding resolver from cache: %s' % klass) resolvers.append(resolver_cache[klass]) else: common.logger.log_debug('adding resolver to cache: %s' % klass) resolver_cache[klass] = klass() resolvers.append(resolver_cache[klass]) return resolvers
def pick_source(sources, auto_pick=None): from xbmctools import addDir print "sources", sources for source in sources: addDir(source[0], source[1], 0, '', '', 1, link=True) return sources if auto_pick is None: auto_pick = common.get_setting('auto_pick') == 'true' if len(sources) == 1: return sources[0][1] elif len(sources) > 1: if auto_pick: return sources[0][1] else: result = xbmcgui.Dialog().select(common.i18n('choose_the_link'), [ str(source[0]) if source[0] else 'Unknown' for source in sources ]) if result == -1: raise ResolverError(common.i18n('no_link_selected')) else: return sources[result][1] else: raise ResolverError(common.i18n('no_video_link'))
def do_recaptcha(captcha_url): common.log_utils.log_debug('Google ReCaptcha: %s' % (captcha_url)) if captcha_url.startswith('//'): captcha_url = 'http:' + captcha_url personal_nid = common.get_setting('personal_nid') if personal_nid: headers = {'Cookie': 'NID=' + personal_nid} else: headers = {} html = net.http_GET(captcha_url, headers=headers).content part = re.search("challenge \: \\'(.+?)\\'", html) captcha_img = 'http://www.google.com/recaptcha/api/image?c=' + part.group(1) solution = get_response(captcha_img) return {'recaptcha_challenge_field': part.group(1), 'recaptcha_response_field': solution}
def do_recaptcha(captcha_url): common.logger.log_debug('Google ReCaptcha: %s' % captcha_url) if captcha_url.startswith('//'): captcha_url = 'http:' + captcha_url personal_nid = common.get_setting('personal_nid') if personal_nid: headers = {'Cookie': 'NID=' + personal_nid} else: headers = {} html = net.http_GET(captcha_url, headers=headers).content part = re.search("challenge \: \\'(.+?)\\'", html) captcha_img = 'http://www.google.com/recaptcha/api/image?c=' + part.group(1) solution = get_response(captcha_img) return {'recaptcha_challenge_field': part.group(1), 'recaptcha_response_field': solution}
def __get_resolvers(self, include_disabled): include_universal = common.get_setting('allow_universal') == "true" klasses = urlresolver.relevant_resolvers(self._domain, include_universal=include_universal, include_external=True, include_disabled=include_disabled, order_matters=True) resolvers = [] for klass in klasses: if klass in resolver_cache: common.log_utils.log_debug('adding resolver from cache: %s' % (klass)) resolvers.append(resolver_cache[klass]) else: common.log_utils.log_debug('adding resolver to cache: %s' % (klass)) resolver_cache[klass] = klass() resolvers.append(resolver_cache[klass]) return resolvers
def pick_source(sources, auto_pick=None): if auto_pick is None: auto_pick = common.get_setting('auto_pick') == 'true' if len(sources) == 1: return sources[0][1] elif len(sources) > 1: if auto_pick: return sources[0][1] else: result = xbmcgui.Dialog().select(common.i18n('choose_the_link'), [str(source[0]) if source[0] else 'Unknown' for source in sources]) if result == -1: raise ResolverError(common.i18n('no_link_selected')) else: return sources[result][1] else: raise ResolverError(common.i18n('no_video_link'))
def pick_source(sources, auto_pick=None): if auto_pick is None: auto_pick = common.get_setting('auto_pick') == 'true' if len(sources) == 1: return sources[0][1] elif len(sources) > 1: if auto_pick: return sources[0][1] else: result = xbmcgui.Dialog().select('Choose the link', [source[0] if source[0] else 'Uknown' for source in sources]) if result == -1: raise ResolverError('No link selected') else: return sources[result][1] else: raise ResolverError('No Video Link Found')
def get_setting(cls, key): return common.get_setting('%s_%s' % (cls.__name__, key))
def _get_priority(cls): try: return int(common.get_setting('RedditResolver_priority')) - 1 except: return 99