Turns your Radarr/Sonarr release calendar into a browsable "Coming Soon" library in Emby — with countdown and season/episode badges on the posters.
Tested with Emby Server v4.10.0.17 (beta).
- Save the following as
docker-compose.ymlin a new folder:
services:
release-poster-sync:
image: ghcr.io/mrt187/release-poster-sync:latest
container_name: release-poster-sync
environment:
RADARR_URL: "${RADARR_URL}"
RADARR_API_KEY: "${RADARR_API_KEY}"
SONARR_URL: "${SONARR_URL}"
SONARR_API_KEY: "${SONARR_API_KEY}"
DAYS_AHEAD: "${DAYS_AHEAD:-30}"
CRON_SCHEDULE: "${CRON_SCHEDULE:-0 */6 * * *}"
LOG_LEVEL: "${LOG_LEVEL:-INFO}"
TZ: "${TZ:-Europe/Berlin}"
PUID: "${PUID:-99}"
PGID: "${PGID:-100}"
DOWNLOAD_TRAILERS: "${DOWNLOAD_TRAILERS:-false}"
TMDB_API_KEY: "${TMDB_API_KEY:-}"
volumes:
- ${POSTERS_PATH:-./posters}:/posters
restart: unless-stopped- Put
.env.examplein the same folder, rename it to.env, and fill in your values (Radarr/Sonarr URL + API key, target folder, timezone). - Start (reads
.envautomatically, pulls the pre-built image from GHCR):docker compose up -d - In Emby: Add library → content type Mixed movies and shows →
select your
POSTERS_PATHfolder.- Under "Metadata downloaders", uncheck all providers (e.g. TheMovieDb) so
Emby only uses the local
.nfofiles already provided.
- Under "Metadata downloaders", uncheck all providers (e.g. TheMovieDb) so
Emby only uses the local
| Variable | Description |
|---|---|
RADARR_URL / RADARR_API_KEY |
Radarr connection |
SONARR_URL / SONARR_API_KEY |
Sonarr connection |
DAYS_AHEAD |
Calendar range in days (default 30) |
CRON_SCHEDULE |
Sync interval (default every 6h) |
TZ |
Timezone for date/countdown calculations |
POSTERS_PATH |
Host folder for the generated posters |
PUID / PGID |
User/group ID the container runs as (default 99/100, matches Unraid's nobody:users) |
DOWNLOAD_TRAILERS |
Download trailers via yt-dlp (default false) |
TMDB_API_KEY |
TMDb API key for series trailers (optional, free at themoviedb.org) |
- Runs as a non-root user, configurable via
PUID/PGID(default99/100, matching Unraid'snobody:users). Set these in.envto match your host user if needed — no manualchownrequired, the container adjusts ownership of/posterson startup. - API keys are masked before being logged.
- The
supercronicbinary is verified via SHA1 checksum.
- Polls
/api/v3/calendaron Radarr and Sonarr (today throughDAYS_AHEADdays; already-released titles are skipped). - Creates a folder per movie/show with a cached original poster, a rendered
poster.jpg(badges recalculated on every sync, e.g. countdown), placeholder video, and.nfo. - Removes folders no longer in the calendar range.
This project was vibe coded — built through conversation with an AI, not hand-crafted line by line. Review the code before trusting it in production.