JellyPoster for Jellyfin

Release: Beta 1
Please provide feedback or suggestions. 
The comment section is open.
Note:  I have only tested Python 3.9.2 on Raspbian GNU/Linux 11 (bullseye). 

Intro

It has been a long time… and the last few years have brought a lot of changes. I have started a few new projects and stopped working on a few others (future updated will address some of these). One my biggest changes was moving from Plex, and Plex Movie Poster Display, for my main media content delivery system. As you can probably tell from the title of this page, I have started using Jellyfin.

Of course, sadly, this meant Plex Movie Poster Display and the nice framed display my wife and I built would no longer work. So I started from scratch and… here it is. the first release attempt of JellyPoster for Jellyfin.

Before you continue I must warn you… JellyPoster is not as feature rich as Plex Movie Poster Display. Plex Movie Poster Display had some awesome contributors who made it what it is today. I wrote JellyPoster while trying to learn some basic Python coding, API, and JSON. I make no guarantees this code is correct, efficient, or even presentable. It should however be easier to install than Plex Movie Poster Display and, hopefully, easier to add features too.

Comparison Chart
Plex Movie Poster DisplayJellyPoster
Support Plex OnlySupports JellyFin Only
+ Web Interface for Configuration– Edit Python Script Directly
PHPPython
Apache / NGINX+ Simple Python Web Server Built-in
– Edit system config files.+ Less configuration or system config files.
– A lot of dependencies+ Fewer dependencies
+ More Features– Still it very early development.

Now onto the good stuff.

Prerequisites

  1. A working Jellyfin Server. (Installation documentation)
  2. An OS running Python.
  3. A Jellyfin username and password.
  4. A Jellyfin API key

Currently you need a Jellyfin username and password as well as an API key. I am hoping in the future you will only need an API key, however during my testing I was not able to get everything functioning correctly without a Jellyfin username and password as well.

Again… I have only tested Python 3.9.2 on Raspbian GNU/Linux 11 (bullseye), so these instruction are base on my testing. If anyone as anything to add, for Raspbian or any other OS, please feel free to send it to me. I will add it to the page.

To replicate my setup I suggest downloading and installing Raspberry Pi OS onto an SD card, USB, or M.2 Drive. I also suggest enabling wireless and SSH in the setting of Raspberry Pi Imager prior to writing the image to your storage device. (This is outside the scope of this page. If you need help please follow the installation instructions here.)

Installation

JellyPoster can be installed on the Jellyfin server itself, a Raspberry Pi directly connected to a display, or any machine that can run Python and can access the Jellyfin server’s API. I chose to install JellyPoster on the Raspberry PI that is directly connected to my display.

Clone JellyPoster Branch

cd /your_preferred_application_directory 
#Example: Mine is /home/admin/projects/

sudo git clone https://github.com/MattsShack/JellyPoster.git
cd JellyPoster

You should see two files. JellyPoster.py and jellyposter.service.

Setup JellyPoster

Edit JellyPoster.py and update with your customizations. At minimum you will need to update the Jellyfin Server Configuration, Jellyfin Client Configuration, and JellyPoster Configuration Web Server Configuration sections.

#Jellyfin Server Configuration
jellyfin_url = "http://[ServerIP]:8096" #Jellyfin Server URL with Port.
jellyfin_username = "[Username]"  #Jellyfin Server Username
jellyfin_password = "[Password]"  #Jellyfin Server Password
jellyfin_api_key = "[API Key]"    #Jellyfin Server API Key

#Jellyfin Client Configuration  
jellyfin_client_ip = "[ClientIP]" #The display will updated when this IP Address is seen playing content.

#JellyPoster Configuration
#Web Server Configuration
jellyposter_host = "[HostIP]"    #IP Address of the machine running 

Once the configuration is complete, save the file and set the executable flag on JellyPoster.py.

chmod +x JellyPoster.py

Install Service on Raspberry Pi

Edit the jellyposter.service and update the ExecStart path to your preferred application directory.

ExecStart=/usr/bin/python [UPDATE_PATH]/JellyPoster.py

Once the path is updated you can now install the service, set the permissions, and start it.

sudo cp jellyposter.service /lib/systemd/system/
sudo chmod 644 /lib/systemd/system/jellyposter.service
sudo systemctl daemon-reload
sudo systemctl enable jellyposter.service
sudo systemctl start jellyposter.service

Test

Open Browser to http://[ip_of_jellyposter]:[port]/

Miscellaneous Raspberry Pi OS Steps

Raspberry OS Updates:

sudo apt update && sudo apt upgrade -y

Hide Mouse

sudo apt-get install unclutter -y

Rotate Screen

Click on the Raspberry Pi (Menu) icon. Select Preferences, and Screen Configuration. Right click on the screen you want to rotate and select orientation.

Chromium Kiosk Mode on Startup

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

- Add the following 
/usr/bin/chromium-browser --kiosk  --disable-restore-session-state http://[PMPD IP Address]/index.php

-Save File
CTRL + O to write changes
CTRL + X to exit

-Reboot to Test

5 Replies to “JellyPoster for Jellyfin”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.