File size: 12,567 Bytes
0584640
ff0ece9
16c32c6
2cdbb4e
2939f55
653aa3d
dcc6c76
05035e7
6e5ec17
653aa3d
1cc6662
653aa3d
 
 
 
ec75b5d
653aa3d
 
 
ec75b5d
653aa3d
ec75b5d
6a60b17
25d618c
 
 
 
 
 
 
 
 
 
 
 
e444f08
 
 
25d618c
 
 
 
6a60b17
 
 
25d618c
6a60b17
e444f08
 
 
 
 
6a60b17
 
 
e444f08
 
 
6a60b17
25d618c
6a60b17
 
 
4117d0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6a60b17
4117d0b
 
 
 
 
 
6a60b17
6918051
 
1cc6662
 
 
 
653aa3d
e551110
 
 
 
 
d397d51
4117d0b
 
 
653aa3d
 
 
 
 
dcb20cd
653aa3d
 
 
2cdbb4e
653aa3d
 
 
 
 
 
4117d0b
6918051
 
e9dbef6
6918051
 
 
a1726dc
38ba4b7
 
e1af0d4
38ba4b7
6918051
 
e9dbef6
 
 
 
6918051
2dee44b
e9dbef6
6918051
 
 
1d8ea83
 
 
 
6918051
 
1d8ea83
 
 
6918051
 
 
1d8ea83
 
 
a95f82d
6918051
 
 
1d8ea83
 
 
 
 
 
a95f82d
6918051
a95f82d
 
 
 
15c982e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5b218e6
 
 
423fbb0
 
 
 
 
5b218e6
 
15c982e
423fbb0
 
 
 
5b218e6
 
423fbb0
15c982e
 
 
 
 
 
 
a95f82d
4595fee
f18f04b
2923221
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
from flask import Flask, request, render_template_string, render_template
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 == 2:  # Среда
        if current_hour < 19:
            # Утром в среду
            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]}
        else:
            # Вечером в среду
            response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268)
            # Возвращаем список ответов
            return {'responses': [response_3]}

    elif current_day == 3:  # Четверг
        if current_hour < 19:
            response_3 = send_request(560833, email, phone, name, 393198, 393197, pr5, pr4, pr3, pr2, pr1, 393272, 393271, 393270, 393269, 393268)
            # Возвращаем список ответов
            return {'responses': [response_3]}

        else:
            # Вечером в четверг
            # Комментарий: Отправка в лист 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]} 

    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, 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}")
        return "Internal Server Error", 500







        

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=int(os.environ.get('PORT', 7860)))