Получение чей-то инвентаря Steam

Я делаю веб-сайт, который должен получить доступ к инвентаризации Steam для пользователя. Я нашел API, чтобы получить инвентарь Team Fortress 2, Dota 2, CS: S, CS: GO и Portal 2. Но я не нашел API для получения инвентаря Steam.

Можно ли получить доступ к инвентарю Steam?

    Новая конечная точка

    Существует новая конечная точка для сбора запасов по состоянию на декабрь 2016 года. Старая, перечисленная ниже, все еще работает (на данный момент). Оба, похоже, очень сильно связаны друг с другом.

    Новый путь инвентаризации:

    http://steamcommunity.com/inventory//440/2?l=english&count=5000 

    С помощью этого нового пути l – это язык, на который вы хотите получить данные, и count – это количество элементов, которые нужно получить обратно за раз. Максимальное значение – 5000.

    Вы также можете разбивать страницы на эту новую конечную точку:

     http://steamcommunity.com/inventory//440/2?l=english&count=5000&start_assetid=468336866 

    Это вытащит следующие 5000 предметов, начиная с ресурса 468336866 .

    Конечная точка возвращает большой json-объект со следующей структурой:

     { 'assets': , 'descriptions': , 'total_inventory_count': integer, 'success': 1/0, 'rwgran': integer } 

    Я не совсем уверен, что такое rwgran .

    Ключ assets возвращает данные, которые выглядят следующим образом:

     [{'amount': '1', 'appid': '440', 'assetid': '4985815666', 'classid': '134', 'contextid': '2', 'instanceid': '0'}, {'amount': '1', 'appid': '440', 'assetid': '4985815941', 'classid': '22989188', 'contextid': '2', 'instanceid': '0'}, ... ] 

    Ключ descriptions содержит такие записи. Обратите внимание, что это содержит много информации, чем старая конечная точка.

     [{'actions': [{'link': 'http:\\/\\/wiki.teamfortress.com\\/scripts\\/itemredirect.php?id=241&lang=en_US', 'name': 'Item Wiki Page...'}], 'appid': 440, 'background_color': '3C352E', 'classid': '134', 'commodity': 0, 'currency': 0, 'descriptions': [{'type': 'text', 'value': 'Is an enemy player questioning your skills, personal hygiene, and\\/or ancestry?\nUse these stylish firearms to challenge them to a duel!\nSee the Mann Co. Catalog for full details.'}, {'type': 'text', 'value': ' '}, {'color': '00a000', 'type': 'text', 'value': 'This is a limited use item. Uses: 5'}], 'icon_url': 'fWFc82js0fmoRAP-qOIPu5THSWqfSmTELLqcUywGkijVjZULUrsm1j-9xgECbwgfYh_3vTRKhs_ZAfOeD-VOyo4z4clTizJqwQcpYOHnNDFmcweRVqQPCqVq91C-WCM26pFnB4PjofUWJ1uAGDnHsA', 'icon_url_large': 'fWFc82js0fmoRAP-qOIPu5THSWqfSmTELLqcUywGkijVjZULUrsm1j-9xgECbwgfYh_3vTRKhs_ZAfOeD-VOyo4z4clTizJqwQcpYOHnNDFmcweRVqQPCqVq91C-WCM26pFnB4PjofUWJ1uAGDnHsA', 'instanceid': '0', 'market_hash_name': 'Dueling Mini-Game', 'market_marketable_restriction': 0, 'market_name': 'Dueling Mini-Game', 'market_tradable_restriction': 7, 'marketable': 0, 'name': 'Dueling Mini-Game', 'name_color': '7D6D00', 'tags': [{'category': 'Quality', 'color': '7D6D00', 'internal_name': 'Unique', 'localized_category_name': 'Quality', 'localized_tag_name': 'Unique'}, {'category': 'Type', 'internal_name': 'TF_UsableItem', 'localized_category_name': 'Type', 'localized_tag_name': 'Usable Item'}, {'category': 'Class', 'internal_name': 'Scout', 'localized_category_name': 'Class', 'localized_tag_name': 'Scout'}, {'category': 'Class', 'internal_name': 'Sniper', 'localized_category_name': 'Class', 'localized_tag_name': 'Sniper'}, {'category': 'Class', 'internal_name': 'Soldier', 'localized_category_name': 'Class', 'localized_tag_name': 'Soldier'}, {'category': 'Class', 'internal_name': 'Demoman', 'localized_category_name': 'Class', 'localized_tag_name': 'Demoman'}, {'category': 'Class', 'internal_name': 'Medic', 'localized_category_name': 'Class', 'localized_tag_name': 'Medic'}, {'category': 'Class', 'internal_name': 'Heavy', 'localized_category_name': 'Class', 'localized_tag_name': 'Heavy'}, {'category': 'Class', 'internal_name': 'Pyro', 'localized_category_name': 'Class', 'localized_tag_name': 'Pyro'}, {'category': 'Class', 'internal_name': 'Spy', 'localized_category_name': 'Class', 'localized_tag_name': 'Spy'}, {'category': 'Class', 'internal_name': 'Engineer', 'localized_category_name': 'Class', 'localized_tag_name': 'Engineer'}], 'tradable': 1, 'type': 'Level 5 Usable Item'}, ... ] 

    Как и в случае с старым методом, assets и descriptions связаны через classid в обоих.


    Старая конечная точка

    Вы можете получить ограниченную информацию, если у целевого объекта установлены соответствующие разрешения профиля.

    Вы можете просмотреть полученные json файлы, используя одну из этих двух ссылок для бета-версии (и подарок, если установлены соответствующие разрешения) инвентаризации

    http://steamcommunity.com/id//inventory/json/753/1 http://steamcommunity.com/profiles//inventory/json/753/1

    CUSTOMURL – это удобное для пользователя имя, которое игрок выбрал для использования. Это может быть изменено игроком в любое время. Если вы пишете веб-страницу, я предполагаю, что вы знаете, как получить эту информацию, правильно? PROFILEID – это идентификатор 64Bit, который игрок получает Steam при создании учетной записи. Это не изменчиво, и оно возвращается Steam при входе в систему с использованием реализации OpenID.

    При использовании этих URL-адресов существует несколько возможных ответов. Во-первых, если пользователь установил свой профиль в приватный.

    {"success":false,"Error":"This profile is private."}

    Второй – это список «вещей» в инвентаре

     { "success":true, "rgInventory": { "1586670077416875609": { "id":"1586670077416875609", "classid":"149742033", "instanceid":"0", "amount":"1", "pos":1 }, "1586670077416875905": { "id":"1586670077416875905", "classid":"149742033", "instanceid":"0", "amount":"1", "pos":2 }, "1586670077416877092": { "id":"1586670077416877092", "classid":"149742033", "instanceid":"0", "amount":"1", "pos":3 } }, "rgCurrency":[], "rgDescriptions": { "149742033_0": { "appid":"753", "classid":"149742033", "instanceid":"0", "icon_url":"ZyjGwQD4ogROtSm7KvtdP99kDHBEiKxKm3Gg7pMaBJyiPu4iS_PzF6QhOUdOwk-m0WhXYQ7X8AbNL6Hz1VxOnq4-8iBC5MlBuXMuElaaCrHQLww9T5S1Ecoqo_PYWg==", "icon_url_large":"a6FEz5nbBlvu8bGd1oDggdPtjn7dqwgVOzU4yG9huSKut2ws0tBXSARloWGyufIY3eHVb5f0VFltaznVKSfzK6amZz7FjFhcTTm6Maz860eOrMo937A=", "icon_drag_url":"", "name":"Steam Trading Card Beta", "market_name":"", "name_color":"", "background_color":"", "type":"Gift", "tradable":1, "marketable":0, "descriptions":[ {"value":"Steam Trading Card Beta Access - Extra Copy"}, {"value":"Grants early access to the Steam Trading Cards beta, game badges, and the new profile. Join the Steam Trading Cards Group and post your feedback in the Discussions area. Select \u201cAdd to my game library\u201d to activate."} ], "actions":[ {"name":"View in store","link":"http:\/\/steamcommunity.com\/tradingcards"} ] } } } 

    Если URL-адрес для ВАШЕГО идентификатора и вы вошли в Steam, вы также можете увидеть элементы, которые перечислены как « Gift . В противном случае они скрыты по умолчанию.

    Поскольку это не официальный API, документации по этой конкретной схеме недостаточно. Однако, похоже, что элементы в rgInventory связаны с элементами в reDescriptions classid . Написание парсера остается как упражнение для читателя.

    Они показывают бета-доступ.

    Если вы ищете информацию о торговой карте, измените значение 1 в приведенных выше URL на 6

    http://steamcommunity.com/id//inventory/json/753/6 http://steamcommunity.com/profiles//inventory/json/753/6

    Схемы схемы выглядят одинаково для них.

    Чтобы точно ответить Энди, схема:

     http://steamcommunity.com/profiles//inventory/json// 

    Идентификатор приложения определяет игру / приложение, к которому относится этот инвентарь: вот список .

    Идентификатор контекста фильтрует элементы, он варьируется от игры к игре.

    Другое дело: возвращенные элементы уникально идентифицируются парой classid-instanceid ( source ), поэтому, когда вы связываете их с их описанием, вы должны учитывать их.

    Давайте будем гением компьютера.