Находим адрес по имени папки и принимаем задание

This commit is contained in:
Noretsa 2020-06-17 20:00:46 +03:00
parent 62b927a5c0
commit 08ce699702
3 changed files with 68 additions and 44 deletions

View File

@ -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

View File

@ -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())