in unserer
Niederlassung {site_display}!
#!/usr/bin/env python3 """ Willkommensseite-Generierung für CANCOM Simple Signage. ─────────────────────────────────────────────────────── Diese Hilfsdatei sucht anhand von Kundennamen Logos (via OpenAI + Brandfetch), generiert daraus eine HTML-Willkommensseite und fügt sie in die Lobby-Playlist ein. """ import os import json from openai import OpenAI BASE_DIR = os.path.dirname(os.path.abspath(__file__)) MEDIA_DIR = os.path.join(BASE_DIR, "media") WELCOME_FILENAME = "welcome.html" # ------------------------------------------------- # OpenAI-Client # ------------------------------------------------- def get_openai_client(): """Initialisiert den OpenAI-Client mit dem API-Key. Der Key ist aktuell direkt im Code hinterlegt – sollte in env var ausgelagert werden.""" 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) # ------------------------------------------------- # Brandfetch-Logo-Suche # ------------------------------------------------- def get_brandfetch_logo(domain): """Versucht, ein Firmenlogo über Brandfetch CDN abzurufen. Baut eine direkte CDN-URL: https://cdn.brandfetch.io/{domain}/logo""" print(f"🔍 Generate - Versuche Brandfetch für Domain: {domain}") logo_url = f"https://cdn.brandfetch.io/{domain}/logo?c=1idyd4Tpb2nKaXIIc8T" print(f"✅ Generate - Brandfetch Logo gefunden: {logo_url}") return logo_url # ------------------------------------------------- # Logo-Ermittlung via OpenAI # ------------------------------------------------- def search_customer_logo(customer_name): """ Sucht das Logo eines Kunden über einen zweistufigen Prozess: 1. OpenAI GPT-4 ermittelt die Domain des Unternehmens 2. Brandfetch CDN liefert das Logo zur Domain Gibt die Logo-URL zurück oder None, wenn nichts gefunden wurde. """ print(f"✅ Generate - Suche nach Kundenlogo für: {customer_name}") try: client = get_openai_client() response = client.chat.completions.create( model="gpt-4", messages=[ { "role": "system", "content": """Du bist ein Experte für die Suche nach Domain Namen. Du findest anhand des Firmennamens die richtige Domain dazu Gib nur den Domain Namen zurück, keine weiteren Informationen. FALLBACK: Wenn du kein direkt Aufrufbare Domain findest, antworte mit "FALLBACK".""" }, { "role": "user", "content": f"Finde die Domain für dasUnternehmen: {customer_name}" } ], temperature=0.1, max_tokens=100 ) logo_url = response.choices[0].message.content.strip() print(f"🔍 OpenAI Logo-URL: {logo_url}") if logo_url.upper() == "FALLBACK": logo_url = None if logo_url: brandfetch_url = get_brandfetch_logo(logo_url) if brandfetch_url: return brandfetch_url return None except Exception as e: print(f"❌ Logo search error: {e}") return None # ------------------------------------------------- # HTML-Generierung # ------------------------------------------------- def generate_welcome_html(customer_names, logo_urls, site="stuttgart"): """ Generiert den HTML-Code für die Willkommensseite. - Links oben: CANCOM-Logo + "meets" + Kundenlogos (280px Breite) - Rechts unten: "Herzlich Willkommen in unserer Niederlassung {Standort}" customer_names: Liste der Kundennamen (max. 3) logo_urls: Liste der Logo-URLs (gleiche Reihenfolge) site: Standort-Name für die Anzeige """ site_display = site.capitalize() names_str = ", ".join(customer_names) if customer_names else "Unbekannt" print(f"✅ Generate - Willkommensseite wird generiert für: {names_str} (site: {site})") site_display = site.capitalize() cancom_svg = '''''' logo_html = "" for i, (name, url) in enumerate(zip(customer_names, logo_urls)): if url: logo_html += f'''