# 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 the path to stdout. Then, 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 ```xml playlist script ICYWS_TRACKLIST=/etc/ices2/playlist.txt /usr/local/bin/icyws ``` ### 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 ```