# 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//.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 ```bash # 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).