Здравствуйте!
Существует ли (или планируется) в Lesta Public API метод для получения таблицы рейтинга Натиска, то, что в клиенте отображается на странице «Рейтинг» внутри раздела Натиск?
Интересуют как минимум:
Список игроков в ранге «Легенда» (или произвольный top-N) с полями: позиция, ник, клан-тег, количество боёв, количество очков натиска.
Актуальный порог («последний рангом легенда» - position и rating), общее число участников в Легенде.
Данные игрока по account_id (текущий ранг, позиция, очки, боёв за сезон).
В wot/stats/accountinfo/ у аккаунта возвращается statistics.fort_sorties - это помогает для истории по Укрепрайону, но по Натиску мы ни в одном из опубликованных методов (account/*, clans/*, tanks/stats/*, globalmap/*, stronghold/*, ratings/*) рейтинговых данных не нашли.
Как мы "добываем" эти данные сейчас P.S. крайне неудобно, костыльно
Поскольку публичного endpoint'а мы не видим, у нас запущен следующий workflow:
Клиентский мод патчит frameworks.wulf.windows_system.window.Window.__init__ и перехватывает создание LeaderboardPage (gui.impl.lobby.comp7.meta_view.pages.leaderboard_page).
На экземпляре LeaderboardPage.viewModel (класс LeaderboardModel) мы вешаем read-only observer на setItems() - каждый раз, когда клиент получает от сервера Lesta очередную страницу рейтинга, мы читаем getItems() и сохраняем поля UserName / BattlesCount / Score / ClanTag / ClanTagColor / Position.
Чтобы обойти UI (а не вручную прокручивать 3000+ строк таблицы), мы вызываем приватный метод LeaderboardPage._LeaderboardPage__requestRecords(offset, 50, ...) с шагом 50 от offset=0 до last_best_user_position, инициируя серверные запросы за каждую страницу. Между вызовами - пауза 1.5 с, чтобы не нагружать сервер Lesta.
Аккумулятор дедуплицирует строки по Position и сохраняет финальный JSON.
Дальше JSON вручную загружается на наш backend, который пишет снапшот в Postgres и показывает на сайте историю/дельты по дням.
Проблемы этого подхода:
Опирается на приватные имена (_LeaderboardPage__requestRecords, внутренние ViewModel-поля) - ломается на каждом обновлении клиента.
Требует от нас запустить клиент, открыть экран рейтинга и держать окно открытым ~2–3 минуты.
Нет account_id - в ViewModel клиент кладёт только никнейм + клан-тег, а никнеймы в рейтинге не уникальны (подтверждённый кейс: Ganski из кланов FAKED и P_BY — два разных аккаунта), из-за чего сопоставление с wot/account/list/ неоднозначно. Ссылка на кейс
По сути мы эмулируем запросы, которые клиент и так делает к серверу Lesta - хотелось бы делать их напрямую через официальный API с application_id, а не через реверс ViewModel'ей.
Если такой метод есть - подскажите, пожалуйста, его название и документацию. Если нет — рассматривается ли его добавление? Готовы поучаствовать в закрытом бета-тесте.