Files
icyws/README.md
2025-12-09 21:18:56 -05:00

1.1 KiB
Raw Blame History

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 newlineseparated 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 nowplaying 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