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).
139 lines
4.4 KiB
Bash
Executable File
139 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# ─── G Radio Player — instalador para Arch Linux ─────────────────────────────
|
|
set -e
|
|
cd "$(dirname "$0")"
|
|
|
|
INSTALL_DIR="$HOME/.local/share/radio-player"
|
|
BIN_DIR="$HOME/.local/bin"
|
|
DESKTOP_DIR="$HOME/.local/share/applications"
|
|
|
|
# ── 1. Dependencias del sistema (pacman) ──────────────────────────────────────
|
|
echo "==> Verificando dependencias..."
|
|
|
|
PKGS=(
|
|
gstreamer
|
|
gst-plugins-base
|
|
gst-plugins-good
|
|
gst-plugins-bad
|
|
gst-plugins-ugly
|
|
gst-libav
|
|
ffmpeg
|
|
)
|
|
|
|
MISSING=()
|
|
for pkg in "${PKGS[@]}"; do
|
|
if ! pacman -Q "$pkg" &>/dev/null; then
|
|
MISSING+=("$pkg")
|
|
fi
|
|
done
|
|
|
|
if [ ${#MISSING[@]} -gt 0 ]; then
|
|
echo " Faltan paquetes: ${MISSING[*]}"
|
|
echo " Instalando con pacman..."
|
|
sudo pacman -S --needed --noconfirm "${MISSING[@]}"
|
|
fi
|
|
|
|
# ── 2. Instalar binarios ──────────────────────────────────────────────────────
|
|
echo "==> Instalando binarios en $BIN_DIR..."
|
|
BINS=(
|
|
radio-player
|
|
comercial-scheduler
|
|
playlist-refill
|
|
gr-visor
|
|
gr-botonera
|
|
gr-buscador
|
|
gr-parrilla
|
|
gr-pautaje
|
|
gr-playlist
|
|
gr-record
|
|
gr-reportes
|
|
)
|
|
for bin in "${BINS[@]}"; do
|
|
if [ ! -f "target/release/$bin" ]; then
|
|
echo "ERROR: binario no encontrado: target/release/$bin"
|
|
echo " Compila el proyecto antes de instalar (cargo build --release)"
|
|
exit 1
|
|
fi
|
|
done
|
|
mkdir -p "$BIN_DIR"
|
|
for bin in "${BINS[@]}"; do
|
|
cp "target/release/$bin" "$BIN_DIR/$bin"
|
|
chmod +x "$BIN_DIR/$bin"
|
|
done
|
|
|
|
# ── 3. Instalar assets ────────────────────────────────────────────────────────
|
|
echo "==> Instalando assets..."
|
|
if [ ! -d "target/data/panel/Time" ]; then
|
|
echo "ERROR: carpeta 'target/data/panel/Time' no encontrada en el paquete"
|
|
exit 1
|
|
fi
|
|
mkdir -p "$HOME/.gradio/data/panel"
|
|
cp -r target/data/panel/Time "$HOME/.gradio/data/panel/Time"
|
|
|
|
# ── 4. Crear lanzador principal ───────────────────────────────────────────────
|
|
echo "==> Creando lanzador..."
|
|
mkdir -p "$INSTALL_DIR"
|
|
cat > "$INSTALL_DIR/gradio.sh" << 'LAUNCHER'
|
|
#!/bin/bash
|
|
BIN="$HOME/.local/bin"
|
|
|
|
mkdir -p "$HOME/.gradio/data/tmp"
|
|
mkdir -p "$HOME/.gradio/data/parrilla"
|
|
mkdir -p "$HOME/.gradio/data/comerciales"
|
|
mkdir -p "$HOME/.gradio/data/eventos-espera"
|
|
mkdir -p "$HOME/.gradio/data/eventos"
|
|
mkdir -p "$HOME/.gradio/data/reporte"
|
|
mkdir -p "$HOME/G Radio/inicio-espacio-pub"
|
|
mkdir -p "$HOME/G Radio/fin-espacio-pub"
|
|
|
|
"$BIN/comercial-scheduler" &
|
|
SCHED_PID=$!
|
|
"$BIN/playlist-refill" &
|
|
REFILL_PID=$!
|
|
|
|
"$BIN/radio-player" "$@"
|
|
EXIT_CODE=$?
|
|
|
|
kill $SCHED_PID $REFILL_PID 2>/dev/null
|
|
wait $SCHED_PID $REFILL_PID 2>/dev/null
|
|
exit $EXIT_CODE
|
|
LAUNCHER
|
|
chmod +x "$INSTALL_DIR/gradio.sh"
|
|
ln -sf "$INSTALL_DIR/gradio.sh" "$BIN_DIR/gradio"
|
|
|
|
# ── 5. Entrada de menú de escritorio ──────────────────────────────────────────
|
|
echo "==> Registrando en el menú de aplicaciones..."
|
|
mkdir -p "$DESKTOP_DIR"
|
|
# Limpiar entrada de versiones antiguas (nombre no coincidía con el app_id)
|
|
rm -f "$DESKTOP_DIR/gradio-player.desktop"
|
|
cat > "$DESKTOP_DIR/com.gradio.radio-player.desktop" << DESKTOP
|
|
[Desktop Entry]
|
|
Type=Application
|
|
Name=G Radio Player
|
|
GenericName=Radio Player
|
|
Comment=Reproductor de radio profesional
|
|
Exec=$INSTALL_DIR/gradio.sh
|
|
Icon=gradio-player
|
|
Categories=AudioVideo;Audio;Player;
|
|
Terminal=false
|
|
StartupNotify=true
|
|
DESKTOP
|
|
|
|
update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true
|
|
|
|
# ── 6. PATH ───────────────────────────────────────────────────────────────────
|
|
if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
|
|
echo ""
|
|
echo " AVISO: $HOME/.local/bin no está en tu PATH."
|
|
echo " Agrega esta línea a tu ~/.bashrc o ~/.zshrc:"
|
|
echo ""
|
|
echo ' export PATH="$HOME/.local/bin:$PATH"'
|
|
echo ""
|
|
fi
|
|
|
|
echo ""
|
|
echo " Instalación completa."
|
|
echo ""
|
|
echo " Ejecutar: gradio"
|
|
echo " Desinstalar: ./uninstall.sh"
|