flask_irinas / app.py
DmitrMakeev's picture
Update app.py
5b218e6 verified
raw
history blame
26.9 kB
from flask import Flask, request, render_template_string
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
app = Flask(__name__, template_folder="./")
def init_db():
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS contacts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
email TEXT,
phone TEXT,
pr1 TEXT,
pr2 TEXT,
pr3 TEXT,
pr4 TEXT,
pr5 TEXT,
date TEXT,
time TEXT
)
''')
conn.commit()
conn.close()
init_db()
def save_to_database(name, email, phone, pr5, pr4, pr3, pr2, pr1):
try:
moscow_timezone = pytz.timezone('Europe/Moscow')
current_datetime = datetime.datetime.now(moscow_timezone)
date = current_datetime.strftime('%Y-%m-%d')
time = current_datetime.strftime('%H:%M:%S')
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('''
INSERT INTO contacts (name, email, phone, pr1, pr2, pr3, pr4, pr5, date, time)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
''', (name, email, phone, pr1, pr2, pr3, pr4, pr5, date, time))
conn.commit()
conn.close()
except Exception as e:
print(f"Error saving to database: {e}")
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()
@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')
# Сохраняем данные в базу данных SQLite3
save_to_database(name, email, phone, pr5, pr4, pr3, pr2, 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)
# Возвращаем список ответов
return {'responses': [response_1,response_2,response_3]}
elif current_day == 1: # Вторник
if current_hour < 19:
# Утром во вторник
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:
# Вечером во вторник
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 == 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('/conta')
def get_contacts_json():
try:
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('SELECT name, email, phone, pr1, pr2, pr3, pr4, pr5, date, time FROM contacts')
contacts = cursor.fetchall()
conn.close()
# Prepare JSON response
contacts_json = []
for contact in contacts:
contact_dict = {
'name': contact[0],
'email': contact[1],
'phone': contact[2],
'pr1': contact[3],
'pr2': contact[4],
'pr3': contact[5],
'pr4': contact[6],
'pr5': contact[7],
'date': contact[8],
'time': contact[9]
}
contacts_json.append(contact_dict)
return jsonify(contacts_json), 200 # Return JSON response with contacts data
except Exception as e:
print(f"Error getting contacts JSON: {e}")
return jsonify({'error': 'Database error. Please try again later.'}), 500
@app.route('/contacts')
def show_contacts():
try:
# Fetch contacts data from database (as shown previously)
contacts = ... # Fetch contacts from database
return render_template('contacts.html', contacts=contacts), 200
except Exception as e:
print(f"Error showing contacts: {e}")
return "Database error. Please try again later.", 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))