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, start=media_item.start, end=media_item.end ) 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, start=media_item.start, end=media_item.end ) elif media_item.type == JellyfinMediaType.EPISODE: return DiscordRPCUpdatePayload( id=media_item.id, title=f"Watching {media_item.name}", subtitle=media_item.metadata.get('subtitle'), image_url=media_item.image_url, details=media_item.name, activity_type=ActivityType.WATCHING, start=media_item.start, end=media_item.end )