# Importamos la librería yt-dlp que nos permite descargar vídeos de YouTube
# Para instalarla: pip install yt-dlp
# Para instalarla: choco install ffmpeg
import yt_dlp

# ─────────────────────────────────────────
# MENÚ DE CALIDAD
# ─────────────────────────────────────────

# Mostramos las opciones disponibles al usuario
print("=== DESCARGADOR DE YOUTUBE ===")
print()
print("¿Qué calidad quieres?")
print("1 - Mejor calidad disponible")
print("2 - 1080")
print("3 - 720p")
print("4 - 480p")
print("5 - Solo audio (mp3)")
print()
# Guardamos la opción que elige el usuario
opcion = input("Elige una opción (1-4): ")

formatos = {
    '1': 'bestvideo+bestaudio',
    '2': 'bestvideo[height<=1080]+bestaudio',
    '3': 'bestvideo[height<=720]+bestaudio',
    '4': 'bestvideo[height<=480]+bestaudio',
    '5': 'bestaudio',
}
# Comprobamos que la opción es válida, si no, usamos la mejor calidad por defecto
formato_elegido = formatos.get(opcion, 'best')
# ─────────────────────────────────────────
# CARPETA DE DESTINO
# ─────────────────────────────────────────

# Preguntamos dónde quiere guardar el vídeo
# Si pulsa Enter sin escribir nada, se guarda en la carpeta actual
carpeta = input("¿Dónde quieres guardarlo? (Enter para carpeta actual): ").strip()

# Si no escribió nada, usamos '.' que significa la carpeta donde está el script
if carpeta == '':
    carpeta = '.'

# ─────────────────────────────────────────
# URL DEL VÍDEO
# ─────────────────────────────────────────

# Pedimos el enlace del vídeo de YouTube
url = input("Pega el enlace del vídeo: ").strip()

# ─────────────────────────────────────────
# OPCIONES DE DESCARGA
# ─────────────────────────────────────────
# Creamos un diccionario con toda la configuración de la descarga
opciones = {
    # El formato que eligió el usuario
    'format': formato_elegido,
    # La ruta donde se guardará el archivo
    # %(title)s → se reemplaza automáticamente por el título del vídeo
    # %(ext)s   → se reemplaza por la extensión del archivo (mp4, webm, mp3...)
    'outtmpl': f'{carpeta}/%(title)s.%(ext)s'  # <- aquí
}

with yt_dlp.YoutubeDL(opciones) as ydl:
    ydl.download([url])