import sqlite3 from flask import Flask, request import requests import os import pytz import datetime base_url = os.getenv('base_url') # URL сервера token = os.getenv('token') # Ваш токен app = Flask(__name__, template_folder="./") db_path = 'users.db' # Создаем соединение с базой данных SQLite3 def create_connection(): conn = sqlite3.connect(db_path) return conn # Инициализируем базу данных def init_db(): conn = create_connection() c = conn.cursor() # Создаем таблицу для пользователей, если она не существует c.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 TEXT )''') conn.commit() conn.close() # Функция для вставки данных пользователя в базу данных def insert_form_data(name, email, phone, pr5, pr4, pr3, pr2, pr1): conn = create_connection() c = conn.cursor() moscow_timezone = pytz.timezone('Europe/Moscow') current_datetime = datetime.datetime.now(moscow_timezone) timestamp = current_datetime.strftime('%Y-%m-%d %H:%M:%S') c.execute('''INSERT INTO users (name, email, phone, pr5, pr4, pr3, pr2, pr1, timestamp) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)''', (name, email, phone, pr5, pr4, pr3, pr2, pr1, timestamp)) conn.commit() conn.close() # Функция для отправки запроса на сервер 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() # Инициализируем базу данных при запуске приложения init_db() # Обработчик POST запроса на /incoming @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 insert_form_data(name, email, phone, pr5, pr4, pr3, pr2, pr1) # Отправляем запросы в листы подряд 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]} if __name__ == '__main__': app.run(debug=True) 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 if __name__ == '__main__': app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))