2025-12-09 21:28:35 -05:00
2025-12-09 16:55:08 -05:00
2025-12-09 16:55:08 -05:00
2025-12-09 21:28:35 -05:00
2025-12-09 21:28:35 -05:00
2025-12-09 21:23:39 -05:00

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

<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
Description
No description provided
Readme AGPL-3.0 58 KiB
Languages
Go 100%