Files
cescobar 2f6b5340f5 Commit inicial: gr-locutor (Locutor IA - GRP)
Locuciones de radio con voz IA local (XTTS-v2) integradas a G Radio
Player: interfaz Rust/GTK4 de configuración, motor de generación y
enriquecimiento de texto en Python, daemon de monitoreo que dispara
locuciones sin pausar playlist-refill. Requiere radio-player >= 0.4.11.
2026-08-23 01:58:56 -05:00

55 lines
1.6 KiB
Bash

#!/bin/bash
# Inicia/detiene el monitor de locuciones (gr-locutor)
# Uso: start-monitor.sh [start|stop|status]
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PIDFILE="$HOME/.gradio/data/tmp/pids/locuciones-monitor.pid"
MONITOR="$SCRIPT_DIR/monitor-locuciones.py"
LOCUTOR_VENV="$HOME/.gradio/locutor-venv"
case "${1:-start}" in
start)
if [ -f "$PIDFILE" ]; then
pid=$(cat "$PIDFILE" 2>/dev/null)
if kill -0 "$pid" 2>/dev/null; then
echo "Monitor ya está corriendo (PID $pid)"
exit 0
fi
rm -f "$PIDFILE"
fi
mkdir -p "$(dirname "$PIDFILE")"
# shellcheck source=/dev/null
source "$LOCUTOR_VENV/bin/activate"
nohup python3 "$MONITOR" > "$HOME/.gradio/data/tmp/locuciones-monitor.log" 2>&1 &
echo $! > "$PIDFILE"
echo "Monitor de locuciones iniciado (PID $!)"
;;
stop)
if [ -f "$PIDFILE" ]; then
pid=$(cat "$PIDFILE" 2>/dev/null)
kill "$pid" 2>/dev/null && echo "Monitor detenido" || echo "No se pudo detener"
rm -f "$PIDFILE"
else
pkill -f "monitor-locuciones.py" 2>/dev/null && echo "Monitor detenido" || echo "Monitor no estaba corriendo"
fi
;;
status)
if [ -f "$PIDFILE" ]; then
pid=$(cat "$PIDFILE" 2>/dev/null)
if kill -0 "$pid" 2>/dev/null; then
echo "Monitor ACTIVO (PID $pid)"
tail -3 "$HOME/.gradio/data/tmp/locuciones-monitor.log" 2>/dev/null
else
echo "Monitor INACTIVO (PID file obsoleto)"
rm -f "$PIDFILE"
fi
else
echo "Monitor INACTIVO"
fi
;;
*)
echo "Uso: $0 [start|stop|status]"
exit 1
;;
esac