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

104 lines
3.2 KiB
Markdown

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