This Python app connects to a Jellyfin server and displays movie posters for your home theater display.
Behavior:
- If users are actively watching movies, it rotates through each currently watched movie poster.
- If nobody is actively watching a movie, it shows posters from
SELECT_MOVIES(if configured) or random posters from your library. - Posters are auto-rotated so the long side of the poster aligns with the long side of the screen.
- Poster changes use a configurable crossfade transition.
cd ~/PosterPulse
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCopy environment template:
cp .env.example .envThen edit .env and set:
JELLYFIN_URLJELLYFIN_API_TOKENREFRESH_SECONDSBACKGROUND_COLORFADE_SPEED(1 = slowest, 10 = fastest)SELECT_MOVIES(comma-separated titles; blank = random fallback)FULLSCREEN
source .venv/bin/activate
python main.py- Press
Escto exit. FULLSCREEN=trueis recommended for kiosk display.- Use
FADE_SPEEDto control transition speed. - Example:
SELECT_MOVIES=Inception,The Matrix,Interstellar
In Jellyfin:
- Open Dashboard.
- Go to API Keys.
- Create a key and paste it into
.envasJELLYFIN_API_TOKEN.
- Ensure client device can reach Jellyfin over the network.
- If
SELECT_MOVIESis set but none of the listed titles are found with posters, the app will show an error status. - For HTTPS with self-signed certs, import your cert to the trust store instead of disabling SSL verification.
- If you want TV shows or mixed content, change
IncludeItemTypesinmain.py.