MusicMood / static /index.html
Marek4321's picture
fix: przycisk Wlacz kamere gdy autostart zablokowany (SecurityError)
c2fe66e verified
Raw
History Blame Contribute Delete
5.07 kB
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MusicMood 📺🎵</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<header>
<h1>Music<span>Mood</span></h1>
<p class="tagline">Twoja twarz · Twój nastrój · Twoja muzyka</p>
</header>
<div class="topbar">
<input type="password" id="appPass" placeholder="Hasło dostępu" autocomplete="off">
<select id="cameraSelect" title="Wybierz kamerę"></select>
<button id="scanBtn" disabled>📷 SCAN</button>
</div>
<main>
<!-- LEWA KOLUMNA: kamera + parametry -->
<section class="left">
<div class="camera-box">
<video id="video" autoplay playsinline muted></video>
<canvas id="canvas" hidden></canvas>
<div id="flash"></div>
<div id="cameraMsg" class="camera-msg">
<div>
<p id="cameraMsgText">Uruchamianie kamery…</p>
<button id="enableCamBtn" hidden>🎥 Włącz kamerę</button>
</div>
</div>
</div>
<div class="panel" id="resultsPanel">
<h2>📊 Analiza i rekomendacja</h2>
<div id="status" class="status">Wpisz hasło dostępu, wybierz kamerę i kliknij SCAN.</div>
<div id="results" hidden>
<div class="param-group">
<h3>👤 Osoba</h3>
<dl>
<dt>Płeć</dt><dd id="rPlec"></dd>
<dt>Wiek</dt><dd id="rWiek"></dd>
<dt>Nastrój</dt><dd id="rNastroj"></dd>
<dt>Emocje</dt><dd id="rEmocje"></dd>
</dl>
</div>
<div class="param-group">
<h3>🌍 Kontekst</h3>
<dl>
<dt>Czas</dt><dd id="rCzas"></dd>
<dt>Pogoda</dt><dd id="rPogoda"></dd>
<dt>Ciśnienie</dt><dd id="rCisnienie"></dd>
</dl>
</div>
<div class="param-group">
<h3>🎵 Rekomendacja muzyczna</h3>
<dl>
<dt>Styl</dt><dd id="rStyl"></dd>
<dt>Tempo</dt><dd id="rTempo"></dd>
<dt>Rytmika</dt><dd id="rRytmika"></dd>
<dt>Charakter</dt><dd id="rCharakter"></dd>
</dl>
<p class="uzasadnienie" id="rUzasadnienie"></p>
<p class="query">🔎 <span id="rQuery"></span></p>
</div>
</div>
</div>
</section>
<!-- PRAWA KOLUMNA: retro TV z playerem YouTube -->
<section class="right">
<div class="tv">
<div class="tv-antenna">
<div class="antenna-rod left-rod"></div>
<div class="antenna-rod right-rod"></div>
<div class="antenna-base"></div>
</div>
<div class="tv-cabinet">
<div class="tv-screen-frame">
<div class="tv-screen" id="tvScreen">
<div class="tv-static" id="tvStatic">
<div class="tv-noise"></div>
<div class="tv-standby-text">▓ MOODTRON ▓</div>
<div class="tv-log" id="tvLog"></div>
</div>
<div id="ytplayer"></div>
</div>
<div class="tv-scanlines"></div>
</div>
<div class="tv-side">
<div class="tv-brand">MOODTRON</div>
<div class="tv-knob knob-1"><div class="knob-marker"></div></div>
<div class="tv-knob knob-2"><div class="knob-marker"></div></div>
<div class="tv-speaker">
<i></i><i></i><i></i><i></i><i></i><i></i><i></i><i></i>
</div>
<div class="tv-led" id="tvLed"></div>
</div>
</div>
<div class="tv-legs">
<div class="tv-leg"></div>
<div class="tv-leg"></div>
</div>
</div>
</section>
</main>
<footer>
<p>Pogoda: Open-Meteo / wttr.in · Analiza: GPT-4o · Player: YouTube</p>
<p class="disclaimer">
Aplikacja ma charakter wyłącznie rozrywkowo-demonstracyjny i korzysta z systemu
sztucznej inteligencji (GPT-4o), który na podstawie obrazu z kamery <em>szacuje</em>
nastrój, emocje, płeć i wiek — wyniki są przybliżeniami generowanymi przez AI,
mogą być błędne i nie stanowią identyfikacji biometrycznej, profilowania ani
podstawy jakichkolwiek decyzji wywołujących skutki wobec użytkownika.
Zdjęcie jest wykonywane wyłącznie po świadomym kliknięciu przycisku SCAN
(co stanowi dobrowolną zgodę na jego jednorazowe przetworzenie), jest przesyłane
bezpośrednio do interfejsu OpenAI API w celu wygenerowania rekomendacji muzycznej
i nie jest nigdzie zapisywane, przechowywane ani udostępniane innym podmiotom.
Aplikacja nie tworzy bazy danych wizerunków ani nie śledzi użytkowników.
Korzystając z aplikacji, przyjmujesz powyższe do wiadomości.
</p>
</footer>
<script src="https://www.youtube.com/iframe_api"></script>
<script src="/static/app.js"></script>
</body>
</html>