A beautiful, immersive digital signage solution for your Home Theater. This application turns any vertical monitor into a dynamic digital poster that cycles through your Jellyfin library and automatically switches to a "Now Playing" mode when a movie starts.
Designed with a premium "Cinema Grade" aesthetic, featuring smooth animations, metadata badges, and deep immersion.
- 🔄 Smart Carousel: Randomly cycles through movies in your library with a smooth "Ken Burns" zoom effect.
- ⚡ Now Playing Detection: Automatically interrupts the carousel when you start watching a movie.
- Displays a dedicated "NOW PLAYING" header with an animated equalizer.
- Shows a live progress bar synced with your playback.
- Displays start/end times and formatted duration.
- 📱 Vertical Optimization: Specifically designed for 9:16 vertical monitors (Digital Posters), but works on standard screens too.
- 🎨 Immersive UI:
- High-quality backdrop blurs.
- Edge-to-edge progress bars.
- High-contrast typography (Bebas Neue & Montserrat).
- Metadata badges (4K/1080p, Audio codec, Year, Rating).
- 🤖 Zero Config User: Automatically detects the primary user on your Jellyfin server.
| Idle Mode (Carousel) |
|---|
![]() |
- Python 3.8+ installed on your machine.
- A running Jellyfin Server.
- A Jellyfin API Key.
- Open your Jellyfin Dashboard.
- Go to Advanced > API Keys.
- Click + to create a new key.
- Name it "CinemaPoster" and copy the generated key.
-
Clone the repository:
git clone https://github.com/simoneluconi/jellyfin-poster.git cd jellyfin-poster -
Install dependencies: It is recommended to use a virtual environment.
pip install -r requirements.txt
-
Configuration: Rename the example environment file to
.env:mv .env.example .env
Open
.envwith a text editor and fill in your details:JELLYFIN_URL=your_jellyfin_url_here # Your Jellyfin IP and Port JELLYFIN_API_KEY=your_long_api_key_here PORT=5000 DEBUG=False
-
Start the server:
python app.py
-
Open the display: Open a web browser on the device connected to your vertical monitor and navigate to:
http://localhost:5000(or your PC's IP address). -
Kiosk Mode (Full Screen):
- Chrome/Edge: Press
F11to enter full screen. - Auto-start tip: You can launch Chrome in kiosk mode via command line:
chrome.exe --kiosk http://localhost:5000 --incognito
- Chrome/Edge: Press
jellyfin-poster/
├── app.py # Main Python/Flask backend logic
├── requirements.txt # Python dependencies
├── .env # Private configuration (Excluded from Git)
├── .env.example # Public configuration template
└── templates/
└── poster.html # The Frontend (HTML/CSS/JS)
