diff --git a/src/scripts/convert/email_generator/__main__.py b/src/scripts/convert/email_generator/__main__.py index 89b9495..ba513e6 100644 --- a/src/scripts/convert/email_generator/__main__.py +++ b/src/scripts/convert/email_generator/__main__.py @@ -6,4 +6,4 @@ from src.scripts.convert.email_generator.module import Runner result = run_module(Runner, args=argv, arg_name="username", arg_default="john.doe") -pprint(result) +pprint(result, compact=True) diff --git a/src/scripts/convert/email_generator/module.py b/src/scripts/convert/email_generator/module.py index 4d6a1b8..a79be75 100644 --- a/src/scripts/convert/email_generator/module.py +++ b/src/scripts/convert/email_generator/module.py @@ -1,30 +1,33 @@ #!/usr/bin/env python3 -from json import loads from time import time +from pathlib import Path from src.core.base.base import BaseRunner from src.core.utils.response import ScriptResponse +class DefaultValues: + dividers = "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~" + binders = ("-", "_", ".", "") + + class EmailGenerator: - def __init__(self, domen_base: str or None = None, serv_syms: list or None = None): + def __init__(self, domain_base: str = "settings/domain_base.txt"): """ - :param domen_base: base of email domens written in translit as text file + :param domain_base: base of email domains written in translit as text file """ - with open("settings/settings.json", "r", encoding="utf-8") as jfile: - data = loads(jfile.read()) - self.__domen_base = domen_base if domen_base is not None else data["domenBase"] - self.__serv_syms = serv_syms if serv_syms is not None else data["serviceSymbols"] + with open(Path(__file__).parent.joinpath(domain_base), "r") as domains: + self.__domains = domains.read().splitlines() - def divide(self, username: str) -> list: + @staticmethod + def divide(username: str) -> list: """ :param username: username to generate email :return: login's lexemes """ - for sym in self.__serv_syms: - if sym != '' and username.find(sym) != -1: - username = username.replace(sym, '_') - return username.split('_') + for sym in DefaultValues.dividers: + username = username.replace(sym, " ") + return username.split() def generate(self, username: str) -> iter: """ @@ -32,14 +35,13 @@ def generate(self, username: str) -> iter: :return: iterator of person's emails """ parts = self.divide(username.lower()) - login_base = [] + logins = [] for i in range(2): - login_base.extend([sym.join(parts) for sym in self.__serv_syms]) + logins.extend([sym.join(parts) for sym in DefaultValues.binders]) parts.reverse() - for login in login_base: - with open(self.__domen_base, "r") as domens: - for domen in domens: - yield f"{login}@{domen.strip()}" + for login in logins: + for domain in self.__domains: + yield f"{login}@{domain}" class Runner(BaseRunner): @@ -65,5 +67,5 @@ def run(self, *args, **kwargs) -> ScriptResponse.success or ScriptResponse.error else: return ScriptResponse.success( result=result, - message=f"Successfully finished! Got {len(result)} logins, script lasted {(time() - tm):.2f} seconds" + message=f"Successfully finished! Got {len(result)} logins, script lasted {(time() - tm):.2f} seconds", ) diff --git a/src/scripts/convert/email_generator/settings/domenbase.txt b/src/scripts/convert/email_generator/settings/domain_base.txt similarity index 100% rename from src/scripts/convert/email_generator/settings/domenbase.txt rename to src/scripts/convert/email_generator/settings/domain_base.txt diff --git a/src/scripts/convert/email_generator/settings/settings.json b/src/scripts/convert/email_generator/settings/settings.json deleted file mode 100644 index 0e459dd..0000000 --- a/src/scripts/convert/email_generator/settings/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "domenBase":"settings/domenbase.txt", - "serviceSymbols": - [ - "-","_",".","" - ] -}