def __init__(self, options, engine_overrides=None): super(Provider, self).__init__(options, engine_overrides) self.options = options self.client = namecheap.Api(ApiUser=options.get('auth_username', ''), ApiKey=options.get('auth_token', ''), UserName=options.get('auth_username', ''), ClientIP=options.get('auth_client_ip', ''), sandbox=options.get('auth_sandbox', False), debug=False) self.domain = self.options['domain'] self.domain_id = None
def __init__(self, config): super(Provider, self).__init__(config) self.client = namecheap.Api( ApiUser=self._get_provider_option('auth_username') or '', ApiKey=self._get_provider_option('auth_token') or '', UserName=self._get_provider_option('auth_username') or '', ClientIP=self._get_provider_option('auth_client_ip') or '', sandbox=self._get_provider_option('auth_sandbox') or False, debug=False, ) self.domain = self.domain self.domain_id = None
class CheckDomain(DomainGenerator): checked = 0 api = namecheap.Api(configuration.USERNAME, configuration.API_KEY, configuration.USERNAME, configuration.IP_ADDRESS, sandbox=configuration.SANDBOX) url = "https://api.namecheap.com/xml.response?ApiUser={}&ApiKey={}&" \ "UserName={}&ClientIP={}&Command=namecheap.users.getPricing&ProductType=DOMAIN&" \ "ActionName=REGISTER".format(configuration.USERNAME, configuration.API_KEY, configuration.USERNAME, configuration.IP_ADDRESS) logger.info('Starting to get prices') # domain_prices = urlopen(url).read() # is better if it is cached soup = BeautifulSoup(open('prices.xml', 'r'), 'lxml') logger.info('Prices stored.') domains_to_check = 50 function_requests_file = 0 def check_domains_bulk(self, domains_list_found): """ Check domains generated by 'domains' and if there is any error for over-checking it will decrease the domains_to_check variable """ CheckDomain.domains_to_check = 50 if len(domains_list_found) <= CheckDomain.domains_to_check: CheckDomain.domains_to_check = len(domains_list_found) while True: try: logger.info( 'Requesting domain(s) availability. Currently data in VAR domains_to_check: {}' .format(CheckDomain.domains_to_check)) if CheckDomain.domains_to_check < 0: return False return CheckDomain.api.domains_check( domains_list_found[:CheckDomain.domains_to_check]) except namecheap.ApiError: logger.info('Error handled - namecheap.ApiError') CheckDomain.domains_to_check -= 10 def add_domain_price(self, domains_dict_available): """ Gets dictionary of domain names looked in check_domains_bulk and check if they are available so further steps are proceeded, like getting price, if it is premium and so on.""" domain_product_prices = CheckDomain.soup.find( 'product', {"name": configuration.tld[1:]}) if domain_product_prices is not None: domain_price = domain_product_prices.findChildren()[0].attrs['price'] + \ domain_product_prices.findChildren()[0].attrs['currency'] for domain, domain_info in domains_dict_available.items(): if domains_dict_available[domain]['Premium'] is False: domains_dict_available[domain]['Price'] = domain_price elif domains_dict_available[domain]['Premium'] is True: logger.info('{} is premium'.format(domain)) else: logger.info('{} is not available'.format(domain)) return domains_dict_available else: for domain, domain_info in domains_dict_available.items(): if domains_dict_available[domain]['Premium'] is False: domains_dict_available[domain]['Price'] = '' elif domains_dict_available[domain]['Premium'] is True: logger.info('{} is premium'.format(domain)) else: logger.info('{} is not available'.format(domain)) return domains_dict_available def remove_not_available(self, domains_dict_available): for domain, domain_info in list(domains_dict_available.items()): CheckDomain.checked += 1 if domain_info['Available'] is False: del domains_dict_available[domain] return domains_dict_available def transfer_into_file(self, domains_dict_available): CheckDomain.function_requests_file += 1 if CheckDomain.function_requests_file == 1: file = open(configuration.filename, 'w') logger.info('Writing headers into file') file.write('Domain,Premium,Price,Appraisal Value\n') else: file = open(configuration.filename, 'a') logger.info('Writing content into file') for domain, domain_info in domains_dict_available.items(): file.write( domain + ',' + str(domain_info.get('Premium')) + ',' + domain_info.get('Price', 'Not found') + ',' + domain_info.get('Appraisal', 'Not found').replace(',', '') + '\n') logger.info('{} domain info has been written!'.format(domain)) file.close() logger.info('Finished writing')
def __init__(self, username, api_key, ip_address): self.nc = namecheap.Api(username, api_key, username, ip_address, sandbox=False)