2020-03-12 08:24:38 +00:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
#
|
|
|
|
import struct
|
|
|
|
import random
|
2021-03-01 10:40:07 +00:00
|
|
|
import socket
|
|
|
|
import string
|
|
|
|
import secrets
|
|
|
|
|
|
|
|
|
|
|
|
string_punctuation = '!#$%&()*+,-.:;<=>?@[]^_{}~'
|
2020-03-12 08:24:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
def random_datetime(date_start, date_end):
|
|
|
|
random_delta = (date_end - date_start) * random.random()
|
|
|
|
return date_start + random_delta
|
|
|
|
|
|
|
|
|
|
|
|
def random_ip():
|
|
|
|
return socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
|
|
|
|
|
|
|
|
|
2021-03-01 10:40:07 +00:00
|
|
|
def random_string(length, lower=True, upper=True, digit=True, special_char=False):
|
|
|
|
chars = string.ascii_letters
|
|
|
|
if digit:
|
|
|
|
chars += string.digits
|
|
|
|
|
|
|
|
while True:
|
|
|
|
password = list(random.choice(chars) for i in range(length))
|
|
|
|
if upper and not any(c.upper() for c in password):
|
|
|
|
continue
|
|
|
|
if lower and not any(c.lower() for c in password):
|
|
|
|
continue
|
|
|
|
if digit and not any(c.isdigit() for c in password):
|
|
|
|
continue
|
|
|
|
break
|
|
|
|
|
|
|
|
if special_char:
|
|
|
|
spc = random.choice(string_punctuation)
|
|
|
|
i = random.choice(range(len(password)))
|
|
|
|
password[i] = spc
|
|
|
|
|
|
|
|
password = ''.join(password)
|
|
|
|
return password
|
|
|
|
|
2020-03-12 08:24:38 +00:00
|
|
|
|
|
|
|
# def strTimeProp(start, end, prop, fmt):
|
|
|
|
# time_start = time.mktime(time.strptime(start, fmt))
|
|
|
|
# time_end = time.mktime(time.strptime(end, fmt))
|
|
|
|
# ptime = time_start + prop * (time_end - time_start)
|
|
|
|
# return int(ptime)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# def randomTimestamp(start, end, fmt='%Y-%m-%d %H:%M:%S'):
|
|
|
|
# return strTimeProp(start, end, random.random(), fmt)
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# def randomDate(start, end, frmt='%Y-%m-%d %H:%M:%S'):
|
|
|
|
# return time.strftime(frmt, time.localtime(strTimeProp(start, end, random.random(), frmt)))
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# def randomTimestampList(start, end, n, frmt='%Y-%m-%d %H:%M:%S'):
|
|
|
|
# return [randomTimestamp(start, end, frmt) for _ in range(n)]
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# def randomDateList(start, end, n, frmt='%Y-%m-%d %H:%M:%S'):
|
|
|
|
# return [randomDate(start, end, frmt) for _ in range(n)]
|
|
|
|
|