knd_klinteplo/knd_bot.py

180 lines
7.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import requests
import random
import string
import json
import time
from classes.users import Users
# anwer_text = '{"question_chains":[{"id":6145,"questions":[{"id":6559,"question_components":[{"id":18850,"answer":[80634165],"answer_status":null,"end_time":1591866979,"start_time":1591866978},{"id":18851,"answer":{"location":[56.439337,36.557897]},"answer_status":null,"start_time":1591866873,"end_time":1591867165},{"id":18852,"answer":"1","answer_status":null,"start_time":1591867063,"end_time":1591867063}]}]},{"id":6147,"questions":[{"id":6561,"question_components":[{"id":18856,"answer":77,"answer_status":null,"end_time":1591867067,"start_time":1591867067},{"id":18857,"answer":[80639138],"answer_status":null,"end_time":1591867186,"start_time":1591867185}]}]},{"id":6147,"questions":[{"id":6561,"question_components":[{"id":18856,"answer":77,"answer_status":null,"end_time":1591867200,"start_time":1591867200},{"id":18857,"answer":[80639640],"answer_status":null,"end_time":1591867206,"start_time":1591867205}]}]},{"id":6147,"questions":[{"id":6561,"question_components":[{"id":18856,"answer":77,"answer_status":null,"end_time":1591867211,"start_time":1591867211},{"id":18857,"answer":[80640010],"answer_status":null,"end_time":1591867220,"start_time":1591867219}]}]},{"id":6147,"questions":[{"id":6561,"question_components":[{"id":18856,"answer":77,"answer_status":null,"end_time":1591867223,"start_time":1591867223},{"id":18857,"answer":[80640333],"answer_status":null,"end_time":1591867233,"start_time":1591867232}]}]}]}'
# question_text = ''
def get_enterance_and_coord(session, headers, execution_id):
photo_id = send_image(session, headers, execution_id)
pass
def send_execution(task, session, headers):
# answers_for_data = [{"id":6145,"questions":[{"id":6559,"question_components":[{"id":18850,"answer":[80634165],"answer_status":null,"end_time":1591866979,"start_time":1591866978},{"id":18851,"answer":{"location":[56.439337,36.557897]},"answer_status":null,"start_time":1591866873,"end_time":1591867165}]}]}]
# print(task)
# print(time.ctime(1592235230))
get_questions(task.get('id'), session, headers)
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()
for q in json_quest['selected_chains']:
print(q['id'])
def send_image(session, headers, url):
"""Отправляем фото на сервер. Сервер должен вернуть id и url."""
files = {
'image': ('1.jpg', open('1.jpg', 'rb')),
}
img = session.post('https://knd.mosreg.ru//api/v1/executions/22515485/images', headers=headers, files=files)
return img.json()
# print(img.headers)
# print(img.text)
# print(img.status_code)
def get_task(session, headers):
"""Получаем все доступные задания. Если в переменную search добавить адрес,
то будет искать этот адрес. Он попадет в
json_tasks['executions_available'],
так что надо понять откуда берем задания. Отсюда можно возвращать
все параметры задания:
1 координаты
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
def main():
users = Users()
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'),
}
print(headers)
time.sleep(1)
else:
print(users.get_passwords())
if __name__ == "__main__":
main()
# headers = response.headers
# print(item[0]['tasks'])
# print(len(item[3]['tasks']))
# print(item[3]['coord'])
# count = 0
# for item in json_exec.get('executions_assigned'):
# print(item['tasks'])
# if count < 1:
# # for n in item['tasks']:
# # print(n['dimensions'])
# count = count + 1
# for task in item.get('tasks'):
# pass
# send_image(session, headers, "some")
# get_coord(str1)
# get_answers(session, headers)
# get_questions(session, headers)
# print(executions.text)
def random_string(stringLength):
letters = string.ascii_letters
digits = string.digits
return ''.join(random.choice(letters+digits) for i in range(stringLength))
# def get_coord(address):
# url = 'https://geocode-maps.yandex.ru/1.x/?format=json&apikey=591be3ec-2816-40ee-b575-08e687d27b37&geocode='+address
# coord = requests.get(url)
# print(coord.text)
# def get_task(session, task_id, headers):
# task = session.get('https://knd.mosreg.ru//api/v1/executions/', headers=headers)
# json_task = task.json()
# print(json_task)
# def get_answers(session, headers):
# answers = session.post('https://knd.mosreg.ru//api/v1/executions/22515485/answers', headers=headers)
# json_answers = answers.json()
# for ans in json_answers.get('question_chains'):
# print(ans)
# # print(json_answers)
# def get_questions(session, headers):
# question = session.get('https://knd.mosreg.ru//api/v1/executions/22515485/questions', headers=headers)
# json_question = question.json()
# for s in json_question['selected_chains']:
# for n in s['questions']:
# print(n['question_components'])