# -*- coding: utf-8 -*-
"""
Ejemplo 03: Reproducir un archivo de audio.

Reproduce un archivo MP3, WAV, OGG u otro formato soportado.

Uso:
	python 03_reproducir_archivo.py ruta_al_archivo.mp3
"""

import sys
import time
from basskit.alto_nivel.reproductor import Reproductor, inicializar, liberar


def main():
	"""Reproduce un archivo pasado como argumento."""
	if len(sys.argv) < 2:
		print("Uso: python 03_reproducir_archivo.py <archivo_de_audio>")
		print("Ejemplo: python 03_reproducir_archivo.py cancion.mp3")
		sys.exit(1)

	archivo = sys.argv[1]

	print(f"Inicializando BASS...")
	inicializar()

	print(f"Abriendo: {archivo}")
	rep = Reproductor()

	try:
		rep.abrir_archivo(archivo)
		print(f"Duración: {rep.duracion_segundos:.1f} segundos")
		print(f"Reproduciendo... (Ctrl+C para detener)")
		print()

		rep.reproducir()

		while rep.estado == "reproduciendo":
			pos = rep.posicion_segundos
			dur = rep.duracion_segundos
			print(f"\r  Posición: {pos:.1f}s / {dur:.1f}s", end="", flush=True)
			time.sleep(0.5)

		print(f"\n\nReproducción finalizada. Estado: {rep.estado}")

	except KeyboardInterrupt:
		print("\n\nDetenido por el usuario.")
	except Exception as e:
		print(f"\nError: {e}")
	finally:
		rep.cerrar()
		liberar()
		print("Recursos liberados.")


if __name__ == "__main__":
	main()
