proyecto-global-psp/logica/auxiliar/__main__.py

106 lines
3.6 KiB
Python

import json
import os
# --- NOMBRE DEL ARCHIVO ---
NOMBRE_FICHERO = "radios.json"
def cargar_emisoras():
"""Carga las emisoras existentes desde el archivo, o retorna una lista vacía si no existe."""
if os.path.exists(NOMBRE_FICHERO):
try:
with open(NOMBRE_FICHERO, 'r', encoding='utf-8') as f:
return json.load(f)
except json.JSONDecodeError:
print(f"⚠️ Error al leer el archivo {NOMBRE_FICHERO}. Creando una lista nueva.")
return []
return []
def guardar_emisoras(emisoras):
"""Guarda la lista de emisoras en formato JSON en el archivo."""
try:
with open(NOMBRE_FICHERO, 'w', encoding='utf-8') as f:
# Usamos indent=4 para que el JSON sea legible
json.dump(emisoras, f, indent=4, ensure_ascii=False)
print(f"\n✅ ¡Éxito! El archivo '{NOMBRE_FICHERO}' ha sido guardado.")
except Exception as e:
print(f"\n❌ Error al intentar guardar el archivo: {e}")
def crear_nueva_emisora(emisoras):
"""Pide al usuario los datos de una nueva emisora y la añade a la lista."""
print("\n--- Crear Nueva Emisora ---")
# --- CAMPOS OBLIGATORIOS ---
nombre = input("▶️ Nombre de la radio (ej: Jazz Clásico): ").strip()
url = input("▶️ URL del Stream (ej: http://stream.com/live.mp3): ").strip()
if not nombre or not url:
print("❌ El nombre y la URL son obligatorios. Inténtalo de nuevo.")
return
# --- CAMPOS OPCIONALES ---
pais = input("▶️ País (ej: ES, DE) [Opcional]: ").strip()
genero = input("▶️ Género (ej: Pop, Noticias) [Opcional]: ").strip()
nueva_emisora = {
"nombre": nombre,
"url_stream": url,
"pais": pais if pais else None,
"genero": genero if genero else None
}
emisoras.append(nueva_emisora)
print(f"\n✅ Emisora '{nombre}' añadida a la lista en memoria.")
def mostrar_emisoras(emisoras):
"""Muestra la lista de emisoras actuales en memoria."""
if not emisoras:
print("\nLista de emisoras vacía. Utiliza la opción 1 para añadir una.")
return
print(f"\n--- Emisoras Actuales en Memoria ({len(emisoras)} en total) ---")
for i, e in enumerate(emisoras):
print(f"\nID: {i + 1}")
print(f" Nombre: {e.get('nombre', 'N/D')}")
print(f" URL: {e.get('url_stream', 'N/D')}")
print(f" País: {e.get('pais', 'N/D')}")
print(f" Género: {e.get('genero', 'N/D')}")
print("--------------------------------------------------")
def menu_principal():
"""Función principal que ejecuta el menú interactivo."""
# Cargar las emisoras al iniciar (si el archivo existe)
emisoras_en_memoria = cargar_emisoras()
while True:
print("\n" + "=" * 30)
print("📻 EDITOR DE CONFIGURACIÓN DE RADIOS 📻")
print("=" * 30)
print("1. Crear y Añadir Nueva Emisora")
print("2. Mostrar Emisoras en Memoria")
print(f"3. Guardar Lista en '{NOMBRE_FICHERO}'")
print("4. Salir (Sin guardar los cambios en memoria)")
print("-" * 30)
opcion = input("Elige una opción (1-4): ").strip()
if opcion == '1':
crear_nueva_emisora(emisoras_en_memoria)
elif opcion == '2':
mostrar_emisoras(emisoras_en_memoria)
elif opcion == '3':
guardar_emisoras(emisoras_en_memoria)
elif opcion == '4':
print("\nSaliendo del editor. ¡Hasta pronto!")
break
else:
print("Opción no válida. Por favor, selecciona un número del 1 al 4.")
if __name__ == "__main__":
menu_principal()