diff --git a/templates/radio/stream_player.html b/templates/radio/stream_player.html
index 6b270d1..7c80b9a 100644
--- a/templates/radio/stream_player.html
+++ b/templates/radio/stream_player.html
@@ -118,22 +118,28 @@
function startPlay() {
audio.src = streamUrl;
setVol(parseInt(slider.value, 10));
- audio.play().catch(() => {});
- playing = true;
- playBtn.innerHTML = '▮▮ Stop';
+ audio.play().then(() => {
+ playing = true;
+ playBtn.innerHTML = '▮▮ Stop';
- // SSE metadata
- if (sse) sse.close();
- sse = new EventSource('/radio/sse/?url=' + encodeURIComponent(streamUrl));
- sse.onmessage = e => {
- try {
- const data = JSON.parse(e.data);
- if (data.track) {
- document.getElementById('track-name').textContent = data.track;
- document.title = data.track + ' — ' + stationName;
- }
- } catch (_) {}
- };
+ if (sse) sse.close();
+ sse = new EventSource('/radio/sse/?url=' + encodeURIComponent(streamUrl));
+ sse.onmessage = e => {
+ try {
+ const data = JSON.parse(e.data);
+ if (data.track) {
+ document.getElementById('track-name').textContent = data.track;
+ document.title = data.track + ' — ' + stationName;
+ }
+ } catch (_) {}
+ };
+ }).catch(() => {
+ // Autoplay blocked — reset state, prompt user to click
+ playing = false;
+ audio.src = '';
+ playBtn.innerHTML = '▶ Play';
+ document.getElementById('track-name').textContent = 'Click Play to start';
+ });
}
function stopPlay() {