feat: multiple words

This commit is contained in:
2026-06-15 14:22:40 +02:00
parent b387fec2b3
commit d5b9018ef2
4 changed files with 19 additions and 6 deletions
+1 -1
View File
@@ -19,7 +19,7 @@ def main() -> int:
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)
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 ""
)
+7 -3
View File
@@ -14,12 +14,13 @@ class FactoryError(Exception):
class Factory:
__slots__ = ["__found", "__tld_list", "__word_list", "logger", "logger"]
__slots__ = ["__found", "__tld_list", "__word_list", "logger", "__words"]
def __init__(self, tld_list: TLDList, word_list: WordList) -> None:
def __init__(self, tld_list: TLDList, word_list: WordList, words: int) -> None:
self.logger: logging.Logger = logging.getLogger(self.__class__.__name__)
self.__tld_list = tld_list
self.__word_list = word_list
self.__words = words
self.__found: set[str] = set()
def __iter__(self) -> typing.Self:
@@ -65,7 +66,7 @@ class Factory:
return domain
def __random_domain(self) -> str | None:
word = random.choice(self.__word_list.words) # noqa: S311
word = self.__random_word()
for tld in self.__tld_list_shuffled:
tld_escaped = tld.replace(".", "")
if word.endswith(tld_escaped) and len(word) > len(tld_escaped):
@@ -74,3 +75,6 @@ class Factory:
self.__found.add(domain)
return domain
return None
def __random_word(self) -> str:
return "-".join(random.sample(self.__word_list.words, self.__words))
+8
View File
@@ -15,6 +15,7 @@ class Parameters:
quiet: bool = False
cache: bool = True
count: int = 1
words: int = 1
dig: bool = True
lang: str = "english"
cache_file: str = str(pathlib.Path(tempfile.gettempdir()) / ".cool-domain-cache")
@@ -104,6 +105,13 @@ def parse_parameters(args: typing.Sequence[str]) -> Parameters:
help="word list lang (default: english)",
choices=LANGS.keys(),
)
__add_arg_int(
parser,
"--words",
env_var="WORD_COUNT",
default=default_values.words,
help_txt="number of words per domain",
)
__add_arg_bool(
parser,
"--dig",