Comments (3)
Check out line 85: https://github.com/mcarlucci/decky-storage-cleaner/blob/3515a3a13afd17f6f3bc3213f244cfb963c49b45/src/index.tsx#L85C1-L85C1
There, I am checking if the app_type
property is equal to 1
, which is how Steam identifies games under their digital rights management.
For non-steam games, Steam assigns the game a random id and the app_type is not equal to 1
I get a list of all the games on a users Steam Deck with the following python method:
Line 46 in 3515a3a
For example, here is the entire object returned for The Shadow of the Tomb Raider:
appStore.GetAppOverviewByAppID(750920)
Returns:
{
"appid": 750920,
"display_name": "Shadow of the Tomb Raider",
"app_type": 1,
"mru_index": 13,
"rt_recent_activity_time": 1682905807,
"minutes_playtime_forever": 1303,
"minutes_playtime_last_two_weeks": 325,
"rt_last_time_played": 1682905807,
"rt_last_time_locally_played": 1682905806,
"per_client_data": [
{
"clientid": "0",
"client_name": "This machine",
"display_status": 11,
"status_percentage": 100,
"installed": true,
"bytes_downloaded": "0",
"bytes_total": "0",
"is_available_on_current_platform": true,
"cloud_status": 3
}
],
"most_available_clientid": "0",
"selected_clientid": "0",
"selected_per_client_data": {
"clientid": "0",
"client_name": "This machine",
"display_status": 11,
"status_percentage": 100,
"installed": true,
"bytes_downloaded": "0",
"bytes_total": "0",
"is_available_on_current_platform": true,
"cloud_status": 3
},
"most_available_per_client_data": {
"clientid": "0",
"client_name": "This machine",
"display_status": 11,
"status_percentage": 100,
"installed": true,
"bytes_downloaded": "0",
"bytes_total": "0",
"is_available_on_current_platform": true,
"cloud_status": 3
},
"local_per_client_data": {
"clientid": "0",
"client_name": "This machine",
"display_status": 11,
"status_percentage": 100,
"installed": true,
"bytes_downloaded": "0",
"bytes_total": "0",
"is_available_on_current_platform": true,
"cloud_status": 3
},
"rt_last_time_played_or_installed": 1682905807,
"rt_purchased_time": 1677300997,
"rt_original_release_date": 0,
"rt_steam_release_date": 1536940800,
"icon_hash": "7db38cff16091c9c058892fcfeee102a6ed589d9",
"controller_support": 2,
"metacritic_score": 77,
"size_on_disk": "37955541433",
"visible_in_game_list": true,
"rt_store_asset_mtime": 1667572921,
"sort_as": "shadow of the tomb raider",
"association": [
{
"type": 2,
"name": "Eidos-Montréal"
},
{
"type": 2,
"name": "Crystal Dynamics"
},
{
"type": 2,
"name": "Nixxes"
},
{
"type": 2,
"name": "Feral Interactive (Mac)"
},
{
"type": 2,
"name": "Feral interactive (Linux)"
},
{
"type": 1,
"name": "Crystal Dynamics"
},
{
"type": 1,
"name": "Feral Interactive (Mac)"
},
{
"type": 1,
"name": "Feral interactive (Linux)"
},
{
"type": 3,
"name": "Tomb Raider"
}
],
"m_setStoreCategories": {},
"m_setStoreTags": {},
"canonicalAppType": 1,
"review_score_with_bombs": 8,
"review_percentage_with_bombs": 83,
"review_score_without_bombs": 8,
"review_percentage_without_bombs": 83,
"steam_deck_compat_category": 2,
"m_strPerClientData": "0,This machine,11,100,,true,,,,true,,,3",
"m_strStoreTags": "21,19,7208,4182,1697,1695,1742,1664,1687,4106,3834,1662,4667,4166,1774,4345,1756,4342,3859,1680",
"m_strAssociations": "2,Eidos-Montréal,2,Crystal Dynamics,2,Nixxes,2,Feral Interactive (Mac),2,Feral interactive (Linux),1,Crystal Dynamics,1,Feral Interactive (Mac),1,Feral interactive (Linux),3,Tomb Raider",
"m_strStoreCategories": "2,22,23,28,29,33,41,42,43,45,46"
}
from decky-storage-cleaner.
Ah yes I understand that part.
What I'm wondering is how does the appStore.GetAppOverviewByAppID
retrieve the game name for non-steam games because the ID is just a randomly assigned number, isn't it?
from decky-storage-cleaner.
You are correct, Steam does randomly assign an id to non-steam games. They also create a game directory named after the id located in /.steam/steam/steamapps/
. If not under the directory, I am not exactly sure how they are storing/retrieving the app metedata returned from appStore.GetAppOverviewByAppID()
from decky-storage-cleaner.
Related Issues (6)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from decky-storage-cleaner.