import wordsegment import re import tldextract from wordsegment import load, segment from flask import Flask, json load() api = Flask(__name__) NOTVALIDDOMAIN={"error":{"code":400,"message":"Bad Request. Not valid domain."}} def is_domain(value: str): pattern = re.compile( r'^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|' r'([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|' r'([a-zA-Z0-9][-_.a-zA-Z0-9]{0,61}[a-zA-Z0-9]))\.' r'([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})$' ) """ Return whether or not given value is a valid domain. If the value is valid domain name this function returns ``True`` :param value: domain string to validate """ return pattern.match(value) def get_domain(value: str): if(is_domain(value)): ext = tldextract.extract(value) return ext.domain @api.route('/words/', methods=['GET']) def get_words(name: str): if(is_domain(name)): data = {} data['words'] = segment(get_domain(name)) return json.dumps(data) else: return json.dumps(NOTVALIDDOMAIN) @api.route('/whois/', methods=['GET']) def get_whois(name: str): if(is_domain(name)): import whois who_var = whois.whois(name) return json.dumps(who_var) else: return json.dumps(NOTVALIDDOMAIN) @api.route('/tld/', methods=['GET']) def get_tld(name: str): if(is_domain(name)): ext = tldextract.extract(name) data = {} data['tld'] = ext.suffix return json.dumps(data) else: return json.dumps(NOTVALIDDOMAIN) @api.route('/domain/', methods=['GET']) def get_onlydomain(name: str): if(is_domain(name)): data = {} data['domain'] = get_domain(name) return json.dumps(data) else: return json.dumps(NOTVALIDDOMAIN) @api.route('/size/', methods=['GET']) def get_size(name: str): if(is_domain(name)): data = {} data['size'] = len(get_domain(name)) return json.dumps(data) else: return json.dumps(NOTVALIDDOMAIN) if __name__ == '__main__': api.run()