106 lines
3.6 KiB
Python
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() |