92 lines
4.4 KiB
Plaintext
92 lines
4.4 KiB
Plaintext
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<title data-text="title">ASTEROID RADIO</title>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="icon" type="image/x-icon" href="/asteroid/static/favicon.ico">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/asteroid/static/favicon-32x32.png">
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/asteroid/static/favicon-16x16.png">
|
|
<link rel="stylesheet" type="text/css" href="/asteroid/static/asteroid.css">
|
|
<script src="/asteroid/static/js/auth-ui.js"></script>
|
|
<script src="/asteroid/static/js/front-page.js"></script>
|
|
<script src="/asteroid/static/js/recently-played.js"></script>
|
|
<script src="/api/asteroid/spectrum-analyzer.js"></script>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<header>
|
|
<h1 class="page-title">
|
|
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 60px; width: auto;">
|
|
<span data-text="station-name">ASTEROID RADIO</span>
|
|
<img src="/asteroid/static/asteroid.png" alt="Asteroid" style="height: 60px; width: auto;">
|
|
</h1>
|
|
<h3 class="page-subtitle">The Station at the End of Time</h3>
|
|
|
|
<!-- Spectrum Analyzer Canvas -->
|
|
<div style="text-align: center; margin: 15px 0;">
|
|
<canvas id="spectrum-canvas" width="800" height="100" style="max-width: 100%; border: 1px solid #00ff00; background: #000; border-radius: 4px;"></canvas>
|
|
</div>
|
|
|
|
<nav class="nav">
|
|
<a href="/asteroid/">Home</a>
|
|
<a href="/asteroid/player">Player</a>
|
|
<a href="/asteroid/status">Status</a>
|
|
<a href="/asteroid/profile" data-show-if-logged-in>Profile</a>
|
|
<a href="/asteroid/admin" data-show-if-admin>Admin</a>
|
|
<a href="/asteroid/login" data-show-if-logged-out>Login</a>
|
|
<a href="/asteroid/register" data-show-if-logged-out>Register</a>
|
|
<a href="/asteroid/logout" data-show-if-logged-in class="btn-logout">Logout</a>
|
|
</nav>
|
|
</header>
|
|
|
|
<main>
|
|
<div class="live-stream">
|
|
<div style="margin-bottom: 20px;">
|
|
<h2 style="color: #00ff00; margin: 0;"><span class="live-stream-indicator" style="font-size: 1rem;">🟢</span> LIVE STREAM</h2>
|
|
</div>
|
|
|
|
<!-- Stream Quality Selector -->
|
|
<div class="live-stream-quality">
|
|
<label for="stream-quality" class="live-stream-label" ><strong>Quality:</strong></label>
|
|
<select id="stream-quality" onchange="changeStreamQuality()">
|
|
<option value="aac">AAC 96kbps (Recommended)</option>
|
|
<option value="mp3">MP3 128kbps (Compatible)</option>
|
|
<option value="low">MP3 64kbps (Low Bandwidth)</option>
|
|
</select>
|
|
</div>
|
|
|
|
<input type="hidden" id="stream-base-url" lquery="(val stream-base-url)">
|
|
<p><strong class="live-stream-label">Stream URL:</strong> <code id="stream-url" lquery="(text default-stream-url)"></code></p>
|
|
<p><strong class="live-stream-label">Stream Quality:</strong> <span id="stream-format" lquery="(text default-stream-encoding-desc)"></span></p>
|
|
<p><strong class="live-stream-label" class="live-stream-label">BROADCASTING:</strong> <span id="stream-status" style="">Asteroid music for Hackers</span></p>
|
|
|
|
<div style="display: flex; gap: 10px; justify-content: end; margin-bottom: 20px;">
|
|
<button id="popout-btn" class="btn btn-info" onclick="openPopoutPlayer()" style="font-size: 0.9em;">
|
|
🗗 Pop Out Player
|
|
</button>
|
|
<button id="frameset-btn" class="btn btn-secondary" onclick="enableFramesetMode()" style="font-size: 0.9em;">
|
|
🖼️ Enable Persistent Player
|
|
</button>
|
|
</div>
|
|
|
|
<audio id="live-audio" controls crossorigin="anonymous" style="width: 100%; margin: 10px 0;">
|
|
<source id="audio-source" lquery="(attr :src default-stream-url :type default-stream-encoding)">
|
|
Your browser does not support the audio element.
|
|
</audio>
|
|
</div>
|
|
|
|
<div id="now-playing" class="now-playing"></div>
|
|
|
|
<!-- Recently Played Tracks -->
|
|
<div id="recently-played-panel" class="recently-played-panel">
|
|
<h3>Recently Played</h3>
|
|
<div id="recently-played-list" class="recently-played-list">
|
|
<p class="loading">Loading...</p>
|
|
</div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</body>
|
|
</html>
|