-
Notifications
You must be signed in to change notification settings - Fork 0
Field Catalog
To preview every field with live values from your station (no Discord credentials required), run:
DRY_RUN=1 node sync.jsTo regenerate the table below from the catalog, run npm run fields.
The service maps a wide slice of the AzuraCast public API. Fields are grouped by category; the history_N_* and request_N_* sets scale with HISTORY_DEPTH / REQUESTS_DEPTH (default 4 each).
| Data Field | Type | Group | Description |
|---|---|---|---|
track_title |
Text | now_playing | Currently playing track title ("Off Air" when offline) |
artist |
Text | now_playing | Artist name, prefixed "Artist:" |
album |
Text | now_playing | Album name, prefixed "Album:" |
playlist |
Text | now_playing | Playlist name, prefixed "Playlist:" |
genre |
Text | now_playing | Track genre |
isrc |
Text | now_playing | Track ISRC code |
song_text |
Text | now_playing | Full combined "Artist - Album - Title" string |
is_request |
Text | now_playing | "Requested" if the current track was a listener request, else "" |
album_art |
Image | now_playing | Album art image for the current track |
song_elapsed |
Number | timing | Seconds elapsed in current track (progress bar current value) |
song_duration |
Number | timing | Track duration in seconds (progress bar max value) |
song_remaining |
Number | timing | Seconds remaining in current track |
elapsed_formatted |
Text | timing | Elapsed time formatted as M:SS |
duration_formatted |
Text | timing | Track duration formatted as M:SS |
remaining_formatted |
Text | timing | Remaining time formatted as M:SS |
progress_percent |
Number | timing | Percent through current track (0 to 100) |
listeners |
Number | listeners | Current listener count |
listeners_total |
Number | listeners | Total listener connections |
listeners_unique |
Number | listeners | Unique listener count |
live_status |
Text | live | "Live: Name" when a DJ is streaming, otherwise "Auto DJ" |
is_live |
Number | live | 1 if a live DJ is streaming, else 0 |
streamer_name |
Text | live | Live streamer / DJ name (empty when AutoDJ) |
broadcast_start |
Number | live | Live broadcast start time (unix seconds), 0 if not live |
live_art |
Image | live | Live DJ artwork / banner |
is_online |
Number | station | 1 if the station is online, else 0 |
station_name |
Text | station | Station name |
station_description |
Text | station | Station description |
listen_url |
Text | station | Direct stream / listen URL |
public_player_url |
Text | station | Public web player URL |
stream_bitrate |
Number | station | Default mount bitrate (kbps) |
stream_format |
Text | station | Default mount format (e.g. mp3) |
stream_mount |
Text | station | Default mount name |
requests_enabled |
Number | station | 1 if song requests are enabled, else 0 |
next_title |
Text | up_next | Next track title |
next_artist |
Text | up_next | Next track artist |
next_album |
Text | up_next | Next track album |
next_art |
Image | up_next | Next track album art |
next_duration |
Number | up_next | Next track duration in seconds |
next_playlist |
Text | up_next | Next track playlist |
history_N_title |
Text | history | Previous track #N title (N = 1…HISTORY_DEPTH) |
history_N_artist |
Text | history | Previous track #N artist |
history_N_album |
Text | history | Previous track #N album |
history_N_art |
Image | history | Previous track #N album art |
schedule_next_title |
Text | schedule | Next scheduled show title/name |
schedule_next_streamer |
Text | schedule | Next scheduled show streamer/name |
schedule_next_start |
Number | schedule | Next scheduled show start (unix seconds), 0 if none |
requests_count |
Number | requests | Number of requestable songs |
request_N_title |
Text | requests | Requestable song #N title (N = 1…REQUESTS_DEPTH) |
request_N_artist |
Text | requests | Requestable song #N artist |
request_N_art |
Image | requests | Requestable song #N album art |
The
streamersandpodcastsAzuraCast endpoints require authentication and are intentionally not used, so the widget stays purely public/read-only.
Discord rejects any identity payload with more than 30 dynamic fields (HTTP 400, BASE_TYPE_MAX_LENGTH). The full catalog is 70+, so you must narrow it with ENABLED_FIELDS to at most 30 field names. List exactly the ones your widget layout maps:
ENABLED_FIELDS=track_title,artist,album,album_art,listeners,song_elapsed,song_duration
As a safety net the service also hard-caps the payload at 30 fields and logs a warning, so a misconfiguration degrades instead of erroring. Run npm run fields to print the full catalog.
See Configuration for all environment variables and Troubleshooting for error symptoms.
Main repository: https://github.com/Hailey-Ross/hails.widgetcast