# -*- coding: utf-8 -*-
"""
Для работы скрипта нужно создать свое приложение на сайте narodmon.ru и указать в скрипте свой api ключ и имя приложения.
запуск скрипта через nvda
открываем консоль nvda комбинацией insert+ctrl+z
первое, что нужно сделать, это изменить рабочий каталог, путь лучше указать полный, обратные слеши должны быть удвоены, например path = 'D:\\myfolder'
можно указать без удвоения слешей, тогда записать нужно так path = r'D:\myfolder'
path = 'путь до скрипта'
делаем эту папку текущей
os.chdir(path)
добавляем этот путь в в системные пути питона
sys.path.append(path)
запускаем скрипт
import narodmon
"""

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
import json
import hashlib
from datetime import datetime
# ключ API для разработчика, получаемый в Мои приложения после регистрации в проекте. заменить на свой!
# сайт https://narodmon.ru/
api_key = 'тут_ваш_ключ'
# генерация уникального ID приложения
app_id = b'имя_приложения' # имя приложения, данное при его создании
md5_app_id = hashlib.md5(app_id).hexdigest()
data = {
'cmd': 'sensorsNearby', # название метода API
'uuid': md5_app_id, # уникальный MD5-хеш в нижнем регистре, однократно сгенерированный Вашим приложением в момент установки на устройстве пользователя.
'api_key': api_key,
#'radius': 50,
#'limit' => 10,
# gps широта и долгота
'lat': 54.002856,
'lon': 85.771257,
'lang': 'ru'
}
data = json.dumps(data)
data = str(data)
data = data.encode('utf-8')
headers={
'User-Agent': app_id # название приложения на латинице - обязательный заголовок, без которого веб-сервер сочтет ваш запрос за подделку.
}
request = Request('http://narodmon.ru/api', data, headers)
try:
    response = urlopen(request)
    result = json.loads(response.read())
    # вывод всего массива
    #print(json.dumps(result, ensure_ascii=False)) # , indent=4, sort_keys=True encoding='utf8' .encode('utf8')
    # или по ключу
    # print result['devices']
    # или по ключу в цикле
    for dev in result['devices']:
        print(dev['location'], dev['distance'], 'Км. - ', dev['name'])
        for s in dev['sensors']:
            date = datetime.utcfromtimestamp(s['time']).strftime('%d-%m-%Y %H:%M:%S %Z')
            print(date, s['name'], s['value'], s['unit'])
except HTTPError as e:
    print('Error code: ', e.code)
except URLError as e:
    print('Reason: ', e.reason)
else:
    print('good!')
