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