Admin html Ergänzungen Überschriften

This commit is contained in:
Erik Thiele
2026-05-09 10:06:31 +02:00
parent 0a39ac69de
commit 296e59e709
6 changed files with 19 additions and 17 deletions

BIN
.DS_Store vendored

Binary file not shown.

6
app.py
View File

@@ -7,7 +7,7 @@ import generate_welcome_page
from datetime import datetime
from flask import (
Flask, render_template,
Flask, jsonify, render_template,
send_from_directory, redirect,
request, abort
)
@@ -26,7 +26,7 @@ BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_DIR = os.path.join(BASE_DIR, "media")
CONFIG_FILE = os.path.join(BASE_DIR, "config.json")
APP_VERSION = "4.0.2"
APP_VERSION = "4.0.4"
UPLOAD_EXTENSIONS = {".jpg", ".jpeg", ".png", ".mp4"}
app = Flask(__name__)
@@ -117,7 +117,7 @@ def add_customer():
if request.method == "POST":
customer_name = request.form.get("customer_name", "").strip()
print(f"🔍 APP.PY - Suche nach Kunde: '{customer_name}'")
if not customer_name:
error = "Kundenname erforderlich"
else:

View File

@@ -34,7 +34,6 @@
"url": "https://www.meteoblue.com/en/meteotv/d7b0fd",
"zoom": 1.0
},
"Video_CANCOM_Jahresruckblick_2025.MP4",
"Video_CANCOM_LIVE_2025_Stuttgart.MP4"
],
"newsticker_text": "Herzlich willkommen bei der CANCOM - wir w\u00fcnschen ihnen einen sch\u00f6nen Tag",

View File

@@ -1,4 +1,3 @@
version: "3.9"
services:
signage:

View File

@@ -5,6 +5,7 @@ from openai import OpenAI
# -------------------------------------------------
# Customer / Willkommensseite
# -------------------------------------------------
WELCOME_DIR = os.path.join(os.path.dirname(__file__), "media", "lobby")
os.makedirs(WELCOME_DIR, exist_ok=True)
@@ -13,25 +14,27 @@ WELCOME_FILENAME = "welcome.html"
def get_openai_client():
"""Initialize OpenAI client from environment variable"""
api_key = os.getenv("OPENAI_API_KEY")
# api_key = os.getenv("OPENAI_API_KEY")
api_key = "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"
if not api_key:
raise ValueError("OPENAI_API_KEY environment variable not set")
return OpenAI(api_key=api_key)
def get_brandfetch_logo(domain):
"""Try to fetch a logo URL from Brandfetch CDN."""
print(f"🔍 Versuche Brandfetch für Domain: {domain}")
print(f"🔍 Generate - Versuche Brandfetch für Domain: {domain}")
# Direct CDN URL construction - Brandfetch provides logos via cdn.brandfetch.io
logo_url = f"https://cdn.brandfetch.io/{domain}?c=1idyd4Tpb2nKaXIIc8T"
# if validate_logo_url(logo_url):
print(f"✅ Brandfetch Logo gefunden: {logo_url}")
print(f" Generate - Brandfetch Logo gefunden: {logo_url}")
return logo_url
# return None
def search_customer_logo(customer_name):
print(f"✅ Generate - Suche nach Kundenlogo für: {customer_name}")
"""Search for customer logo URL using OpenAI and web search"""
try:
client = get_openai_client()
@@ -71,6 +74,7 @@ def search_customer_logo(customer_name):
def generate_welcome_html(customer_name, logo_url):
print(f"✅ Generate - Willkommensseite wird generiert für: {customer_name} mit Logo: {logo_url}")
"""Generate a welcome page HTML with full-screen design"""
# CANCOM SVG logo inline
cancom_svg = '''<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xcs="https://www.xtool.com/pages/software" version="1.1" preserveAspectRatio="xMinYMin meet" width="61.682394106284505mm" height="9.909010347638684mm" viewBox="136.55880294685778 209.2954948261807 61.682394106284505 9.909010347638684" xcs:version="2.7.22"><style></style><path transform="matrix(0.158038,0,0,0.158038,133.2558,163.322122)" stroke="none" fill="currentColor" data-view-type="laser" d="M125.9,352.1h18.9L119,291.7h-16.2l-25,60.4h18.2l14.6-38.9L125.9,352.1z M323.6,322 c0,8.8-6.1,16.4-15.4,16.4c-9.1,0-15.4-7.6-15.4-16.4s6.1-16.4,15.2-16.4C317,305.6,323.6,313.4,323.6,322 M340.5,322.3 c0-17.4-13.4-31.3-32.3-31.3c-18.7,0-32.3,14.1-32.3,31.3c0,17.4,13.4,31.3,32.3,31.3C326.9,353.6,340.5,339.4,340.5,322.3 M230.4,322.5c0-8.8,6.1-16.4,14.9-16.4c3,0,5.8,0.8,8.1,2l6.6-13.4c-3-2-8.1-3.8-14.9-3.8c-18.2,0-31.6,14.1-31.6,31.3 c0,18.2,12.6,31.1,31.6,31.1c17.2,0,26-10.6,28.8-21l-13.6-5.6c-1.8,5.8-6.3,11.6-14.4,11.6C236.5,338.4,230.4,331.4,230.4,322.5 M38,322.5c0-8.8,6.1-16.4,14.9-16.4c3,0,5.8,0.8,8.1,2l6.6-13.4c-3-2-8.1-3.8-14.9-3.8c-18.4,0-31.8,14.1-31.8,31.3 c0,18.2,12.6,31.1,31.6,31.1c17.2,0,26-10.6,28.8-21l-13.6-5.6c-1.8,5.8-6.3,11.6-14.4,11.6C44,338.4,38,331.4,38,322.5 M191.8,352.1h14.4v-59.8H190v33.1l-25-33.1h-15.4v60.1h16.2v-34.1L191.8,352.1z M411.2,352.1v-59.8h-17.7l-14.4,23.2l-14.4-23.2 h-17.7v60.1h16.4V318l15.4,23.2h0.3l15.4-23.5v34.6L411.2,352.1L411.2,352.1z" fill-rule="nonzero"></path></svg>'''
@@ -209,9 +213,9 @@ def save_welcome_page(customer_name, logo_url):
f.write(html_content)
if os.path.getsize(filepath) == 0:
raise IOError("File not written")
print(f"✅ Willkommensseite generiert für: {customer_name}")
print(f"✅ Willkommensseite gespeichert in: {filepath}")
print(f"✅ Willkommensseite gespeichert: {WELCOME_FILENAME}")
print(f" Generate - Willkommensseite generiert für: {customer_name}")
print(f" Generate - Willkommensseite gespeichert in: {filepath}")
print(f" Generate - Willkommensseite gespeichert: {WELCOME_FILENAME}")
return WELCOME_FILENAME
except Exception as e:
print(f"❌ Error saving welcome page: {e}")
@@ -234,8 +238,8 @@ def add_customer_to_lobby_playlist(html_filename):
playlist.remove(full_filename)
playlist.insert(0, full_filename)
save_config(config)
print(f"✅ Willkommensseite in Lobby-Playliste platziert")
print(f" Generate - Willkommensseite in Lobby-Playliste platziert")
return True
except Exception as e:
print(f"❌ Error adding to playlist: {e}")
print(f" Generate - Error adding to playlist: {e}")
return False

View File

@@ -168,7 +168,7 @@
</p>
<!-- Upload -->
<h4>Medien hochladen</h4>
<h4>Medien hochladen - ⚠ PRIORITY Playlist</h4>
<form action="/admin/upload/priority"
method="post" enctype="multipart/form-data">
<div class="input-group mb-3">
@@ -191,7 +191,7 @@
</form>
<!-- Playlist -->
<h4>Playlist Reihenfolge</h4>
<h4>Playlist Reihenfolge - ⚠ PRIORITY Playlist</h4>
<ul class="list-group mb-3" id="playlist-priority">
{% for file in priority_files %}
@@ -322,7 +322,7 @@
<hr>
<!-- Upload -->
<h2>Medien hochladen / URL hinzufügen</h2>
<h2>Medien hochladen / URL hinzufügen - {{ screen }}</h2>
<form action="/admin/upload/{{ screen }}"
method="post" enctype="multipart/form-data">
<div class="input-group mb-3">
@@ -347,7 +347,7 @@
<hr>
<!-- Playlist -->
<h2>Playlist Reihenfolge</h2>
<h2>Playlist Reihenfolge - {{ screen }}</h2>
<ul class="list-group mb-3" id="playlist-{{ screen }}">
{% for file in media_files[screen] %}