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).
3.2 KiB
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:
- Lee los archivos
.comdel minuto y hora siguientes - Filtra por día activo (máscara) y fechas de vigencia
- Carga las rutas válidas en
comercialeslist4 - 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).