2026-08-27 10:31:16 +02:00
2026-08-27 10:31:16 +02:00
2026-08-26 22:12:52 +02:00
2026-08-27 10:24:40 +02:00
2026-08-26 22:12:52 +02:00
2026-08-27 10:24:40 +02:00
2026-08-27 10:24:40 +02:00
2026-08-26 03:06:26 +02:00
2026-08-26 22:12:52 +02:00
2026-08-26 22:12:52 +02:00
2026-08-27 10:24:40 +02:00
2026-08-27 10:24:40 +02:00

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:

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.

racket main.rkt --port 8090 --no-browser D:\Muziek D:\Podcasts

Met een klein INI-bestand zijn vaste defaults mogelijk:

[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.

Windows playback agent

Een lichte playback agent kan op een Windows-laptop draaien en meldt zichzelf via HTTP bij de centrale RKT Web Player aan. De agent opent geen inkomende netwerkpoort. Hij pollt de server voor opdrachten en rapporteert daarbij zijn actuele afspeelstatus.

Start vanuit de broncode:

racket player-agent.rkt

Dezelfde GUI kan vanuit een ander Racket-programma worden gestart:

#lang racket/base

(require rkt-web-player/player-agent)

(run-player-agent)

De GUI bewaart de server-URL, de gekozen naam en een eenmalig gegenereerde 256-bit applicatie-ID in rkt-web-player-agent.ini in de gebruikersspecifieke Racket-configuratiemap. Vul als server bijvoorbeeld http://192.168.1.10:8080 in. De naam wordt in dezelfde agent-GUI ingesteld. Na registratie verschijnt de agent met die naam als uitvoer van type AGENT; de server volgt latere naamswijzigingen bij registratie en polling.

De eerste implementatie downloadt een geselecteerde track volledig naar een tijdelijk bestand voordat racket-audio de weergave start. Daardoor is de implementatie klein en zijn geen gedeelde mappen nodig, maar het starten van grote bestanden kan merkbaar langer duren. Het tijdelijke bestand wordt bij de volgende track of bij afsluiten verwijderd.

De applicatie-ID identificeert de agent en begrenst toegang tot zijn tijdelijke media-URL, maar vervangt geen transportbeveiliging of authenticatie. Gebruik de agent en server alleen op een vertrouwd LAN zolang de HTTP-server geen TLS en gebruikersauthenticatie heeft.

Controleren

raco test private/library.rkt private/player.rkt
raco setup --check-pkg-deps rkt-web-player
S
Description
Audio player with web interface
Readme MIT 311 KiB
Languages
Racket 77.9%
JavaScript 10.4%
CSS 7.8%
HTML 3.5%
Makefile 0.4%