Files
jellydisc/jellyfin/utils.py
2025-12-10 03:52:03 +01:00

49 lines
1.8 KiB
Python

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
)