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).
2.6 KiB
2.6 KiB
Programación Musical (Parrilla)
La parrilla define qué música suena en cada bloque horario de cada día de la semana.
Archivos .mus
Ruta: ~/.gradio/data/parrilla/<día>/<hora_inicio>-<hora_fin>.mus
- Día: 1=Lunes, 2=Martes, 3=Miércoles, 4=Jueves, 5=Viernes, 6=Sábado, 7=Domingo
- Hora: bloque de una hora (0-1, 1-2, ..., 23-24)
- Ejemplo:
~/.gradio/data/parrilla/1/10-11.mus= Lunes de 10:00 a 11:00
Formato de un archivo .mus
Cada línea puede ser:
/home/usuario/Música/tema_exacto.mp3 ← archivo específico
/home/usuario/Música/Salsa/* ← archivo ALEATORIO de esa carpeta (comodín *)
Hora ← insertar anuncio de hora del sistema
Ejemplo real:
/home/grecord/Musica/Inicio/intro.mp3
/home/grecord/Musica/Pop/*
/home/grecord/Musica/Pop/*
Hora
/home/grecord/Musica/Rock/*
/home/grecord/Musica/Baladas/*
Cola activa playlist4
~/.gradio/data/tmp/playlist4 contiene la playlist en ejecución. Formato TAB-separado:
/ruta/absoluta/al/archivo.mp3\t00:03:45.000
/ruta/absoluta/al/archivo2.mp3\t00:04:12.000
El daemon playlist-refill mantiene esta cola con ~14 temas. Cada tema consumido se elimina de la primera línea.
Cómo ver la programación actual
# Qué tema está sonando ahora
cat ~/.gradio/data/tmp/estado.json | python3 -c "import sys,json; d=json.load(sys.stdin); print(d['titulo_actual'], '-', d['track_actual'])"
# Cola de música pendiente
cat ~/.gradio/data/tmp/playlist4
# Parrilla del día de hoy (ej. lunes = día 1)
DIA=$(date +%u) # 1=Lun...7=Dom
HORA=$(date +%-H)
cat ~/.gradio/data/parrilla/$DIA/$HORA-$((HORA+1)).mus
Cómo modificar la programación
# Agregar un tema al frente de la cola actual (próximo a reproducir)
TEMA="/ruta/al/archivo.mp3"
DUR="00:03:45.000"
(echo -e "$TEMA\t$DUR"; cat ~/.gradio/data/tmp/playlist4) > /tmp/pl_tmp && mv /tmp/pl_tmp ~/.gradio/data/tmp/playlist4
# Agregar un tema al final de la cola
echo -e "/ruta/al/archivo.mp3\t00:04:00.000" >> ~/.gradio/data/tmp/playlist4
# Editar la parrilla de mañana (agregar tema a las 9:00-10:00 del martes)
echo "/ruta/nuevo_tema.mp3" >> ~/.gradio/data/parrilla/2/9-10.mus
# Ver toda la programación de la semana para una hora específica
for dia in 1 2 3 4 5 6 7; do
echo "=== Día $dia ==="
cat ~/.gradio/data/parrilla/$dia/10-11.mus 2>/dev/null || echo "(vacío)"
done
Días con nombres
| Número | Día |
|---|---|
| 1 | Lunes |
| 2 | Martes |
| 3 | Miércoles |
| 4 | Jueves |
| 5 | Viernes |
| 6 | Sábado |
| 7 | Domingo |