import logging import sys from cool_domain import PKG_NAME, PKG_VERSION from cool_domain.cache import Cache from cool_domain.constants import LANGS from cool_domain.factory import Factory from cool_domain.logs import setup_logs from cool_domain.params import parse_parameters from cool_domain.tld_list import TLDList from cool_domain.word_list import WordList def main() -> int: params = parse_parameters(sys.argv[1:]) setup_logs(params) logging.getLogger().info("%s %s", PKG_NAME, PKG_VERSION) langs = LANGS langs["custom"] = WordList("custom", params.custom_words) with ( Cache(filepath=params.cache_file, no_load=params.cache) as cache, TLDList(cache=cache, remote_uri=params.tld_list_uri) as tld_list, langs[params.lang] as word_list, ): factory = Factory(tld_list=tld_list, word_list=word_list, words=params.words) logging.getLogger().info( "Searching %s domain%s", params.count, "s" if params.count > 1 else "" ) for _ in range(params.count): if params.dig: logging.getLogger().info(factory.random_available_domain()) else: logging.getLogger().info(factory.random_domain()) return 0 if __name__ == "__main__": main()