flask_irinal / app.py
DmitrMakeev's picture
Update app.py
2af726c verified
raw
history blame
15 kB
from flask import Flask, request, jsonify
import requests
import os
import pytz
import datetime
import sqlite3
token2 = 'SkrIONpr3ByeSIuEaBhr1bB8u4aBhSJfH8uEpB2rk7rI_ETrn'
base_url = os.getenv('base_url') # URL сервера
token = os.getenv('token') # Ваш токен
api_key = os.getenv('api_key') # Ваш API ключ
app = Flask(__name__, template_folder="./")
def init_db(db_name):
conn = sqlite3.connect(db_name)
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('data1.db')
init_db('data2.db')
init_db('data3.db')
def save_to_database(db_name, 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(db_name)
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()
def send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5):
"""Функция для отправки дополнительного запроса на другой адрес."""
data = {
"email": email,
"pageId": '67231:3tzmyp4a',
"phone": phone,
"time": '2024-07-09T19:00:00.000',
"confirm": 1,
"utm_source": pr1,
"utm_medium": pr2,
"utm_campaign": pr3,
"utm_content": pr4,
"utm_term": pr5
}
headers = {
'X-Token': token2 # Добавляем заголовок X-Token,
}
response = requests.post('https://online.bizon365.ru/api/v1/webinars/subpages/addSubscriber', json=data, headers=headers)
return response.json()
def send_additional_request2(email, name, phone, pr1, pr2, pr3, pr4, pr5):
"""Функция для отправки дополнительного запроса на другой адрес."""
data = {
"email": email,
"pageId": '67231:3tyhbkom',
"phone": phone,
"utm_source": pr1,
"utm_medium": pr2,
"utm_campaign": pr3,
"utm_content": pr4,
"utm_term": pr5
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post('https://skyauto.me/cllbck/168704660/29237231/T1N1eVNQdy9LazBHNER2K3lldnA2Zz0?api=1&sid=535939344', json=data, headers=headers)
return response.json()
def send_additional_request3(email, name, phone, pr1, pr2, pr3, pr4, pr5):
"""Функция для отправки дополнительного запроса на другой адрес."""
data = {
"email": email,
"pageId": '67231:3tyhbkom',
"phone": phone,
"utm_source": pr1,
"utm_medium": pr2,
"utm_campaign": pr3,
"utm_content": pr4,
"utm_term": pr5
}
headers = {
'Content-Type': 'application/json'
}
response = requests.post('https://skyauto.me/cllbck/168704660/29237231/T1N1eVNQdy9LazBHNER2K3lldnA2Zz0?api=1&sid=535939344', 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
# Устанавливаем временную зону Москвы
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]: # Понедельник, Пятница, Суббота, Воскресенье
# Отправляем запросы в листы подряд
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
elif current_day == 1: # Понедельник
if current_hour < 19:
# Утром во Понедельник
# Добавьте здесь код, который должен выполняться утром
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
else:
# Вечером во Понедельник
# Добавьте здесь код, который должен выполняться вечером
# Утром во Понедельник
# Добавьте здесь код, который должен выполняться утром
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
elif current_day == 2: # Вторник
if current_hour < 19:
# Утром во Вторник
# Добавьте здесь код, который должен выполняться утром
# Утром во Понедельник
# Добавьте здесь код, который должен выполняться утром
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
else:
# Вечером во Вторник
# Добавьте здесь код, который должен выполняться вечером
# Утром во Понедельник
# Добавьте здесь код, который должен выполняться утром
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
elif current_day == 3: # Среда
if current_hour < 19:
# Утром в среду
# Комментарий: Отправка в лист 1, лист 2, лист 3
# Добавьте здесь код, который должен выполняться утром
# Утром во Понедельник
# Добавьте здесь код, который должен выполняться утром
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
else:
# Вечером в среду
# Комментарий: Отправка в лист 1, лист 2, лист 3
# Добавьте здесь код, который должен выполняться вечером
# Утром во Понедельник
# Добавьте здесь код, который должен выполняться утром
db_name = 'data1.db'
response_1 = send_additional_request1(email, name, phone, pr1, pr2, pr3, pr4, pr5)
# Возвращаем список ответов
return jsonify({'responses': [response_1]})
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('data1.db')
cursor = conn.cursor()
cursor.execute('SELECT name, email, phone, pr1, pr2, pr3, pr4, pr5, date, time FROM contacts')
contacts = cursor.fetchall()
conn.close()
return render_template('contacts.html', contacts=contacts), 200
except sqlite3.Error as e:
print(f"SQLite error: {e}")
return "Database error. Please try again later.", 500
except Exception as e:
print(f"Error showing contacts: {e}")
if __name__ == '__main__':
app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))