flask_irinas / app.py
DmitrMakeev's picture
Update app.py
6a60b17 verified
raw
history blame
27.6 kB
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-запросов
@app.route('/incoming', methods=['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()
@app.route('/grups', methods=['GET'])
def grup():
return render_template('grups.html')
@app.route('/send_request_gr', methods=['POST'])
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)
@app.route('/save_db', methods=['GET'])
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
@app.route('/contacts')
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)))