add jellyfin api client

This commit is contained in:
2025-12-09 23:48:05 +01:00
parent f041499eb7
commit 265e646d96
5 changed files with 119 additions and 90 deletions

52
main.py
View File

@@ -1,46 +1,12 @@
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
from discord.rpc import DiscordRPC
from jellyfin.api_client import JellyfinApiClient
import logging
load_dotenv()
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
rpc = get_rpc()
client = get_client()
discordRPC = DiscordRPC()
jellyfinApiClient = JellyfinApiClient()
def generate_media_id(media):
return f"{media['artist']}-{media['title']}"
def main_loop(last_media_id):
media = get_active_media(client)
if media is None:
print("No active media found.")
rpc.clear()
return None
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'],
large_text=media['title'],
)
return media_id
else:
print("No change in media. Skipping update.")
return last_media_id
if __name__ == "__main__":
last_media_id = None
print("Starting Jellyfin Discord Rich Presence...")
while True:
last_media_id = main_loop(last_media_id)
time.sleep(15)
print(jellyfinApiClient.get_current_playback())