81352d81fba266b189d96aeaa6feba2449911be2
icyws
A tiny ices2 input module. It does two things:
- Runs a WebSocket server on port 8765 that broadcasts the current song as
Artist - Title - When run with no arguments, picks a random song from a newline‑separated file list, prints its full path, extracts metadata, and tells the WebSocket server
Usage
Start the server
icyws serve --bind :8765 --allow-origin *
Pick a random track
ICYWS_TRACKLIST=tracks.txt icyws
This prints the selected file path to stdout and broadcasts the now‑playing info.
Track list format
A plain text file with one absolute file path per line.
ices2 config
<input>
<module>playlist</module>
<param name="type">script</param>
<param name="program">ICYWS_TRACKLIST=/etc/ices2/playlist.txt /usr/local/bin/icyws</param>
</input>
WebSocket endpoint
Connect to: /ws/radio
Receives: Artist - Title whenever a new song is selected
Announcement endpoint (internal)
If the websocket (serve mode) is live, picker mode POSTs to:
/announce
Build
go build -o icyws
Languages
Go
100%