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).
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.
|Plex Movie Poster Display||JellyPoster|
|Support Plex Only||Supports JellyFin Only|
|+ Web Interface for Configuration||– Edit Python Script Directly|
|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.
- A working Jellyfin Server. (Installation documentation)
- An OS running Python.
- A Jellyfin username and password.
- 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.)
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.
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.
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
Open Browser to http://[ip_of_jellyposter]:[port]/
Miscellaneous Raspberry Pi OS Steps
Raspberry OS Updates:
sudo apt update && sudo apt upgrade -y
sudo apt-get install unclutter -y
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