Отображение инвентаря steam с помощью php и api
В данный момент я получаю ответ json, когда я запрашиваю http://api.steampowered.com/IEconItems_{appid}/GetPlayerItems/v0001/?key={apikey}&steamid={steamid}&format=json
Проблема, однако, в том, что я не знаю, что делать с этим ответом без какой-либо дополнительной информации, которую я нигде не могу найти. Часть ответа, который я получаю, когда смотрю на свой собственный инвентарь cs:go:
{
"id": 235322185,
"original_id": 190991409,
"defindex": 19,
"level": 1,
"quality": 4,
"inventory": 70,
"quantity": 1,
"rarity": 4,
"attributes": [
{
"defindex": 6,
"value": 1130627072,
"float_value": 228
},
{
"defindex": 7,
"value": 1148436480,
"float_value": 975
},
{
"defindex": 8,
"value": 1031063904,
"float_value": 0.059762358665466309
},
{
"defindex": 147,
"value": "models\/weapons\/stattrack.mdl"
},
{
"defindex": 145,
"value": "models\/weapons\/w_smg_p90_mag.mdl"
}
]
},
{
"id": 236527226,
"original_id": 236502674,
"defindex": 27,
"level": 1,
"quality": 9,
"inventory": 82,
"quantity": 1,
"rarity": 3,
"attributes": [
{
"defindex": 6,
"value": 1133608960,
"float_value": 291
},
{
"defindex": 7,
"value": 1142240880,
"float_value": 596.8505859375
},
{
"defindex": 8,
"value": 994750258,
"float_value": 0.0030927178449928761
},
{
"defindex": 80,
"value": 0,
"float_value": 0
},
{
"defindex": 81,
"value": 0,
"float_value": 0
},
{
"defindex": 147,
"value": "models\/weapons\/stattrack.mdl"
},
{
"defindex": 145,
"value": "models\/weapons\/w_shot_mag7_mag.mdl"
}
]
},
{
"id": 236529059,
"original_id": 136971214,
"defindex": 35,
"level": 1,
"quality": 4,
"inventory": 77,
"quantity": 1,
"rarity": 2,
"attributes": [
{
"defindex": 6,
"value": 1077936128,
"float_value": 3
},
{
"defindex": 7,
"value": 1141712676,
"float_value": 564.611572265625
},
{
"defindex": 8,
"value": 1031160533,
"float_value": 0.060122329741716385
},
{
"defindex": 147,
"value": "models\/weapons\/stattrack.mdl"
}
]
}
Идентификатор соответствует оружию, а редкость и количество также имеют смысл. Но я не могу ожидать, что вручную найду все идентификаторы каждого оружия в каждом штате, верно? Мне не хватает другого API, который я мог бы использовать, чтобы узнать, какое оружие соответствует какому идентификатору?
Ps: Извините за плохой английский
3 answers
Вы вызовете GetSchema, чтобы определить, какие это элементы. Вы сравните значения DefIndex со значениями, возвращенными GetSchema
Ваш рабочий процесс будет выглядеть следующим образом:
- Вызовите
GetSchema
и сохраните результатresult['items']
в каком-нибудь месте, чтобы посмотреть позже - Позвоните по текущему вызову и проанализируйте элементы. Для каждого элемента найдите результат в сохраненном значении сверху
-
GetSchema
также содержит редкости и другие значения, которые могут вам понадобиться (т. Е. те атрибуты)
Попробуйте разобрать строки JSON в массив. Поскольку этот ответ не является полностью допустимой строкой JSON, попробуйте вставить ее в новый массив для анализа допустимой строки JSON.
Например: {"main_container": [ --> ВАШ ОПУБЛИКОВАННЫЙ КОД ]}
<?php
$jsonResponse = '{"main_container": [
{
"id": 235322185,
"original_id": 190991409,
"defindex": 19,
"level": 1,
"quality": 4,
"inventory": 70,
"quantity": 1,
"rarity": 4,
"attributes": [
{
"defindex": 6,
"value": 1130627072,
"float_value": 228
},
{
"defindex": 7,
"value": 1148436480,
"float_value": 975
},
{
"defindex": 8,
"value": 1031063904,
"float_value": 0.059762358665466309
},
{
"defindex": 147,
"value": "models\/weapons\/stattrack.mdl"
},
{
"defindex": 145,
"value": "models\/weapons\/w_smg_p90_mag.mdl"
}
]
},
{
"id": 236527226,
"original_id": 236502674,
"defindex": 27,
"level": 1,
"quality": 9,
"inventory": 82,
"quantity": 1,
"rarity": 3,
"attributes": [
{
"defindex": 6,
"value": 1133608960,
"float_value": 291
},
{
"defindex": 7,
"value": 1142240880,
"float_value": 596.8505859375
},
{
"defindex": 8,
"value": 994750258,
"float_value": 0.0030927178449928761
},
{
"defindex": 80,
"value": 0,
"float_value": 0
},
{
"defindex": 81,
"value": 0,
"float_value": 0
},
{
"defindex": 147,
"value": "models\/weapons\/stattrack.mdl"
},
{
"defindex": 145,
"value": "models\/weapons\/w_shot_mag7_mag.mdl"
}
]
},
{
"id": 236529059,
"original_id": 136971214,
"defindex": 35,
"level": 1,
"quality": 4,
"inventory": 77,
"quantity": 1,
"rarity": 2,
"attributes": [
{
"defindex": 6,
"value": 1077936128,
"float_value": 3
},
{
"defindex": 7,
"value": 1141712676,
"float_value": 564.611572265625
},
{
"defindex": 8,
"value": 1031160533,
"float_value": 0.060122329741716385
},
{
"defindex": 147,
"value": "models\/weapons\/stattrack.mdl"
}
]
}
]}
';
$jsonDecodeArray = json_decode($jsonResponse, true);
foreach($jsonDecodeArray as $mainContainerItems){
// LOOP THROUGH ALL ITEM GROUP. IN THIS CASE WE HAVE 3 ITEM GROUPS IN
// $mainContainerItems ARRAY
foreach($mainContainerItems as $inventoryItem){
echo $inventoryItem['id']; // will return for example: 236529059
echo $inventoryItem['original_id']; // will return for example: 136971214
echo $inventoryItem['defindex'];
}
}
?>
В этом случае результат будет представлять собой многомерный массив, в котором вы можете выполнять цикл с несколькими переходами.
Результат таков:
$ Jsondecodearray содержит main_container массив со всеми элементами, где один элемент также является массивом.
$ Инвентарный список содержит один элемент со всеми его свойствами. Как показано ниже.
Array
(
[id] => 236529059
[original_id] => 136971214
[defindex] => 35
[level] => 1
[quality] => 4
[inventory] => 77
[quantity] => 1
[rarity] => 2
[attributes] => Array
(
[0] => Array
(
[defindex] => 6
[value] => 1077936128
[float_value] => 3
)
[1] => Array
(
[defindex] => 7
[value] => 1141712676
[float_value] => 564.61157226562
)
[2] => Array
(
[defindex] => 8
[value] => 1031160533
[float_value] => 0.060122329741716
)
[3] => Array
(
[defindex] => 147
[value] => models/weapons/stattrack.mdl
)
)
)
Сравните значение вашего инвентаря defindex (не атрибуты) с этой схемой.
Http://api.steampowered.com/IEconItems_730/GetSchema/v0002/?key=xxxxx
Например, defindex = 19 - это weapon_p90 в схеме.