ユーザーのSteamインベントリにアクセスする必要があるWebサイトを作成しています。 Team Fortress 2インベントリ、Dota 2、CS:S、CS:GO、Portal 2を取得するAPIを見つけました。しかし、Steamインベントリを取得するためのAPIは見つかりませんでした。
ユーザーのSteamインベントリにアクセスできますか?
2016年12月の時点で、インベントリを取得するための新しいエンドポイントがあります。以下にリストされている古いエンドポイントはまだ動作します(今のところ)。どちらも非常にレート制限されているようです。
新しいインベントリパスは次のとおりです。
http://steamcommunity.com/inventory/<PROFILEID>/440/2?l=english&count=5000
この新しいパスでは、l
はデータを受信する言語であり、count
は一度に受信するアイテムの数です。最大は5000です。
この新しいエンドポイントでページ分割することもできます。
http://steamcommunity.com/inventory/<PROFILEID>/440/2?l=english&count=5000&start_assetid=468336866
これにより、assetid 468336866
で始まる次の5000アイテムが取得されます。
エンドポイントは、次の構造を持つ大きなJSONオブジェクトを返します。
{
'assets': <list>,
'descriptions': <list>,
'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
を介してリンクされます。
ターゲットのプロファイル権限が適切に設定されている場合、いくつかの限られた情報を取得できます。
ベータ(および適切な権限が設定されている場合はギフト)インベントリのこれら2つのリンクのいずれかを使用して、結果のjson
ファイルを表示できます。
http://steamcommunity.com/id/<CUSTOMURL>/inventory/json/753/1
http://steamcommunity.com/profiles/<PROFILEID>/inventory/json/753/1
CUSTOMURL
は、プレーヤーが使用するために選択したユーザーフレンドリ名です。これはプレイヤーがいつでも変更できます。 Webページを書いている場合、この情報を取得する方法を知っていると思いますか? PROFILEID
は、アカウントを作成したときにSteamからプレイヤーに付与される64ビットIDです。これは変更できません。OpenID実装を使用してログインすると、Steamによって返されます。
これらのURLを使用する場合、いくつかの可能な応答があります。 1つ目は、ユーザーのプロファイルがプライベートに設定されている場合です。
{"success":false,"Error":"This profile is private."}
2番目は、インベントリ内の「スタッフ」のリストです
{
"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があなたのIDのもので、Steamにログインしている場合、Gift
としてリストされているアイテムも見ることができます。それ以外の場合、これらはデフォルトで非表示になります。
これは公式のAPIではないため、この特定のスキーマに関するドキュメントはあまりありません。ただし、rgInventory
のアイテムはreDescriptions
によってclassid
のアイテムにリンクされているようです。パーサーの作成は、読者の演習として残されています。
これらはベータアクセスを示しています。
トレーディングカード情報を探している場合は、上記のURLの1
を6
に変更します
http://steamcommunity.com/id/<CUSTOMURL>/inventory/json/753/6
http://steamcommunity.com/profiles/<PROFILEID>/inventory/json/753/6
これらのスキーマレイアウトは同じように見えます。