From 5ee9e0b3734671cde8a2f5cb4b6cc346cb5980b9 Mon Sep 17 00:00:00 2001 From: Erik Thiele Date: Fri, 10 Jul 2026 17:20:37 +0200 Subject: [PATCH] =?UTF-8?q?Query-Parameter=20der=20Player-URL=20an=20Playl?= =?UTF-8?q?ist-URLs=20=C3=BCbergeben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - player_params als dict(request.args) an player.html übergeben - appendParams() fügt Parameter an iframe.src + Overlay-URLs an - Funktioniert mit & ohne bestehende Query-Parameter in der Ziel-URL - Beispiel: /player/stuttgart/lobby?customer=acme → https://dashboard?customer=acme --- app.py | 3 ++- config.json | 5 ++++- templates/player.html | 12 ++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/app.py b/app.py index d47130d..84b6138 100755 --- a/app.py +++ b/app.py @@ -1039,7 +1039,8 @@ def player(site, screen): voice_agent_url=config.get("voice_agent_url", ""), voice_agent_label=screen_cfg.get("voice_agent_label", "Digitaler Assistent"), voice_agent_target=screen_cfg.get("voice_agent_target", "overlay"), - voice_agent_position=screen_cfg.get("voice_agent_position", "top-left") + voice_agent_position=screen_cfg.get("voice_agent_position", "top-left"), + player_params=dict(request.args) ) diff --git a/config.json b/config.json index 90b3479..1fbb3e5 100755 --- a/config.json +++ b/config.json @@ -19,7 +19,10 @@ "show_images": true, "show_videos": true, "playlist": [ - "welcome.html", + { + "name": "welcome.html", + "enabled": true + }, { "url": "https://www.meteoblue.com/en/meteotv/d7b0fd", "zoom": 1.0, diff --git a/templates/player.html b/templates/player.html index 8acce55..e9b90c1 100755 --- a/templates/player.html +++ b/templates/player.html @@ -324,7 +324,7 @@ // ─── Custom-URL/Voice-Agent-Overlay (open/close mit Zurück-Button-Position-Tracking) ─── function openOverlay(url, pos) { document.getElementById("overlay").style.display = "block"; - document.getElementById("overlay-iframe").src = url; + document.getElementById("overlay-iframe").src = appendParams(url, playerParams); var backBtn = document.getElementById("overlay-back"); backBtn.className = "overlay-back-" + (pos || "top-left"); } @@ -352,6 +352,14 @@ const interval = {{ interval }} * 1000; let stayOnFirst = {{ "true" if stay_on_first else "false" }}; const screen = "{{ screen }}"; const site = "{{ site }}"; +const playerParams = {{ player_params | tojson }}; + +// Query-Parameter aus der Player-URL an URLs anhängen +function appendParams(url, params) { + if (!params || Object.keys(params).length === 0) return url; + const sep = url.includes('?') ? '&' : '?'; + return url + sep + new URLSearchParams(params).toString(); +} // stayOnFirst: Player bleibt auf erstem Element (kein Timer/Advance) // ─── Player-Status ─── @@ -448,7 +456,7 @@ function playNext() { // URL im iframe anzeigen (mit Zoom-Unterstützung) if (item.kind === "url") { iframe.style.display = "block"; - iframe.src = item.url; + iframe.src = appendParams(item.url, playerParams); const zoom = item.zoom || 1.0; if (zoom !== 1.0) { const scale = 1 / zoom;