Refactor active session handling in PlaystationNetwork (#149559)

This commit is contained in:
Manu 2025-07-28 13:13:08 +02:00 committed by GitHub
parent 140f56aeaa
commit 95c5a91f01
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -107,30 +107,34 @@ class PlaystationNetwork:
data.shareable_profile_link = self.shareable_profile_link data.shareable_profile_link = self.shareable_profile_link
data.availability = data.presence["basicPresence"]["availability"] data.availability = data.presence["basicPresence"]["availability"]
session = SessionData() if "platform" in data.presence["basicPresence"]["primaryPlatformInfo"]:
session.platform = PlatformType( primary_platform = PlatformType(
data.presence["basicPresence"]["primaryPlatformInfo"]["platform"] data.presence["basicPresence"]["primaryPlatformInfo"]["platform"]
) )
game_title_info: dict[str, Any] = next(
if session.platform in SUPPORTED_PLATFORMS: iter(
session.status = data.presence.get("basicPresence", {}).get( data.presence.get("basicPresence", {}).get("gameTitleInfoList", [])
"primaryPlatformInfo" ),
)["onlineStatus"] {},
)
game_title_info = data.presence.get("basicPresence", {}).get( status = data.presence.get("basicPresence", {}).get("primaryPlatformInfo")[
"gameTitleInfoList" "onlineStatus"
]
title_format = (
PlatformType(fmt) if (fmt := game_title_info.get("format")) else None
) )
if game_title_info: data.active_sessions[primary_platform] = SessionData(
session.title_id = game_title_info[0]["npTitleId"] platform=primary_platform,
session.title_name = game_title_info[0]["titleName"] status=status,
session.format = PlatformType(game_title_info[0]["format"]) title_id=game_title_info.get("npTitleId"),
if session.format in {PlatformType.PS5, PlatformType.PSPC}: title_name=game_title_info.get("titleName"),
session.media_image_url = game_title_info[0]["conceptIconUrl"] format=title_format,
else: media_image_url=(
session.media_image_url = game_title_info[0]["npTitleIconUrl"] game_title_info.get("conceptIconUrl")
or game_title_info.get("npTitleIconUrl")
data.active_sessions[session.platform] = session ),
)
if self.legacy_profile: if self.legacy_profile:
presence = self.legacy_profile["profile"].get("presences", []) presence = self.legacy_profile["profile"].get("presences", [])