from discord.models import DiscordRPCUpdatePayload from jellyfin.models import JellyfinMediaItem, JellyfinMediaType from pypresence.types import ActivityType def to_rpc_payload(media_item: JellyfinMediaItem) -> DiscordRPCUpdatePayload: """ Converts a JellyfinMediaItem to a DiscordRPCUpdatePayload. Args: media_item (JellyfinMediaItem): The Jellyfin media item to convert. Returns: DiscordRPCUpdatePayload: The converted Discord RPC update payload. """ 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.artist}", image_url=media_item.image_url, details=media_item.metadata.album, 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.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.subtitle, image_url=media_item.image_url, details=media_item.name, activity_type=ActivityType.WATCHING, start=media_item.start, end=media_item.end )