Знакомьтесь: API

Статья была подготовлена для газеты, но в газету не прошла. Посему тисну тут. Написана мной в неудобочитаемом виде. @SKINBALL её отредактировал и привел и привел к текущему удобоваримому виду, за что ему отдельное спасибо!

Здравствуйте, коллеги!

За многие годы существования игры Эпоха Клонов , много раз поднимался вопрос об экспорте из игры различных данных. Сейчас автор, ваш покорный слуга, рад представить сервис API, который частично и реализует такую возможность. Это вводная статья, и, возможно, будет продолжение. Вероятно, она будет полезна тем, кто не просто играет методом проб и ошибок, а ещё и делает предварительные расчёты. Для использования описанных ниже возможностей не требуется полного понимания теории – достаточно базовых знаний работы с электронными таблицами, которые наверняка имеются у подавляющего большинства участников.

Важно! Ни автор, ни администрация игры не несут ответственности за любые убытки и/или любые последствия использования материала, изложенного в этой и последующих статьях серии.

Описанные ниже сервисы программируются группой энтузиастов. Большую часть работы проделал @Lord_Vitinari. Хостинг и трафик спонсируются Империей Israel и её банком “Bank of Israel”. Сервис предоставляется безвозмездно и без гарантий, и хотя мы делаем максимум возможного для обеспечения точности, надёжности и своевременной доставки данных, от ошибок и программно-аппаратных сбоев никто не застрахован. Мы рекомендуем сверять полученные результаты с текущими данными в игре перед принятием решений, могущих повлечь за собой потери золотых монет.

Уууух. Вводная часть закончена, перейдём к сути.

API, как написано в «Википедии на русском языке», это программный интерфейс приложения . В нашем случае это программа, позволяющая передать данные, такие, как котировки на бирже (и частично на ярмарке), получаемые по большей части в реальном времени, другой программе. В качестве примера в роли программы-получателя будет выступать сервис Google Docs , который предоставляет бесплатные электронные таблицы, зовущиеся Google Sheets.

Тем читателям, у кого появился вопрос «А зачем мне сие знание и возможности?», могу сказать, что при правильном использовании это может положительно повлиять на состояние вашей калиты и избавит от утомительных расчётов вручную.

Для тех, кто знаком с английским языком и имеет базовые знания в программировании, есть описание доступных возможностей на сайте http://api.apiofempires.info/ , для остальных я опишу основные доступные на текущий момент возможности и возможные сферы применения данного сервиса. Для примера узнаем, как можно быстро рассчитать актуальную стоимость строительства системы полива в замке при покупке ресурсов на бирже в любой момент времени.

1. Получение данных

Для начала определимся, в каком виде получать данные о ценах. Эти различия важны, если в ваших электронных таблицах при расчётах в качестве десятичного разделителя используется не точка, а запятая.

Актуальные цены на бирже и ярмарке доступны по следующим ссылкам:

С десятичным разделителем в виде точки:

http://api.apiofempires.info/api/v1/MarketProductPrice

С десятичным разделителем в виде запятой, для работающих на русском языке:

http://api.apiofempires.info/api/v1/MarketProductPrice?numseparator=%2C

Данные по ценам на категорию товаров «Еда»:

С десятичным разделителем в виде точки:

http://api.apiofempires.info/api/v1/Food

С десятичным разделителем в виде запятой, для работающих на русском языке:

http://api.apiofempires.info/api/v1/Food?numseparator=%2C

2. Как использовать?

Для использования таблиц на сервисе Google Docs необходимо наличие аккаунта в Google. Те, у кого ещё нет почты или аккаунта в Google, идут регистрироваться и авторизовываться в гугл ( https://www.gmail.com ) – и только потом переходят на сайт https://docs.google.com/ .

Далее жмём на три полоски в левом верхнем углу сайта, выбираем «Таблицы» («Sheets») (зелёненькую иконку), нажимаем на разноцветный плюсик и получаем абсолютно чистый листик в клеточку :slight_smile:

Внизу страницы видим ещё один маленький плюсик и жмём на него, чтобы добавить ещё один листик в наш документ. На этом втором листике мы будем настраивать доставку актуальных игровых цен, тогда как на первом – будем делать собственно интересующие нас расчёты.

После нажатия на этот плюсик внизу мы увидим еще одну вкладку, на которой написано «Лист2» («Sheet2»). Название может меняться в зависимости от того, какой язык выбран в вашем браузере по умолчанию, а также от языковых настроек аккаунта Google.

Жмём на вкладку правой кнопкой мышки, выбираем опцию «Переименовать» («Rename») и меняем название на «Prices» или другое близкое по смыслу и понятное для вас. Название этого листа важно, и мы будем использовать его в дальнейшем в формулах.

В клеточку A3 копируем следующую формулу:

Для тех, кто использует язык с десятичной точкой:

=IMPORTHTML(“http://api.apiofempires.info/api/v1/MarketProductPrice?tmp=”&$A$1; “table”; 1)

Для тех, у кого десятичная запятая:

=IMPORTHTML(“http://api.apiofempires.info/api/v1/MarketProductPrice?numseparator=%2C&tmp=”&$A$1; “table”; 1)

Внимание! После копирования ссылки в клетку A3 и нажатия на клавиатуре клавиши сразу должны появиться актуальные биржевые цены. Они будут обновляться либо во время каждого открытия документа, либо при изменении значения поля A1, что означает, что для обновления цен надо кликнуть на поле A1 и вписать туда любую цифру, а при её наличии - изменить на любую другую.

А теперь о том, как использовать полученные данные с пользой для дела.

Рабочий пример на основе стоимости расчёта постройки системы полива можно посмотреть и прокомментировать по ссылке:

https://docs.google.com/spreadsheets/d/1QhuiUk4JIsE1GF-FX0JOVE8n0kopoKC1BDY17zbYj7I/edit?usp=sharing

Суть метода заключается в том, чтобы получить данные о ценах с биржи, скопировать эти данные со второго листа туда, где мы хотим их использовать, а затем применить их в расчётах. Не забываем, что в данном примере мы выполняем наши собственные расчёты на первом листе (который до этого момента был пуст).

Для использования полученных цен нужно 2 параметра:

  1. Клетка, в которой будет название продукта. Важно! Название продукта должно полностью совпадать с названием из таблицы цен. В идеале его желательно скопировать.

  2. Клетка с формулой, в которую мы хотим поместить биржевую цену для данного продукта.

Формула будет выглядеть так:

=vlookup(A5,‘Prices’!$A$3:$G$150,3,false) ,

где:

A5 - адрес клетки с названием продукта,

Prices - название листа с импортированными данными,

$A$3:$G$150 – диапазон адресов ячеек, внутри которого производится поиск цен,

3 - номер столбца с ценой.

Для получения цен разных продуктов, из всех этих параметров изменять нужно только один - первый. В нашем примере это A5 .

Изменять остальные параметры без понимания того, что именно вы делаете, не рекомендуется, дабы не получить совершенно неверные расчёты и таким образом не понести финансовые убытки в золотых монетах.

По этой схеме можно подставить актуальные цены в любую уже используемую вами табличку.

Для вопросов и обсуждения работы API есть тема на игровом форуме:

Фантазии на тему API - прогресс разработки

Следующая статья будет о нашей очередной разработке - боте в мессенджере «Телеграм» , который в режиме реального времени оповещает о появлении новых лотов на блошином рынке.

11 Симпатий

А можно такого бота, который будет сообщать о поступлении лотов на ярмарку, мол, выставлен хряк 200кг за 2з возрастом до 350 дней. Срочно покупай! :rofl:
ЗЫ совсем туго, что даже князья пошли писать статьи?) Или уже император?

Уже давно пользуюсь вашими разработками.
Спасибо огромное!

Давно уже Император. Не для денег писано, а в попытке донести до аудитории. На форуме не так много людей тусуется. Работа сделана, система крутится, хочется чтобы народ пользовался. Правильные расчеты залог долгой и интересной, а, иногда, даже прибыльной игры. И все мы заинтересованы чтобы количество и качество игроков росло.

6 Симпатий

И Вам спасибо. Приятно, что работа сделана не зря.

Да но идея интересная

:wink:
Например кому-то лень следить самому, или руки растут не там где положено чтобы воспользоваться подарком :slight_smile: , делает подписку (абонамент) N золотых за N времени или событий и каждый вечер или при наступлении заданного события получает известие на:
mail или WhatsApp, Viber

Когда вставляешь в таблицу формулу =IMPORTHTML(“http://api.apiofempires.info/api/v1/MarketProductPrice?numseparator=%2C&tmp=”&$A$1; “table”; 1) пишет ОШИБКА

Для блошки уже все написано. В телеграме можно подписаться и как только там что-то новое появляется бот пишет. Никак не соберусь дописать самую нудную часть к функционалу отношения не имеющую - проверки безопасности. Но, как только найду вдохновение и допишу - выложу для общественного пользования.

Форум, форум… Он изменяет кавычки и получаются глюки при копипасте. Посмотрите, в таблице выложенной для примера и скопируйте оттуда или вбейте руками.

а для раскрутки канала

?)))

Не суди по себе :yum:

А Ваня и его команда молодцы!

1 Симпатия

А есть возможность в оффлайн Майкрософт Эксель данные скидывать? Бьюсь-бьюсь - а итог один:

С экселем как-то бодались, но так и не пофиксили глюк. Глючит не на всех версиях. При этом гугля и Libre/Open Office вполне себе работают. Поэтому забили пока на проблему. Руки не доходят.

1 Симпатия

Какого канала? Может я тоже гляну? :rofl: :rofl: :rofl:
Изначально все написано для себя любимого. В правилах что-то написано о недопустимости получения преимущества и т.д. и т.п. Посему, ушло в массы, мы не жадные.

О! А я думал на полке все лежит и никто не пользуется.

Я тут отмечусь, если что готов дальше развивать свою часть этого всего =)

Плюс при желании можно включить REST и JSON.

Добавлю прост то, что еще из той темы:

так а что, есть json? желательно еще чеб 2 сервера было)

А для ЗЗ подобное будет?

Давно у них прошу уже)

создатели не играют на ЗЗ а Lord_Vitinari если не ошибаюсь вообще уже не играет

Приветствую. Пишу здесь зная что тут есть те кто разбирается. Подскажите пожалуйста кто-нибудь где и как найти файлы, переданные через Bluetooth, на телефон redmi 6A.? И если они случайно были удалены, то как и где их можно найти и восстановить.? Если такое возможно. Заранее благодарен…