- Saved searches
- Use saved searches to filter your results more quickly
- License
- qstart-soft/steam-api
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Полное руководство по Steam Web API
- Получаем информацию о пользователе через Steam Web API
- Получаем информацию о пользователе и его играх через Steam Web API
- Получаем информацию об играх через Steam Web API
- Saved searches
- Use saved searches to filter your results more quickly
- License
- steamwebapi/steam-web-api-php
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
PHP library for working with Steam Web API
License
qstart-soft/steam-api
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
PHP library for working with Steam Web API
Qstart Steam Api library contains all the necessary set of methods for requesting Steam Web API
$ composer require qstart-soft/steam-api
There are two ways to submit a request.
- Using a PSR-18 client instance
- On your own using your favorite library to send HTTP requests
First of all, we need to define the method for the request and create an instance of the method.
Each method for the api in the library is a class with properties-arguments.
Let’s send a request using the PSR-18 client:
use Qstart\SteamApi\SteamApiKey; use Qstart\SteamApi\SteamApi; use Qstart\SteamApi\Method\SteamApiGetOwnedGamesV1Method; /** @var Psr\Http\Client\ClientInterface $client */ $key = new SteamApiKey('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); $steamApi = new SteamApi($key, $client); $method = new SteamApiGetOwnedGamesV1Method(); $method ->setSteamId(76561198072113884) ->setIncludeAppInfo(true) ->setIncludePlayedFreeGames(true) ->setAppIdsFilter([552990]); /** @var \Psr\Http\Message\ResponseInterface $response */ $response = $steamApi->send($method); // Json response from API $json = $response->getBody()->getContents(); $data = json_encode($json, true);
Now consider the option with self-sending, without using PHP Standards Recommendations (PSR)
use Qstart\SteamApi\SteamApiKey; use Qstart\SteamApi\SteamApiRequest; use Qstart\SteamApi\Method\SteamApiGetOwnedGamesV1Method; $key = new SteamApiKey('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); $method = new SteamApiGetOwnedGamesV1Method(); $method ->setSteamId(76561198072113884) ->setIncludeAppInfo(true) ->setIncludePlayedFreeGames(true) ->setAppIdsFilter([552990]); $request = new SteamApiRequest($method, $key); $link = $request->getUri(); $arguments = $request->getPreparedArguments(); $psr7Request = $request->getPsr7Request(); // Further, for example, if you want to get a link for a get request $uri = $link . '?' . http_build_query($arguments);
In order to change the format of the response, you must call the setter of the method instance
use Qstart\SteamApi\SteamApiFormats; use Qstart\SteamApi\Method\SteamApiGetOwnedGamesV1Method; $method = new SteamApiGetOwnedGamesV1Method(); $method->setFormat(SteamApiFormats::VDF);
Полное руководство по Steam Web API
Если на вашем сайте есть авторизация через Steam или ваш сайт связан с БД игрового сервера, вам может понадобиться получить статус, никнейм, аватарку игрока или другие сведения. А может быть вы даже хотите выгружать публикации разработчиков игр прямо из Steam себе на сайт? В этой статье я покажу, как использовать все доступные на момент написания статьи методы Steam Web API.
Для начала вам необходимо получить API ключ. Вы можете сделать это здесь.
Далее в вашем скрипте PHP объявим константу с полученным API ключом:
define('STEAM_API_KEY', 'ваш ключ');
Получаем информацию о пользователе через Steam Web API
Для использования методов, вам потребуется SteamID 64 пользователя. Если в вашей БД SteamID хранятся в другом формате, вы можете конвертировать их, об этом я рассказал в этой статье.
Получаем основную информацию:
$sid64 = 76561198210303223; $res = file_get_contents("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".STEAM_API_KEY."&steamids=$sid64"); $res = json_decode($res, true)['response']['players'][0]; $nick = $res['personaname']; $profile = $res['profileurl']; $avatar = $res['avatarfull']; // 184x184 //$avatar = $res['avatarmedium']; // 64x64 //$avatar = $res['avatar']; // 32x32 $status = $res['personastate']; // 0 - не в сети, 1 - в сети, 2 - занят, 3 - нет дома, 4 - спит, 5 - ищет с кем обменяться, 6 - ищет с кем поиграть $visibility = $res['communityvisibilitystate']; // 3 - открытый профиль $logoff = date('d.m.Y H:i', $res['lastlogoff']); // был онлайн $comments = $res['commentpermission']; // 1 - публичные комментарии разрешены, 0 - нет
Эти данные можно получить для всех пользователей, они являются публичными. Обратите внимание на переменную $visibility , если вы хотите получить больше данных. Если она равна 3, значит профиль открытый и вы сможете получить некоторые приватные данные, иначе приватные данные могут быть не видны. Они могут быть видны, если владелец API ключа находится в друзьях у пользователя с приватностью “только для друзей”. В любом случае, приватные параметры лучше проверять на существование, прежде чем к ним обращаться и в примерах ниже я буду использовать для этого тернарный оператор ?? .
Что можно получить из приватных данных в открытых профилях:
$name = $res['realname'] ?? null; $created = date('d.m.Y H:i', $res['timecreated']); $group = $res['primaryclanid'] ?? null; // id основной группы в профиле $game = $res['gameid'] ?? null; // id игры, если пользователь в игре $game_server = $res['gameserverip'] ?? null; // ip и порт сервера для доступных онлайн игр, если пользователь в игре, иначе значение будет 0.0.0.0 $game_extra = $res['gameextrainfo'] ?? null; // название игры, если пользователь в игре $country = $res['loccountrycode'] ?? null; // ISO-код страны пользователя, если указан $state = $res['locstatecode'] ?? null; // код штата пользователя, если указан $city_id = $res['loccityid'] ?? null; // код города пользователя, если указан (внутренняя нумерация Steam)
Используя полученные переменные кода страны, штата и города пользователя, вы можете получить название города следующим образом:
Получаем список друзей:
Это можно сделать только если у пользователя открытый профиль.
$sid64 = 76561198210303223; $res = file_get_contents("http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=".STEAM_API_KEY."&steamid=$sid64&relationship=friend"); $res = json_decode($res, true)['friendslist']['friends']; foreach ($res as $f) < echo $f['steamid'].PHP_EOL; // SteamID 64 echo date('d.m.Y H:i', $f['friend_since']).PHP_EOL; // дата начала дружбы >
Далее мы рассмотрим методы, связанные не только с пользователем, но и с его играми.
Получаем информацию о пользователе и его играх через Steam Web API
Получаем список достижений пользователя по конкретной игре:
$sid64 = 76561198210303223; $app_id = 227300; $res = file_get_contents("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?key=".STEAM_API_KEY."&steamid=$sid64&appid=$app_id&l=russian"); $res = json_decode($res, true)['playerstats']; $game = $res['gameName']; // название игры foreach ($res['achievements'] as $a) < echo $a['apiname'].PHP_EOL; // техническое название echo $a['achieved'].PHP_EOL; // 1 - получено, 0 - нет echo date('d.m.Y H:i', $a['unlocktime']).PHP_EOL; // дата получения, только если achieved = 1 echo $a['name'].PHP_EOL; // локализованное название echo $a['description'].PHP_EOL; // локализованное описание >
Метод выдает весь список достижений в игре, показывая какие получены пользователем, а какие нет. Локализованное название и описание есть только при передаче параметра l=russian в запросе, но названия и описания могут быть на английском, если не имеют русской локализации, сверяйтесь с клиентом Steam.
Есть еще метод GetUserStatsForGame, он показывает только полученные достижения, а также некоторую статистику по игре. Но там нет названий достижений (только в виде apiname), а для статистики используются тоже только технические названия. Применения этому методу я пока не нашел, поэтому писать о нем не буду.
Получить список всех игр пользователя:
$sid64 = 76561198210303223; $res = file_get_contents("http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=".STEAM_API_KEY."&steamid=$sid64&include_appinfo=1&include_played_free_games=1"); $res = json_decode($res, true)['response']; $game = $res['game_count']; // Кол-во игр на аккаунте foreach ($res['games'] as $g) < echo $g['appid'].PHP_EOL; // ID игры echo $g['name'].PHP_EOL; // название игры echo isset($g['playtime_2weeks']) ? $g['playtime_2weeks'].PHP_EOL : ''; // кол-во минут игры за последние 2 недели, если есть echo $g['playtime_forever'].PHP_EOL; // общее кол-во минут игры за все время (учет ведется с начала 2009) echo "http://media.steampowered.com/steamcommunity/public/images/apps/".$g['appid']."/". $g['img_icon_url'].".jpg".PHP_EOL; // ссылка на иконку игры if (isset($g['has_community_visible_stats'])) < echo "http://steamcommunity.com/profiles/$sid64/stats/".$g['appid'].PHP_EOL; ; // страница со статистикой пользователя для этой игры >echo $g['playtime_windows_forever'].PHP_EOL; // кол-во минут игры на платформе Windows echo $g['playtime_mac_forever'].PHP_EOL; // кол-во минут игры на платформе MacOS echo $g['playtime_linux_forever'].PHP_EOL; // кол-во минут игры на платформе Linux echo date('d.m.Y H:i', $g['rtime_last_played']).PHP_EOL; // дата последней игры >
Метод работает только для общедоступных профилей. Вы можете по желанию убрать из запроса include_played_free_games=1 , тогда в результатах не будет отображаться статистика бесплатных игр. Если же убрать из запроса include_appinfo=1 , то в результатах не будет названий игр и хэша иконок.
Получаем список игр, сыгранных пользователем за последние 2 недели:
$sid64 = 76561198210303223; $res = file_get_contents("http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=".STEAM_API_KEY."&steamid=$sid64"); $res = json_decode($res, true)['response']; $game = $res['total_count']; // кол-во игр за последние 2 недели foreach ($res['games'] as $g) < echo $g['appid'].PHP_EOL; // ID игры echo $g['name'].PHP_EOL; // название игры echo $g['playtime_2weeks'].PHP_EOL; // кол-во минут игры за последние 2 недели echo $g['playtime_forever'].PHP_EOL; // общее кол-во минут игры за все время (учет ведется с начала 2009) echo "http://media.steampowered.com/steamcommunity/public/images/apps/".$g['appid']."/". $g['img_icon_url'].".jpg".PHP_EOL; // ссылка на иконку игры echo $g['playtime_windows_forever'].PHP_EOL; // кол-во минут игры на платформе Windows echo $g['playtime_mac_forever'].PHP_EOL; // кол-во минут игры на платформе MacOS echo $g['playtime_linux_forever'].PHP_EOL; // кол-во минут игры на платформе Linux >
Метод работает только для общедоступных профилей. По желанию, вы можете добавить в запрос параметр count=число , чтобы ограничить кол-во игр в результатах.
Теперь рассмотрим методы, связанные только с играми, без привязки к пользователям.
Получаем информацию об играх через Steam Web API
Получаем новости игры или приложения:
$app_id = 227300; $res = file_get_contents("http://api.steampowered.com/ISteamNews/GetNewsForApp/v0002/?appid=$app_id&count=5"); $res = json_decode($res, true)['appnews']; foreach ($res['newsitems'] as $n) < echo $n['gid'].PHP_EOL; // id публикации echo $n['url'].PHP_EOL; // ссылка на публикацию в Steam echo $n['title'].PHP_EOL; // заголовок echo $n['author'].PHP_EOL; // автор echo $n['contents'].PHP_EOL; // контент echo date('d.m.Y H:i', $n['date']).PHP_EOL; // дата публикации >
В указанном примере будут выведены 5 последний публикаций приложения. Вы можете убрать параметр count=5 из запроса или изменить под свои нужды. Также можно ограничивать длину контента каждой публикации, для этого передайте в запросе maxlength=число
Получаем глобальную статистику достижений по игре:
$app_id = 227300; $res = file_get_contents("http://api.steampowered.com/ISteamUserStats/GetGlobalAchievementPercentagesForApp/v0002/?gameid=$app_id"); $res = json_decode($res, true)['achievementpercentages']; foreach ($res['achievements'] as $a) < echo $a['name'].PHP_EOL; // техническое имя достижения echo '~'.round($a['percent']).'%'.PHP_EOL; // процент игроков, получивших достижение >
На этом у меня все, надеюсь, что статья была для вас полезной.
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Steam PHP API for Inventory, Profile and SteamIds
License
steamwebapi/steam-web-api-php
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Simple Steam Web API for Inventory, Profile and SteamIds
This Steamapi using www.steamwebapi.com and you need a Free API Key from there.
Get a list of all inventory information from a SteamId without Steam Blocks.
Inventory and total price of the inventory
Get a list of all inventory information from a SteamId blocking and calculate the total price of the inventory.
Get a list of all profile information without Steam Blocks.
Get a list of all Steamids from a ID string.
composer require steamwebapi/php-steam-api
$steamWebApi = new SteamWebApi('YOUR API KEY'); // Get Inventory $steamWebApi->getInventory('STEAMID'); // Get Inventory And Worth $steamWebApi->getInventoryWorth('STEAMID'); // Get Profile (Username or Url --- OR --- SteamId) -- choice one of them, only one is required, if you dont have username just send null $steamWebApi->getProfile('Username or Url', 'SteamId'); // Convert SteamId $steamWebApi->getSteamId('STEAMID');
You can help me to improve this package
If you want to add new functions, just create a pull request.
About
Steam PHP API for Inventory, Profile and SteamIds