cli player agent added

This commit is contained in:
2026-08-27 17:10:33 +02:00
parent 87cb67cf87
commit 344be19521
10 changed files with 896 additions and 624 deletions
+44 -3
View File
@@ -154,8 +154,48 @@ De server wordt bijgewerkt zodra het nieuwe music-id werkelijk hoorbaar is en
stuurt vervolgens de daaropvolgende prefetch. Tijdelijke bestanden worden
opgeruimd zodra ze niet meer nodig zijn en bij afsluiten van de agent.
Een systeemvakfunctie is voorlopig niet opgenomen. De agent start geen
PowerShell-proces of andere externe tray-helper.
### Systeemvak
De GUI gebruikt optioneel de open-source SDL3-tray-API. Als zowel het Racket-
pakket `sdl3` als de native SDL3-, SDL3_image- en SDL3_ttf-libraries aanwezig
zijn, sluit de vensterknop de agent naar het systeemvak. Het menu bevat
**RKT Web Player Agent openen** en **Afsluiten**. Zonder SDL3 blijft de agent
gewoon werken en sluit de vensterknop het proces af. Er wordt geen PowerShell-
proces of externe tray-helper gestart.
```console
raco pkg install sdl3
```
SDL3 is bewust geen verplichte package-dependency: de agent blijft daardoor
klein voor gebruikers die geen systeemvak nodig hebben. Op Windows moeten de
bijbehorende native DLL's daarnaast vindbaar zijn, bijvoorbeeld naast het
gebouwde executable of via `PATH`.
### CLI playback agent
De headless agent gebruikt exact dezelfde polling-, download-, audio- en
gapless-prefetchkern als de GUI-agent:
```console
racket player-agent-cli.rkt
racket player-agent-cli.rkt --server https://muziek.example.nl --name "Werkkamer"
```
GUI en CLI gebruiken standaard hetzelfde gebruikersspecifieke
`rkt-web-player-agent.ini`, dus ook hetzelfde application-ID. Met `--config`
kan de CLI een afzonderlijk INI-bestand en daarmee een afzonderlijke identiteit
gebruiken. Bij het starten worden naam, server en application-ID afgedrukt;
stoppen gaat met `Ctrl+C`.
Vanuit Racket is de headless variant eveneens beschikbaar:
```racket
(require rkt-web-player/player-agent)
(run-player-agent-cli #:server-url "https://muziek.example.nl"
#:name "Werkkamer")
```
De allowlist voorkomt dat een onbekende agent zich als uitvoerpunt registreert
of opdrachten en tijdelijke media ontvangt. Het applicatie-ID is een gedeeld
@@ -166,6 +206,7 @@ geen TLS heeft.
## Controleren
```console
raco test private/users.rkt private/library.rkt private/player.rkt
raco test private/users.rkt private/library.rkt private/player.rkt \
private/player-agent-config.rkt
raco setup --check-pkg-deps rkt-web-player
```