Que hacer cuando YT-DLP falla

Aquí está el diagnóstico:

Qué pasó con mweb:

  1. yt-dlp intentó resolver el challenge JS con Deno pero le faltaban los componentes remotos (el script solver y/o el paquete NPM), así que no pudo resolverlo — por eso el “n challenge solving failed”.
  2. Como no pudo resolver ese challenge, tampoco tenía un PO Token (Proof of Origin Token) para el cliente mweb. Google ahora exige ese token para servir el audio/video real vía HTTPS en ese cliente — sin él, yt-dlp descarta esos formatos por precaución (para no toparse otra vez con el 403).
  3. Resultado: solo quedaron disponibles las imágenes (miniaturas), no el audio → “Requested format is not available”.

Por qué android sí funcionó:
El cliente android normalmente no exige PO Token para servir sus formatos, así que se saltó todo ese problema.

Recomendación para que quede resuelto de forma más robusta (no solo con android):

Si quieres que mweb también funcione (a veces da mejor calidad/formatos), instala los componentes remotos que pide la advertencia:

yt-dlp --remote-components ejs:github -x --audio-format mp3 --embed-thumbnail "https://youtu.be/TiWe05itp3o"

Esto le da a yt-dlp el script solver que necesita para resolver el challenge JS con Deno, y entonces sí puede generar el PO Token automáticamente.

Mi sugerencia práctica: ya que android te funcionó y es más simple (sin dependencias extra de Deno/JS), yo me quedaría con esa opción como tu comando de cabecera:

yt-dlp -x --audio-format mp3 --embed-thumbnail --extractor-args "youtube:player_client=android" "URL"

Y si en el futuro android también empieza a fallar (YouTube cambia esto seguido), ya sabes que el plan B es mweb + --remote-components ejs:github.

¿Quieres que te arme un script/alias para no tener que escribir todo el comando cada vez?

Aquí tienes ambas soluciones:

1. Alias fácil de recordar (un solo video)
Agrega esto a tu ~/.bashrc (o ~/.zshrc si usas zsh):

Uso diario, así de simple:

2. Descargar varios videos en una sola línea

Opción A — pegando varias URLs directo en el comando:

yt-dlp acepta múltiples URLs seguidas y las descarga una por una automáticamente.

Opción B — desde un archivo de texto con tus links (recomendado si ya tienes la lista guardada)

Crea un archivo enlaces.txt con un link por línea:

https://youtu.be/TiWe05itp3o
https://youtu.be/otroVideo123
https://youtu.be/otroVideo456

Y descarga todos con:


yt-dlp -x --audio-format mp3 --embed-thumbnail --extractor-args "youtube:player_client=android" -a enlaces.txt

Puedes agregar este segundo alias también:

echo 'alias yt2mp3lista="yt-dlp -x --audio-format mp3 --embed-thumbnail --extractor-args \"youtube:player_client=android\" -a"' >> ~/.bashrc
source ~/.bashrc

Uso

yt2mp3lista enlaces.txt

Extra útil: si quieres que se guarden en una carpeta específica y con nombre limpio (título del video), puedes añadir -o "%(title)s.%(ext)s" -P ~/Musica a cualquiera de los alias.

¿Quieres que te arme también un alias con carpeta de destino fija, para que todo caiga organizado automáticamente en tu carpeta de música?

Deja un comentario