# 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
```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
```