Скажем, было бы неплохо, чтобы айфон подсказывал во сколько и в каком зале следующая игра. Ладно, хотя бы, чтобы сообщал, когда появляется информация о новом турнире. Где эту информацию брать?
В принципе, можно попробовать объяснить приложению на смартфоне, что можно открыть календарь на 175г, и что вот там под словами «по алтимату» пишутся иногда новые турниры, но висят только один день, и без дат, и формат не указан, но это можно ниже в календаре поискать. Когда нет другого способа — так и поступают, для кого-то это «обычный вторник на работе». Прямо сейчас по сайтам с арендой жилья ползают роботы с бумажками, на которых написано «принеси нам первую цифру после заголовка второго уровня».
Такой способ получения информации с сайта напрямую зависит от дизайна сайта. Если сайт молодой динамично развивающийся, на страницах сайта постоянно что-то добавляется, убирается, меняется местами. Нам по-прежнему нужны всего-то название и даты нового турнира, но после каждого обновления сайта скорее всего придется заново описывать маршрут по странице к этим данным.
Вот если бы была «секретная» страничка на сайте, на которой не было бы никакого оформления, меню, шрифтов и цветов, а всегда был бы только список новых турниров. То есть вот тупо две строчки на странице:
МФЛД, 7-9 мая, Москва, хэт Вызов Питера, 16-17 июля, Солнечное, пляж 5х5
Такая страничка переживет большинство экспериментов с дизайном и всегда будет предоставлять максимум полезной информации с минимальным трафиком. И если показать эту страничку смартфону, он без труда сможет сообщать владельцу о новых турнирах.
Под каждую задачу можно завести отдельную такую же страничку — результаты турнира, ростеры команд — и все вместе они составят то, что называется API сайта.
API — это альтернативный способ получать информацию с сайта, не зависящий от дизайна сайта, которым пользуются не люди, а компьютерные программы (но пользуются «по-человечески»).
Давайте посмотрим, как может происходить общение айфона с API сайта.
Айфон: Какие-нибудь новые турниры добавились с последнего раза, как я уже спрашивал? *обращается к API: https://175g.ru/api/v1/tournaments?created_since=2016-03-25 08:48:00*
175г: Да, есть два новых:
{ "data": [ { "short_name": "Вызов Питера 2016", "date_begin": "16.07.2016", "date_end": "17.07.2016", "location": "Солнечное, С.-Петербург, Россия" }, { "short_name": "Марлон Брандо 2016", "date_begin": "03.04.2016", "date_end": "03.04.2016", "location": "Санкт-Петербург, Россия" } ] }
Айфон: Ок, поставил напоминалку купить билеты на Вызов. Покажи мне теперь результаты Брандо *обращается к API: https://175g.ru/api/v1/tournaments/828/results*
175г: Вот:
{ "data": { "divisions": [ { "name": "Женский дивизион", "teams": [ { "place": "1", "name": "СПбПУ им.Петра Великого" }, { "place": "2", "name": "СПбГУ" }, ...
Айфон: Спасибо *обращается к API: https://175g.ru/api/v1/thankyou*
175г: Пожалуйста
{ "data": { "text": "You are welcome" } }
Сейчас API помогает получить доступ к следующей информации:
Описание запросов к API и ответов в документации.
Основная задача API на данный момент — заявить, что API вообще есть. Поэтому может так получиться, что текущей реализацией пользоваться сложно или невозможно. Формат дат ISO 8601 неудобный, а турнирную историю игрока нельзя сразу загрузить в Эксель. Предложения и замечания присылайте на почту mail@175g.ru или в личку паблика.