Files
G-Radio-Player/assets/opencode/context/03-comerciales.md
T
cescobar 03084e2d5a Commit inicial: G Radio Player
Sistema de automatización de radio en Rust (GTK4 + GStreamer): reproductor
principal con crossfade y ducking, scheduler de comerciales, refill de
playlist, y herramientas auxiliares (pautaje, parrilla, botonera, visor,
buscador, playlist, grabador, reportes). Incluye sistema de skins y modos
de Players (paneles de reproducción configurables).
2026-08-23 00:57:40 -05:00

3.2 KiB

Comerciales (Pautaje)

Los comerciales son audios programados para sonar a horas y minutos específicos, con control de días activos y fechas de vigencia.

Archivos .com

Ruta: ~/.gradio/data/comerciales/<hora>/<minuto>.com

  • Hora: 0 a 23 (sin cero a la izquierda)
  • Minuto: 0 a 59 (sin cero a la izquierda)
  • Ejemplo: ~/.gradio/data/comerciales/15/30.com = tanda de las 15:30

Formato de cada línea en un .com

/ruta/absoluta/al/audio.mp3|1234567|20250101|20251231
Campo Significado
/ruta/... Ruta absoluta al archivo de audio
1234567 Máscara de días activos: cada dígito = un día (1=Lun, 2=Mar, 3=Mié, 4=Jue, 5=Vie, 6=Sáb, 7=Dom). 1234567 = todos los días
20250101 Fecha de inicio de vigencia (AAAAMMDD)
20251231 Fecha de fin de vigencia (AAAAMMDD)

Ejemplos de máscaras de días

1234567   → todos los días
12345     → lunes a viernes
67        → sábado y domingo
135       → lunes, miércoles, viernes
1         → solo lunes

Ejemplos de entradas .com

/home/grecord/Comerciales/spot_banco.mp3|12345|20250601|20250630
/home/grecord/Comerciales/promo_fin_semana.mp3|67|20250101|20251231
/home/grecord/Comerciales/jingle_general.mp3|1234567|20250101|20261231

Cola activa comercialeslist4

~/.gradio/data/tmp/comercialeslist4 contiene la cola que el player está procesando ahora. Solo tiene rutas (ya sin máscara ni fechas, esas ya fueron evaluadas por el scheduler):

/home/grecord/Comerciales/spot_banco.mp3
/home/grecord/Comerciales/jingle_general.mp3

Archivo played_breaks

~/.gradio/data/tmp/played_breaks registra las tandas que ya fueron reproducidas manualmente hoy (para que el scheduler no las vuelva a disparar):

20250627 15:30
20250627 16:00

Comandos útiles

# Ver la tanda de las 15:30
cat ~/.gradio/data/comerciales/15/30.com

# Ver todos los comerciales programados para hoy (lunes = día 1)
HOY=$(date +%u)
for h in $(seq 0 23); do
  for f in ~/.gradio/data/comerciales/$h/*.com; do
    [ -f "$f" ] || continue
    grep "|.*$HOY" "$f" && echo "  → $f"
  done
done

# Ver qué está en cola activa
cat ~/.gradio/data/tmp/comercialeslist4

# Agregar un comercial a las 16:00 de hoy (todos los días, vigente todo el año)
echo "/ruta/spot.mp3|1234567|20250101|20261231" >> ~/.gradio/data/comerciales/16/0.com

# Crear directorio si no existe
mkdir -p ~/.gradio/data/comerciales/16
echo "/ruta/spot.mp3|1234567|20250101|20261231" >> ~/.gradio/data/comerciales/16/0.com

# Reproducir tanda inmediatamente (sin esperar al scheduler)
echo "/ruta/spot.mp3" > ~/.gradio/data/tmp/comercialeslist4
touch ~/.gradio/data/tmp/cmd_play_tanda

# Ver tandas ya reproducidas hoy
cat ~/.gradio/data/tmp/played_breaks

Cómo funciona el scheduler

El daemon comercial-scheduler (Rust) se activa en el minuto :58 de cada hora y:

  1. Lee los archivos .com del minuto y hora siguientes
  2. Filtra por día activo (máscara) y fechas de vigencia
  3. Carga las rutas válidas en comercialeslist4
  4. El player las procesa cuando llega el momento

Si una tanda aparece en played_breaks con fecha/hora de hoy, el scheduler la salta (ya se reprodujo manualmente).