Skip to main content

Logs & Metadata

Runtime logs

The scheduler and pipeline write logs under LOG_ROOT (E:/radionew/logs on the local node). The production worker writes as-run logs under /home/sms/radio/logs.

LogSourceContains
Scheduler run logsmart-scheduler.jsSelections, cooldown decisions, arm updates, fetch activity
Pipeline logcontent-pipeline.jsDiscovery, sanitize results, loudness, sync results, errors
As-run log (prod)Liquidsoap workerTimestamped every played file — the air-check record

As-run CSV

The worker records one line per played file:

timestamp,file,artist,title,duration,category
2026-08-03T14:00:05,music/arabic_hits/amr_diab_x.mp3,Amr Diab,…,271.3,arabic_hits

Why it matters

  • Air-check: verify what actually went to air (vs. what was scheduled).
  • RL training data: the neural variants and bandits learn transition patterns from this history.
  • Compliance: a complete record of everything broadcast.

Media registry (meta_registry.json)

The registry is the metadata store the scheduler reads. See Registry & Metadata for the schema and how entries are derived and repaired.

Rundown JSON

scripts/regenerate-rundown.js produces a per-category JSON inventory with defaults (artist: "LOKLOK System", energy: 5) when tags are missing. See Rundown generation.

Download archive

yt_download_archive.txt records every fetched YouTube video ID to prevent re-downloading. retag_library.js backs it up before truncating on a clean reload.

Telemetry (live)

  • stats_update (listeners, bandwidth, history) — listener count is MediaMTX HLS via the read-only proxy :19353 (Icecast fallback), pushed over Socket.io.
  • timeline_update (queue) — upcoming tracks for the monitor page.
  • GET /api/status — snapshot of now-playing + telemetry.