A module for interacting with steam for getting users inventory
Steam has two endpoints:
- https://steamcommunity.com/profiles/STEAM_ID/inventory/json/APP_ID/CONTEXT_Id/ (OLD)
- https://steamcommunity.com/inventory/STEAM_ID/APP_ID/CONTEXT_Id/ (NEW)
You can see their differences in stackoverflow. In this module you can use both of them.
npm install @xfaider/node-steam-inventory
var steamInventoryModule = require('@xfaider/node-steam-inventory');
var steamInventory = new steamInventoryModule.SteamUserInventory(options);
Params:
options[defaultGotOptions]
: default options for got module for all call methods. Default:{}
.
steamInventory.loadAndFormat({
steamId: userSteamId
}).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Load steam inventory from old endpoint
steamInventory.loadFromOldEndPoint(params).then(response => {
console.log(response);
// `got` response`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for request |
params[steamId] |
String|Number | Empty string | User steam id |
params[appId] |
Number | 730 (CSGO App id) |
Steam application id |
params[contextId] |
Number | 2 |
Steam context id |
params[gotOptions] |
Object | {} |
Options for got module |
Load steam inventory from old endpoint and format data
steamInventory.loadFromOldEndPointAndFormat(params).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for method loadFromOldEndPoint |
Load steam inventory from new endpoint
steamInventory.loadFromNewEndPoint(params).then(response => {
console.log(response);
// `got` response`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for request |
params[steamId] |
String|Number | Empty string | User steam id |
params[appId] |
Number | 730 (CSGO App id) |
Steam application id |
params[contextId] |
Number | 2 |
Steam context id |
params[language] |
String | english |
Language for some fields in response |
params[count] |
Number | 5000 (For steam maximum is 5000) |
Limit of items in response |
params[cursor] |
String|Number | null |
Asset id of steam item working as cursor for pagination |
params[gotOptions] |
Object | {} |
Options for got module |
Load steam inventory from new endpoint with all pages fetching.
Because of highly ratelimited steam endpoint , you need to use different IPs, or different proxies for each request (use getGotOptionsPromise
for it)
steamInventory.loadAllDataFromNewEndPoint(params, getGotOptionsPromise).then(responses => {
console.log(responses);
// array of `got` responses
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for request |
params[steamId] |
String|Number | Empty string | User steam id |
params[appId] |
Number | 730 (CSGO App id) |
Steam application id |
params[contextId] |
Number | 2 |
Steam context id |
params[language] |
String | english |
Language for some fields in response |
params[perPage] |
Number | 5000 (For steam maximum is 5000) |
Limit of items per response |
params[gotOptions] |
Object | {} |
Options for got module |
getGotOptionsPromise |
Function | return Promise.resolve(params.gotOptions) |
Function returning Promise, resolving gotOptions for each request |
Load steam inventory from new endpoint and format data
steamInventory.loadFromNewEndPointAndFormat(params).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for method loadFromNewEndPoint |
Load next page steam inventory from new endpoint
steamInventory.loadFromNewEndPointNextPage(params, previousResponse).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for method loadFromNewEndPoint |
previousResponse |
Object | undefined |
Steam response from new endpoint |
Load steam inventory from new endpoint with all pages fetching and format it
steamInventory.loadAllDataFromNewEndPointAndFormat(params, getGotOptionsPromise).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for method loadAllDataFromNewEndPoint |
getGotOptionsPromise |
Function | null |
See this parameter in loadAllDataFromNewEndPoint |
Load steam inventory from new or old endpoints
steamInventory.load(params, useNewEndPoint, getGotOptionsPromise).then(responses => {
console.log(responses);
// array of `got` responses
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for method loadAllDataFromNewEndPoint or loadFromOldEndPoint |
useNewEndPoint |
Boolean | true |
Flag for using new endpoint (or old) |
getGotOptionsPromise |
Function | null |
See this parameter in loadAllDataFromNewEndPoint |
Main method. Load steam inventory from new or old endpoints and format it
steamInventory.loadAndFormat(params, useNewEndPoint, getGotOptionsPromise).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
params |
Object | undefined |
Parameters for method loadAllDataFromNewEndPointAndFormat or loadFromOldEndPointAndFormat |
useNewEndPoint |
Boolean | true |
Flag for using new endpoint (or old) |
getGotOptionsPromise |
Function | null |
See this parameter in loadAllDataFromNewEndPointAndFormat |
JSON request
SteamUserInventory.requestJSON(url, gotOptions).then(respone => {
console.log(response);
// `got` response
});
Parameter | Type | Default | Description |
---|---|---|---|
url |
String | undefined |
URL for request |
gotOptions |
Object | undefined |
Options for got module |
Get item special string class_id
+ _
+ instance_id
let steamItem = {classid: 98, instanceid: 115};
SteamUserInventory.getItemClassInstanceString(steamItem).then(str => {
console.log(str);
// 98_115
});
Parameter | Type | Default | Description |
---|---|---|---|
steamItem |
Object | undefined |
Steam item object from response |
steamItem[classid] |
String|Number | undefined |
Steam item class_id |
steamItem[instanceid] |
String|Number | undefined |
Steam item instance_id |
Get item image (normal or large)
let steamItem = {icon_url_large: '__href__'};
let large = true;
SteamUserInventory.getItemImageUrl(steamItem, large).then(str => {
console.log(str);
// https://steamcommunity-a.akamaihd.net/economy/image/__href__
});
Parameter | Type | Default | Description |
---|---|---|---|
steamItem |
Object | undefined |
Steam item object from response |
steamItem[icon_url_large] |
String | undefined |
Steam item icon_url_large |
steamItem[icon_url] |
String | undefined |
Steam item icon_url |
large |
Boolean | true |
Get large image flag |
Get item inspect link
let steamItem = {
actions: [
{item: 'Inspect in Game...', link: 'test_link'}
]
};
SteamUserInventory.getInspectItemLink(steamItem).then(str => {
console.log(str);
// test_link
});
Parameter | Type | Default | Description |
---|---|---|---|
steamItem |
Object | undefined |
Steam item object from response |
steamItem[actions] |
Array | undefined |
Steam item actions |
Format item
SteamUserInventory.formatItem(itemData).then(formatted => {
console.log(formatted);
// {
// id: '14364197067',
// assetId: '14364197067',
// amount: '1',
// classId: '2777986317',
// instanceId: '188530139',
// raw: { base: [Object], description: [Object] },
// appId: 730,
// name: 'Five-SeveN | Monkey Business',
// marketHashName: 'Five-SeveN | Monkey Business (Well-Worn)',
// tradable: 1,
// marketable: 1,
// marketTradableRestriction: 7,
// link: 'steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S%owner_steamid%A%assetid%D11673583149302548085',
// imageLarge: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposLOzLhRlxfbGTj5X09q_goWYkuHxPYTTl2VQ5sROh-zF_Jn4t1i1uRQ5fTvzdoGWdwdvMFzU_FbolerujJHptcjAwXo37yUrtyuOyRbliU4aPOdxxavJhXiz6dw',
// imageSmall: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposLOzLhRlxfbGTj5X09q_goWYkuHxPYTTl2VQ5sROh-zF_Jn4xlbkqURvZmiidYKRdAFoNVzR81bryLvmjZ7o6ZjAmyYw7CNw7SmLzRepwUYbn3RWfTI',
// image: 'https://steamcommunity-a.akamaihd.net/economy/image/-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgposLOzLhRlxfbGTj5X09q_goWYkuHxPYTTl2VQ5sROh-zF_Jn4t1i1uRQ5fTvzdoGWdwdvMFzU_FbolerujJHptcjAwXo37yUrtyuOyRbliU4aPOdxxavJhXiz6dw',
// category: null,
// type: undefined,
// exterior: undefined,
// quality: undefined
// }
});
Parameter | Type | Default | Description |
---|---|---|---|
steamItem |
Object | undefined |
Steam item object from response |
steamItem[base] |
Object | undefined |
Base steam item data |
steamItem[description] |
Object | undefined |
Description steam item data |
Format response data (result is array of objects formatted by formatItem)
SteamUserInventory.formatData(items, descriptions).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
items |
Object | undefined |
Object with base item data |
descriptions |
Object | undefined |
Object with description item data |
Format response data from old endpoint(see result formatData)
SteamUserInventory.formatDataFromOldEndPoint(data).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
data |
Object | undefined |
Data in response from old steam endpoint |
Format response data from new endpoint(see result formatData)
SteamUserInventory.formatDataFromNewEndPoint(data).then(formattedArray => {
console.log(formattedArray);
// Array of objects formatted by `formatItem`
});
Parameter | Type | Default | Description |
---|---|---|---|
data |
Object | undefined |
Data in response from new steam endpoint |