Уверен, что многие из тех, кто хоть иногда играет в игры жанра MOBA (Multiplayer Online Battle Arena), или даже просто в MMORPG, наверняка слышали про такой проект как League of Legends.
LoL — второй (после Demigod) клон всем известной «Доты», и, на данный момент, имеет очень много поклонников по всему земному шару (30+ млн. зарегистрированных пользователей). В 2010-2011 League of Legends даже была включена в список дисциплин на крупнейшем чемпионате для геймеров — WCG (World Cyber Games).
Впрочем, хватит хвалить и без того хвалёную игру, перейдем к делу. Как-то раз, мне приспичило узнать подробную информацию о своем игровом аккаунте в LoL, а именно: посмотреть результаты своих последних сыгранных матчей, общую игровую статистику для каждого персонажа и соответствующие значения KDA Ratio (Kills / Deaths / Assissts). Но узнать эту информацию мне нужно было не имея под рукой клиента с игрой. Я перелопатил весь официальный сайт и форум, в поисках хоть какой-то информации об API — все безуспешно. Тогда, я еще не знал про ресурсы LoLKing, SoloMid и т.д.
Уже намного позже, в процессе «гугления», был найден сайт Elophant.com, на котором располагалась (собственно, и сейчас располагается) небольшая API — документация. В ней описаны основные методы, позволяющие узнать имя саммонера, информацию о его рунах / страницах талантов, информацию о последних десяти сыгранных матчах, общую игровую статистику, информацию о всех существующих игровых предметах / персонажах и т.п.
В разделе About, рассматриваемого сайта, сказано следующее:
How It Works? Once the information is entered, Elophant queries Riot's database...
(Riots Games — разработчик и издатель League of Legends). То есть, сам ресурс Elophant — всего лишь посредник, между пользователем и серверами Riot'ов. Но лично мне, это не важно: работает и ладно.
Первым делом, придется зарегистрироваться, чтобы получить уникальный ключ для доступа к API. Получили ключ? Отлично. Работа с сервисом ведется с помощью GET запросов, которые имеют вид api.elophant.com/v2/region/resource/params/params?key=key, где:
- region — сервер, на котором играет пользователь. na — North America, euw — Europe West, eune — Europe Nordic / East, br — Brazil. Корейские сервера пока не поддерживаются.
- resource — название метода
- params — параметры метода
- key — тот самый уникальный ключ доступа к API
Ответ на все запросы приходит в формате JSON, что существенно облегчает его обработку. В PHP, например, достаточно применить метод json_decode(string json, TRUE), и на руках вы уже имеете ассоциативный массив, из которого вы вытаскиваете любую необходимую вам информацию.
Для примера, рассмотрим использование метода GET summoner, позволяющего узнать ID саммонера (необходимый для работы с некоторыми другими методами), внутриигровой ник-нейм, уровень игрока и ID иконки профиля. Получить эту информацию очень просто (PHP):
<?php
$region = "euw";
$method = "summoner";
$params = "summoner_name";
$key = "here_comes_your_key";
$data = json_decode(file_get_contents("http://api.elophant.com/v2/".$region."/".$method."/".$params."?key=".$key), TRUE);
print_r($data);
echo "<br />".$data["data"]["summonerId"];
?>
На экране мы будем иметь весь наш полученный массив и отдельной строчкой — ID игрока.
Список основных External методов:
Метод | Параметры | Описание |
GET summoner | string summonerName | Returns a summoner's accountId, summonerId, account level, and profile icon id. |
GET mastery_pages | int summonerId | Returns an array with each mastery book page and subsequent talent point entries for a specific summoner. |
GET rune_pages | int summonerId | Returns an array with each rune page and subsequent runes for a specific summoner. |
GET recent_games | int accountId | Returns the statistics for a summoner's 10 most recent games. |
GET summoner_names | CSV array summonerIds | Returns an array of summoner names in the same order as provided in the parameter summonerIds. |
GET player_stats | int accountId, string season | Returns an overview of the statistics for each game mode for the specified summoner. |
GET ranked_stats | int accountId, string season | Returns every statistic for every champion accumulated from all ranked game types for a specified summoner and season. |
GET summoner_team_info | int summonerId | Returns all team info regarding the specified summoner, including team overviews and all of the teams the summoner has created. |
GET in_progress_game_info | string summonerName | Returns the player information for both teams, bans (if draft or ranked), and observer information. |
GET team | string teamId | Returns a brief overview of a team, including gameType dependent Elos, the current roster, and basic match history statistics. |
GET find_team | string tagOrName | Returns a brief overview of a team, including gameType dependent Elos, the current roster, and basic match history statistics. |
GET team_end_of_game_stats | string teamId, double gameId | Returns very detailed statistics about the specified match. |
GET team_ranked_stats | string teamId | Returns each team member's statistics for the specified team. This call provides very similar results to getRankedStats. |
Существуют также два Internal метода: GET items и GET champions. Эти методы используются без указания региона саммонера (api.elophant.com/v2/items?key=key). Первый метод возвращает список всех игровых предметов, второй — список всех персонажей.
Пожалуй, стоит еще отметить то, что в течение 15 минут вы можете совершить максимум 1000 запросов.
На этом все, See you in the Fields of Justice!
Автор: ecroFeG