WebAPI истории матчей по DotA 2

DotA 2

Вмеру вольный перевод официального мануала.

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

Для начала работы с API необходимо получить ключ разработчика (получить можно здесь — http://steamcommunity.com/dev/apikey). Логинимся по указанной ссылке и получаем свой уникальный ключ. Распространять этот ключ или просто показывать его другим не рекомендуется, так как он (ключ) идентифицирует Вас, когда Вы делаете запрос к WebAPI.

Есть два API-запроса для истории матчей DotA 2:

Получить историю матчей:

https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?key=<key>

Поменяйте «<key>» на свой WebAPI ключ. Этот запрос возвращает последние 25 матчей в формате JSON. Можно запросить эти данные и в формате XML:

https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?format=XML&key=<key>

Возвращается максимум 25 матчей. Что бы запросить следующие 25, необходимо использовать параметр «start_at_match_id» со значением на 1 меньшим, чем последний матч, который был получен до этого.

https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?start_at_match_id=27110133&key=<key>

Для получения спец. данных по матчу, используйте такой запрос к WebAPI:

https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id=27110133&key=<key>

Для запросов к GetMatchHistory доступны дополнительные параметры:

player_name=<name> # Искать матчи с заданым именем игрока (точное совпадение)
hero_id=<id> # Искать матчи, где был указанный герой. ID героев можно найти по пути dota/scripts/npc/npc_heroes.txt в папке, где установлена DotA 2
skill=<skill>  # 0 - любой, 1 - нормальный, 2 - высокий, 3 - очень высокий
date_min=<date> # дата в секундах UTC начиная с 1 января 1970 года (unix time format)
date_max=<date> # дата в секундах UTC начиная с 1 января 1970 года (unix time format)
account_id=<id> # Steam account id (это не SteamID, это всего лишь номер аккаунта)
league_id=<id> # матчи какой-то закрытой лиги
start_at_match_id=<id> # Начать поиск с указанного идентификатора матча (по убыванию)
matches_requested=<n> # По умолчанию 25 матчей, этот параметр может установить меньше значение

Например, что бы получить данные о последнем матче, необходимо выполнить такой запрос:

https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/?matches_requested=1&key=<key>

FAQ:

  • Как получить риплей игры из данных в GetMatchDetails?
    Риплеи можно закачать по данному URL:

    http://replay<cluster>.valve.net/570/<match_id>_<replay_salt>.dem.bz2

    cluster, match_id, replay_salt можно получить из GetMatchDetails.

  • Где можно узнать, что означают hero_id и идентификаторы предметов?
    Эти данные можно получить из файлов, которые есть в папке с DotA 2:
    Для героев:
    Steam/steamapps/common/dota 2 beta/gamedota/scripts/npc/npc_heroes.txt
    Для предметов:
    Steam/steamapps/common/dota 2 beta/gamedota/scripts/npc/items.txt
  • Есть ли API для игр, которые идут сейчас?
    Еще нет.
  • Есть ли ограничения на количество запросов к API.
    Вообще-то нет, то можно получить 503-ю ошибку, если сервер перегружен. В таком случае лучше подождать 30 секунд. И хорошо бы, что бы Вы делали один запрос к API в секунду.
16 комментариев
  1. Сергей сказал(а):

    Отличная статья! Спасибо, с помощью нее разобрался, доступно и понятно все описано!!

    А где можно почитать где подключить на сайте возможность регистрации пользователя на сайте через стим?

  2. KronuS сказал(а):

    Сергей, посмотри тут — http://steamcommunity.com/dev/

  3. Сергей сказал(а):

    Да, эту информацию я изучил уже. Организовал возможность регистрации, и теперь столкнулся с проблемой, я не знаю как узнать accoun_id по доте. Делаю такой запрос http://api.steampowered.com/ISteamUserStats/GetUserStatsForGame/v0002/?appid=570&key=мойапи&steamid=стимидигрока.

    Но нужных параметров нет.

  4.  Дмитрий сказал(а):

    Каким образом можно узнать общее кол-во матчей пользователя? Рейтинг MMR?

  5. KronuS сказал(а):

    Дмитрий, кол-во матчей пользователя можно узнать используя запрос GetMatchHistory с параметром account_id. Про MMR не в курсе

  6. Дмитрий сказал(а):

    KronuS, запрос GetMatchHistory выдает только последние несколько матчей, об общем кол-ве там нет никакой информации..

  7. Дмитрий сказал(а):

    Точнее максимальное кол-во матчей там 500.

  8. KronuS сказал(а):

    Других вариантов не знаю.

  9. Дмитрий сказал(а):

    Тогда еще вопрос по GetMatchDetails, пытаюсь получить данные по своему последнему матчу

    https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001/?match_id=1950920776&key=04C5BE0C62FAC322A220D2A7D959C359

    Тут в списке игроков, в поле account_id какие то непонятные значения + account_id 4294967295 встречается несколько раз…

  10. Дмитрий сказал(а):

    Разобрался
    4294967295 — означает, что у пользователя скрытый аккаунт.
    И поле account_id здесь это 32 битный SteamID

  11. Роберт сказал(а):

    Не подскажете доступна ли уже инфорацию и live матчах сейчас?

  12. KronuS сказал(а):

    Роберт, это проверяется одним запросом. См. по ссылке http://dev.dota2.com/showthread.php?t=58317 — GetLiveLeagueGames

  13. Роберт сказал(а):

    Это я вычитал, но информация, к сожалению, очень скудна. Интересует более подробная статистика. Не подскажете возможно ли получить, допустим, текущие нетворсы7

  14. KronuS сказал(а):

    Роберт, эти данные доступны по запросу https://api.steampowered.com/IDOTA2Match_570/GetLiveLeagueGames/v0001/?key=************ (тут подставить свой ключ). Выдаст информацию по всем играм, которые сейчас идут в каких-либо официальных турнирах.
    TrackDota работает на основе этого API-запроса.

  15. Илья сказал(а):

    Есть ли API для игр, которые идут сейчас?
    Еще нет.

    По идее, уже есть. Но не могу найти 🙁

Оставить комментарий

Top ↑ | Main page | Back