Skip to content

Commit

Permalink
fixed bug with command prompt; got rid of json; moved service symbols…
Browse files Browse the repository at this point in the history
… to a separate class; optimized code; made cosmetic changes
  • Loading branch information
Enhisir committed Jul 25, 2020
1 parent ea7eaa3 commit 88c8025
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 27 deletions.
2 changes: 1 addition & 1 deletion src/scripts/convert/email_generator/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
40 changes: 21 additions & 19 deletions src/scripts/convert/email_generator/module.py
Original file line number Diff line number Diff line change
@@ -1,45 +1,47 @@
#!/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:
"""
:param username: username to generate email
: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):
Expand All @@ -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",
)
7 changes: 0 additions & 7 deletions src/scripts/convert/email_generator/settings/settings.json

This file was deleted.

0 comments on commit 88c8025

Please sign in to comment.