Files
obs-config/webapp/routes/web.php
Jakub Zych fd1c78b333 webapp: drop rig:playlist pipeline, source track count from mpc stats
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 <script src> + window.__PLAYLIST
shims, and the stale storage/data/playlist.json artifact.

AudioController still consumes config('rig.music_dirs') for the HTTP
audio stream — that's orthogonal and stays.
2026-05-22 21:04:24 +02:00

42 lines
1.7 KiB
PHP

<?php
use App\Http\Controllers\AudioController;
use App\Http\Controllers\DataController;
use App\Http\Controllers\MusicCommandController;
use App\Http\Controllers\OnboardController;
use App\Http\Controllers\Overlays\DesktopController;
use App\Http\Controllers\Overlays\GameController;
use App\Http\Controllers\Overlays\GoodbyeController;
use App\Http\Controllers\Overlays\LandingController;
use App\Http\Controllers\Overlays\LoadingController;
use App\Http\Controllers\Overlays\MusicBoxController;
use App\Http\Controllers\Overlays\MusicDaemonController;
use Illuminate\Support\Facades\Route;
Route::view('/', 'home');
Route::view('/scenes', 'scenes');
Route::get('/landing', [LandingController::class, 'show']);
Route::get('/loading', [LoadingController::class, 'show']);
Route::get('/game', [GameController::class, 'show']);
Route::get('/desktop', [DesktopController::class, 'show']);
Route::get('/goodbye', [GoodbyeController::class, 'show']);
Route::get('/music-daemon', [MusicDaemonController::class, 'show']);
Route::prefix('music-box')->controller(MusicBoxController::class)->group(function () {
Route::get('/', 'box');
Route::get('widget', 'widget');
Route::get('cover', 'cover');
Route::get('nc', 'nc');
});
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']);
Route::get('/onboard', [OnboardController::class, 'show']);
Route::get('/onboard/search', [OnboardController::class, 'search']);
Route::post('/onboard', [OnboardController::class, 'submit']);