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
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00
2026-08-23 00:57:40 -05:00

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

./build.sh

Ejecutar

./run.sh          # inicia los tres procesos juntos

O por separado (para depuración):

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.

Este programa enlaza dinámicamente con GTK4 y GStreamer, ambos publicados bajo LGPL-2.1+ y compatibles con GPL-3.0.

S
Description
Software profesional de automatización para radiodifusoras
Readme GPL-3.0
3.9 MiB
Languages
Rust 94.2%
Shell 5%
CSS 0.8%