update rpc from jellyfin
This commit is contained in:
@@ -62,6 +62,7 @@ class JellyfinApiClient:
|
||||
media_id = item.get('Id')
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
name=item.get('Name'),
|
||||
type=JellyfinMediaType.AUDIO,
|
||||
image_url=self.get_image_url(media_id),
|
||||
@@ -74,6 +75,7 @@ class JellyfinApiClient:
|
||||
media_id = item.get('Id')
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
name=item.get('Name'),
|
||||
type=JellyfinMediaType.MOVIE,
|
||||
image_url=self.get_image_url(media_id),
|
||||
@@ -84,6 +86,7 @@ class JellyfinApiClient:
|
||||
media_id = item.get('Id')
|
||||
|
||||
return JellyfinMediaItem(
|
||||
id=media_id,
|
||||
name=item.get('Name'),
|
||||
type=JellyfinMediaType.EPISODE,
|
||||
image_url=self.get_image_url(media_id),
|
||||
|
||||
@@ -7,6 +7,7 @@ class JellyfinMediaType(str, Enum):
|
||||
EPISODE = 'Episode'
|
||||
|
||||
class JellyfinMediaItem(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
type: JellyfinMediaType
|
||||
image_url: str
|
||||
|
||||
38
jellyfin/utils.py
Normal file
38
jellyfin/utils.py
Normal file
@@ -0,0 +1,38 @@
|
||||
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="🍿",
|
||||
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
|
||||
)
|
||||
Reference in New Issue
Block a user