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:
@@ -0,0 +1,104 @@
|
||||
# G Radio Player
|
||||
|
||||
Reproductor de radio profesional — GTK4 + GStreamer + Rust
|
||||
|
||||
## Binarios
|
||||
|
||||
| Binario | Descripción |
|
||||
|---|---|
|
||||
| `radio-player` | Interfaz principal GTK4 |
|
||||
| `comercial-scheduler` | Carga comerciales y eventos al segundo :58 de cada minuto |
|
||||
| `playlist-refill` | Mantiene la cola de música con 14 temas leyendo de la parrilla |
|
||||
|
||||
## Compilar
|
||||
|
||||
```bash
|
||||
./build.sh
|
||||
```
|
||||
|
||||
## Ejecutar
|
||||
|
||||
```bash
|
||||
./run.sh # inicia los tres procesos juntos
|
||||
```
|
||||
|
||||
O por separado (para depuración):
|
||||
|
||||
```bash
|
||||
RUST_LOG=info ./target/release/radio-player
|
||||
./target/release/comercial-scheduler
|
||||
./target/release/playlist-refill
|
||||
```
|
||||
|
||||
## Estructura de archivos
|
||||
|
||||
```
|
||||
$HOME/.gradio/data/
|
||||
├── tmp/
|
||||
│ ├── playlist4 # cola de música (ruta TAB MM:SS.mmm)
|
||||
│ ├── comercialeslist4 # cola de comerciales
|
||||
│ ├── eventos-esperalist # eventos post-comerciales
|
||||
│ └── eventoslist # eventos emergentes
|
||||
├── comerciales/
|
||||
│ └── {HH}/{MM}.com # pautas por hora:minuto
|
||||
│ formato: ruta|dias|YYYYMMDD_ini|YYYYMMDD_fin
|
||||
│ dias: "12345" = Lun-Vie, "67" = Sáb-Dom
|
||||
├── eventos-espera/
|
||||
│ └── {HH}/{MM}.com # mismo formato
|
||||
├── eventos/
|
||||
│ └── {HH}/{MM}.com # mismo formato
|
||||
├── parrilla/
|
||||
│ └── {DOW}/{HH}-{HH+1}.mus # archivos de música por franja
|
||||
│ formato: ruta/al/archivo.mp3 o /ruta/carpeta/*
|
||||
└── reporte/
|
||||
├── GR6-parrilla-YYYY-MM-DD.txt
|
||||
├── GR6-comercial-YYYY-MM-DD.txt
|
||||
└── GR6-evento-YYYY-MM-DD.txt
|
||||
|
||||
$HOME/.gradio/data/mix # segundos de crossfade
|
||||
$HOME/.gradio/data/tmp/upvol # volumen normal 0-100
|
||||
$HOME/.gradio/data/tmp/downvol # volumen duck 0-100
|
||||
$HOME/.gradio/data/panel/Time/ # HRS{HH}.mp3, HRS{HH}_O.mp3, MIN{MM}.mp3
|
||||
|
||||
$HOME/G Radio/inicio-espacio-pub/ # jingles inicio tanda
|
||||
$HOME/G Radio/fin-espacio-pub/ # jingles fin tanda
|
||||
```
|
||||
|
||||
## Formato de pautas (.com)
|
||||
|
||||
```
|
||||
/ruta/al/audio.mp3|12345|20250101|20251231
|
||||
/otra/pista.wav|67|20250601|20250630
|
||||
```
|
||||
|
||||
- Campo 1: ruta del archivo
|
||||
- Campo 2: máscara de días (1=Lun … 7=Dom)
|
||||
- Campo 3: fecha inicio YYYYMMDD
|
||||
- Campo 4: fecha fin YYYYMMDD
|
||||
|
||||
## Formato de parrilla (.mus)
|
||||
|
||||
```
|
||||
/ruta/carpeta/* # elige aleatoriamente de la carpeta
|
||||
/ruta/exacta/tema.mp3 # archivo concreto
|
||||
```
|
||||
|
||||
## Dependencias del sistema
|
||||
|
||||
- GTK4 ≥ 4.6
|
||||
- GStreamer ≥ 1.20 con plugins: gst-plugins-base, gst-plugins-good, gst-plugins-ugly
|
||||
- ffprobe (paquete ffmpeg) — usado por playlist-refill para leer duraciones
|
||||
|
||||
## Variables de entorno
|
||||
|
||||
- `GRADIO_RELAY_URL` — URL del servidor de relay WebSocket para acceso remoto vía
|
||||
internet (default `wss://relay.example.com/ws`). Para autohospedaje, definirla antes
|
||||
de lanzar `radio-player`.
|
||||
|
||||
## Licencia
|
||||
|
||||
Distribuido bajo los términos de la **GNU General Public License v3.0 o posterior**
|
||||
(GPL-3.0-or-later). Ver el archivo [`LICENSE`](./LICENSE).
|
||||
|
||||
Este programa enlaza dinámicamente con **GTK4** y **GStreamer**, ambos publicados
|
||||
bajo LGPL-2.1+ y compatibles con GPL-3.0.
|
||||
Reference in New Issue
Block a user