Mostly change programm

This commit is contained in:
Noretsa 2024-02-19 13:23:20 +03:00
parent a3055c947b
commit ba742f7d21
15 changed files with 709 additions and 111 deletions

View File

@ -1,6 +1,8 @@
import os
import datetime
import time
import json
import pprint
from natsort import natsorted
@ -35,6 +37,7 @@ def complete_task(session, headers, task, address):
# print(prepared_answers)
ans = {"question_chains": prepared_answers}
# print(ans)
# print(task['id'])
session_t = session
session_t.headers.update(
{

138
classes/kp.py Normal file
View File

@ -0,0 +1,138 @@
import os
import datetime
import time
import json
import pprint
from natsort import natsorted
def assign_task(session, headers, task):
# print('assign_task')
address = task['address']
url = 'https://knd.mosreg.ru//api/v1/executions/'+str(task['id'])+'/assign'
task_assign = session.put(url, headers=headers)
if task_assign.status_code == 200:
print(f'Получили задание по адресу: {address}')
complete_task(session, headers, task, address)
else:
print(f"Не смогли получить задание {address} {task['id']}!")
def complete_task(session, headers, task, address):
photos = get_photo(address, headers['uid'])
if len(photos) > 0:
# photos.sort()
photos = natsorted(photos)
else:
print(len(photos))
"""В папке лежит фото графика, которое отправляется из модуля des, поэтому убираем отсюда"""
# if len(photos) == 11 or len(photos) == 13:
# photos.pop()
id_task = task['id']
quest = get_questions(id_task, session, headers)
# print(quest)
# length_question = get_length_questions(quest)
prepared_answers = []
if True:
prepared_answers = prepare_answer(quest, photos, session, task, headers)
# print(prepared_answers)
ans = {"question_chains": prepared_answers}
# print(ans)
# print(task['id'])
session_t = session
session_t.headers.update(
{
'referer': 'https://knd.mosreg.ru/executions'+str(task['id'])+'/solve',
'x-platform': 'android',
'accept': '*/*'
}
)
complete = session_t.post('https://knd.mosreg.ru//api/v1/executions/'+str(task['id'])+'/answers', headers=headers, json=ans)
if complete.status_code == 200:
print(f'Задание по адресу {address} выполнено успешно!\n\n')
else:
print(f'Задание по адресу {address} не выполненно! Статус ошибки {complete.status_code}\n\n')
else:
print(f"\n\n\nНесоответствие количества вопросов и фотографий по адресу {address}!!! \
Необходимо проверить!!!\n\n\n")
# print(len(quest)) 9 and 13
def get_photo(address, email):
photos = []
# month = datetime.datetime.now().month
main_path = os.path.join(os.path.abspath('.'), 'data_kp', email)
if not os.path.exists(main_path):
return photos
else:
for images in os.listdir(main_path):
if images.endswith(".jpg") or images.endswith(".jpeg") or images.endswith(".JPG"):
photos.append(main_path + '/' + images)
return photos
def get_questions(id_task, session, headers):
url = 'https://knd.mosreg.ru//api/v1/executions/'+str(id_task)+'/questions'
questions = session.get(url, headers=headers)
json_quest = questions.json()
return json_quest['question_chains']
def prepare_answer(quest, photos, session, task, headers):
questions = []
question_components= []
question_chains = []
for main_chain in quest:
for second_chain in main_chain['questions']:
for third_chain in second_chain['question_components']:
question_type = third_chain['type']
if question_type == 'list':
data = {"id": third_chain['id'], "answer": 888, "start_time": int(time.time())}
time.sleep(2)
data.update({"end_time": int(time.time())})
question_components.append(data)
elif question_type == "geo":
data = {"id": third_chain['id'], "answer": {"location": task['coord']}, "start_time": int(time.time())}
time.sleep(2)
data.update({"end_time": int(time.time())})
question_components.append(data)
elif question_type == "gallery":
images = []
for image in photos:
img = send_image(session, headers, task['id'], image)
images.append(img['id'])
data = {"id": third_chain['id'], "answer": images,
"start_time": int(time.time())}
time.sleep(2)
data.update({"end_time": int(time.time())})
question_components.append(data)
if len(question_components) > 0:
main_data = {
"id": second_chain['id'],
"question_components": question_components
}
questions.append(main_data)
question_components = []
if len(questions) > 0:
q_dict = {
"id": main_chain['id'],
"questions": questions
}
question_chains.append(q_dict)
questions = []
return question_chains
def send_image(session, headers, url, photo):
"""Отправляем фото на сервер. Сервер должен вернуть id и url."""
files = {
'image': (photo[-5:], open(photo, 'rb')),
}
img = session.post('https://knd.mosreg.ru//api/v1/executions/'+str(url)+'/images', headers=headers, files=files)
if img.status_code == 200:
print(f"Фото {photo} успешно отправлено")
return img.json()
else:
print(f"Не удалось загрузить фото на сервер по заданию {url}, статус ошибки {img.status_code}! Повторная попытка!")
second_img = send_image(session, headers, url, photo)
return second_img

View File

@ -7,6 +7,7 @@ class Users_dip:
self.path = os.path.join(os.path.abspath('.'), 'data_dip')
def get_users(self):
"""Get names from names of folders."""
self.logins = []
main_dir = os.walk(self.path)
for d, dirs, files in main_dir:

28
classes/users_kp.py Normal file
View File

@ -0,0 +1,28 @@
import os
class Users_kp:
def __init__(self):
self.data = []
self.path = os.path.join(os.path.abspath('.'), 'data_kp')
def get_users(self):
"""Get names from names of folders."""
self.logins = []
main_dir = os.walk(self.path)
for d, dirs, files in main_dir:
self.logins.append(dirs)
return self.logins[0]
def get_passwords(self):
if not os.path.exists(self.path):
return "Папка data_led не существует. Создайте папку с необходимыми параметрами и запустите программу снова!"
self.emails = self.get_users()
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

@ -0,0 +1,4 @@
Курынин Александр Иванович
начальник РЭУ
8(985)574-78-37

Binary file not shown.

View File

@ -0,0 +1 @@
kn8746

Binary file not shown.

Binary file not shown.

26
des.py
View File

@ -1,13 +1,15 @@
import requests
import random
import string
# import json
import datetime
import time
import os
from classes.users import Users
import random
import string
import time
import requests
import classes.desinfection as des
import classes.proverka as prov
# import classes.proverka as prov
from classes.users import Users
def get_questions(id_task, session, headers):
@ -119,10 +121,12 @@ def get_task(session, headers):
coord = n['coord']
enterances = n['tasks']
for execution in enterances:
address_from_tasks = execution['dimensions'][0].get('entity_value_name')
address_from_tasks = execution['dimensions'][0].get(
'entity_value_name')
name_from_tasks = execution['name']
if name_from_tasks == desinfection:
enterance = execution['dimensions'][2].get('entity_value_name')
enterance = execution['dimensions'][2].get(
'entity_value_name')
if address_from_tasks == 'Клин г, ' + addr.replace("_", "/")[:-4] and enterance[-1] == address[-2]:
print('\n')
print(name_from_tasks)
@ -134,14 +138,16 @@ def get_task(session, headers):
'coord': coord
}
if name_from_tasks == desinfection:
des.assign_task(session, headers, task, address)
des.assign_task(
session, headers, task, address)
elif name_from_tasks == proverka:
pass
# prov.assign_task(session, headers, task, address)
else:
pass
else:
print(f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}")
print(
f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}")
# Если адреса не получили выводим ошибку
else:
print(addresses)

View File

@ -1,137 +1,178 @@
import requests
import random
import string
# import json
import datetime
import time
import os
from classes.users import Users
import random
import string
import time
import requests
import classes.desinfection as des
import classes.proverka as prov
from classes.users import Users
def get_questions(id_task, session, headers):
url = 'https://knd.mosreg.ru//api/v1/executions/'+str(id_task)+'/questions'
url = "https://knd.mosreg.ru//api/v1/executions/" + str(id_task) + "/questions"
questions = session.get(url, headers=headers)
json_quest = questions.json()
return json_quest['selected_chains']
return json_quest["selected_chains"]
def send_image(session, headers, url, photo):
"""Отправляем фото на сервер. Сервер должен вернуть id и url."""
files = {
'image': (photo[-5:], open(photo, 'rb')),
"image": (photo[-5:], open(photo, "rb")),
}
# print(files)
img = session.post('https://knd.mosreg.ru//api/v1/executions/'+str(url)+'/images', headers=headers, files=files)
img = session.post(
"https://knd.mosreg.ru//api/v1/executions/" + str(url) + "/images",
headers=headers,
files=files,
)
if img.status_code == 200:
print(f"Фото {photo} успешно отправлено")
return img.json()
else:
print(f"Не удалось загрузить фото на сервер по заданию {url}, статус ошибки {img.status_code}! Повторная попытка!")
print(
f"Не удалось загрузить фото на сервер по заданию {url}, статус ошибки {img.status_code}! Повторная попытка!"
)
second_img = send_image(session, headers, url, photo)
return second_img
def complete_task(session, headers, task, address):
photos = get_photo(address, headers['uid'])
photos = get_photo(address, headers["uid"])
if len(photos) > 0:
photos.sort()
print(task['id'])
id_task = task['id']
print(task["id"])
id_task = task["id"]
questions = get_questions(id_task, session, headers)
data = []
for answers in questions:
answer_chain = {
'id': answers['id'],
'questions': [] # answers['questions']
}
if answer_chain['id'] == 6146: # Цепочка без ответов
answer_chain = {"id": answers["id"], "questions": []} # answers['questions']
if answer_chain["id"] == 6146: # Цепочка без ответов
continue
for components in answers['questions']:
for components in answers["questions"]:
comp = []
q_c = {
'id': components['id'],
'question_components': []
}
if q_c['id'] == 6560: # Вопрос без ответа
q_c = {"id": components["id"], "question_components": []}
if q_c["id"] == 6560: # Вопрос без ответа
continue
comp.append(q_c)
answer_chain.update({'questions': comp})
answer_chain.update({"questions": comp})
data.append(answer_chain)
if len(data) == len(photos):
for chain in data:
for item in chain['questions']:
for item in chain["questions"]:
if len(data) == len(photos):
photo_from_photos = photos.pop(0)
img = send_image(session, headers, task['id'], photo_from_photos) # photos.pop(0))
img = send_image(
session, headers, task["id"], photo_from_photos
) # photos.pop(0))
# count_send_photo = 0
# while img['id'] is None:
# count_send_photo += 1
# print("Попытка № " + str(count_send_photo) + "отправить фото" + str(photo_from_photos))
# img = send_image(session, headers, task['id'], photo_from_photos)#photos.pop(0))
first = {"id": 18850, "answer": [img['id']], 'answer_status': None, 'start_time': int(time.time())}
first = {
"id": 18850,
"answer": [img["id"]],
"answer_status": None,
"start_time": int(time.time()),
}
time.sleep(2)
first.update({'end_time': int(time.time())})
second = {"id": 18851, "answer": {"location": task['coord']}, 'answer_status': None, 'start_time': int(time.time())}
first.update({"end_time": int(time.time())})
second = {
"id": 18851,
"answer": {"location": task["coord"]},
"answer_status": None,
"start_time": int(time.time()),
}
time.sleep(2)
second.update({'end_time': int(time.time())})
item['question_components'].append(first)
item['question_components'].append(second)
second.update({"end_time": int(time.time())})
item["question_components"].append(first)
item["question_components"].append(second)
else:
#img = send_image(session, headers, task['id'], photos.pop(0))
# img = send_image(session, headers, task['id'], photos.pop(0))
photo_from_photos = photos.pop(0)
img = send_image(session, headers, task['id'], photo_from_photos)#photos.pop(0))
img = send_image(
session, headers, task["id"], photo_from_photos
) # photos.pop(0))
# count_send_photo = 0
# while img['id'] is None:
# count_send_photo += 1
# print("Попытка № " + str(count_send_photo) + " отправить фото" + str(photo_from_photos))
# img = send_image(session, headers, task['id'], photo_from_photos)#photos.pop(0))
first = {"id": 18856, "answer": 77, 'answer_status': None, 'start_time': int(time.time())}
first = {
"id": 18856,
"answer": 77,
"answer_status": None,
"start_time": int(time.time()),
}
time.sleep(2)
first.update({'end_time': int(time.time())})
second = {"id": 18857, "answer": [img['id']], 'answer_status': None, 'start_time': int(time.time())}
first.update({"end_time": int(time.time())})
second = {
"id": 18857,
"answer": [img["id"]],
"answer_status": None,
"start_time": int(time.time()),
}
time.sleep(2)
second.update({'end_time': int(time.time())})
item['question_components'].append(first)
item['question_components'].append(second)
second.update({"end_time": int(time.time())})
item["question_components"].append(first)
item["question_components"].append(second)
ans = {"question_chains": data}
# print(ans)
session_t = session
session_t.headers.update(
{
'referer': 'https://knd.mosreg.ru/executions'+str(task['id'])+'/solve',
'x-platform': 'wb',
'accept': '*/*'
}
"referer": "https://knd.mosreg.ru/executions" + str(task["id"])
+ "/solve",
"x-platform": "wb",
"accept": "*/*",
}
)
complete = session_t.post(
"https://knd.mosreg.ru//api/v1/executions/" + str(task["id"]) + "/answers",
headers=headers,
json=ans,
)
complete = session_t.post('https://knd.mosreg.ru//api/v1/executions/'+str(task['id'])+'/answers', headers=headers, json=ans)
if complete.status_code == 200:
print(f'Задание по адресу {address} выполнено успешно!')
print(f"Задание по адресу {address} выполнено успешно!")
else:
print(f'Задание по адресу {address} не выполненно! Статус ошибки {complete.status_code}')
print(
f"Задание по адресу {address} не выполненно! Статус ошибки {complete.status_code}"
)
else:
print(f"Несоответствие количества вопросов и количества фотографий по адресу: {address}")
print(
f"Несоответствие количества вопросов и количества фотографий по адресу: {address}"
)
# send_execution(task,session, headers)
def get_photo(address, email):
photos = []
month = datetime.datetime.now().month
main_path = os.path.join(os.path.abspath('.'), 'data', email, str(month), address)
main_path = os.path.join(os.path.abspath("."), "data", email, str(month), address)
if not os.path.exists(main_path):
return photos
else:
for images in os.listdir(main_path):
if images.endswith(".jpg") or images.endswith(".jpeg") or images.endswith(".JPG"):
photos.append(main_path + '/' + images)
if (
images.endswith(".jpg")
or images.endswith(".jpeg")
or images.endswith(".JPG")
):
photos.append(main_path + "/" + images)
return photos
def get_addresses(email):
addresses = []
month = datetime.datetime.now().month
main_path = os.path.join(os.path.abspath('.'), 'data')
main_path = os.path.join(os.path.abspath("."), "data")
path = os.walk(os.path.join(main_path, email, str(month)))
if not os.path.exists(os.path.join(main_path, email, str(month))):
return f"Не найдена папка с месяцем у пользователя {email}! Проверьте структуру каталога!"
@ -163,18 +204,19 @@ def get_task(session, headers):
2 адрес
3 подъезд
4 id_задания"""
desinfection = 'Дезинфекция подъездов (МОП)'
proverka = 'Систематическая проверка подъездов МКД'
desinfection = "Дезинфекция подъездов (МОП)"
proverka = "Систематическая проверка подъездов МКД"
# Получаем адреса
addresses = get_addresses(headers['uid'])
addresses = get_addresses(headers["uid"])
# Если адреса получили
if isinstance(addresses, list):
session_t = session
session_t.headers.update(
{'referer': 'https://knd.mosreg.ru/executions',
'x-platform': 'android',
'accept': '*/*'
}
{
"referer": "https://knd.mosreg.ru/executions",
"x-platform": "android",
"accept": "*/*",
}
)
for address in addresses:
# change '-' for '/'
@ -184,36 +226,48 @@ def get_task(session, headers):
search = addr.replace("_", "/")[:-4]
# print(search)
# search = ""
data = {'search': search}
tasks = session_t.post('https://knd.mosreg.ru//api/v1/executions',
headers=headers,
data=data
)
data = {"search": search}
tasks = session_t.post(
"https://knd.mosreg.ru//api/v1/executions", headers=headers, data=data
)
json_tasks = tasks.json()
get_t = False
# Если есть доступное задание с таким адресом
exec_assigned = json_tasks['executions_assigned'] # Уже полученные задания
exec_available = json_tasks['executions_available'] # Еще не принятые задания
exec_assigned = json_tasks["executions_assigned"] # Уже полученные задания
exec_available = json_tasks[
"executions_available"
] # Еще не принятые задания
# print(address)
if len(exec_available) > 0:
for n in exec_available:
coord = n['coord']
enterances = n['tasks']
coord = n["coord"]
enterances = n["tasks"]
for execution in enterances:
address_from_tasks = execution['dimensions'][0].get('entity_value_name')
name_from_tasks = execution['name']
address_from_tasks = execution["dimensions"][0].get(
"entity_value_name"
)
name_from_tasks = execution["name"]
if name_from_tasks == proverka:
enterance = execution['dimensions'][2].get('entity_value_name')
if address_from_tasks == 'Клин г, '+ addr.replace("_", "/")[:-4] and \
enterance[-1] == address[-2]:
print('\n')
enterance = execution["dimensions"][2].get(
"entity_value_name"
)
if (
address_from_tasks
== "Клин г, " + addr.replace("_", "/")[:-4]
and enterance[-1] == address[-2]
):
print("\n")
print(name_from_tasks)
print('\n')
print("\n")
task = {
'id': execution['execution_id'],
'address': execution['dimensions'][0].get('entity_value_name'),
'enterance': execution['dimensions'][2].get('entity_value_name'),
'coord': coord
"id": execution["execution_id"],
"address": execution["dimensions"][0].get(
"entity_value_name"
),
"enterance": execution["dimensions"][2].get(
"entity_value_name"
),
"coord": coord,
}
if name_from_tasks == desinfection:
pass
@ -223,7 +277,9 @@ def get_task(session, headers):
else:
pass
else:
print(f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}")
print(
f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}"
)
# Если адреса не получили выводим ошибку
else:
print(addresses)
@ -233,18 +289,15 @@ def main():
users = Users()
logins = users.get_passwords()
if isinstance(logins, list):
url = 'https://knd.mosreg.ru//api/v1/auth/sign_in'
url = "https://knd.mosreg.ru//api/v1/auth/sign_in"
for user in logins:
session = requests.Session()
login = {
'email': user['email'],
'password': user['password']
}
login = {"email": user["email"], "password": user["password"]}
response = session.post(url, data=login)
headers = {
'client': response.headers.get('client'),
'Access-token': response.headers.get('Access-token'),
'uid': response.headers.get('uid'),
"client": response.headers.get("client"),
"Access-token": response.headers.get("Access-token"),
"uid": response.headers.get("uid"),
}
if response.status_code == 200:
get_task(session, headers)
@ -263,4 +316,4 @@ if __name__ == "__main__":
def random_string(stringLength):
letters = string.ascii_letters
digits = string.digits
return ''.join(random.choice(letters+digits) for i in range(stringLength))
return "".join(random.choice(letters + digits) for i in range(stringLength))

View File

@ -46,6 +46,7 @@ def get_task(session, headers):
proverka = 'Систематическая проверка подъездов МКД'
naled = 'Проверка образования наледи на кровле'
dip = 'Осмотр ДИП/ФОП'
s = 'ГЖИ. Системная проверка МКД '
# Получаем адреса
addresses = get_addresses(headers['uid'])
# Если адреса получили
@ -79,7 +80,7 @@ def get_task(session, headers):
# Уже полученные задания
print(json_tasks)
exec_assigned = json_tasks['executions_assigned']
# print(exec_assigned)
print(exec_assigned)
# Еще не принятые задания
exec_available = json_tasks['executions_available']
# print(exec_available)
@ -93,7 +94,8 @@ def get_task(session, headers):
address_from_tasks = execution['dimensions'][1].get('entity_value_name')
print(address_from_tasks)
name_from_tasks = execution['name']
if name_from_tasks == dip:
# if name_from_tasks == dip:
if name_from_tasks == s:
# enterance = execution['dimensions'][2].get('entity_value_name')
if address_from_tasks == 'г. Клин, ' + addr.replace("_", "/"):
print('\n')
@ -114,6 +116,9 @@ def get_task(session, headers):
pass
# led.assign_task(session, headers, task, address)
elif name_from_tasks == dip:
# osmotr_dip.assign_task(session, headers, task, address)
pass
elif name_from_tasks == s:
osmotr_dip.assign_task(session, headers, task, address)
else:
pass

162
knd_dip2.py Normal file
View File

@ -0,0 +1,162 @@
import requests
import random
import string
# import json
import datetime
import time
import os
from classes.users import Users
from classes.users_led import Users_led
from classes.users_dip import Users_dip
import classes.desinfection as des
import classes.proverka as prov
import classes.led as led
import classes.dip as osmotr_dip
def get_addresses(email):
addresses = []
# month = datetime.datetime.now().month
main_path = os.path.join(os.path.abspath('.'), 'data_dip')
path = os.walk(os.path.join(main_path, email))
# if not os.path.exists(os.path.join(main_path, email, str(month))):
# return f"Не найдена папка с месяцем у пользователя {email}! Проверьте \
# структуру каталога!"
# print(path)
for d, dirs, files in path:
addresses.append(dirs)
if len(addresses[0]) > 0:
return addresses[0]
else:
return f"Ни одного адреса для пользователя {email} не найдено! \
Добавьте фото и запустите программу снова!"
def get_task(session, headers):
"""Получаем все доступные задания. Если в переменную search добавить адрес,
то будет искать этот адрес. Он попадет в
json_tasks['executions_available'],
так что надо понять откуда берем задания. Отсюда можно возвращать
все параметры задания:
1 координаты
2 адрес
3 подъезд
4 id_задания"""
desinfection = 'Дезинфекция подъездов (МОП)'
proverka = 'Систематическая проверка подъездов МКД'
naled = 'Проверка образования наледи на кровле'
dip = 'Осмотр ДИП/ФОП'
s = 'ГЖИ. Системная проверка МКД'
# Получаем адреса
addresses = get_addresses(headers['uid'])
# Если адреса получили
# if isinstance(addresses, list):
session_t = session
session_t.headers.update(
{'referer': 'https://knd.mosreg.ru/executions',
'x-platform': 'android',
'accept': '*/*'
}
)
for address in addresses:
# change '-' for '/'
# need split enterance from address
addr = address.replace("Чаиковского", "Чайковского")
addr = address.replace("Маиданово", "Майданово")
addr = address.replace("Молодежныи", "Молодежный")
addr = addr.replace("Ломоносовскии", "Ломоносовский")
search = addr.replace("_", "/")
# print(search)
data = {'search': search}
tasks = session_t.post('https://knd.mosreg.ru//api/v1/actor/executions',
headers=headers
# data=data
)
json_tasks = tasks.json()
# print(json_tasks)
# get_t = False
# Если есть доступное задание с таким адресом
#
# Уже полученные задания
# print(json_tasks)
exec_assigned = json_tasks['executions_assigned']
# print(exec_assigned)
# Еще не принятые задания
exec_available = json_tasks['executions_available']
# print(exec_available)
# print(address)
if len(exec_assigned) > 0:
# print(len(exec_assigned))
for n in exec_assigned:
coord = n['coord']
enterances = n['tasks']
for execution in enterances:
address_from_tasks = execution['dimensions'][1].get('entity_value_name')
# print(address_from_tasks)
name_from_tasks = execution['name']
# if name_from_tasks == dip:
# if name_from_tasks == s:
# # enterance = execution['dimensions'][2].get('entity_value_name')
# if address_from_tasks == 'г. Клин, ' + addr.replace("_", "/"):
# print('\n')
# print(name_from_tasks)
# print('\n')
task = {
'id': execution['execution_id'],
'address': execution['dimensions'][1].get('entity_value_name'),
'coord': coord
}
# if name_from_tasks == desinfection:
# # des.assign_task(session, headers, task, address)
# pass
# elif name_from_tasks == proverka:
# pass
# # prov.assign_task(session, headers, task, address)
# elif name_from_tasks == naled:
# pass
# # led.assign_task(session, headers, task, address)
# elif name_from_tasks == dip:
osmotr_dip.assign_task(session, headers, task, address)
# pass
# # elif name_from_tasks == s:
# # osmotr_dip.assign_task(session, headers, task, address)
# else:
# pass
# else:
# print(f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}")
# Если адреса не получили выводим ошибку
# else:
# print(addresses)
def main():
users = Users_dip()
logins = users.get_passwords()
if isinstance(logins, list):
url = 'https://knd.mosreg.ru//api/v1/auth/sign_in'
for user in logins:
session = requests.Session()
login = {
'email': user['email'],
'password': user['password']
}
response = session.post(url, data=login)
headers = {
'client': response.headers.get('client'),
'Access-token': response.headers.get('Access-token'),
'uid': response.headers.get('uid'),
}
if response.status_code == 200:
print(f"Пользователь {user['email']} успешно авторизовался!")
# print(response.headers)
get_task(session, headers)
else:
print(f"Отказ в авторизации для пользователя {user['email']}!")
time.sleep(1)
else:
print(users.get_passwords())
if __name__ == "__main__":
main()
k = input("Press ENTER for exit")

195
knd_kp.py Normal file
View File

@ -0,0 +1,195 @@
import requests
import random
import string
# import json
import datetime
import time
import os
# from classes.users import Users
# from classes.users_led import Users_led
# from classes.users_dip import Users_dip
from classes.users_kp import Users_kp
import classes.kp as kp
# import classes.desinfection as des
# import classes.proverka as prov
# import classes.led as led
# import classes.dip as osmotr_dip
def get_addresses(email):
addresses = []
# month = datetime.datetime.now().month
main_path = os.path.join(os.path.abspath('.'), 'data_dip')
path = os.walk(os.path.join(main_path, email))
# if not os.path.exists(os.path.join(main_path, email, str(month))):
# return f"Не найдена папка с месяцем у пользователя {email}! Проверьте \
# структуру каталога!"
# print(path)
for d, dirs, files in path:
addresses.append(dirs)
if len(addresses[0]) > 0:
return addresses[0]
else:
return f"Ни одного адреса для пользователя {email} не найдено! \
Добавьте фото и запустите программу снова!"
def get_task(session, headers):
"""Получаем все доступные задания. Если в переменную search добавить адрес,
то будет искать этот адрес. Он попадет в
json_tasks['executions_available'],
так что надо понять откуда берем задания. Отсюда можно возвращать
все параметры задания:
1 координаты
2 адрес
3 подъезд
4 id_задания"""
# desinfection = 'Дезинфекция подъездов (МОП)'
# proverka = 'Систематическая проверка подъездов МКД'
# naled = 'Проверка образования наледи на кровле'
# dip = 'Осмотр ДИП/ФОП'
# s = 'ГЖИ. Системная проверка МКД '
session_t = session
session_t.headers.update(
{'referer': 'https://knd.mosreg.ru/executions',
'x-platform': 'android',
'accept': '*/*'
}
)
tasks = session_t.post('https://knd.mosreg.ru//api/v1/executions',
headers=headers
)
json_tasks = tasks.json()
# print(json_tasks)
exec_assigned = json_tasks['executions_assigned']
if len(exec_assigned) > 0:
for execution in exec_assigned:
coord = execution['coord']
tasks = execution['tasks']
for task in tasks:
task_name = task['name']
print(task_name)
access_task = {
'id': task['execution_id'],
'address': task['dimensions'][1].get('entity_value_name'),
'coord': coord
}
kp.assign_task(session, headers, access_task)
else:
print(f"Нет доступных заданий для пользователя {headers['uid']}!")
# Получаем адреса
# addresses = get_addresses(headers['uid'])
# # Если адреса получили
# if isinstance(addresses, list):
# session_t = session
# session_t.headers.update(
# {'referer': 'https://knd.mosreg.ru/executions',
# 'x-platform': 'android',
# 'accept': '*/*'
# }
# )
# for address in addresses:
# # change '-' for '/'
# # need split enterance from address
# addr = address.replace("Чаиковского", "Чайковского")
# addr = address.replace("Маиданово", "Майданово")
# addr = address.replace("Молодежныи", "Молодежный")
# addr = addr.replace("Ломоносовскии", "Ломоносовский")
# search = addr.replace("_", "/")
# # print(search)
# data = {'search': search}
# tasks = session_t.post('https://knd.mosreg.ru//api/v1/actor/executions',
# headers=headers,
# data=data
# )
# json_tasks = tasks.json()
# # print(json_tasks)
# # get_t = False
# # Если есть доступное задание с таким адресом
# #
# # Уже полученные задания
# print(json_tasks)
# exec_assigned = json_tasks['executions_assigned']
# print(exec_assigned)
# # Еще не принятые задания
# exec_available = json_tasks['executions_available']
# # print(exec_available)
# # print(address)
# if len(exec_assigned) > 0:
# # print(len(exec_assigned))
# for n in exec_assigned:
# coord = n['coord']
# enterances = n['tasks']
# for execution in enterances:
# address_from_tasks = execution['dimensions'][1].get('entity_value_name')
# print(address_from_tasks)
# name_from_tasks = execution['name']
# # if name_from_tasks == dip:
# if name_from_tasks == s:
# # enterance = execution['dimensions'][2].get('entity_value_name')
# if address_from_tasks == 'г. Клин, ' + addr.replace("_", "/"):
# print('\n')
# print(name_from_tasks)
# print('\n')
# task = {
# 'id': execution['execution_id'],
# 'address': execution['dimensions'][1].get('entity_value_name'),
# 'coord': coord
# }
# if name_from_tasks == desinfection:
# # des.assign_task(session, headers, task, address)
# pass
# elif name_from_tasks == proverka:
# pass
# # prov.assign_task(session, headers, task, address)
# elif name_from_tasks == naled:
# pass
# # led.assign_task(session, headers, task, address)
# elif name_from_tasks == dip:
# # osmotr_dip.assign_task(session, headers, task, address)
# pass
# elif name_from_tasks == s:
# osmotr_dip.assign_task(session, headers, task, address)
# else:
# pass
# else:
# print(f"Нет доступных заданий для пользователя {headers['uid']} по адресу: {address}")
# # Если адреса не получили выводим ошибку
# else:
# print(addresses)
def main():
users = Users_kp()
logins = users.get_passwords()
if isinstance(logins, list):
url = 'https://knd.mosreg.ru//api/v1/auth/sign_in'
for user in logins:
session = requests.Session()
login = {
'email': user['email'],
'password': user['password']
}
response = session.post(url, data=login)
headers = {
'client': response.headers.get('client'),
'Access-token': response.headers.get('Access-token'),
'uid': response.headers.get('uid'),
}
if response.status_code == 200:
print(f"Пользователь {user['email']} успешно авторизовался!")
# print(response.headers)
get_task(session, headers)
else:
print(f"Отказ в авторизации для пользователя {user['email']}!")
time.sleep(1)
else:
print(users.get_passwords())
if __name__ == "__main__":
main()
k = input("Press ENTER for exit")

View File

@ -1,15 +1,17 @@
import requests
import random
import string
# import random
# import string
# import json
import datetime
import time
# import datetime
# import time
import os
from classes.users import Users
import requests
# import classes.desinfection as des
# import classes.led as led
# import classes.proverka as prov
# from classes.users import Users
from classes.users_led import Users_led
import classes.desinfection as des
import classes.proverka as prov
import classes.led as led
def get_addresses(email):