Skip to content

feat: steam import rework#519

Open
Rast1234 wants to merge 1 commit into
JosefNemec:masterfrom
Rast1234:feat/steam_import_again
Open

feat: steam import rework#519
Rast1234 wants to merge 1 commit into
JosefNemec:masterfrom
Rast1234:feat/steam_import_again

Conversation

@Rast1234

@Rast1234 Rast1234 commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

This started as an attempt to allow importing non-game extras like i did with GOG and Humble. Head-on approach failed, because steam import uses different places (installed files, multiple endpoints), there are a lot of content types that are hard to reason about, and also family sharing. So i decided to take a closer look on actual data from different places and figure out how to cook it all together. End result is rework of UI, settings, types, what APIs are used. Hope it helps keeping steam import sane for any future changes.

Main ideas: call only endpoints that return most info, have types with actual data until final import step, filter them all in one place, enrich all entries with details from playnite backend, provide settings that are close as possible to steam, avoid mixing up some things as steam does.

Steam data from different APIs is inconsistent, i spent a lot of time making it make sense in code. If it's not clear why something is the way it is, ask me. There are some comments and TODOs in the code where things are really not obvious or where discussion is needed. Localization strings are TODO after everything else is figured out.

Start with SteamLibrarySettingsView.xaml, i guess. Most important code is in SteamServiceAggregator. Then check out API clients and models.

Oh and code from master didn't compile for me after clean checkout, i had to fix some dll references. Did not include these changes here.

@Rast1234

Rast1234 commented Mar 24, 2026

Copy link
Copy Markdown
Contributor Author

Prebuilt plugin for quick testing SteamLibrary_Builtin_2_40.zip

image

@Rast1234

Rast1234 commented Mar 24, 2026

Copy link
Copy Markdown
Contributor Author

Ideally, playnite backend can also be improved:

  • there are several metadata fields that can be used to hide broken/unwanted entries, as steam client does
  • mislabeled entries (eg legit game extras listed as tools) that can be patched manually
  • maybe manually hide unwanted entries like free-for-all tools

But let's discuss it separately, after the pull request

Details about legit and unwanted "tools" in discord after this message

@JosefNemec

Copy link
Copy Markdown
Owner

I didn't forget about this, but it's a lot of changes for me to review right now. So just heads up that it will take some time. Probably even after I do alpha 2 of Playnite 11, which will have current Steam plugin version ported to P11 SDK.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants