# Comandos y Control del Sistema ## Control de reproducción (señales IPC) El player monitorea la carpeta `~/.gradio/data/tmp/` cada 200ms. Para enviar un comando, **crea el archivo** — el player lo lee, ejecuta la acción y borra el archivo. ```bash TMP=~/.gradio/data/tmp # Reproducir (reanudar desde pausa) touch "$TMP/cmd_play" # Pausar / reanudar (toggle) touch "$TMP/cmd_pause" # Detener deck A (deja los comerciales intactos) touch "$TMP/cmd_stop" # Toggle "detener al terminar el tema actual" touch "$TMP/cmd_stop_after" # Saltar al siguiente tema touch "$TMP/cmd_siguiente" # STOP GENERAL: detiene música + comerciales + eventos todo touch "$TMP/cmd_stop_general" # Reproducir tanda de comerciales AHORA (sin esperar al scheduler) # Primero cargar la lista, luego la señal echo "/ruta/spot1.mp3" > "$TMP/comercialeslist4" echo "/ruta/spot2.mp3" >> "$TMP/comercialeslist4" touch "$TMP/cmd_play_tanda" # Reproducir audio en botonera (sin interrumpir música ni comerciales) echo "/ruta/efecto.mp3" > "$TMP/botonera_now" # Reproducir tema inmediatamente (crossfade hacia él) echo -e "/ruta/tema.mp3\t00:03:45.000" > "$TMP/play_now" ``` ## Estado del sistema ```bash # Estado completo (JSON actualizado cada 2s) cat ~/.gradio/data/tmp/estado.json # Estado formateado cat ~/.gradio/data/tmp/estado.json | python3 -m json.tool # Valores individuales python3 -c " import json d = json.load(open('$HOME/.gradio/data/tmp/estado.json')) print(f'Reproduciendo: {d[\"reproduciendo\"]}') print(f'Tema actual: {d[\"titulo_actual\"]}') print(f'Posición: {d[\"posicion_secs\"]:.0f}s / {d[\"duracion_secs\"]:.0f}s') print(f'Volumen: up={d[\"upvol\"]}% duck={d[\"downvol\"]}%') print(f'Comerciales: {d[\"num_comerciales\"]} en cola, activos={d[\"comerciales_activos\"]}') print(f'Eventos: {d[\"num_eventos\"]}') print(f'En espera: {d[\"num_eventos_espera\"]}') " # Playlist pendiente (cuántos temas quedan) wc -l ~/.gradio/data/tmp/playlist4 # Cola de comerciales activa cat ~/.gradio/data/tmp/comercialeslist4 ``` ## Volumen ```bash # Ver volumen actual echo "Principal: $(cat ~/.gradio/data/tmp/upvol)%" echo "Duck: $(cat ~/.gradio/data/tmp/downvol)%" # Cambiar volumen principal a 85% echo "85" > ~/.gradio/data/tmp/upvol # Cambiar volumen duck a 20% echo "20" > ~/.gradio/data/tmp/downvol ``` ## Parrilla (programación) ```bash # Ver qué suena ahora HORA=$(date +%-H) DIA=$(date +%u) # 1=Lun...7=Dom echo "=== Parrilla actual: día $DIA, hora $HORA ===" cat ~/.gradio/data/parrilla/$DIA/$HORA-$((HORA+1)).mus # Agregar tema a la hora actual echo "/ruta/nuevo_tema.mp3" >> ~/.gradio/data/parrilla/$DIA/$HORA-$((HORA+1)).mus # Crear parrilla para todas las horas de un día (comodín) for h in $(seq 0 23); do mkdir -p ~/.gradio/data/parrilla/1 echo "/home/grecord/Musica/Variado/*" >> ~/.gradio/data/parrilla/1/$h-$((h+1)).mus done ``` ## Comerciales ```bash # Agregar comercial a las 16:00 (todos los días, todo el año) mkdir -p ~/.gradio/data/comerciales/16 echo "/ruta/spot.mp3|1234567|20250101|20261231" >> ~/.gradio/data/comerciales/16/0.com # Ver tandas de la hora actual HORA=$(date +%-H) MIN=$(date +%-M) ls ~/.gradio/data/comerciales/$HORA/ # Ver tandas ya reproducidas hoy cat ~/.gradio/data/tmp/played_breaks ``` ## Locución con IA ```bash # Generar locución con voz clonada de Pato (requiere GPU NVIDIA) locuta "Texto a locutar" # Especificar nombre de archivo cd ~/Dropbox/LocutorIA ./locucion_pato.sh "Texto a locutar" nombre_salida # La locución se genera en: # ~/Dropbox/LocutorIA/salida_mp3/locucion_AAAAMMDD_HHMMSS.mp3 # (o salida_mp3/nombre_salida.mp3 si se usó nombre personalizado) # Copiar a la carpeta Time de G Radio Player para usar como locución de hora: cp ~/Dropbox/LocutorIA/salida_mp3/locucion_*.mp3 ~/.gradio/data/panel/Time/ # O copiar a la carpeta de comerciales/eventos para pautar: cp ~/Dropbox/LocutorIA/salida_mp3/mi_locucion.mp3 ~/.gradio/data/comerciales/15/ ``` ## Verificar daemons ```bash # Ver si los daemons están corriendo ps aux | grep -E 'comercial-scheduler|playlist-refill' | grep -v grep # Verificar que el player está activo ps aux | grep radio-player | grep -v grep # Leer configuración actual cat ~/.gradio/data/tmp/gradio.config ``` ## Diagnóstico rápido ```bash # Script de diagnóstico completo echo "=== G-Radio Player — Estado ===" echo "" echo "Procesos:" ps aux | grep -E 'radio-player|comercial-scheduler|playlist-refill' | grep -v grep echo "" echo "Reproducción:" python3 -c " import json, sys try: d = json.load(open('$HOME/.gradio/data/tmp/estado.json')) print(f' Reproduciendo: {d[\"reproduciendo\"]}') print(f' Tema: {d[\"titulo_actual\"]}') print(f' Posición: {d[\"posicion_secs\"]:.0f}s / {d[\"duracion_secs\"]:.0f}s') except: print(' (estado.json no disponible)') " echo "" echo "Colas:" echo " Música pendiente: $(wc -l < ~/.gradio/data/tmp/playlist4 2>/dev/null || echo 0) temas" echo " Comerciales: $(wc -l < ~/.gradio/data/tmp/comercialeslist4 2>/dev/null | tr -d ' ') items" echo " Eventos: $(wc -l < ~/.gradio/data/tmp/eventoslist 2>/dev/null | tr -d ' ') items" echo " En espera: $(wc -l < ~/.gradio/data/tmp/eventos-esperalist 2>/dev/null | tr -d ' ') items" ```