From 5218d624d75e1a2b0818e06026bf85949d87a203 Mon Sep 17 00:00:00 2001 From: Bram Date: Wed, 11 Feb 2026 21:59:05 +0100 Subject: [PATCH] select dutch audio --- Dockers/self-hosted-iptv/README.md | 2 +- Dockers/self-hosted-iptv/iptv/config.py | 4 ++-- Dockers/self-hosted-iptv/iptv/streamer.py | 26 +++++++++++------------ 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Dockers/self-hosted-iptv/README.md b/Dockers/self-hosted-iptv/README.md index cc61e95..0e07d0d 100644 --- a/Dockers/self-hosted-iptv/README.md +++ b/Dockers/self-hosted-iptv/README.md @@ -56,7 +56,7 @@ Each channel in the M3U points to a **continuous live stream** (`/live/`): F - `GET /epg.xml` or `GET /xmltv.xml` — XMLTV EPG (duration set by `EPG_TIMESPAN`, UTC) - `GET /live/` — continuous MPEG-TS stream for that channel (for tuning/recording) - `GET /channel//playlist.m3u` — single channel M3U (list of individual video URLs) -- `GET /stream?path=movies/...` or `path=series/...` — stream a single video file (audio track is auto-selected: Dutch/Flemish → English → default) +- `GET /stream?path=movies/...` or `path=series/...` — stream a single video file (audio track is auto-selected: Dutch → Flemish → default) ## Shuffle behaviour diff --git a/Dockers/self-hosted-iptv/iptv/config.py b/Dockers/self-hosted-iptv/iptv/config.py index 8960542..01d700b 100644 --- a/Dockers/self-hosted-iptv/iptv/config.py +++ b/Dockers/self-hosted-iptv/iptv/config.py @@ -58,5 +58,5 @@ except (TypeError, ValueError): TMDB_IMAGE_BASE = "https://image.tmdb.org/t/p" TMDB_IMAGE_STILL_SIZE = "w500" -# Preferred audio languages for streaming -PREFERRED_AUDIO_LANGUAGES = ("nld", "dut", "eng") +# Preferred audio languages for streaming (in order): Dutch → Flemish → default +PREFERRED_AUDIO_LANGUAGES = ("nld", "dut", "nl", "vls") diff --git a/Dockers/self-hosted-iptv/iptv/streamer.py b/Dockers/self-hosted-iptv/iptv/streamer.py index ff9d3d8..74a4595 100644 --- a/Dockers/self-hosted-iptv/iptv/streamer.py +++ b/Dockers/self-hosted-iptv/iptv/streamer.py @@ -7,12 +7,7 @@ import tempfile from pathlib import Path from urllib.parse import unquote -from .config import ( - VIDEO_EXTENSIONS, - MOVIES_ROOT, - SERIES_ROOT, - PREFERRED_AUDIO_LANGUAGES, -) +from .config import VIDEO_EXTENSIONS, MOVIES_ROOT, SERIES_ROOT logger = logging.getLogger(__name__) @@ -50,7 +45,7 @@ def path_to_absolute(path_param: str) -> Path | None: def get_preferred_audio_stream_index(path: Path) -> int | None: """ Probe the file with ffprobe and return the 0-based audio stream index to use: - first Dutch/Flemish (nld/dut), else first English (eng), else first audio stream. + Dutch (nld/dut/nl) if available, else Flemish (vls), else default (first audio). Returns None on probe failure or no audio streams. """ try: @@ -79,14 +74,19 @@ def get_preferred_audio_stream_index(path: Path) -> int | None: if idx is None: continue tags = s.get("tags") or {} - lang = (tags.get("language") or "").strip().lower()[:3] - audio_streams.append((idx, lang)) + raw = (tags.get("language") or "").strip().lower() + lang = raw[:3] if len(raw) >= 3 else raw + audio_streams.append((idx, lang, raw)) if not audio_streams: return None - for pref in PREFERRED_AUDIO_LANGUAGES: - for idx, lang in audio_streams: - if lang == pref: - return idx + dutch = ("nld", "dut", "nl") + flemish = ("vls", "nl-be", "nlb") + for idx, lang, raw in audio_streams: + if lang in dutch or raw in dutch: + return idx + for idx, lang, raw in audio_streams: + if lang in flemish or raw in flemish: + return idx return audio_streams[0][0] except ( subprocess.TimeoutExpired,