46 lines
1.1 KiB
Markdown
46 lines
1.1 KiB
Markdown
# 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
|
|
<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
|
|
```
|