Spaces:
Sleeping
Sleeping
from flask import Flask, request, render_template, jsonify | |
import requests | |
import os | |
import pytz | |
import datetime | |
import sqlite3 | |
base_url = os.getenv('base_url') # URL сервера | |
token = os.getenv('token') # Ваш токен | |
api_key = os.getenv('api_key') # Ваш API ключ | |
datas = '0' | |
name = '0' | |
email = '0' | |
phone = '0' | |
list_id_1 = 560768 | |
list_id_2 = 560832 | |
list_id_3 = 560833 | |
# Инициализация Flask приложения | |
app = Flask(__name__, template_folder="./") | |
# Функция для отправки запроса на сервер | |
def send_request(list_id, email, phone, name, param_name, param_phone, pr5, pr4, pr3, pr2, pr1, pr5_id, pr4_id, pr3_id, pr2_id, pr1_id): | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{"parameter_id": pr5_id, "kind": "string", "list_id": list_id, "title": "pr5", "value": pr5}, | |
{"parameter_id": pr4_id, "kind": "string", "list_id": list_id, "title": "pr4", "value": pr4}, | |
{"parameter_id": pr3_id, "kind": "string", "list_id": list_id, "title": "pr3", "value": pr3}, | |
{"parameter_id": pr2_id, "kind": "string", "list_id": list_id, "title": "pr2", "value": pr2}, | |
{"parameter_id": pr1_id, "kind": "string", "list_id": list_id, "title": "pr1", "value": pr1}, | |
{"parameter_id": param_phone, "kind": "string", "list_id": list_id, "title": "phone", "value": phone}, | |
{"parameter_id": param_name, "kind": "string", "list_id": list_id, "title": "name", "value": name} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/{list_id}/recipients", json=data, headers=headers) | |
return response.json() | |
# Функция для сохранения данных в SQLite3 | |
def init_db(): | |
try: | |
conn = sqlite3.connect('data.db') | |
cursor = conn.cursor() | |
cursor.execute(''' | |
CREATE TABLE IF NOT EXISTS contacts ( | |
id INTEGER PRIMARY KEY AUTOINCREMENT, | |
name TEXT NOT NULL, | |
phone TEXT NOT NULL, | |
email TEXT NOT NULL, | |
pr1 TEXT, | |
pr2 TEXT, | |
pr3 TEXT, | |
pr4 TEXT, | |
pr5 TEXT | |
) | |
''') | |
conn.commit() | |
conn.close() | |
except Exception as e: | |
print(f"Error initializing database: {e}") | |
# Вызов функции для инициализации базы данных | |
init_db() | |
def save_to_database(name, phone, email, pr1, pr2, pr3, pr4, pr5): | |
try: | |
conn = sqlite3.connect('data.db') | |
cursor = conn.cursor() | |
cursor.execute(''' | |
INSERT INTO contacts (name, phone, email, pr1, pr2, pr3, pr4, pr5) | |
VALUES (?, ?, ?, ?, ?, ?, ?, ?) | |
''', (name, phone, email, pr1, pr2, pr3, pr4, pr5)) | |
conn.commit() | |
except Exception as e: | |
print(f"Error saving to database: {e}") | |
finally: | |
conn.close() | |
# Определение маршрута для обработки входящих POST-запросов | |
def handle_incoming_request(): | |
datas = request.json | |
name = datas.get('name') | |
email = datas.get('email') | |
phone = datas.get('phone') | |
pr5 = datas.get('pr5') | |
pr4 = datas.get('pr4') | |
pr3 = datas.get('pr3') | |
pr2 = datas.get('pr2') | |
pr1 = datas.get('pr1') | |
# Устанавливаем временную зону Москвы | |
moscow_timezone = pytz.timezone('Europe/Moscow') | |
# Получаем текущую дату и время в Московском времени | |
current_datetime = datetime.datetime.now(moscow_timezone) | |
# Получаем текущий день недели и час в Московском времени | |
current_day = current_datetime.weekday() # 0 - Понедельник, ..., 6 - Воскресенье | |
current_hour = current_datetime.hour | |
if current_day in [0, 4, 5, 6]: # Понедельник, Пятница, Суббота, Воскресенье | |
# Отправляем запросы в листы подряд | |
response_1 = send_request(560768, email, phone, name, 393120, 393119, pr5, pr4, pr3, pr2, pr1, 393248, 393247, 393246, 393245, 393244) | |
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263) | |
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268) | |
# Сохраняем данные в базу данных SQLite3 | |
save_to_database(name, email, phone, pr5, pr4, pr3, pr2, pr1) | |
# Возвращаем список ответов | |
return {'responses': [response_2, response_3]} | |
elif current_day == 1: # Вторник | |
if current_hour < 19: | |
# Утром во вторник | |
# Комментарий: Отправка в лист 1, лист 2, лист 3 | |
response_1 = send_request(560768, email, phone, name, 393120, 393119, pr5, pr4, pr3, pr2, pr1, 393248, 393247, 393246, 393245, 393244) | |
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263) | |
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268) | |
# Сохраняем данные в базу данных SQLite3 | |
save_to_database(name, email, phone, pr5, pr4, pr3, pr2, pr1) | |
# Возвращаем список ответов | |
return {'responses': [response_1, response_2, response_3]} | |
else: | |
# Вечером во вторник | |
# Комментарий: Отправка только лист 2, лист 3 | |
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263) | |
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268) | |
# Сохраняем данные в базу данных SQLite3 | |
save_to_database(name, email, phone, pr5, pr4, pr3, pr2, pr1) | |
# Возвращаем список ответов | |
return {'responses': [response_2, response_3]} | |
elif current_day == 1: # Вторник | |
if current_hour < 19: | |
# Утром во вторник | |
# Комментарий: Отправка в лист 1, лист 2, лист 3 | |
response_1 = send_request(560768, email, phone, name, 393120, 393119, pr5, pr4, pr3, pr2, pr1, 393248, 393247, 393246, 393245, 393244) | |
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263) | |
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268) | |
# Возвращаем список ответов | |
return {'responses': [response_1,response_2,response_3]} | |
else: | |
# Вечером во вторник | |
# Комментарий: Отправка только лист 2, лист 3 | |
response_2 = send_request(560832, email, phone, name, 393196, 393195, pr5, pr4, pr3, pr2, pr1, 393267, 393266, 393265, 393264, 393263) | |
response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268) | |
# Возвращаем список ответов | |
return {'responses': [response_2,response_3]} | |
elif current_day == 2: # Среда | |
if current_hour < 19: | |
# Утром в среду | |
# Комментарий: Отправка в лист 1, лист 2, лист 3 | |
show_params = False | |
list_id = 560774 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560774, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560774, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560774/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560775 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560775, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560775, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560775/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560776 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560776, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560776, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560776/recipients", json=data, headers=headers) | |
else: | |
# Вечером в среду | |
# Комментарий: Отправка в лист 1, лист 2, лист 3 | |
show_params = False | |
list_id = 560777 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560777, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560777, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560777/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560778 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560778, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560778, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560778/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560779 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560779, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560779, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560779/recipients", json=data, headers=headers) | |
elif current_day == 3: # Четверг | |
if current_hour < 19: | |
# Утром в четверг | |
# Комментарий: Отправка в лист 1, лист 2, лист 3 | |
show_params = False | |
list_id = 560780 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560780, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560780, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560780/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560781 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560781, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560781, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560781/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560782 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560782, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560782, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560782/recipients", json=data, headers=headers) | |
else: | |
# Вечером в четверг | |
# Комментарий: Отправка в лист 1, лист 2, лист 3 | |
show_params = False | |
list_id = 560783 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560783, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560783, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560783/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560784 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560784, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560784, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560784/recipients", json=data, headers=headers) | |
show_params = False | |
list_id = 560785 | |
name = request.args.get('name') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": 393120, | |
"kind": "string", | |
"list_id": 560785, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": 393119, | |
"kind": "string", | |
"list_id": 560785, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/560785/recipients", json=data, headers=headers) | |
return response.json() | |
def grup(): | |
return render_template('grups.html') | |
def send_request_gr(): | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
api_token = request.form.get('api_token') | |
group_id = request.form.get('group_id') | |
url = f"https://api.notisend.ru/v1/email/lists/{group_id}/parameters" | |
response = requests.get(url, headers=headers) | |
data = response.json() | |
return jsonify(data) | |
def save_db(): | |
show_params = False | |
list_id = request.args.get('list_id') | |
name = request.args.get('name') | |
name_id = request.args.get('name_id') | |
email = request.args.get('email') | |
phone = request.args.get('phone') | |
phone_id = request.args.get('phone_id') | |
pr1 = request.args.get('pr1') | |
pr1_id = request.args.get('pr1_id') | |
pr2 = request.args.get('pr2') | |
pr2_id = request.args.get('pr2_id') | |
pr3 = request.args.get('pr3') | |
pr3_id = request.args.get('pr3_id') | |
pr4 = request.args.get('pr4') | |
pr4_id = request.args.get('pr4_id') | |
pr5 = request.args.get('pr5') | |
pr5_id = request.args.get('pr5_id') | |
data = { | |
"email": email, | |
"unconfirmed": False, | |
"values": [ | |
{ | |
"parameter_id": pr5_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "pr5", | |
"value": pr5 | |
}, | |
{ | |
"parameter_id": pr4_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "pr4", | |
"value": pr4 | |
}, | |
{ | |
"parameter_id": pr3_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "pr3", | |
"value": pr3 | |
}, | |
{ | |
"parameter_id": pr2_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "pr2", | |
"value": pr2 | |
}, | |
{ | |
"parameter_id": pr1_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "pr1", | |
"value": pr1 | |
}, | |
{ | |
"parameter_id": phone_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "phone", | |
"value": phone | |
}, | |
{ | |
"parameter_id": name_id, | |
"kind": "string", | |
"list_id": list_id, | |
"title": "name", | |
"value": name | |
} | |
] | |
} | |
headers = { | |
'Authorization': f'Bearer {token}', | |
'Content-Type': 'application/json' | |
} | |
response = requests.post(f"{base_url}/email/lists/{list_id}/recipients", json=data, headers=headers) | |
if show_params: | |
system_vars = { | |
'base_url': base_url, | |
'token': token | |
} | |
return jsonify({'system_variables': system_vars, 'request_parameters': request.args}) | |
else: | |
return response.text | |
def show_contacts(): | |
try: | |
conn = sqlite3.connect('data.db') | |
cursor = conn.cursor() | |
cursor.execute('SELECT name, phone, email FROM contacts') | |
contacts = cursor.fetchall() | |
conn.close() | |
# HTML-шаблон для отображения таблицы | |
html = ''' | |
<!doctype html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> | |
<title>Contacts</title> | |
<style> | |
table { | |
width: 70%; | |
border-collapse: collapse; | |
} | |
th, td { | |
border: 1px solid black; | |
padding: 8px; | |
text-align: left; | |
} | |
th { | |
background-color: #f2f2f2; | |
} | |
</style> | |
</head> | |
<body> | |
<h1>Contacts</h1> | |
<table> | |
<tr> | |
<th>Name</th> | |
<th>Phone</th> | |
<th>Email</th> | |
<th>pr1</th> | |
<th>pr2</th> | |
<th>pr3</th> | |
<th>pr4</th> | |
<th>pr5</th> | |
</tr> | |
{% for contact in contacts %} | |
<tr> | |
<td>{{ contact[0] }}</td> | |
<td>{{ contact[1] }}</td> | |
<td>{{ contact[2] }}</td> | |
<td>{{ contact[3] }}</td> | |
<td>{{ contact[4] }}</td> | |
<td>{{ contact[5] }}</td> | |
<td>{{ contact[6] }}</td> | |
<td>{{ contact[7] }}</td> | |
</tr> | |
{% endfor %} | |
</table> | |
</body> | |
</html> | |
''' | |
return render_template_string(html, contacts=contacts) | |
except Exception as e: | |
print(f"Error showing contacts: {e}") | |
return "Internal Server Error", 500 | |
if __name__ == '__main__': | |
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860))) |