From 08ce6997021125c8848ab2b3d5abab1032cefdd4 Mon Sep 17 00:00:00 2001 From: Noretsa Date: Wed, 17 Jun 2020 20:00:46 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9D=D0=B0=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=20?= =?UTF-8?q?=D0=B0=D0=B4=D1=80=D0=B5=D1=81=20=D0=BF=D0=BE=20=D0=B8=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B8=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BD=D0=B8=D0=BC=D0=B0=D0=B5=D0=BC=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/__pycache__/users.cpython-37.pyc | Bin 1284 -> 1451 bytes classes/users.py | 16 ++-- knd_bot.py | 96 ++++++++++++++--------- 3 files changed, 68 insertions(+), 44 deletions(-) diff --git a/classes/__pycache__/users.cpython-37.pyc b/classes/__pycache__/users.cpython-37.pyc index 136f6d2a13031650c8a82832ce10880fd5feeea3..b667c42d6dbb95e4b97f5d8a38585bfd4807a32b 100644 GIT binary patch delta 426 zcmX9&y)Oho6rVRUx7MCJ-wASwrMoK>RHAcA4HD$S$t9z3&e!gWi|j?>=y1gp8e+HB z_zWRVbUJhGRuY}R!kaV2Z{GWTv(c9k+2B9)A8SYp5G?305LfWK1A{ha?mO> zbo}594IU{%Kz+mz+%5rg#3um@5m&euL!MVb&~@${m6!B3MV6;4;2F(ai_ZBVSjYsg z(psiMeeh{uh9qbeu@IB}L>L#e!q902ai4_%WPu1WLuPx)BH0;TAe&sY=-Q$+N7APJ zp$`WR;A#8jcENQ=ys{U86M>bcQEYXiuvUti!rqo6c8}4gF4be>&{l8i*;aM+fJ0r~ ztGcb;ad>Tp&)vemh|`B!yH^V+PbmqyiAQm`?aZj&FZyR#b`az?Y) zjaX@QQ+~5yXqSvnq&iS@dk_dDfrEwE1_RIsDaz$M&l)=H49Y8>N^tEp5KJ(+{NxkB F{s3^|iD3W$ delta 324 zcmW-bF-rqM5QXRM?OiSxb4VIvz(zz!3VTUsYy=wEUWx_e*<8&V|J7Ta3f zH8xg)rT@YHeu96%N^mX%^O%|U@tF6@I*L!K)rh#h4u5W*y^pv9NY{nMzIZ9?p4xJ;?;J2D0 z_eb}`@m;=gpQc(hE81sA2P}ConvG3jbd8rmupy0G$$iA`O}6XB*=(~AVn{^TLIZU) d+@I_Og{k-4(%-3R!L!G0iqsHc$xZz>#6Rl2N~Qn+ 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())