add jellyfin part
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
.env
|
||||
__pycache__/
|
||||
.venv
|
||||
41
jellyfin.py
Normal file
41
jellyfin.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from jellyfin_apiclient_python import JellyfinClient
|
||||
from getmac import get_mac_address
|
||||
import os
|
||||
|
||||
def get_client():
|
||||
server_address = os.getenv('JELLYFIN_ADDRESS')
|
||||
username = os.getenv('JELLYFIN_USER')
|
||||
password = os.getenv('JELLYFIN_PASSWORD')
|
||||
host_mac = get_mac_address(hostname="localhost")
|
||||
|
||||
client = JellyfinClient()
|
||||
client.config.app('jellydisc', '0.0.1', os.uname().nodename, host_mac)
|
||||
client.config.data['auth.ssl'] = True
|
||||
|
||||
client.auth.connect_to_address(server_address)
|
||||
client.auth.login(server_address, username, password)
|
||||
|
||||
return client
|
||||
|
||||
def get_active_media(client):
|
||||
server_address = os.getenv('JELLYFIN_ADDRESS')
|
||||
sessions = client.jellyfin.get_sessions()
|
||||
active_media = []
|
||||
|
||||
for session in sessions:
|
||||
media = session.get('NowPlayingItem')
|
||||
if not media:
|
||||
continue
|
||||
|
||||
media_id = media.get('Id')
|
||||
image = f"{server_address}/Items/{media_id}/Images/Primary?maxWidth=300&maxHeight=300"
|
||||
|
||||
media_info = {
|
||||
'artist': media.get('AlbumArtist', 'Unknown Artist'),
|
||||
'title': media.get('Name', 'Unknown Title'),
|
||||
'image': image,
|
||||
}
|
||||
|
||||
active_media.append(media_info)
|
||||
|
||||
return active_media
|
||||
9
main.py
Normal file
9
main.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from dotenv import load_dotenv
|
||||
from jellyfin import get_client, get_active_media
|
||||
|
||||
load_dotenv()
|
||||
|
||||
client = get_client()
|
||||
media_list = get_active_media(client)
|
||||
|
||||
print(media_list)
|
||||
12
package.json
12
package.json
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"name": "jellydisc",
|
||||
"version": "1.0.0",
|
||||
"description": "Discord Presence for Jellyfin",
|
||||
"scripts": {
|
||||
"start": "node --experimental-strip-types main.mts"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "Zvonimir Rudinski <zvonimir@zvonimir.xyz>",
|
||||
"license": "ISC",
|
||||
"packageManager": "pnpm@10.13.1"
|
||||
}
|
||||
4
requirements.txt
Normal file
4
requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
jellyfin-apiclient-python==1.11.0
|
||||
python-dotenv==1.2.1
|
||||
getmac==0.9.5
|
||||
pypresence==4.6.1
|
||||
Reference in New Issue
Block a user