From fd1c78b333409e4e96da1ac4b5b9c833475ddae5 Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Fri, 22 May 2026 21:04:24 +0200 Subject: [PATCH] webapp: drop rig:playlist pipeline, source track count from mpc stats MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The four overlays that read /data/playlist.js (loading, goodbye, music-box, music/nc) only ever consumed `tracks.length` for cosmetic "LIBRARY :: N TRACKS" / "indexed N tracks" flavor text — all live playback signal flows through bridges/mpd-state.py over OBS WS. The 142 KB JSON, ffprobe walk, and ETag-cached route were all producing one integer that MPD itself already knows. RigData::playlistCount() now shells `mpc stats` and parses "Songs: N", returning 0 on any failure (treated by callers as empty library). Removes RigPlaylistCommand, DataController::playlist(), the /data/playlist.js route, the per-overlay - @endpush @section('content') @@ -140,8 +139,7 @@ return parts.join(' '); } - const playlistData = window.__PLAYLIST || { tracks: [] }; - const allTracks = playlistData.tracks || []; + const trackCount = window.__TRACK_COUNT || 0; let bootStarted = false; let bootFinished = false; let lastPlaybackModes = null; @@ -206,12 +204,12 @@ bootStarted = true; lastPlaybackModes = normalizePlayback(s.playback); await typeCommand(formatMusicCommand(s.playback)); - if (allTracks.length === 0) { + if (trackCount === 0) { append('> ', '[audio] no tracks queued', 'term-dim'); bootFinished = true; return; } - append('> ', `[audio] queue retained: ${allTracks.length} tracks`, 'term-out'); + append('> ', `[audio] queue retained: ${trackCount} tracks`, 'term-out'); await sleep(180); append('> ', '[audio] subscribing to mpd:state events', 'term-out'); await sleep(180); diff --git a/webapp/resources/views/overlays/loading.blade.php b/webapp/resources/views/overlays/loading.blade.php index 419b4a8..a62615b 100644 --- a/webapp/resources/views/overlays/loading.blade.php +++ b/webapp/resources/views/overlays/loading.blade.php @@ -30,7 +30,6 @@ window.__TEL = @json($telemetry); window.__TRACK_COUNT = @json($trackCount); - @endpush @section('content') @@ -142,8 +141,7 @@ return parts.join(' '); } - const playlistData = window.__PLAYLIST || { tracks: [] }; - const allTracks = playlistData.tracks || []; + const trackCount = window.__TRACK_COUNT || 0; let bootStarted = false; let bootFinished = false; let lastPlaybackModes = null; @@ -214,13 +212,13 @@ lastPlaybackModes = normalizePlayback(s.playback); await typeCommand(formatMusicCommand(s.playback)); - if (allTracks.length === 0) { - append('> ', '[audio] no tracks queued — run `php artisan rig:playlist`', 'term-dim'); + if (trackCount === 0) { + append('> ', '[audio] mpd library empty — check music_directory + run `mpc update`', 'term-dim'); bootFinished = true; return; } - append('> ', `[audio] indexed ${allTracks.length} tracks`, 'term-out'); + append('> ', `[audio] indexed ${trackCount} tracks`, 'term-out'); await sleep(180); append('> ', `[audio] uplink to daemon @ ophi-118://${rigName.toLowerCase()}.audio.bus`, 'term-out'); await sleep(180); diff --git a/webapp/resources/views/overlays/music/box.blade.php b/webapp/resources/views/overlays/music/box.blade.php index 5beba28..f16c287 100644 --- a/webapp/resources/views/overlays/music/box.blade.php +++ b/webapp/resources/views/overlays/music/box.blade.php @@ -27,7 +27,6 @@ @push('data-scripts') - @endpush @section('content') @@ -72,8 +71,7 @@ 'use strict'; const pad = HUD.pad; - const playlistData = window.__PLAYLIST || { tracks: [] }; - const trackCount = (playlistData.tracks || []).length || (window.__TRACK_COUNT || 0); + const trackCount = window.__TRACK_COUNT || 0; document.getElementById('rig').textContent = trackCount > 0 ? `LIBRARY :: ${trackCount} TRACKS` : '— EMPTY LIBRARY —'; diff --git a/webapp/resources/views/overlays/music/nc.blade.php b/webapp/resources/views/overlays/music/nc.blade.php index e5944ec..e3a861c 100644 --- a/webapp/resources/views/overlays/music/nc.blade.php +++ b/webapp/resources/views/overlays/music/nc.blade.php @@ -165,7 +165,6 @@ @push('data-scripts') - @endpush @section('content') @@ -251,8 +250,7 @@ const fmtClock = s => (!isFinite(s) || s < 0) ? '--:--' : `${pad(Math.floor(s / 60))}:${pad(Math.floor(s % 60))}`; - const playlistData = window.__PLAYLIST || { tracks: [] }; - const trackCount = (playlistData.tracks || []).length || (window.__TRACK_COUNT || 0); + const trackCount = window.__TRACK_COUNT || 0; const term = document.getElementById('termOutput'); const pinnedBlock = document.getElementById('pinnedBlock'); diff --git a/webapp/resources/views/scenes.blade.php b/webapp/resources/views/scenes.blade.php index f5cb145..829344a 100644 --- a/webapp/resources/views/scenes.blade.php +++ b/webapp/resources/views/scenes.blade.php @@ -85,7 +85,6 @@
DATA ENDPOINTS
diff --git a/webapp/routes/web.php b/webapp/routes/web.php index 4cc6b5f..9935fc5 100644 --- a/webapp/routes/web.php +++ b/webapp/routes/web.php @@ -30,9 +30,8 @@ Route::prefix('music-box')->controller(MusicBoxController::class)->group(functio Route::get('nc', 'nc'); }); -Route::get('/data/playlist.js', [DataController::class, 'playlist']); -Route::get('/cover.jpg', [DataController::class, 'coverImage']); -Route::get('/track', [AudioController::class, 'stream']); +Route::get('/cover.jpg', [DataController::class, 'coverImage']); +Route::get('/track', [AudioController::class, 'stream']); Route::post('/cmd/{type}', [MusicCommandController::class, 'send']) ->whereIn('type', ['skip', 'prev', 'pause', 'resume']);