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).
This commit is contained in:
2026-08-23 00:57:40 -05:00
commit 03084e2d5a
231 changed files with 31055 additions and 0 deletions
@@ -0,0 +1,90 @@
# 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
```bash
# 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
```bash
# 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 |