diff --git a/classes/__pycache__/users.cpython-37.pyc b/classes/__pycache__/users.cpython-37.pyc index 136f6d2..b667c42 100644 Binary files a/classes/__pycache__/users.cpython-37.pyc and b/classes/__pycache__/users.cpython-37.pyc differ diff --git a/classes/users.py b/classes/users.py index 55ac2de..95d3e0f 100644 --- a/classes/users.py +++ b/classes/users.py @@ -1,13 +1,11 @@ import os + class Users: def __init__(self): self.data = [] self.path = os.path.join(os.path.abspath('.'), 'data') - - - def get_users(self): self.logins = [] main_dir = os.walk(self.path) @@ -19,8 +17,12 @@ class Users: if not os.path.exists(self.path): return "Папка data не существует. Создайте папку с необходимыми параметрами и запустите программу снова!" self.emails = self.get_users() - for user in self.emails: - with open(os.path.join(self.path, user, 'pass.txt'), 'r') as f: - log_pass = {'email': user, 'password': f.readline().split('\n')[0]} - self.data.append(log_pass) + if len(self.emails) > 0: + for user in self.emails: + with open(os.path.join(self.path, user, 'pass.txt'), 'r') as f: + log_pass = {'email': user, 'password': f.readline().split('\n')[0]} + self.data.append(log_pass) + else: + return "Нет ни одного пользователя! Заполните папку и запустите программу снова!" return self.data + diff --git a/knd_bot.py b/knd_bot.py index 8297c04..adcd159 100644 --- a/knd_bot.py +++ b/knd_bot.py @@ -2,7 +2,9 @@ import requests import random import string import json +import datetime import time +import os from classes.users import Users @@ -43,6 +45,28 @@ def send_image(session, headers, url): # print(img.status_code) +def get_addresses(email): + addresses = [] + month = datetime.datetime.now().month + main_path = os.path.join(os.path.abspath('.'), 'data') + path = os.walk(os.path.join(main_path, email, str(month))) + for d, dirs, files in path: + addresses.append(dirs) + if len(addresses[0]) > 0: + return addresses[0] + else: + return f"Ни одного адреса для пользователя {email} не найдено! Добавьте фото и запустите программу снова!" + + +def assign_task(session, headers, task): + task = session.put('https://knd.mofsreg.ru//api/v1/executions/'+str(task['id'])+'/assign', headers=headers) + if task.status_code == 200: + pass + else: + print(f"Не смогли получить задание {task['id']}!") + + + def get_task(session, headers): """Получаем все доступные задания. Если в переменную search добавить адрес, то будет искать этот адрес. Он попадет в @@ -53,42 +77,37 @@ def get_task(session, headers): 2 адрес 3 подъезд 4 id_задания""" - session_t = session - session_t.headers.update({'referer': 'https://knd.mosreg.ru/executions', 'x-platform': 'wb', 'accept': '*/*'}) - search = '' - data = {'search': search}# in search можно положить адрес и выдаст только его - tasks = session_t.post('https://knd.mosreg.ru//api/v1/executions', headers=headers, data=data) - json_tasks = tasks.json() - for n in json_tasks['executions_available']: - coord = n['coord'] - enterance = n['tasks'] - for execution in enterance: - task = { - 'id': execution['execution_id'], - 'address': execution['dimensions'][0].get('entity_value_name'), - 'enterance': execution['dimensions'][2].get('entity_value_name'), - 'coord': coord - } - print(task) - # choose = len(json_tasks['executions_available']) - # print(choose) - # get_t = session.put('https://knd.mosreg.ru//api/v1/executions/23244405/assign', headers=headers)# получаем задание из списка доступных для всех - # print(get_t.text) - # print("Всего назначено домов на сегодня: " + str(len(json_tasks['executions_assigned']))) - # if len(json_tasks['executions_assigned']) > 0: - # for n in json_tasks['executions_assigned']: - # coord = n['coord'] # Координаты каждого дома - # enterence = n['tasks'] # Подъезды в каждом доме - # for execution in enterence: - # task = { - # 'id': execution['execution_id'], - # 'address': execution['dimensions'][0].get('entity_value_name'), - # 'enterance': execution['dimensions'][2].get('entity_value_name'), - # 'coord': coord - # } - # send_execution(task, session, headers) - # break - # break + # Получаем адреса + addresses = get_addresses(headers['uid']) + # Если адреса получили + if isinstance(addresses, list): + session_t = session + session_t.headers.update({'referer': 'https://knd.mosreg.ru/executions', 'x-platform': 'wb', 'accept': '*/*'}) + for address in addresses: + search = address + data = {'search': search} + tasks = session_t.post('https://knd.mosreg.ru//api/v1/executions', headers=headers, data=data) + json_tasks = tasks.json() + # Если есть доступное задание с таким адресом + if len(json_tasks['executions_available']) > 0: + for n in json_tasks['executions_available']: + coord = n['coord'] + enterance = n['tasks'] + for execution in enterance: + task = { + 'id': execution['execution_id'], + 'address': execution['dimensions'][0].get('entity_value_name'), + 'enterance': execution['dimensions'][2].get('entity_value_name'), + 'coord': coord + } + # Принимаем задание + assign_task(session, headers, task) + # Если нет задания с таким адресом + else: + print(f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}") + # Если адреса не получили выводим ошибку + else: + print(addresses) def main(): @@ -108,7 +127,10 @@ def main(): 'Access-token': response.headers.get('Access-token'), 'uid': response.headers.get('uid'), } - print(headers) + if response.status_code == 200: + get_task(session, headers) + else: + print(f"Отказ в авторизации для пользователя {user['email']}!") time.sleep(1) else: print(users.get_passwords())