# rkt-web-player Een audioplayer met webinterface, gebouwd op de bestaande Racket-pakketten: - `racket-audio` voor lokale weergave en metadata; - `racket-upnp` en `racket-sonos` voor ontdekking van netwerkspelers; - `racket-audio-dlna` voor het publiceren en afspelen van lokale bestanden; - `racket-mimetypes`, `simple-ini` en `simple-log` voor ondersteunende taken. ## Starten De gekoppelde ontwikkelpackages kunnen direct worden gebruikt: ```console racket main.rkt D:\Muziek ``` Standaard opent de speler `http://127.0.0.1:8080/`. Iedere opgegeven map wordt een afzonderlijke muziekbibliotheek. Bij het starten wordt alleen de inhoud van de eerste rootmap gelezen; er vindt geen recursieve bibliotheekscan plaats. ```console racket main.rkt --port 8090 --no-browser D:\Muziek D:\Podcasts ``` Met een klein INI-bestand zijn vaste defaults mogelijk: ```ini [server] listen-ip=127.0.0.1 port=8080 [player] dlna-port=8734 [library] paths=D:\Muziek;D:\Podcasts ``` Start dat bestand met `racket main.rkt --config rkt-web-player.ini`. Meerdere bibliotheekpaden worden met een puntkomma gescheiden. ## Werking De interface volgt de informatiearchitectuur van `rktplayer`, maar is responsive en geschikt voor muis, toetsenbord en touch. Links staat de lazy mappenbrowser met trackinformatie; rechts staan playlisttabs en de huidige playlist. Een map wordt pas recursief gelezen wanneer die met **afspelen** of **toevoegen** wordt gekozen. Trackmetadata wordt eveneens pas op dat moment geladen. De webinterface praat met een kleine JSON-API onder `/api`. Lokale weergave wordt pas geïnitialiseerd bij het eerste afspeelcommando. De knop naast de uitvoerkeuze start UPnP-discovery; gevonden Sonos-zones worden als logische groepen aangeboden en niet nogmaals als losse UPnP-renderers. Playlisttabs kunnen worden toegevoegd, geselecteerd, hernoemd door dubbel te klikken en verwijderd. Tracks kunnen worden afgespeeld, verwijderd en met drag-and-drop verplaatst. De tabs zijn in deze versie alleen in het geheugen aanwezig en worden niet na een herstart hersteld. De server luistert standaard alleen op localhost. Geef alleen bewust een LAN-adres aan `--listen-ip`; de huidige opzet bevat geen authenticatie. ## Controleren ```console raco test --drdr private/library.rkt private/player.rkt raco setup --check-pkg-deps rkt-web-player ```