diff --git a/jellyfin.py b/jellyfin.py index 0659f9f..ed877ff 100644 --- a/jellyfin.py +++ b/jellyfin.py @@ -20,22 +20,26 @@ def get_client(): def get_active_media(client): server_address = os.getenv('JELLYFIN_ADDRESS') sessions = client.jellyfin.get_sessions() - active_media = [] for session in sessions: + # Check if there is a NowPlayingItem media = session.get('NowPlayingItem') if not media: continue + # Skip non-audio media + media_type = media.get('Type') + if media_type != 'Audio': + continue + media_id = media.get('Id') image = f"{server_address}/Items/{media_id}/Images/Primary?maxWidth=300&maxHeight=300" - media_info = { + return { + 'id': media_id, 'artist': media.get('AlbumArtist', 'Unknown Artist'), 'title': media.get('Name', 'Unknown Title'), 'image': image, } - active_media.append(media_info) - - return active_media + return None diff --git a/main.py b/main.py index b6c4730..aeca770 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ from dotenv import load_dotenv from jellyfin import get_client, get_active_media from discord import get_rpc +from pypresence.types import ActivityType import time load_dotenv() @@ -12,20 +13,20 @@ def generate_media_id(media): return f"{media['artist']}-{media['title']}" def main_loop(last_media_id): - media_list = get_active_media(client) + media = get_active_media(client) - if len(media_list) == 0: + if media is None: print("No active media found.") rpc.clear() return - media = media_list[0] media_id = generate_media_id(media) if media_id != last_media_id: print(f"Updating Discord RPC: Listening to {media['title']} by {media['artist']}") rpc.update( + activity_type=ActivityType.LISTENING, state=f"by {media['artist']}", details=f"Listening to {media['title']}", large_image=media['image'],