-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjellyfin-nowplaying.sh
executable file
·43 lines (34 loc) · 2.2 KB
/
jellyfin-nowplaying.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash
########################################################################################################
###################################### Jellyfin NowPlaying #############################################
########################################################################################################
# Display what is currently playing on your Jellyfin server on the command line.
#
# Portions of this script were generated by ChatGPT.
#
# Dependencies: jq, curl
########################################################################################################
########################################### Variables ##################################################
########################################################################################################
# Jellyfin server URL and API key
JELLYFIN_URL="http://YOUR-DOMAIN:8096"
API_KEY=""
########################################################################################################
################################### DO NOT EDIT ANYTHING BELOW #########################################
########################################################################################################
# Make a GET request to the /Sessions endpoint and use jq to parse the response
currently_playing=$(curl -s "${JELLYFIN_URL}/Sessions?api_key=${API_KEY}" | jq -r '.[] | select(.NowPlayingItem != null) | if .NowPlayingItem.SeriesName != null and .NowPlayingItem.SeriesName != "" then "\(.NowPlayingItem.SeriesName) - \(.NowPlayingItem.Name)" else "\(.NowPlayingItem.Name)" end + " ...................\(.UserName) \(.PlayState.PlayMethod)"')
# Check if there is currently something playing
if [ -n "$currently_playing" ]; then
# Use sed to replace PlayState.PlayMethod with an asterisk if it is Transcode
currently_playing=$(echo "$currently_playing" | sed 's/\bTranscode\b/•/')
currently_playing=$(echo "$currently_playing" | sed 's/\bDirectPlay\b//')
# Define ANSI escape codes for italics
green_color="\e[32m"
italic_start="\e[3m\e[1m"
italic_end="\e[0m"
echo ""
echo -e "${italic_start}Now Playing on ${HOSTNAME^} (Jellyfin):${italic_end}"
echo -e "${green_color}${currently_playing}${italic_end}"
echo ""
fi