75 lines
3.3 KiB
Python
75 lines
3.3 KiB
Python
import classes.create_photo as cr_photo
|
||
import os
|
||
import time
|
||
|
||
|
||
def assign_task(session, headers, 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):
|
||
photo_path = os.path.join(cr_photo.create_photo(address, headers['uid']), 'graph.jpg')
|
||
id_task = task['id']
|
||
# questions = get_questions(id_task, session, headers)
|
||
question_components = []
|
||
yes_no = {"id": 23384, "position": 0, "answer": 77, "start_time": int(time.time())}
|
||
time.sleep(2)
|
||
yes_no.update({"end_time": int(time.time())})
|
||
question_components.append(yes_no)
|
||
if not os.path.exists(photo_path):
|
||
print(f"Нет фотографии графика по адресу {address}")
|
||
else:
|
||
img = send_image(session, headers, task['id'], photo_path)#photos.pop(0))
|
||
image_graph = {"id": 23385, "position": 1, "answer": [img['id']], "start_time": int(time.time())}
|
||
time.sleep(2)
|
||
image_graph.update({"end_time": int(time.time())})
|
||
question_components.append(image_graph)
|
||
questions = [{"id": 7956, "question_components": question_components, "position": 0}]
|
||
question_chains = [{"id": 7396, "questions": questions}]
|
||
ans = {"question_chains": question_chains}
|
||
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')
|
||
|
||
|
||
|
||
def send_image(session, headers, url, photo):
|
||
"""Отправляем фото на сервер. Сервер должен вернуть id и url."""
|
||
files = {
|
||
'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)
|
||
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
|
||
|
||
|
||
# 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()
|
||
# chain = json_quest['question_chains'][0].get('questions')
|
||
# print(chain[0].get('question_components'))
|
||
# return json_quest['selected_chains']
|
||
|