-
-
Notifications
You must be signed in to change notification settings - Fork 34
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Small fixes and new system of fake persons
- Loading branch information
Denis Pitkov
committed
Feb 26, 2023
1 parent
405a07f
commit 5bb8b4d
Showing
24 changed files
with
215 additions
and
168 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -152,11 +152,11 @@ mail.poling() | |
|
||
```python | ||
# GmailNator | ||
from account_generator_helper import GmailNator, GmailNatorDomains | ||
from account_generator_helper import GmailNator | ||
|
||
|
||
mail = GmailNator() | ||
print('Mail :', mail.set_email('test-mail', GmailNatorDomains.GMAILNATOR_COM)) # Mail : test-mail@gmailnator.com | ||
print('Mail :', mail.set_email('[email protected]')) # Mail : jo.n.a.thanm.icha.eltmp@gmail.com | ||
|
||
|
||
for _letter in mail.get_inbox(): | ||
|
@@ -207,12 +207,13 @@ for message in phone.get_last_messages(): | |
### Generate data | ||
```python | ||
# Generate fake person | ||
from account_generator_helper import Person | ||
from account_generator_helper import generate_person, generate_persons | ||
|
||
|
||
for _ in range(10): | ||
print(Person()) # <Person ...> | ||
print(generate_person()) # Person(gender='female', nam... | ||
print(generate_persons(10)) # [Person(gender='female', nam...] | ||
``` | ||
|
||
```python | ||
# Utilities | ||
from account_generator_helper import get_password | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,6 @@ | ||
from .temp_mail import * | ||
from .temp_phone import ReceiveSms | ||
from .fake_data import Person | ||
from .fake_data.personcounties import PersonCounties | ||
from .fake_data import generate_person, generate_persons | ||
from .fake_data.utilities import get_password | ||
from .proxies import Proxies, ProxyType | ||
from .countries import Counties | ||
|
@@ -10,4 +9,4 @@ | |
|
||
__author__ = 'Dionis1902' | ||
__email__ = '[email protected]' | ||
__version__ = '1.0.10' | ||
__version__ = '1.0.11' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,65 +1,142 @@ | ||
from dataclasses import dataclass | ||
from typing import List | ||
|
||
import requests | ||
from .exceptions import ProblemWithGetPersonData | ||
from .personcounties import PersonCounties | ||
from ..utilities import camel_to_snake | ||
from .const import Gender | ||
|
||
headers = { | ||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' | ||
} | ||
|
||
@dataclass | ||
class Name: | ||
title: str | ||
first: str | ||
last: str | ||
|
||
class Person: | ||
def __init__(self): | ||
self._name = None | ||
self._phone = None | ||
self._postcode = None | ||
self._street_address = None | ||
self._city = None | ||
self._country = None | ||
|
||
self.update_data() | ||
@dataclass | ||
class Street: | ||
number: int | ||
name: str | ||
|
||
|
||
@property | ||
def name(self): | ||
return self._name | ||
@dataclass | ||
class Coordinates: | ||
latitude: str | ||
longitude: str | ||
|
||
@property | ||
def phone(self): | ||
return self._phone | ||
|
||
@property | ||
def postcode(self): | ||
return self._postcode | ||
@dataclass | ||
class Timezone: | ||
offset: str | ||
description: str | ||
|
||
@property | ||
def street_address(self): | ||
return self._street_address | ||
|
||
@property | ||
def country(self): | ||
return self._country | ||
@dataclass | ||
class Location: | ||
street: Street | ||
city: str | ||
state: str | ||
country: str | ||
postcode: int | ||
coordinates: Coordinates | ||
timezone: Timezone | ||
|
||
def update_data(self, country: PersonCounties = PersonCounties.USA): | ||
""" | ||
Generate new person data. | ||
|
||
:param country: From which country the street. | ||
""" | ||
r = requests.post('https://www.textreverse.com/frontend/fakeAddressGenerator', data=f'lang={country.value}', headers=headers) | ||
if r.status_code != 200: | ||
raise ProblemWithGetPersonData() | ||
@dataclass | ||
class Login: | ||
uuid: str | ||
username: str | ||
password: str | ||
salt: str | ||
md5: str | ||
sha1: str | ||
sha256: str | ||
|
||
[setattr(self, '_' + camel_to_snake(key), r.json()[0][key]) for key in r.json()[0] if | ||
self.__getattr('_' + camel_to_snake(key))] | ||
|
||
def __getattr(self, key): | ||
try: | ||
getattr(self, key) | ||
return True | ||
except AttributeError: | ||
return False | ||
@dataclass | ||
class Dob: | ||
date: str | ||
age: int | ||
|
||
def __repr__(self): | ||
return '<Person {}>'.format(' '.join(['{}={}'.format(key[1:], value) for key, value in zip(vars(self).keys(), vars(self).values())])) | ||
|
||
@dataclass | ||
class Picture: | ||
large: str | ||
medium: str | ||
thumbnail: str | ||
|
||
|
||
@dataclass | ||
class Person: | ||
gender: str | ||
name: Name | ||
location: Location | ||
email: str | ||
login: Login | ||
dob: Dob | ||
phone: str | ||
picture: Picture | ||
nat: str | ||
|
||
|
||
def __get_person(user_data: dict): | ||
return Person( | ||
gender=user_data["gender"], | ||
name=Name(title=user_data["name"]["title"], first=user_data["name"]["first"], last=user_data["name"]["last"]), | ||
location=Location( | ||
street=Street(number=user_data["location"]["street"]["number"], | ||
name=user_data["location"]["street"]["name"]), | ||
city=user_data["location"]["city"], | ||
state=user_data["location"]["state"], | ||
country=user_data["location"]["country"], | ||
postcode=user_data["location"]["postcode"], | ||
coordinates=Coordinates(latitude=user_data["location"]["coordinates"]["latitude"], | ||
longitude=user_data["location"]["coordinates"]["longitude"]), | ||
timezone=Timezone(offset=user_data["location"]["timezone"]["offset"], | ||
description=user_data["location"]["timezone"]["description"]) | ||
), | ||
email=user_data["email"], | ||
login=Login( | ||
uuid=user_data["login"]["uuid"], | ||
username=user_data["login"]["username"], | ||
password=user_data["login"]["password"], | ||
salt=user_data["login"]["salt"], | ||
md5=user_data["login"]["md5"], | ||
sha1=user_data["login"]["sha1"], | ||
sha256=user_data["login"]["sha256"] | ||
), | ||
dob=Dob(date=user_data["dob"]["date"], age=user_data["dob"]["age"]), | ||
phone=user_data["phone"], | ||
picture=Picture(large=user_data["picture"]["large"], medium=user_data["picture"]["medium"], | ||
thumbnail=user_data["picture"]["thumbnail"]), | ||
nat=user_data["nat"]) | ||
|
||
|
||
def generate_person(gender: Gender = Gender.BOTH) -> Person: | ||
""" | ||
Generate person. | ||
:param gender: Gender of random person | ||
:return: Random person | ||
""" | ||
return generate_persons(1, gender)[0] | ||
|
||
|
||
def generate_persons(count: int, gender: Gender = Gender.BOTH) -> List[Person]: | ||
""" | ||
Batch generate persons. | ||
:param gender: Gender of random person | ||
:param count: Count of persons to generate | ||
:return: Random persons | ||
""" | ||
if not isinstance(count, int) or count < 1: | ||
count = 1 | ||
|
||
r = requests.get('https://randomuser.me/api', params={'gender': gender.value, 'results': count}) | ||
if r.status_code != 200: | ||
raise ProblemWithGetPersonData() | ||
|
||
return [__get_person(data) for data in r.json()['results']] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import enum | ||
|
||
|
||
class Gender(enum.Enum): | ||
MEN = 'male' | ||
BOTH = '' | ||
WOMEN = 'female' |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.