from discord.models import DiscordRPCUpdatePayload from jellyfin.models import JellyfinMediaItem, JellyfinMediaType from pypresence.types import ActivityType def to_rpc_payload(media_item: JellyfinMediaItem) -> DiscordRPCUpdatePayload: if media_item.type == JellyfinMediaType.AUDIO: return DiscordRPCUpdatePayload( id=media_item.id, title=f"Listening to {media_item.name}", subtitle=f"by {media_item.metadata.get('artist', 'Unknown Artist')}", image_url=media_item.image_url, details=media_item.name, activity_type=ActivityType.LISTENING ) elif media_item.type == JellyfinMediaType.MOVIE: return DiscordRPCUpdatePayload( id=media_item.id, title=f"Watching {media_item.name}", subtitle=media_item.metadata.get('date'), image_url=media_item.image_url, details=media_item.name, activity_type=ActivityType.WATCHING ) elif media_item.type == JellyfinMediaType.EPISODE: series_name = media_item.metadata.get('series', 'Unknown Series') season = media_item.metadata.get('season', '?') episode = media_item.metadata.get('episode', '?') subtitle = f"S{season:02}E{episode:02} of {series_name}" return DiscordRPCUpdatePayload( id=media_item.id, title=f"Watching {media_item.name}", subtitle=subtitle, image_url=media_item.image_url, details=media_item.name, activity_type=ActivityType.WATCHING )