nessi d0c29b7a38 feat: add season zero visibility toggle in settings with dynamic filtering for Sonarr and missing episodes views
Add showSeasonZero checkbox in settings panel with toggle styling (42x23px switch, green when active). Implement applySeasonZeroPreference() to filter S00E episodes via .season-zero-hidden class and hide empty series with .season-zero-empty. Update missing count in nav badge and stats to exclude hidden season zero episodes. Add dynamic hint text toggle between "eingeblendet"/"ausgeblendet". Remove season zero exclusion from is_german_review_candidate() in app.py to
2026-08-15 12:53:19 +02:00

Radarr Language Dashboard v2

Wichtig: Path-Mapping

Radarr kann seine Filme z.B. unter /data/filme sehen, während der Host sie unter /nesflix/filme hat. Das Dashboard unterstützt diese Abbildung explizit:

environment:
  RADARR_MEDIA_PATH: "/data/filme"
  LOCAL_MEDIA_PATH: "/media/filme"

volumes:
  - /nesflix/filme:/media/filme:ro

Dienststatus

Der Dashboard-Tab prüft zusätzlich Jellyfin, Seerr, Prowlarr, Easynews as Indexer, qBittorrent, Bazarr, Lingarr, LibreTranslate sowie die Sonarr-/Radarr-Prowlarr-Proxies. Die Prüfungen laufen parallel im Hintergrund und blockieren die Seite nicht.

Die Standardnamen funktionieren, wenn die Container im selben Docker-Netzwerk liegen. Für qBittorrent muss QBITTORRENT_URL auf eine aus dem Dashboard-Container erreichbare URL zeigen, zum Beispiel http://host.docker.internal:8080 oder die Host-IP.

JELLYFIN_URL=http://jellyfin:8096
SEERR_URL=http://seerr:5055
PROWLARR_URL=http://prowlarr:9696
EASYNEWS_INDEXER_URL=http://easynews-as-indexer:8081
QBITTORRENT_URL=http://HOST_ODER_IP:8080
BAZARR_URL=http://bazarr:6767
LINGARR_URL=http://lingarr:9876
LIBRETRANSLATE_URL=http://libretranslate:5000
SONARR_PROWLARR_PROXY_URL=http://sonarr-prowlarr-proxy:8080
RADARR_PROWLARR_PROXY_URL=http://radarr-prowlarr-proxy:8080
SERVICE_CHECK_TIMEOUT=3
SERVICE_REFRESH_SECONDS=30

Für die bereits vorhandenen Container sind keine zusätzlichen Compose-Services nötig; sie müssen im gemeinsamen media-stack_default-Netzwerk erreichbar sein. Falls qBittorrent nicht über host.docker.internal erreichbar ist, kann unter Linux je nach Docker-Konfiguration dieser Eintrag ergänzt werden:

extra_hosts:
  - "host.docker.internal:host-gateway"

Ein Radarr-Pfad wie:

/data/filme/Avatar (2009)/Avatar.mkv

wird dadurch für ffprobe zu:

/media/filme/Avatar (2009)/Avatar.mkv

Konfiguration

Die persönlichen URLs, Pfade und API-Keys liegen in .env. Diese Datei ist in .gitignore eingetragen und bleibt bei git pull erhalten. Als Vorlage dient .env.example.

Beim ersten Start:

cp .env.example .env

Danach die Werte in .env eintragen. Sonarr und SABnzbd werden dort durch Auskommentieren der jeweiligen Variablen aktiviert. Wenn Sonarr aktiv ist, muss SERIES_MEDIA_VOLUME auf den echten Host-Pfad deiner Serien-Library zeigen; dieser Ordner wird in den Dashboard-Container nach /media/serien gemountet.

Start

API-Keys und Pfade in .env anpassen:

docker compose down
docker compose up -d --build
docker compose logs -f

Die Seite lädt zuerst die Library-Metadaten. Die ffprobe-Scans laufen danach im Hintergrund; oben wird der Fortschritt angezeigt. Für Sonarr die optionalen Variablen und den Serien-Volume-Mount in docker-compose.yml aktivieren. Die Navigation trennt Filme und Serien, Serien sind pro Show aufklappbar.

Sonarr benötigt:

SONARR_URL: "http://sonarr:8989"
SONARR_API_KEY: "..."
SONARR_MEDIA_PATH: "/data/serien"
LOCAL_SERIES_PATH: "/media/serien"

SABnzbd benötigt für den Download-Tab:

SAB_URL: "http://sabnzbd:8080"
SAB_API_KEY: "..."

Der API-Key steht in SABnzbd unter Config > General. Die laufenden Jobs kommen aus der SABnzbd-Queue, abgeschlossene und fehlgeschlagene Jobs aus der History. Die Sprache eines laufenden Releases wird aus dessen Namen abgeleitet; nach dem Import ist die Sprache im Radarr-/Sonarr-Scan verlässlich.

Bei weiterem Scanfehler

Prüfe einen Pfad im Container:

docker exec -it radarr-language-dashboard sh
ls -lah /media/filme
find /media/filme -type f | head
ffprobe -v error -show_entries stream=codec_type,codec_name:stream_tags=language -of json "/media/filme/DEIN/FILM.mkv"
S
Description
No description provided
Readme
2.8 MiB
Languages
HTML 65.4%
Python 33.8%
JavaScript 0.6%
Dockerfile 0.2%