dashboard-tools

Dashboard Tools
(C) 2014+ Dmitriy "inye" T. Enlightenment is inevitable. Resistance is futile.
This is CLI API for Ingress Intel. Its main goal is to be usable as basis for other software.
ATTENTION: THIS IS TOP SECRET SOFTWARE. DO NOT DISTRIBUTE. USE ONLY FOR THE BENEFIT OF THE ENLIGHTENMENT.
Установка
Требуется node.js и npm. Ещё, вероятно, потребуется git, чтобы скачать dashboard-tools. Как всё это поставить и заставить работать - разберитесь сами.
Проект глубоко секретен, поэтому ставится прямо из репозитария мейнтейнера: https://bitbucket.org/slow-inye/dashboard-tools . Для установки нужно иметь аккаунт на bitbucket. Если на bitbucket настроен ssh-ключ, то для установки надо:
npm install git+ssh://git@bitbucket.org:slow-inye/dashboard-tools.git
Если ssh-ключ не настроен, то возможна авторизация по логину-паролю:
npm install git+https://<bitbucket login>:<bitbucket password>@bitbucket.org/slow-inye/dashboard-tools.git
Установка осуществляется со всеми зависимостями в текущую директорию (!). В ней появится папка node_modules, а в ней - папка dashboard-tools. Так уж работает npm. Как бы то ни было, если установка прошла успешно, у нас будет исполняемый файл node_modules/dashboard-tools/bin/dashboard-tools .
Если запустить его без параметров, он покажет список доступных команд.
ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ
Настоятельно не рекомендуется обращаться dashboard-tools к Интелу с тех же адресов, с которых вы обычно ходите на Интел своим браузером. Для этого в dashboard-tools есть полная поддержка SOCKS. Рекомендуется использовать SSH с dynamic forwarding куда-нибудь на рабочий сервер, откуда вы для себя Интел никогда не запустите.
Настоятельно не рекомендуется использовать для работы с dashboard-tools аккаунты, хоть как-то пересекающиеся с вашими игровыми. Регистрируйте аккаутны для dashboard-tools через тот же SOCKS, через который вы потом будете их использовать. Регистрируйте их из окошка private browsing. Активируйте их с устройств, которые никогда не будут вами использованы для игры (зайдите в салон сотовой связи "выбрать новую мобилу для игрушки").
Dashboard-tools жёстко нарушают ToS Ингресса, и в случае запала реакция Niantic на них может быть бесконечно жёсткой, включая бан всех замеченых аккаунтов, всех замеченых IP, всех замеченых устройств.
Что бы с вами ни случилось - сами виноваты. Мы вас предупредили.
Авторизация на Intel
Для авторизации в Intel используется набор cookies. В нормальной жизни он хранится в браузере, а для dashboard-tools он хранится в JSON-файле, путь к которому передаётся потом передаётся в ключе --credentials (дальше я буду везде называть этот файл credentials.json).
Файл credentials.json создаётся командой login:
dashboard-tools login <my-login@gmail.com> <my-password> --socks <socks host>:<socks port> --output <credentials.json file name>
Если вы хотите обращаться к Интелу напрямую, то вместо --socks нужно в явном виде указать --no-socks:
dashboard-tools login <my-login@gmail.com> <my-password> --no-socks --output <credentials.json file name>
Обратите внимание: в получившийся credentials.json записывается SOCKS-сервер, через который он был получен, и потом вся работа с аккаунтом, куки от которого лежат в credentials.json, будёт идти чрез этот SOCKS-сервер. Его никто не мешает поменять, отредактировав JSON.
Обратите внимание: возможно, credentials.json имеет "срок годности", этот вопрос пока не выяснен. Если credentials.json перестал работать, надо залогиниться заново.
Итого. Процесс авторизации на Интеле должен быть таковым:
Если файла credentials.json нет - сделать login и получить файл credentials.json
Работать, используя credentials.json
Если всё перестало работать (пока способа узнать, что всё перестало работать именно из-за авторизации, нет, но мы работаем над этим), то создать новый credentials.json, сделав login. Вернуться к п.2.
Если не помогло - смотреть, не забанили ли аккаунт. И связываться с разработчиками.
Что умеем
Сейчас умеем такие полезные вещи:
fetch-logs - скачать логи в заданном прямоугольнике за заданный промежуток времени;
fetch-entities - скачать все порталы/линки/поля в заданном прямоугольнике;
count-portals - посчитать порталы по фракции и уровню в заданном прямоугольнике.
fetch-score - получить глобальный счёт
fetch-artifacts - получить информацию об артефактах (Jarvis shards)
say - сказать что-то в COMM
login - получить по логину-паролю credentials.json для доступа к intel
Будет больше. В скрипт встроен какой-никакой хелп.
Задание прямоугольников
Все команды используют прямоугольники. Для того, чтобы эти прямоугольники получать с карты, запилен плагин к IITC (contrib/iitc-plugin-draw-bounds.user.js). Он позволяет редактировать прямоугольник поверх IITC и показывает его координаты прямо для копипасты в скрипты.
Интерфейс слизан с одного широко известного плагина, где тоже нужно рисовать прямоугольник. Интерфейс располагается в правой панели, под описанием портала.
Замечания об уникальности
Мы забираем данные из Интела во много запросов. Работа с Интелом устроена так, что одни и те же сущности при этом могут вернуться несколько раз в разных запросах. У каждой сущности есть GUID (уникальный идентификатор) и timestamp ("момент последнего изменения"). Может существовать несколько сущностей с одинаковым GUID; при этом валидна та, у которой максимальный timestamp. По умолчанию (если не указано флажков --no-uniq и --hard-uniq), dashboard-tools ведёт себя так: записывает guids и timestamps, и если попадается сущность с тем же guid и меньшим либо равным timestamp, её не возвращает. Это компромиссное решение: с одной стороны, не возвращается откровенный мусор, с другой стороны - можно выводить потоком, не дожидаясь, пока загрузится всё (и не держать данные в памяти). С флагом --hard-uniq dashboard-tools возвращает данные только после того, как всё загружено. Для этого приходится держать все загруженные данные в памяти. Записей лога касается всё то же самое, кроме того, что для них timestamp - момент создания. Соответственно, --hard-uniq для них не нужно. По умолчанию они тоже будут возвращаться только по одному разу. Можно использовать флажок --no-uniq, чтобы снизить расход памяти.