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 save_to_database(name, email, phone, pr5, pr4, pr3, pr2, pr1): conn = sqlite3.connect('users.db') cur = conn.cursor() # Создаем таблицу, если она не существует cur.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT, phone TEXT, pr5 TEXT, pr4 TEXT, pr3 TEXT, pr2 TEXT, pr1 TEXT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP)''') # Вставляем данные пользователя в таблицу cur.execute('''INSERT INTO users (name, email, phone, pr5, pr4, pr3, pr2, pr1) VALUES (?, ?, ?, ?, ?, ?, ?, ?)''', (name, email, phone, pr5, pr4, pr3, pr2, pr1)) conn.commit() 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 = '''
Name | Phone | pr1 | pr2 | pr3 | pr4 | pr5 | |
---|---|---|---|---|---|---|---|
{{ contact[0] }} | {{ contact[1] }} | {{ contact[2] }} | {{ contact[3] }} | {{ contact[4] }} | {{ contact[5] }} | {{ contact[6] }} | {{ contact[7] }} |