Отображение инвентаря 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: Извините за плохой английский

Author: Bananenspin, 2014-04-20

3 answers

Вы вызовете GetSchema, чтобы определить, какие это элементы. Вы сравните значения DefIndex со значениями, возвращенными GetSchema

Ваш рабочий процесс будет выглядеть следующим образом:

  • Вызовите GetSchema и сохраните результат result['items'] в каком-нибудь месте, чтобы посмотреть позже
  • Позвоните по текущему вызову и проанализируйте элементы. Для каждого элемента найдите результат в сохраненном значении сверху
  • GetSchema также содержит редкости и другие значения, которые могут вам понадобиться (т. Е. те атрибуты)
 3
Author: Andy, 2014-04-20 20:47:51

Попробуйте разобрать строки 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
                )

        )

)
 0
Author: Hanryuu, 2014-04-20 20:45:21

Сравните значение вашего инвентаря defindex (не атрибуты) с этой схемой.

Http://api.steampowered.com/IEconItems_730/GetSchema/v0002/?key=xxxxx

Например, defindex = 19 - это weapon_p90 в схеме.

 0
Author: rajeev barde, 2014-04-21 06:08:26