- PVSM.RU - https://www.pvsm.ru -

Сервис цифровой дистрибуции Steam от компании Valve становится всё более популярным среди игроков. По состоянию на январь 2013, через Steam распространяется более трёх тысяч товаров, на которые действуют ежедневные, срединедельные и скидки на выходные дни, а количество зарегистрированных аккаунтов превысило 60 миллионов.
В настоящее время, в рунете очень мало информации об использовании Steam Api (или же Steam Web Api). В данном топике я расскажу о том, как получать нужную вам информацию из сообщества Steam для интеграции её в свои сайты, блоги или же просто получить информацию о пользователе, не заходя в Steam.
Начнем с главного. После несложных действий, я создал одну php страницу, которая, по запросу имени пользователя, либо SteamID или SteamcommunityID, выводит множество подробной информации о профиле Steam. Информации там намного больше, чем предоставляют аналогичные англоязычные сервисы.
Посмотреть работу страницы можно здесь [1]. При желании, можно существенно доработать сервис, например добавить возможность определить, какие игры есть на аккаунте конкретного пользователя, и сколько они стоят (как когда-то делал steamcalculator [2]).
Кому интересен исходный код моей страницы, алгоритм определения типа вводимых данных или алгоритм перебора одинаковых xml параметров, можете написать мне тут, или в контактной информации на той странице.
Открываем капот Steam
Информацию о пользователе Steam можно получить несколькими способами. Наиболее популярные из них, это:
— использовать именно Steam Web Api, который предлагают они нам сами (но предоставленной информации там увы не много)
— получать и обрабатывать данные сообщества напрямую, в формате xml.
— получать и обрабатывать данные сообщества напрямую, в формате json.
Первый способ мне не особо интересен, я пользовался сразу двумя оставшимися.
XML
Получить информацию о пользователе довольно просто. Достаточно лишь ввести в адресную строку браузера запрос в виде:
steamcommunity.com/profiles/ [3]*SteamID*/?xml=1
Например:
steamcommunity.com/profiles/76561198036370701/?xml=1 [4]
(к слову, если пользователь имеет CustomURL, то адрес ссылки изменится с ".../profiles/*SteamID*/..." на ".../id/*CustomURL*/...")
Эту страницу можно ловить и обрабатывать при помощи cURL или (что для меня проще) функции simplexml_load_file();, например:
$slf = "http://steamcommunity.com/profiles/76561198036370701/?xml=1";
$url = simplexml_load_file($slf);
Теперь, чтобы вывести, например, содержимое тегов < steamID>...< /steamID>, в любом месте вашей страницы, можно использовать следующий код:
<?php echo $url->steamID;?>
JSON
Прежде всего вам понадобится apikey. Зарегистрировать его можно здесь [5].
Получить суммарную информацию о пользователе Steam можно по ссылке вида:
api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key= [6]*apikey*&steamids=*SteamID*
Например:
api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=38A3BEAE3EFA726E4438207D08CB0EC7&steamids=76561198036370701 [7]
Получать и обрабатывать эти данные можно командой file_get_contents, а в последствии сконвертировать всё в массив примерно вот таким способом:
$urljson = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=*apikey*&steamids=*steamid*");
$data = (array) json_decode($urljson)->response->players[0];
Например:
$urljson = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=38A3BEAE3EFA726E4438207D08CB0EC7&steamids=76561198036370701");
$data = (array) json_decode($urljson)->response->players[0];
А выводить, например содержимое блока profileurl строчкой кода:
<?php echo $data['profileurl'];?>
Подводим итог
Методы получения информации о пользователе Steam не ограничиваются теми, что я привел. Те ссылки, которыми я получал данные используются только для получения суммарной (общей) информации. Отдельно можно получать список игр пользователя, список друзей, список групп, предметов инвентаря и мастерской и многое другое.
На основе полученных данных можно также сделать сервис генерации баннеров, юзербаров, профайлов для форумов и блогов, по аналогии с сервисом steamprofile [8].
Из недостатков работы сервиса можно выделить то, что в пик нагруженности серверов Steam, для получения информации о пользователе время запроса данных может колебаться от 0,1 до 12 секунд, а также часто втречается ошибка 503 (сервис недоступен), приходится отправлять запрос заново. Как вариант решения проблемы — не отправлять запрос чаще, чем раз в 10 секунд. Если у вас есть другие способы решения проблемы, пишите.
Некоторые ссылки, которые помогут в освоении Steam Web Api:
steamcommunity.com/dev?l=russian [9]
partner.steamgames.com/documentation/webapi [10]
developer.valvesoftware.com/wiki/Steam_Web_API [11]
steamcommunityapi.googlecode.com/svn-history/r5/trunk/ [12]
Автор: Heavenanvil
Источник [13]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/29090
Ссылки в тексте:
[1] здесь: http://heavenanvil.ru/steam.php
[2] steamcalculator: http://steamcalculator.com/
[3] steamcommunity.com/profiles/: http://steamcommunity.com/profiles/
[4] steamcommunity.com/profiles/76561198036370701/?xml=1: http://steamcommunity.com/profiles/76561198036370701/?xml=1
[5] здесь: http://steamcommunity.com/dev/apikey
[6] api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=: http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=
[7] api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=38A3BEAE3EFA726E4438207D08CB0EC7&steamids=76561198036370701: http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=38A3BEAE3EFA726E4438207D08CB0EC7&steamids=76561198036370701
[8] steamprofile: http://steamprofile.com/
[9] steamcommunity.com/dev?l=russian: http://steamcommunity.com/dev?l=russian
[10] partner.steamgames.com/documentation/webapi: https://partner.steamgames.com/documentation/webapi
[11] developer.valvesoftware.com/wiki/Steam_Web_API: https://developer.valvesoftware.com/wiki/Steam_Web_API
[12] steamcommunityapi.googlecode.com/svn-history/r5/trunk/: http://steamcommunityapi.googlecode.com/svn-history/r5/trunk/
[13] Источник: http://habrahabr.ru/post/172223/
Нажмите здесь для печати.