Open RePod opened 10 months ago
@salzrat to test:
Open the browser console on the Library page
let O = await repod.psdle.api.fetch(repod.psdle.config, "recently-played").then(P => P.json())
prompt("", JSON.stringify(O))
The Downloads tab will be more effort as by default, with no console linked, there are no relevant API calls.
You would have to watch the Network tab of your browser console ideally filtering to graphql
and looking at the operationName
.
The following can be ignored:
queryOracleUserProfileFullSubscription
getUserDevices
getCartItemCount
getProfileOracle
getAccountOracle
getPurchasedGameList
*getUserGameList
** These may be relevant if requested by the Downloads tab but are already in use for the Purchased and Played tabs respectively.
First, the let O= statement threw an access denied error. After reloading it worked and produced a prompt with a json of the games list (just included the first 2 games here):
{"data":{"gameLibraryTitlesRetrieve":{"__typename":"GameList","games":[{"__typename":"GameLibraryTitle","conceptId":"201026","entitlementId":null,"image":{"__typename":"Media","url":"https://image.api.playstation.com/gs2-sec/appkgo/prod/CUSA01862_00/4/i_4244a2569bebfd546cb852592b531fdd10ce77728c8db13d55b5a5484019fd3e/i/icon0.png"},"isActive":null,"lastPlayedDateTime":"2023-12-26T17:50:12.250000Z","membership":"NONE","name":"Disney Infinity 3.0","platform":"PS4","productId":null,"titleId":"CUSA01862_00"},{"__typename":"GameLibraryTitle","conceptId":"10000378","entitlementId":"EP4433-CUSA18797_00-DUNGEONSPS400000","image":{"__typename":"Media","url":"https://image.api.playstation.com/gs2-sec/appkgo/prod/CUSA18797_00/4/i_ef3d4a1a539cc23669e31e597bdb5d56bc645ac6e2a824cfe6fb6ed61a7f13ee/i/icon0.png"},"isActive":true,"lastPlayedDateTime":"2023-12-25T23:06:43.000000Z","membership":"NONE","name":"Minecraft Dungeons","platform":"PS4","productId":"EP4433-CUSA18797_00-DUNGEONSPS400000","titleId":"CUSA18797_00"},
When clicking on the downloads tab, no graphql command is issued. Only a POST to some cryptic webpage...
Please test again and verify the lastPlayed
property.
Looks like this:
{"data":{"gameLibraryTitlesRetrieve":{"typename":"GameList","games":[{"typename":"GameLibraryTitle","conceptId":"201026","entitlementId":null,"image":{"typename":"Media","url":"https://image.api.playstation.com/gs2-sec/appkgo/prod/CUSA01862_00/4/i_4244a2569bebfd546cb852592b531fdd10ce77728c8db13d55b5a5484019fd3e/i/icon0.png"},"isActive":null,"lastPlayedDateTime":"2023-12-26T17:50:12.250000Z","membership":"NONE","name":"Disney Infinity 3.0","platform":"PS4","productId":null,"titleId":"CUSA01862_00"},{"__typename":"GameLibraryTitle","conceptId":"10000378","entitlementId":"EP4433-CUSA18797_00-DUNGEONSPS400000","image":{"typename":"Media","url":"https://image.api.playstation.com/gs2-sec/appkgo/prod/CUSA18797_00/4/i_ef3d4a1a539cc23669e31e597bdb5d56bc645ac6e2a824cfe6fb6ed61a7f13ee/i/icon0.png"},"isActive":true,"lastPlayedDateTime":"2023-12-25T23:06:43.000000Z","membership":"NONE","name":"Minecraft Dungeons","platform":"PS4","productId":"EP4433-CUSA18797_00-DUNGEONSPS400000","titleId":"CUSA18797_00"}
so seems to work!
interesting is that for the first one, entitlement is null. Some of the games have this...
Oh, I have a suspicion: I guess entitlement=null for disc titles, i.e., ones that were not purchased in the store! I noticed the standard psdle doesn't export inactive titles although the field can be exported (isactive is always true). In this json I see the inactive titles, which makes a lot of sense!
Thinking about this even further, the library and last played need not correlate due to different users playing the games on a console. so it might be interesting to correlate my library to the last played of another user (e.g., my son), so I know what he has played and what I haven't shown him yet... I know it's not possible to do that automatically, but by downloading my library, and then the last played list of my and his account, I could merge the data myself in excel...
Closes #112