Diferencia entre revisiones de «Youtube Bajar Videos»
Sin resumen de edición |
|||
| (No se muestran 5 ediciones intermedias del mismo usuario) | |||
| Línea 1: | Línea 1: | ||
__toc__{{cen1|Bajar videos de '''YOUTUBE'''}} | __toc__ | ||
{{cen1|Bajar videos de '''YOUTUBE'''}} | |||
---- | ---- | ||
[[File:Youtube estructura resultante.jpg|thumb|right|570px]] | [[File:Youtube estructura resultante.jpg|thumb|right|570px|Estructura general de carpetas, programas, listas y archivos descargados.]] | ||
{{Chat|20260616}} | |||
{| class="wikitable" style="width:57%; border:2px solid #B71C1C; margin:12px 0;" | |||
! style="background:#B71C1C; color:white; padding:9px;" | Aviso de uso responsable | |||
|- | |||
| style="background:#FFF8F8; padding:12px;" | | |||
Esta herramienta debe utilizarse para descargar material propio, videos con autorización, obras de dominio público, recursos con licencias que permitan su conservación o contenidos cuya descarga sea legítima dentro del contexto del usuario. La posibilidad técnica de descargar un archivo no elimina los derechos de autor, las condiciones de uso de la plataforma ni la responsabilidad personal sobre su utilización. | |||
|} | |||
== Introducción == | |||
'''yt-dlp''' es una herramienta de línea de comandos capaz de descargar videos, audios, listas de reproducción y colecciones completas de numerosos sitios compatibles, entre ellos YouTube. | |||
A diferencia de una aplicación gráfica convencional, yt-dlp puede integrarse dentro de un archivo por lotes de Windows —un archivo con extensión <code>.bat</code>— para automatizar procesos repetitivos. | |||
Este sistema permite: | |||
:* Descargar videos individuales. | |||
:* Descargar listas completas de reproducción. | |||
:* Revisar periódicamente canales o playlists. | |||
:* Evitar descargas repetidas mediante un historial. | |||
:* Limitar la resolución para ahorrar espacio. | |||
:* Organizar los nombres usando fecha, título, canal e identificador. | |||
:* Unir automáticamente las pistas separadas de imagen y sonido. | |||
:* Registrar fechas de ejecución y posibles errores. | |||
:* Programar las descargas para ejecutarse sin intervención manual. | |||
<small> | |||
{| class="wikitable" style="width:57%; border:2px solid #00527A;" | |||
! style="background:#00527A; color:white;" | Componente | |||
! style="background:#00527A; color:white;" | Función | |||
|- | |||
| '''yt-dlp.exe''' | |||
| Analiza las direcciones, identifica los formatos disponibles y realiza las descargas. | |||
|- | |||
| '''ffmpeg.exe''' | |||
| Une video y audio cuando YouTube los entrega como pistas separadas. | |||
|- | |||
| '''ffprobe.exe''' | |||
| Examina las características técnicas de los archivos multimedia. | |||
|- | |||
| '''deno.exe''' | |||
| Proporciona un entorno JavaScript que ayuda a interpretar mecanismos modernos de YouTube. | |||
|- | |||
| '''videos.txt''' | |||
| Contiene las direcciones que se desean procesar. | |||
|- | |||
| '''videos_descargados.txt''' | |||
| Conserva el historial de identificadores ya descargados. | |||
|- | |||
| '''descargar_youtube.bat''' | |||
| Reúne las instrucciones y automatiza todo el proceso. | |||
|- | |||
| '''registro_descargas.txt''' | |||
| Registra fechas, resultados y posibles fallos del sistema. | |||
|} | |||
</small> | |||
== Uso == | == Uso == | ||
: '''Perfecto. Asumiendo que el archivo se llama:''' | : '''Perfecto. Asumiendo que el archivo se llama:''' | ||
:* E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe | :* E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe | ||
: '''Puedes guardar este script como:''' | : '''Puedes guardar este script como:''' | ||
:* E:\00_APP\00_YOUTUBE_Videos\descargar_youtube.bat | :* E:\00_APP\00_YOUTUBE_Videos\descargar_youtube.bat | ||
---- | ---- | ||
Para ejecutar manualmente el sistema desde la consola de Windows: | |||
---- | <pre> | ||
cd E:\00_APP\00_YOUTUBE_Videos | |||
E: | |||
descargar_youtube | |||
</pre> | |||
También es posible abrir la carpeta: | |||
<pre> | |||
E:\00_APP\00_YOUTUBE_Videos | |||
</pre> | |||
y hacer doble clic sobre: | |||
<pre> | |||
descargar_youtube.bat | |||
</pre> | |||
=== Estructura recomendada === | |||
<pre> | |||
E:\00_APP\00_YOUTUBE_Videos\ | |||
│ | |||
├── descargar_youtube.bat | |||
├── videos.txt | |||
├── videos_descargados.txt | |||
├── registro_descargas.txt | |||
│ | |||
├── yt-dlp\ | |||
│ ├── yt-dlp.exe | |||
│ ├── ffmpeg.exe | |||
│ ├── ffprobe.exe | |||
│ └── deno.exe | |||
│ | |||
└── Videos_Descargados\ | |||
├── 20231029 - City - Orbital [MkdWdBg-0kA].mp4 | |||
├── 20150925 - Nombre_del_video - EstrellaTV [ID].mp4 | |||
└── Otros archivos descargados... | |||
</pre> | |||
{| class="wikitable" style="width:100%; border:2px solid #2E7D32;" | |||
! style="background:#2E7D32; color:white;" | Ventaja | |||
! style="background:#2E7D32; color:white;" | Explicación | |||
|- | |||
| Una sola carpeta | |||
| Todos los videos pueden quedar directamente dentro de <code>Videos_Descargados</code>, sin carpetas repetidas por canal. | |||
|- | |||
| Nombre identificable | |||
| Cada archivo conserva fecha, título, canal y clave de YouTube. | |||
|- | |||
| Historial | |||
| El sistema recuerda qué videos ya fueron procesados. | |||
|- | |||
| Automatización | |||
| Puede ejecutarse todos los días o durante la madrugada. | |||
|- | |||
| Bajo consumo | |||
| La versión de 360p resulta útil para conservar muchos videos sin ocupar tanto espacio. | |||
|} | |||
== Fuente 20260615 == | == Fuente 20260615 == | ||
* https://github.com/yt-dlp/yt-dlp/releases/tag/2026.06.09 | |||
* https://sourceforge.net/projects/yt-dlp.mirror/files/latest/download | :* https://github.com/yt-dlp/yt-dlp/releases/tag/2026.06.09 | ||
:* https://sourceforge.net/projects/yt-dlp.mirror/files/latest/download | |||
:* https://github.com/yt-dlp/yt-dlp | |||
:* https://github.com/yt-dlp/yt-dlp/wiki/FAQ | |||
:* https://github.com/yt-dlp/yt-dlp/wiki/EJS | |||
:* https://ffmpeg.org/download.html | |||
:* https://www.gyan.dev/ffmpeg/builds/ | |||
:* https://deno.com/ | |||
{{Chat|20260616}} | |||
== Script == | == Script == | ||
El siguiente bloque corresponde a la base conservada para el sistema de descarga. | |||
---- | ---- | ||
<small><small> | <small><small> | ||
| Línea 79: | Línea 211: | ||
exit /b 1 | exit /b 1 | ||
) | ) | ||
</pre> | </pre> | ||
---- | ---- | ||
</small></small> | </small></small> | ||
== Tipos de descargas == | == Tipos de descargas == | ||
: {{a3|Sí, puedes descargar listas completas de reproducción.}} | : {{a3|Sí, puedes descargar listas completas de reproducción.}} | ||
:* Tu archivo: E:\00_APP\00_YOUTUBE_Videos\videos.txt | |||
:* | :* Tu archivo: | ||
:: | ::<code>E:\00_APP\00_YOUTUBE_Videos\videos.txt</code> | ||
:: | |||
:: | :* Puede contener cualquiera de estos tipos de enlaces: | ||
---- | |||
::<pre> | |||
https://www.youtube.com/watch?v=ID_DEL_VIDEO | |||
https://www.youtube.com/playlist?list=ID_DE_LA_LISTA | |||
https://www.youtube.com/@NombreDelCanal/videos | |||
</pre> | |||
=== Video individual === | |||
<pre> | |||
https://www.youtube.com/watch?v=ID_DEL_VIDEO | |||
</pre> | |||
Descarga solamente el video señalado. | |||
=== Lista completa de reproducción === | |||
<pre> | |||
https://www.youtube.com/playlist?list=ID_DE_LA_LISTA | |||
</pre> | |||
yt-dlp abre la lista, examina sus elementos y procesa cada video disponible. | |||
=== Canal completo === | |||
<pre> | |||
https://www.youtube.com/@NombreDelCanal/videos | |||
</pre> | |||
Puede revisar todos los videos públicos del canal. Esta operación puede implicar cientos o miles de elementos, por lo que conviene utilizar pausas entre solicitudes y vigilar el espacio disponible. | |||
=== Mezclar varios tipos de direcciones === | |||
El archivo <code>videos.txt</code> puede contener diferentes clases de enlaces: | |||
<pre> | |||
https://www.youtube.com/watch?v=VIDEO_1 | |||
https://www.youtube.com/playlist?list=LISTA_1 | |||
https://www.youtube.com/@CanalEjemplo/videos | |||
https://www.youtube.com/watch?v=VIDEO_2 | |||
</pre> | |||
Cada dirección debe colocarse en un renglón independiente. | |||
{| class="wikitable" style="width:100%; border:2px solid #6A1B9A;" | |||
! style="background:#6A1B9A; color:white;" | Dirección | |||
! style="background:#6A1B9A; color:white;" | Resultado esperado | |||
! style="background:#6A1B9A; color:white;" | Precaución | |||
|- | |||
| Video individual | |||
| Un solo archivo. | |||
| Es la opción más rápida para pruebas. | |||
|- | |||
| Playlist | |||
| Todos los elementos disponibles. | |||
| Puede contener videos eliminados, privados o bloqueados. | |||
|- | |||
| Canal | |||
| Revisión de la colección pública completa. | |||
| Puede generar muchas solicitudes y activar controles de YouTube. | |||
|- | |||
| Varias URL | |||
| Procesamiento secuencial. | |||
| Conviene revisar que no existan enlaces duplicados. | |||
|} | |||
== Historial y prevención de duplicados == | |||
La opción: | |||
<pre> | |||
--download-archive "%HISTORIAL%" | |||
</pre> | |||
hace que yt-dlp registre cada video completado dentro de: | |||
<pre> | |||
E:\00_APP\00_YOUTUBE_Videos\videos_descargados.txt | |||
</pre> | |||
El archivo suele guardar entradas semejantes a: | |||
<pre> | |||
youtube LkdWdBg-0kA | |||
</pre> | |||
La próxima vez que la misma dirección aparezca dentro de una lista o canal, yt-dlp reconoce el identificador y omite la descarga. | |||
{{oro|Esto convierte al archivo de historial en una memoria técnica del sistema: no registra solamente nombres, sino las claves únicas de cada video.}} | |||
=== Cuándo editar el historial === | |||
Puede ser necesario retirar una línea del historial cuando: | |||
:* La descarga quedó incompleta. | |||
:* Se descargó únicamente el audio o el video por falta de FFmpeg. | |||
:* Se desea bajar nuevamente el material en otra resolución. | |||
:* El archivo fue eliminado accidentalmente. | |||
:* Se desea crear una copia renovada. | |||
No conviene borrar todo el historial sin necesidad, porque yt-dlp podría intentar descargar nuevamente colecciones completas. | |||
== Maximo 360p == | == Maximo 360p == | ||
:* {{a3|Versión del programa para bajar videos de poca | |||
:* {{a3|Versión del programa para bajar videos de poca resolución y tamaño.}} | |||
:* {{oro|Ayuda a tener un registro educativo y de recuerdos de poco espacio en tu PC; o para cuando el internet falla.}} | :* {{oro|Ayuda a tener un registro educativo y de recuerdos de poco espacio en tu PC; o para cuando el internet falla.}} | ||
:* {{oro|Es una manera de guardar conocimiento valioso o programar tu aprendizaje así como para tener o conservar recuerdos de video retros.}} | :* {{oro|Es una manera de guardar conocimiento valioso o programar tu aprendizaje así como para tener o conservar recuerdos de video retros.}} | ||
La resolución de 360p resulta especialmente útil cuando el valor central se encuentra en: | |||
:* La voz del expositor. | |||
:* Una clase o conferencia. | |||
:* Una receta. | |||
:* Un documental principalmente narrativo. | |||
:* Una transmisión antigua. | |||
:* Un recuerdo familiar. | |||
:* Un programa de televisión retro. | |||
:* Material que será consultado en una pantalla pequeña. | |||
:* Contenido donde la imagen no necesita gran detalle. | |||
{| class="wikitable" style="width:100%; border:2px solid #EF6C00;" | |||
! style="background:#EF6C00; color:white;" | Resolución | |||
! style="background:#EF6C00; color:white;" | Uso sugerido | |||
! style="background:#EF6C00; color:white;" | Espacio relativo | |||
|- | |||
| 144p | |||
| Referencia mínima, voz o archivo de emergencia. | |||
| Muy bajo. | |||
|- | |||
| 240p | |||
| Grabaciones antiguas o material principalmente auditivo. | |||
| Bajo. | |||
|- | |||
| '''360p''' | |||
| Biblioteca de estudio, recuerdos, recetas y videos largos. | |||
| Moderado. | |||
|- | |||
| 480p | |||
| Textos en pantalla y demostraciones con detalles medios. | |||
| Medio. | |||
|- | |||
| 720p | |||
| Visualización más cómoda, diagramas y material con detalles. | |||
| Alto. | |||
|- | |||
| 1080p o superior | |||
| Archivo visual de alta calidad. | |||
| Muy alto. | |||
|} | |||
<small><small> | <small><small> | ||
<pre> | <pre> | ||
| Línea 305: | Línea 582: | ||
</pre> | </pre> | ||
</small></small> | </small></small> | ||
---- | ---- | ||
== Cómo interpreta la resolución == | |||
La expresión: | |||
<pre> | |||
--format "bv*[height<=360]+ba/b[height<=360]" | |||
</pre> | |||
significa: | |||
:* <code>bv*</code>: seleccionar la mejor pista de video disponible. | |||
:* <code>[height<=360]</code>: no superar 360 píxeles de altura. | |||
:* <code>+ba</code>: agregar la mejor pista de audio. | |||
:* <code>/b[height<=360]</code>: si no existen pistas separadas apropiadas, intentar un formato combinado de hasta 360p. | |||
Si el video ofrece: | |||
<pre> | |||
144p | |||
240p | |||
360p | |||
480p | |||
720p | |||
</pre> | |||
el sistema elegirá normalmente 360p. | |||
Si no existe 360p, elegirá la mejor opción inferior disponible. | |||
== FFmpeg: unión de video y audio == | |||
YouTube suele almacenar por separado: | |||
:* La imagen. | |||
:* El sonido. | |||
Por eso yt-dlp puede descargar inicialmente dos archivos: | |||
<pre> | |||
Nombre_del_video.f398.mp4 | |||
Nombre_del_video.f251.webm | |||
</pre> | |||
En este ejemplo: | |||
:* <code>f398.mp4</code> puede contener únicamente la imagen. | |||
:* <code>f251.webm</code> puede contener únicamente el sonido. | |||
FFmpeg los fusiona en: | |||
<pre> | |||
Nombre_del_video.mp4 | |||
</pre> | |||
La línea: | |||
<pre> | |||
--ffmpeg-location "%FFMPEG%" | |||
</pre> | |||
indica expresamente dónde se encuentran: | |||
<pre> | |||
E:\00_APP\00_YOUTUBE_Videos\yt-dlp\ffmpeg.exe | |||
E:\00_APP\00_YOUTUBE_Videos\yt-dlp\ffprobe.exe | |||
</pre> | |||
=== Comprobación de FFmpeg === | |||
<pre> | |||
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\ffmpeg.exe" -version | |||
</pre> | |||
Si aparece la información de versión, FFmpeg está disponible. | |||
{| class="wikitable" style="width:100%; border:2px solid #C62828;" | |||
! style="background:#C62828; color:white;" | Mensaje | |||
! style="background:#C62828; color:white;" | Significado | |||
! style="background:#C62828; color:white;" | Solución | |||
|- | |||
| <code>ffmpeg is not installed</code> | |||
| yt-dlp no puede unir las pistas. | |||
| Instalar FFmpeg o corregir su ruta. | |||
|- | |||
| Archivos <code>.f398</code> y <code>.f251</code> | |||
| La imagen y el audio quedaron separados. | |||
| Instalar FFmpeg y volver a procesar o unir manualmente. | |||
|- | |||
| Un solo MP4 con audio | |||
| La fusión se completó correctamente. | |||
| No requiere corrección. | |||
|} | |||
== Cookies == | == Cookies == | ||
Las cookies permiten que yt-dlp utilice una sesión de navegador ya autenticada. | |||
Esto puede ser necesario cuando YouTube muestra: | |||
<pre> | <pre> | ||
Sign in to confirm you’re not a bot | |||
</pre> | |||
Prueba de autenticación desde Chrome: | |||
<pre> | |||
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" ^ | "E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" ^ | ||
-vU ^ | -vU ^ | ||
| Línea 316: | Línea 698: | ||
"https://www.youtube.com/watch?v=dqgMNHYk1Gk" | "https://www.youtube.com/watch?v=dqgMNHYk1Gk" | ||
</pre> | </pre> | ||
La opción: | |||
<pre> | |||
--simulate | |||
</pre> | |||
hace una prueba sin descargar el video completo. | |||
La opción: | |||
<pre> | |||
-vU | |||
</pre> | |||
activa información detallada y comprueba actualizaciones. | |||
=== Perfil específico de Chrome === | |||
Chrome puede tener varios perfiles: | |||
<pre> | |||
Default | |||
Profile 1 | |||
Profile 2 | |||
</pre> | |||
Para conocer la ruta del perfil activo, abrir en Chrome: | |||
<pre> | |||
chrome://version | |||
</pre> | |||
Buscar: | |||
<pre> | |||
Ruta del perfil | |||
</pre> | |||
Ejemplo: | |||
<pre> | |||
C:\Users\USUARIO\AppData\Local\Google\Chrome\User Data\Profile 1 | |||
</pre> | |||
Después se puede utilizar: | |||
<pre> | |||
--cookies-from-browser "chrome:Profile 1" | |||
</pre> | |||
=== Archivo de cookies === | |||
También es posible trabajar con un archivo: | |||
<pre> | |||
E:\00_APP\00_YOUTUBE_Videos\youtube_cookies.txt | |||
</pre> | |||
y llamarlo desde el script: | |||
<pre> | |||
--cookies "%BASE%\youtube_cookies.txt" ^ | |||
</pre> | |||
{| class="wikitable" style="width:100%; border:2px solid #AD1457;" | |||
! style="background:#AD1457; color:white;" | Precaución de seguridad | |||
|- | |||
| style="background:#FFF4F8; padding:12px;" | | |||
Un archivo de cookies puede contener datos de sesión activos. No debe publicarse, adjuntarse a WikiFSF, compartirse por mensajería ni almacenarse en una carpeta pública. Debe tratarse como una credencial privada. | |||
|} | |||
== Deno y JavaScript == | |||
El aviso: | |||
<pre> | |||
No supported JavaScript runtime could be found | |||
</pre> | |||
indica que yt-dlp no encontró un entorno JavaScript compatible. | |||
La ruta utilizada es: | |||
<pre> | |||
E:\00_APP\00_YOUTUBE_Videos\yt-dlp\deno.exe | |||
</pre> | |||
Comprobación: | |||
<pre> | |||
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\deno.exe" --version | |||
</pre> | |||
Uso dentro del script: | |||
<pre> | |||
--js-runtimes "deno:%DENO%" ^ | |||
</pre> | |||
Deno no descarga el video por sí mismo. Su función es ayudar a yt-dlp a interpretar procesos modernos de extracción utilizados por YouTube. | |||
== Error: confirmar que no eres un robot == | |||
Mensaje habitual: | |||
<pre> | |||
ERROR: [youtube] Sign in to confirm you’re not a bot. | |||
Use --cookies-from-browser or --cookies for the authentication. | |||
</pre> | |||
Posibles causas: | |||
:* Muchas solicitudes consecutivas. | |||
:* Una lista con cientos de videos. | |||
:* Cookies ausentes. | |||
:* Perfil incorrecto del navegador. | |||
:* Sesión de YouTube no iniciada. | |||
:* Restricción temporal de la dirección IP. | |||
:* Falta de entorno JavaScript. | |||
:* Cookies caducadas. | |||
:* Ejecución demasiado rápida. | |||
Posibles soluciones: | |||
:# Detener temporalmente el proceso. | |||
:# Confirmar que YouTube abre normalmente en el navegador. | |||
:# Iniciar sesión en la cuenta correcta. | |||
:# Identificar el perfil correcto de Chrome. | |||
:# Usar cookies del navegador o un archivo de cookies. | |||
:# Añadir Deno. | |||
:# Reducir la velocidad de las solicitudes. | |||
:# Probar primero con un solo video. | |||
:# Esperar varias horas si existe una limitación temporal. | |||
:# Reiniciar el módem solamente si se comprende el funcionamiento de la conexión y el proveedor entrega IP dinámica. | |||
=== Pausas recomendadas === | |||
<pre> | |||
--sleep-requests 3 ^ | |||
--sleep-interval 5 ^ | |||
--max-sleep-interval 12 ^ | |||
</pre> | |||
Estas líneas hacen que yt-dlp espere entre solicitudes. | |||
{| class="wikitable" style="width:100%; border:2px solid #37474F;" | |||
! style="background:#37474F; color:white;" | Parámetro | |||
! style="background:#37474F; color:white;" | Función | |||
|- | |||
| <code>--sleep-requests 3</code> | |||
| Espera tres segundos entre determinadas solicitudes de extracción. | |||
|- | |||
| <code>--sleep-interval 5</code> | |||
| Espera como mínimo cinco segundos entre descargas. | |||
|- | |||
| <code>--max-sleep-interval 12</code> | |||
| Permite una espera variable de hasta doce segundos. | |||
|- | |||
| <code>--retries 10</code> | |||
| Reintenta una operación hasta diez veces. | |||
|- | |||
| <code>--fragment-retries 10</code> | |||
| Reintenta fragmentos individuales del video. | |||
|} | |||
{{oro|Las pausas hacen el proceso más lento, pero también más estable y menos agresivo frente al servidor.}} | |||
== Script ampliado con cookies, Deno y pausas == | |||
El siguiente bloque conserva el enfoque de 360p, una sola carpeta y nombres completos, pero añade autenticación, JavaScript y pausas. | |||
<small><small> | |||
<pre> | |||
@echo off | |||
setlocal EnableExtensions | |||
rem ============================================================ | |||
rem DESCARGADOR AUTOMATICO DE YOUTUBE - 360p | |||
rem ============================================================ | |||
set "BASE=E:\00_APP\00_YOUTUBE_Videos" | |||
set "YTDLP=%BASE%\yt-dlp\yt-dlp.exe" | |||
set "FFMPEG=%BASE%\yt-dlp" | |||
set "DENO=%BASE%\yt-dlp\deno.exe" | |||
set "DESTINO=%BASE%\Videos_Descargados" | |||
set "LISTA=%BASE%\videos.txt" | |||
set "HISTORIAL=%BASE%\videos_descargados.txt" | |||
set "LOG=%BASE%\registro_descargas.txt" | |||
if not exist "%DESTINO%" mkdir "%DESTINO%" | |||
if not exist "%YTDLP%" ( | |||
echo ERROR: No se encontro "%YTDLP%" | |||
pause | |||
exit /b 1 | |||
) | |||
if not exist "%FFMPEG%\ffmpeg.exe" ( | |||
echo ERROR: No se encontro "%FFMPEG%\ffmpeg.exe" | |||
pause | |||
exit /b 1 | |||
) | |||
if not exist "%FFMPEG%\ffprobe.exe" ( | |||
echo ERROR: No se encontro "%FFMPEG%\ffprobe.exe" | |||
pause | |||
exit /b 1 | |||
) | |||
if not exist "%DENO%" ( | |||
echo ERROR: No se encontro "%DENO%" | |||
pause | |||
exit /b 1 | |||
) | |||
if not exist "%LISTA%" ( | |||
echo ERROR: No se encontro "%LISTA%" | |||
pause | |||
exit /b 1 | |||
) | |||
cls | |||
echo ============================================================ | |||
echo DESCARGADOR AUTOMATICO DE YOUTUBE | |||
echo ============================================================ | |||
echo. | |||
echo Resolucion: Hasta 360p | |||
echo Cookies: Google Chrome | |||
echo JavaScript: Deno | |||
echo Destino: %DESTINO% | |||
echo Lista: %LISTA% | |||
echo. | |||
echo ============================================================ | |||
echo. | |||
echo.>>"%LOG%" | |||
echo ============================================================>>"%LOG%" | |||
echo INICIO: %date% %time%>>"%LOG%" | |||
echo ============================================================>>"%LOG%" | |||
"%YTDLP%" ^ | |||
--ffmpeg-location "%FFMPEG%" ^ | |||
--js-runtimes "deno:%DENO%" ^ | |||
--cookies-from-browser chrome ^ | |||
--batch-file "%LISTA%" ^ | |||
--download-archive "%HISTORIAL%" ^ | |||
--continue ^ | |||
--ignore-errors ^ | |||
--no-overwrites ^ | |||
--windows-filenames ^ | |||
--restrict-filenames ^ | |||
--merge-output-format mp4 ^ | |||
--format "bv*[height<=360]+ba/b[height<=360]" ^ | |||
--sleep-requests 3 ^ | |||
--sleep-interval 5 ^ | |||
--max-sleep-interval 12 ^ | |||
--retries 10 ^ | |||
--fragment-retries 10 ^ | |||
--output "%DESTINO%\%%(upload_date)s - %%(title)s - %%(channel,uploader)s [%%(id)s].%%(ext)s" ^ | |||
--newline | |||
set "RESULTADO=%ERRORLEVEL%" | |||
echo. | |||
echo ============================================================ | |||
if "%RESULTADO%"=="0" ( | |||
echo PROCESO TERMINADO CORRECTAMENTE | |||
echo RESULTADO: Correcto>>"%LOG%" | |||
) else ( | |||
echo PROCESO TERMINADO CON ERRORES | |||
echo Codigo: %RESULTADO% | |||
echo RESULTADO: Error %RESULTADO%>>"%LOG%" | |||
) | |||
echo FIN: %date% %time%>>"%LOG%" | |||
echo ============================================================>>"%LOG%" | |||
echo. | |||
pause | |||
endlocal | |||
</pre> | |||
</small></small> | |||
== Programación automática en Windows == | |||
El '''Programador de tareas de Windows''' permite ejecutar el archivo sin necesidad de recordar manualmente cuándo hacerlo. | |||
=== Abrir el Programador de tareas === | |||
:# Presionar <code>Windows + R</code>. | |||
:# Escribir: | |||
::<pre> | |||
taskschd.msc | |||
</pre> | |||
:# Presionar <code>Enter</code>. | |||
:# Elegir '''Crear tarea básica'''. | |||
=== Configuración sugerida === | |||
{| class="wikitable" style="width:100%; border:2px solid #1565C0;" | |||
! style="background:#1565C0; color:white;" | Campo | |||
! style="background:#1565C0; color:white;" | Valor sugerido | |||
|- | |||
| Nombre | |||
| Descargar videos de YouTube | |||
|- | |||
| Desencadenador | |||
| Diario, semanal o al iniciar sesión | |||
|- | |||
| Hora | |||
| Madrugada o periodo de poco uso | |||
|- | |||
| Acción | |||
| Iniciar un programa | |||
|- | |||
| Programa | |||
| <code>E:\00_APP\00_YOUTUBE_Videos\descargar_youtube.bat</code> | |||
|- | |||
| Iniciar en | |||
| <code>E:\00_APP\00_YOUTUBE_Videos</code> | |||
|} | |||
=== Frecuencias posibles === | |||
:* Cada noche. | |||
:* Una vez por semana. | |||
:* Los domingos. | |||
:* Al iniciar la computadora. | |||
:* Al iniciar sesión. | |||
:* Cuando el equipo esté inactivo. | |||
:* En horarios donde la conexión no sea utilizada por otras personas. | |||
=== Adaptación para ejecución automática === | |||
El comando: | |||
<pre> | |||
pause | |||
</pre> | |||
mantiene abierta la ventana al terminar. | |||
Esto es útil durante pruebas, porque permite leer errores. Sin embargo, en una tarea automática puede dejar una ventana esperando indefinidamente. | |||
Para la versión programada, puede cambiarse por: | |||
<pre> | |||
rem pause | |||
</pre> | |||
o eliminarse. | |||
{{oro|Conviene conservar dos archivos: uno de prueba con <code>pause</code> y otro automático sin <code>pause</code>.}} | |||
== Flujo de trabajo recomendado == | |||
{| class="wikitable" style="width:100%; border:2px solid #00838F;" | |||
! style="background:#00838F; color:white;" | Paso | |||
! style="background:#00838F; color:white;" | Acción | |||
! style="background:#00838F; color:white;" | Resultado | |||
|- | |||
| 1 | |||
| Localizar el video, playlist o canal. | |||
| Se obtiene una URL. | |||
|- | |||
| 2 | |||
| Pegar la URL en <code>videos.txt</code>. | |||
| Queda registrada en la cola. | |||
|- | |||
| 3 | |||
| Ejecutar <code>descargar_youtube.bat</code>. | |||
| yt-dlp examina la lista. | |||
|- | |||
| 4 | |||
| Consultar el historial. | |||
| Se omiten elementos anteriores. | |||
|- | |||
| 5 | |||
| Descargar video y audio. | |||
| Se obtienen las pistas necesarias. | |||
|- | |||
| 6 | |||
| Unir mediante FFmpeg. | |||
| Se crea el MP4 final. | |||
|- | |||
| 7 | |||
| Guardar fecha, título, canal e ID. | |||
| El archivo queda identificable. | |||
|- | |||
| 8 | |||
| Revisar la reproducción. | |||
| Se confirma imagen y sonido. | |||
|- | |||
| 9 | |||
| Clasificar o vincular en WikiFSF. | |||
| El archivo se integra al sistema de conocimiento. | |||
|} | |||
== Uso para estudio y aprendizaje == | |||
Esta herramienta puede funcionar como una estación de aprendizaje y no solamente como un descargador. | |||
=== Biblioteca de estudio === | |||
Es posible crear listas temáticas: | |||
:* Pedagogía. | |||
:* Tecnología. | |||
:* Historia. | |||
:* Cocina. | |||
:* Salud. | |||
:* Documentales. | |||
:* Espiritualidad. | |||
:* Programación. | |||
:* Videojuegos. | |||
:* Escuela RyE. | |||
:* 5Era. | |||
:* Memoria familiar. | |||
Cada lista puede agregarse a <code>videos.txt</code> y descargarse poco a poco. | |||
=== Aprendizaje sin conexión === | |||
Los archivos locales permiten estudiar cuando: | |||
:* La conexión falla. | |||
:* El proveedor reduce la velocidad. | |||
:* Se viaja. | |||
:* Se desea evitar distracciones de la plataforma. | |||
:* El contenido será reproducido varias veces. | |||
:* Se busca conservar una clase para consulta futura. | |||
=== Estudio pausado === | |||
Un video guardado localmente puede: | |||
:* Reproducirse a menor velocidad. | |||
:* Pausarse para tomar notas. | |||
:* Compararse con otros materiales. | |||
:* Utilizarse para crear una ficha WikiFSF. | |||
:* Revisarse sin publicidad o recomendaciones externas. | |||
:* Dividirse en estaciones de estudio. | |||
:* Convertirse en audio cuando la imagen no es esencial. | |||
:* Integrarse a una cronología de aprendizaje. | |||
=== Conservación de memoria === | |||
{{oro|Un archivo de video puede ser memoria cultural, educativa, técnica, familiar o personal.}} | |||
Algunos contenidos desaparecen por: | |||
:* Eliminación del canal. | |||
:* Cierre de cuentas. | |||
:* Cambios en derechos de distribución. | |||
:* Conversión del video en privado. | |||
:* Fallos de almacenamiento. | |||
:* Transformaciones de la plataforma. | |||
:* Pérdida de acceso a internet. | |||
:* Olvido de la dirección original. | |||
Conservar responsablemente una copia de materiales significativos puede ayudar a mantener: | |||
:* Recuerdos familiares. | |||
:* Programas antiguos. | |||
:* Explicaciones técnicas. | |||
:* Recetas. | |||
:* Testimonios. | |||
:* Clases. | |||
:* Entrevistas. | |||
:* Documentales difíciles de localizar. | |||
:* Fuentes utilizadas en artículos. | |||
:* Material para reflexión futura. | |||
== Relación con WikiFSF == | |||
Los videos descargados pueden servir como material de apoyo para: | |||
:* Crear artículos. | |||
:* Resumir clases. | |||
:* Documentar procesos. | |||
:* Conservar fuentes. | |||
:* Extraer cronologías. | |||
:* Registrar recetas. | |||
:* Crear tablas comparativas. | |||
:* Construir estaciones de aprendizaje. | |||
:* Vincular recuerdos con fechas y personas. | |||
:* Preservar una fuente antes de que desaparezca. | |||
=== Ficha mínima sugerida === | |||
<pre> | |||
== Video == | |||
* Título: | |||
* Canal: | |||
* Fecha de publicación: | |||
* URL original: | |||
* Fecha de descarga: | |||
* Resolución: | |||
* Duración: | |||
* Tema: | |||
* Motivo de conservación: | |||
* Resumen: | |||
* Aprendizajes: | |||
* Palabras clave: | |||
</pre> | |||
=== Importancia del identificador === | |||
El nombre: | |||
<pre> | |||
20231029 - Spicy_City - Orbital_Bacon [LkdWdBg-0kA].mp4 | |||
</pre> | |||
conserva: | |||
:* <code>20231029</code>: fecha de publicación. | |||
:* <code>Spicy_City</code>: título. | |||
:* <code>Orbital_Bacon</code>: canal. | |||
:* <code>LkdWdBg-0kA</code>: identificador original de YouTube. | |||
:* <code>.mp4</code>: formato final. | |||
El identificador es especialmente útil porque permite reconstruir la URL: | |||
<pre> | |||
https://www.youtube.com/watch?v=LkdWdBg-0kA | |||
</pre> | |||
aunque el nombre del archivo haya sido modificado. | |||
== Mejoras posibles == | |||
El sistema puede adaptarse para realizar tareas adicionales. | |||
{| class="wikitable" style="width:100%; border:2px solid #4527A0;" | |||
! style="background:#4527A0; color:white;" | Mejora | |||
! style="background:#4527A0; color:white;" | Utilidad | |||
|- | |||
| Descargar miniaturas | |||
| Conservar la portada original del video. | |||
|- | |||
| Descargar subtítulos | |||
| Facilitar lectura, búsqueda y estudio. | |||
|- | |||
| Guardar descripción | |||
| Conservar fuentes, enlaces y contexto. | |||
|- | |||
| Descargar solamente audio | |||
| Crear una biblioteca de clases, música autorizada o conferencias. | |||
|- | |||
| Separar por tema | |||
| Crear diferentes carpetas y listas de trabajo. | |||
|- | |||
| Crear registro CSV o JSON | |||
| Analizar fechas, canales, duración y títulos. | |||
|- | |||
| Limitar duración | |||
| Evitar transmisiones demasiado largas. | |||
|- | |||
| Limitar tamaño | |||
| Proteger el espacio del disco. | |||
|- | |||
| Descargar solamente videos nuevos | |||
| Mantener actualizada una lista o canal. | |||
|- | |||
| Programación nocturna | |||
| Aprovechar periodos de bajo uso. | |||
|} | |||
=== Descargar miniatura === | |||
<pre> | |||
--write-thumbnail ^ | |||
</pre> | |||
=== Descargar subtítulos disponibles === | |||
<pre> | |||
--write-subs ^ | |||
--write-auto-subs ^ | |||
--sub-langs "es.*,en.*" ^ | |||
</pre> | |||
=== Guardar descripción y metadatos === | |||
<pre> | |||
--write-description ^ | |||
--write-info-json ^ | |||
</pre> | |||
=== Descargar solamente audio === | |||
<pre> | |||
-x ^ | |||
--audio-format mp3 ^ | |||
--audio-quality 5 ^ | |||
</pre> | |||
=== Descargar solo una parte de una playlist === | |||
<pre> | |||
--playlist-start 1 ^ | |||
--playlist-end 25 ^ | |||
</pre> | |||
=== Limitar cantidad de elementos === | |||
Puede dividirse una lista grande en segmentos: | |||
<pre> | |||
--playlist-start 1 --playlist-end 50 | |||
--playlist-start 51 --playlist-end 100 | |||
--playlist-start 101 --playlist-end 150 | |||
</pre> | |||
Esto reduce sesiones excesivamente largas y facilita detectar errores. | |||
=== Limitar duración === | |||
Ejemplo conceptual para evitar videos demasiado extensos: | |||
<pre> | |||
--match-filter "duration < 14400" | |||
</pre> | |||
El valor <code>14400</code> equivale a cuatro horas. | |||
=== Lista de espera pedagógica === | |||
Una playlist propia puede utilizarse como una cola de aprendizaje: | |||
:# Se crea una playlist privada o no listada. | |||
:# Se agregan videos que se desean estudiar. | |||
:# El archivo <code>videos.txt</code> conserva la dirección de esa playlist. | |||
:# La tarea programada revisa periódicamente la lista. | |||
:# Los videos nuevos se descargan. | |||
:# El historial evita duplicados. | |||
:# La persona consulta después el material sin depender de la plataforma. | |||
{{oro|La playlist deja de ser solamente una colección temporal y se convierte en una estación de selección, conservación y aprendizaje.}} | |||
== Mantenimiento == | |||
=== Actualizar yt-dlp === | |||
Comando: | |||
<pre> | |||
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" -U | |||
</pre> | |||
También puede revisarse la versión: | |||
<pre> | |||
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" --version | |||
</pre> | |||
=== Revisar espacio disponible === | |||
Las playlists y canales pueden consumir mucho espacio. | |||
Antes de procesar una colección grande conviene revisar: | |||
:* Cantidad de videos. | |||
:* Duración promedio. | |||
:* Resolución seleccionada. | |||
:* Espacio disponible. | |||
:* Posibilidad de duplicados externos. | |||
:* Capacidad del disco. | |||
:* Tiempo estimado de descarga. | |||
=== Copias de seguridad === | |||
Conviene respaldar: | |||
<pre> | |||
videos.txt | |||
videos_descargados.txt | |||
descargar_youtube.bat | |||
registro_descargas.txt | |||
</pre> | |||
El archivo más importante para evitar repeticiones es: | |||
<pre> | |||
videos_descargados.txt | |||
</pre> | |||
=== Limpieza === | |||
No deben borrarse automáticamente archivos con nombres como: | |||
<pre> | |||
.f398.mp4 | |||
.f251.webm | |||
.part | |||
.ytdl | |||
</pre> | |||
sin revisar primero su estado. | |||
Pueden representar: | |||
:* Descargas incompletas. | |||
:* Pistas pendientes de fusionar. | |||
:* Archivos temporales. | |||
:* Procesos interrumpidos. | |||
:* Datos útiles para reanudar. | |||
== Diagnóstico rápido == | |||
{| class="wikitable" style="width:100%; border:2px solid #455A64;" | |||
! style="background:#455A64; color:white;" | Síntoma | |||
! style="background:#455A64; color:white;" | Causa probable | |||
! style="background:#455A64; color:white;" | Acción | |||
|- | |||
| Aparecen dos archivos por video | |||
| Falta FFmpeg o no se encontró su ruta. | |||
| Verificar <code>ffmpeg.exe</code> y <code>--ffmpeg-location</code>. | |||
|- | |||
| El archivo no tiene audio | |||
| Se conservó solamente la pista de video. | |||
| Unir con FFmpeg o repetir la descarga. | |||
|- | |||
| El archivo solo tiene sonido | |||
| Se abrió la pista de audio. | |||
| Buscar el MP4 final o instalar FFmpeg. | |||
|- | |||
| Se crean dos carpetas iguales | |||
| La plantilla de salida contiene canal y playlist como carpetas. | |||
| Eliminar las carpetas de la expresión <code>--output</code>. | |||
|- | |||
| El video se omite | |||
| Está registrado en el historial. | |||
| Revisar <code>videos_descargados.txt</code>. | |||
|- | |||
| No eres un robot | |||
| YouTube solicita autenticación. | |||
| Usar cookies, Deno y pausas. | |||
|- | |||
| No hay entorno JavaScript | |||
| Falta Deno. | |||
| Instalar <code>deno.exe</code>. | |||
|- | |||
| El nombre usa guiones bajos | |||
| Está activo <code>--restrict-filenames</code>. | |||
| Quitar esa línea si se desean nombres naturales. | |||
|- | |||
| La ventana queda abierta | |||
| El script contiene <code>pause</code>. | |||
| Eliminarlo en la versión programada. | |||
|- | |||
| Descarga nuevamente una colección | |||
| El historial fue borrado o cambiado. | |||
| Restaurar la copia de seguridad del historial. | |||
|} | |||
== Límites prácticos == | |||
La herramienta no garantiza que todos los videos puedan descargarse. | |||
Algunos contenidos pueden estar: | |||
:* Eliminados. | |||
:* Privados. | |||
:* Restringidos por edad. | |||
:* Bloqueados geográficamente. | |||
:* Protegidos por membresía. | |||
:* Limitados por derechos. | |||
:* Disponibles solamente mediante una sesión específica. | |||
:* Sujetos a cambios técnicos de YouTube. | |||
:* Protegidos por mecanismos que yt-dlp todavía no interpreta. | |||
{{oro|La automatización facilita el proceso, pero requiere supervisión, actualización y uso responsable.}} | |||
== Reflexión == | |||
Las plataformas digitales ofrecen una sensación de permanencia, pero muchos contenidos son temporales. Una dirección puede funcionar hoy y desaparecer mañana. | |||
Guardar un video no significa únicamente acumular archivos. Cuando existe una intención clara, puede convertirse en un acto de: | |||
:* Estudio. | |||
:* Preservación. | |||
:* Memoria. | |||
:* Documentación. | |||
:* Preparación. | |||
:* Autonomía. | |||
:* Curaduría. | |||
:* Continuidad educativa. | |||
El valor no se encuentra solamente en descargar, sino en decidir: | |||
:* Qué merece conservarse. | |||
:* Por qué se conserva. | |||
:* Cómo se clasifica. | |||
:* Cuándo se revisará. | |||
:* Qué aprendizaje puede extraerse. | |||
:* Cómo se relaciona con otros conocimientos. | |||
:* Qué debe eliminarse cuando deja de tener sentido. | |||
{{oro|Una biblioteca útil no es la que contiene más archivos, sino aquella cuyos contenidos pueden encontrarse, comprenderse, relacionarse y convertirse en aprendizaje.}} | |||
== Autoría y documentación == | |||
{| class="wikitable" style="width:100%; border:2px solid #263238;" | |||
! style="background:#263238; color:white;" | Dato | |||
! style="background:#263238; color:white;" | Información | |||
|- | |||
| Documento base | |||
| Información, rutas, pruebas y scripts conservados por Ziv. | |||
|- | |||
| Curaduría, ampliación y organización | |||
| Inteligencia Artificial, mediante la plantilla {{Chat|20260616}}. | |||
|- | |||
| Fecha de ampliación | |||
| 16 de junio de 2026. | |||
|- | |||
| Propósito | |||
| Documentar la instalación, automatización, uso pedagógico, conservación y mantenimiento de yt-dlp en WikiFSF. | |||
|- | |||
| Ruta documentada | |||
| <code>E:\00_APP\00_YOUTUBE_Videos</code> | |||
|} | |||
{{Chat|20260616 - {{s|Creado mayormente por CHATGPT a petición mia (Ziv).}} }} | |||
---- | |||
== Script para conservar AUDIO == | |||
: {{a3|Este script reduce lo más que puede el video y su resolución para crear archivos pequeños.}} | |||
:* {{oro|Pero trata de conservar una buena calidad de AUDIO.}} | |||
---- | |||
:* E:\00_APP\00_YOUTUBE_Videos\'''descargar_youtube_compacto_audio_mejor.bat''' | |||
---- | |||
<small><pre> | |||
@echo off | |||
setlocal EnableExtensions | |||
rem ============================================================ | |||
rem YOUTUBE: VIDEO MAS COMPACTO + MEJOR AUDIO DISPONIBLE | |||
rem ============================================================ | |||
rem | |||
rem Objetivo: | |||
rem - Buscar la pista de video con menor tamano estimado. | |||
rem - Mantener la mejor calidad de audio disponible. | |||
rem - Preferir MP4 y M4A cuando sea posible. | |||
rem - Usar MKV si MP4 no admite los codecs seleccionados. | |||
rem - Guardar todos los videos en una sola carpeta. | |||
rem | |||
rem VLC puede reproducir MP4, MKV y la mayoria de codecs usados. | |||
rem ============================================================ | |||
rem ============================================================ | |||
rem RUTAS PRINCIPALES | |||
rem ============================================================ | |||
set "BASE=E:\00_APP\00_YOUTUBE_Videos" | |||
set "YTDLP=%BASE%\yt-dlp\yt-dlp.exe" | |||
set "FFMPEG=%BASE%\yt-dlp" | |||
set "DENO=%BASE%\yt-dlp\deno.exe" | |||
set "DESTINO=%BASE%\Videos_Descargados" | |||
set "LISTA=%BASE%\videos.txt" | |||
rem Historial separado para esta modalidad | |||
set "HISTORIAL=%BASE%\videos_descargados_compactos.txt" | |||
set "LOG=%BASE%\registro_descargas_compactas.txt" | |||
rem ============================================================ | |||
rem CREAR CARPETA DE DESTINO | |||
rem ============================================================ | |||
if not exist "%DESTINO%" ( | |||
mkdir "%DESTINO%" | |||
) | |||
rem ============================================================ | |||
rem VERIFICAR YT-DLP | |||
rem ============================================================ | |||
if not exist "%YTDLP%" ( | |||
echo. | |||
echo ============================================================ | |||
echo ERROR: NO SE ENCONTRO YT-DLP | |||
echo ============================================================ | |||
echo. | |||
echo Archivo esperado: | |||
echo "%YTDLP%" | |||
echo. | |||
pause | |||
exit /b 1 | |||
) | |||
rem ============================================================ | |||
rem VERIFICAR FFMPEG | |||
rem ============================================================ | |||
if not exist "%FFMPEG%\ffmpeg.exe" ( | |||
echo. | |||
echo ============================================================ | |||
echo ERROR: NO SE ENCONTRO FFMPEG | |||
echo ============================================================ | |||
echo. | |||
echo Archivo esperado: | |||
echo "%FFMPEG%\ffmpeg.exe" | |||
echo. | |||
pause | |||
exit /b 1 | |||
) | |||
if not exist "%FFMPEG%\ffprobe.exe" ( | |||
echo. | |||
echo ============================================================ | |||
echo ERROR: NO SE ENCONTRO FFPROBE | |||
echo ============================================================ | |||
echo. | |||
echo Archivo esperado: | |||
echo "%FFMPEG%\ffprobe.exe" | |||
echo. | |||
pause | |||
exit /b 1 | |||
) | |||
rem ============================================================ | |||
rem VERIFICAR DENO | |||
rem ============================================================ | |||
if not exist "%DENO%" ( | |||
echo. | |||
echo ============================================================ | |||
echo ERROR: NO SE ENCONTRO DENO | |||
echo ============================================================ | |||
echo. | |||
echo Archivo esperado: | |||
echo "%DENO%" | |||
echo. | |||
pause | |||
exit /b 1 | |||
) | |||
rem ============================================================ | |||
rem VERIFICAR LISTA DE URL | |||
rem ============================================================ | |||
if not exist "%LISTA%" ( | |||
echo. | |||
echo ============================================================ | |||
echo ERROR: NO SE ENCONTRO LA LISTA DE VIDEOS | |||
echo ============================================================ | |||
echo. | |||
echo Archivo esperado: | |||
echo "%LISTA%" | |||
echo. | |||
echo Coloca una URL por renglon dentro de videos.txt. | |||
echo. | |||
pause | |||
exit /b 1 | |||
) | |||
rem ============================================================ | |||
rem MOSTRAR INFORMACION | |||
rem ============================================================ | |||
cls | |||
echo ============================================================ | |||
echo VIDEO MAS COMPACTO + MEJOR AUDIO DISPONIBLE | |||
echo ============================================================ | |||
echo. | |||
echo Programa: %YTDLP% | |||
echo FFmpeg: %FFMPEG% | |||
echo Deno: %DENO% | |||
echo Destino: %DESTINO% | |||
echo Lista: %LISTA% | |||
echo Historial: %HISTORIAL% | |||
echo. | |||
echo Video: Menor tamano estimado | |||
echo Audio: Mejor bitrate disponible | |||
echo Contenedor: Preferencia MP4; alternativa MKV | |||
echo. | |||
echo Fecha: %date% | |||
echo Hora: %time% | |||
echo. | |||
echo ============================================================ | |||
echo. | |||
rem ============================================================ | |||
rem REGISTRAR INICIO | |||
rem ============================================================ | |||
echo.>>"%LOG%" | |||
echo ============================================================>>"%LOG%" | |||
echo INICIO: %date% %time%>>"%LOG%" | |||
echo VIDEO: Menor tamano estimado>>"%LOG%" | |||
echo AUDIO: Mejor bitrate disponible>>"%LOG%" | |||
echo CONTENEDOR: MP4 o MKV>>"%LOG%" | |||
echo ============================================================>>"%LOG%" | |||
rem ============================================================ | |||
rem DESCARGAR | |||
rem ============================================================ | |||
rem | |||
rem bv+ba: | |||
rem Pista de video separada + pista de audio separada. | |||
rem | |||
rem /b: | |||
rem Si no existen pistas separadas compatibles, usa un formato | |||
rem combinado. | |||
rem | |||
rem abr: | |||
rem Prefiere mayor bitrate de audio. | |||
rem | |||
rem +size: | |||
rem Prefiere menor tamano de archivo. | |||
rem | |||
rem vext:mp4: | |||
rem Da preferencia al contenedor de video MP4. | |||
rem | |||
rem aext:m4a: | |||
rem Da preferencia al audio M4A. | |||
rem | |||
rem mp4/mkv: | |||
rem Intenta MP4 y utiliza MKV cuando sea necesario. | |||
rem ============================================================ | |||
"%YTDLP%" ^ | |||
--ffmpeg-location "%FFMPEG%" ^ | |||
--js-runtimes "deno:%DENO%" ^ | |||
--batch-file "%LISTA%" ^ | |||
--download-archive "%HISTORIAL%" ^ | |||
--continue ^ | |||
--ignore-errors ^ | |||
--no-overwrites ^ | |||
--windows-filenames ^ | |||
--restrict-filenames ^ | |||
--format "bv+ba/b" ^ | |||
--format-sort "abr,+size,vext:mp4,aext:m4a" ^ | |||
--merge-output-format "mp4/mkv" ^ | |||
--sleep-requests 3 ^ | |||
--sleep-interval 5 ^ | |||
--max-sleep-interval 12 ^ | |||
--retries 10 ^ | |||
--fragment-retries 10 ^ | |||
--output "%DESTINO%\%%(upload_date)s - %%(title)s - %%(channel,uploader)s [%%(id)s] [COMPACTO_AUDIO_MEJOR].%%(ext)s" ^ | |||
--newline | |||
rem ============================================================ | |||
rem GUARDAR RESULTADO | |||
rem ============================================================ | |||
set "RESULTADO=%ERRORLEVEL%" | |||
echo. | |||
echo ============================================================ | |||
if "%RESULTADO%"=="0" ( | |||
echo PROCESO TERMINADO CORRECTAMENTE | |||
echo RESULTADO: Correcto>>"%LOG%" | |||
) else ( | |||
echo EL PROCESO TERMINO CON UNO O MAS ERRORES | |||
echo Codigo de salida: %RESULTADO% | |||
echo RESULTADO: Error %RESULTADO%>>"%LOG%" | |||
) | |||
echo. | |||
echo Fecha final: %date% | |||
echo Hora final: %time% | |||
echo ============================================================ | |||
echo FIN: %date% %time%>>"%LOG%" | |||
echo ============================================================>>"%LOG%" | |||
echo. | |||
pause | |||
endlocal | |||
</pre></small> | |||
---- | ---- | ||
[[CATEGORY:YOUTUBE]] | [[CATEGORY:YOUTUBE]] | ||
| Línea 321: | Línea 1796: | ||
[[CATEGORY:TOOLS]] | [[CATEGORY:TOOLS]] | ||
[[CATEGORY:ZIV]] | [[CATEGORY:ZIV]] | ||
[[CATEGORY:EDUCACION]] | |||
[[CATEGORY:MEMORIA]] | |||
[[CATEGORY:VIDEO]] | |||
[[CATEGORY:WINDOWS]] | |||
[[CATEGORY:AUTOMATIZACION]] | |||
Revisión actual - 09:55 16 jun 2026

🤝ChatGPT ✨ 🧩🌐- 20260616
| Aviso de uso responsable |
|---|
|
Esta herramienta debe utilizarse para descargar material propio, videos con autorización, obras de dominio público, recursos con licencias que permitan su conservación o contenidos cuya descarga sea legítima dentro del contexto del usuario. La posibilidad técnica de descargar un archivo no elimina los derechos de autor, las condiciones de uso de la plataforma ni la responsabilidad personal sobre su utilización. |
Introducción
yt-dlp es una herramienta de línea de comandos capaz de descargar videos, audios, listas de reproducción y colecciones completas de numerosos sitios compatibles, entre ellos YouTube.
A diferencia de una aplicación gráfica convencional, yt-dlp puede integrarse dentro de un archivo por lotes de Windows —un archivo con extensión .bat— para automatizar procesos repetitivos.
Este sistema permite:
- Descargar videos individuales.
- Descargar listas completas de reproducción.
- Revisar periódicamente canales o playlists.
- Evitar descargas repetidas mediante un historial.
- Limitar la resolución para ahorrar espacio.
- Organizar los nombres usando fecha, título, canal e identificador.
- Unir automáticamente las pistas separadas de imagen y sonido.
- Registrar fechas de ejecución y posibles errores.
- Programar las descargas para ejecutarse sin intervención manual.
| Componente | Función |
|---|---|
| yt-dlp.exe | Analiza las direcciones, identifica los formatos disponibles y realiza las descargas. |
| ffmpeg.exe | Une video y audio cuando YouTube los entrega como pistas separadas. |
| ffprobe.exe | Examina las características técnicas de los archivos multimedia. |
| deno.exe | Proporciona un entorno JavaScript que ayuda a interpretar mecanismos modernos de YouTube. |
| videos.txt | Contiene las direcciones que se desean procesar. |
| videos_descargados.txt | Conserva el historial de identificadores ya descargados. |
| descargar_youtube.bat | Reúne las instrucciones y automatiza todo el proceso. |
| registro_descargas.txt | Registra fechas, resultados y posibles fallos del sistema. |
Uso
- Perfecto. Asumiendo que el archivo se llama:
- E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe
- Puedes guardar este script como:
- E:\00_APP\00_YOUTUBE_Videos\descargar_youtube.bat
Para ejecutar manualmente el sistema desde la consola de Windows:
cd E:\00_APP\00_YOUTUBE_Videos E: descargar_youtube
También es posible abrir la carpeta:
E:\00_APP\00_YOUTUBE_Videos
y hacer doble clic sobre:
descargar_youtube.bat
Estructura recomendada
E:\00_APP\00_YOUTUBE_Videos\
│
├── descargar_youtube.bat
├── videos.txt
├── videos_descargados.txt
├── registro_descargas.txt
│
├── yt-dlp\
│ ├── yt-dlp.exe
│ ├── ffmpeg.exe
│ ├── ffprobe.exe
│ └── deno.exe
│
└── Videos_Descargados\
├── 20231029 - City - Orbital [MkdWdBg-0kA].mp4
├── 20150925 - Nombre_del_video - EstrellaTV [ID].mp4
└── Otros archivos descargados...
| Ventaja | Explicación |
|---|---|
| Una sola carpeta | Todos los videos pueden quedar directamente dentro de Videos_Descargados, sin carpetas repetidas por canal.
|
| Nombre identificable | Cada archivo conserva fecha, título, canal y clave de YouTube. |
| Historial | El sistema recuerda qué videos ya fueron procesados. |
| Automatización | Puede ejecutarse todos los días o durante la madrugada. |
| Bajo consumo | La versión de 360p resulta útil para conservar muchos videos sin ocupar tanto espacio. |
Fuente 20260615
- https://github.com/yt-dlp/yt-dlp/releases/tag/2026.06.09
- https://sourceforge.net/projects/yt-dlp.mirror/files/latest/download
- https://github.com/yt-dlp/yt-dlp
- https://github.com/yt-dlp/yt-dlp/wiki/FAQ
- https://github.com/yt-dlp/yt-dlp/wiki/EJS
- https://ffmpeg.org/download.html
- https://www.gyan.dev/ffmpeg/builds/
- https://deno.com/
🤝ChatGPT ✨ 🧩🌐- 20260616
Script
El siguiente bloque corresponde a la base conservada para el sistema de descarga.
@echo off
setlocal EnableExtensions
rem ============================================================
rem DESCARGADOR AUTOMATICO DE VIDEOS DE YOUTUBE
rem ============================================================
rem
rem Todos los videos se guardan directamente en:
rem E:\00_APP\00_YOUTUBE_Videos\Videos_Descargados
rem
rem Nombre del archivo:
rem FECHA - TITULO - CANAL [ID].mp4
rem ============================================================
rem ============================================================
rem RUTAS PRINCIPALES
rem ============================================================
set "BASE=E:\00_APP\00_YOUTUBE_Videos"
set "YTDLP=%BASE%\yt-dlp\yt-dlp.exe"
set "FFMPEG=%BASE%\yt-dlp"
set "DESTINO=%BASE%\Videos_Descargados"
set "LISTA=%BASE%\videos.txt"
set "HISTORIAL=%BASE%\videos_descargados.txt"
set "LOG=%BASE%\registro_descargas.txt"
rem ============================================================
rem CREAR CARPETA DE DESTINO
rem ============================================================
if not exist "%DESTINO%" (
mkdir "%DESTINO%"
)
rem ============================================================
rem VERIFICAR YT-DLP
rem ============================================================
if not exist "%YTDLP%" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO YT-DLP
echo ============================================================
echo.
echo Archivo esperado:
echo "%YTDLP%"
echo.
pause
exit /b 1
)
Tipos de descargas
- Sí, puedes descargar listas completas de reproducción.
- Tu archivo:
E:\00_APP\00_YOUTUBE_Videos\videos.txt
- Puede contener cualquiera de estos tipos de enlaces:
https://www.youtube.com/watch?v=ID_DEL_VIDEO https://www.youtube.com/playlist?list=ID_DE_LA_LISTA https://www.youtube.com/@NombreDelCanal/videos
Video individual
https://www.youtube.com/watch?v=ID_DEL_VIDEO
Descarga solamente el video señalado.
Lista completa de reproducción
https://www.youtube.com/playlist?list=ID_DE_LA_LISTA
yt-dlp abre la lista, examina sus elementos y procesa cada video disponible.
Canal completo
https://www.youtube.com/@NombreDelCanal/videos
Puede revisar todos los videos públicos del canal. Esta operación puede implicar cientos o miles de elementos, por lo que conviene utilizar pausas entre solicitudes y vigilar el espacio disponible.
Mezclar varios tipos de direcciones
El archivo videos.txt puede contener diferentes clases de enlaces:
https://www.youtube.com/watch?v=VIDEO_1 https://www.youtube.com/playlist?list=LISTA_1 https://www.youtube.com/@CanalEjemplo/videos https://www.youtube.com/watch?v=VIDEO_2
Cada dirección debe colocarse en un renglón independiente.
| Dirección | Resultado esperado | Precaución |
|---|---|---|
| Video individual | Un solo archivo. | Es la opción más rápida para pruebas. |
| Playlist | Todos los elementos disponibles. | Puede contener videos eliminados, privados o bloqueados. |
| Canal | Revisión de la colección pública completa. | Puede generar muchas solicitudes y activar controles de YouTube. |
| Varias URL | Procesamiento secuencial. | Conviene revisar que no existan enlaces duplicados. |
Historial y prevención de duplicados
La opción:
--download-archive "%HISTORIAL%"
hace que yt-dlp registre cada video completado dentro de:
E:\00_APP\00_YOUTUBE_Videos\videos_descargados.txt
El archivo suele guardar entradas semejantes a:
youtube LkdWdBg-0kA
La próxima vez que la misma dirección aparezca dentro de una lista o canal, yt-dlp reconoce el identificador y omite la descarga.
Esto convierte al archivo de historial en una memoria técnica del sistema: no registra solamente nombres, sino las claves únicas de cada video.
Cuándo editar el historial
Puede ser necesario retirar una línea del historial cuando:
- La descarga quedó incompleta.
- Se descargó únicamente el audio o el video por falta de FFmpeg.
- Se desea bajar nuevamente el material en otra resolución.
- El archivo fue eliminado accidentalmente.
- Se desea crear una copia renovada.
No conviene borrar todo el historial sin necesidad, porque yt-dlp podría intentar descargar nuevamente colecciones completas.
Maximo 360p
- Versión del programa para bajar videos de poca resolución y tamaño.
- Ayuda a tener un registro educativo y de recuerdos de poco espacio en tu PC; o para cuando el internet falla.
- Es una manera de guardar conocimiento valioso o programar tu aprendizaje así como para tener o conservar recuerdos de video retros.
La resolución de 360p resulta especialmente útil cuando el valor central se encuentra en:
- La voz del expositor.
- Una clase o conferencia.
- Una receta.
- Un documental principalmente narrativo.
- Una transmisión antigua.
- Un recuerdo familiar.
- Un programa de televisión retro.
- Material que será consultado en una pantalla pequeña.
- Contenido donde la imagen no necesita gran detalle.
| Resolución | Uso sugerido | Espacio relativo |
|---|---|---|
| 144p | Referencia mínima, voz o archivo de emergencia. | Muy bajo. |
| 240p | Grabaciones antiguas o material principalmente auditivo. | Bajo. |
| 360p | Biblioteca de estudio, recuerdos, recetas y videos largos. | Moderado. |
| 480p | Textos en pantalla y demostraciones con detalles medios. | Medio. |
| 720p | Visualización más cómoda, diagramas y material con detalles. | Alto. |
| 1080p o superior | Archivo visual de alta calidad. | Muy alto. |
@echo off
setlocal EnableExtensions
rem ============================================================
rem DESCARGADOR AUTOMATICO DE VIDEOS DE YOUTUBE
rem ============================================================
rem
rem Todos los videos se guardan directamente en:
rem E:\00_APP\00_YOUTUBE_Videos\Videos_Descargados
rem
rem Resolucion preferida:
rem Hasta 360p
rem
rem Nombre del archivo:
rem FECHA - TITULO - CANAL [ID].mp4
rem ============================================================
rem ============================================================
rem RUTAS PRINCIPALES
rem ============================================================
set "BASE=E:\00_APP\00_YOUTUBE_Videos"
set "YTDLP=%BASE%\yt-dlp\yt-dlp.exe"
set "FFMPEG=%BASE%\yt-dlp"
set "DESTINO=%BASE%\Videos_Descargados"
set "LISTA=%BASE%\videos.txt"
set "HISTORIAL=%BASE%\videos_descargados.txt"
set "LOG=%BASE%\registro_descargas.txt"
rem ============================================================
rem CREAR CARPETA DE DESTINO
rem ============================================================
if not exist "%DESTINO%" (
mkdir "%DESTINO%"
)
rem ============================================================
rem VERIFICAR YT-DLP
rem ============================================================
if not exist "%YTDLP%" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO YT-DLP
echo ============================================================
echo.
echo Archivo esperado:
echo "%YTDLP%"
echo.
pause
exit /b 1
)
rem ============================================================
rem VERIFICAR FFMPEG
rem ============================================================
if not exist "%FFMPEG%\ffmpeg.exe" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO FFMPEG
echo ============================================================
echo.
echo Archivo esperado:
echo "%FFMPEG%\ffmpeg.exe"
echo.
pause
exit /b 1
)
if not exist "%FFMPEG%\ffprobe.exe" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO FFPROBE
echo ============================================================
echo.
echo Archivo esperado:
echo "%FFMPEG%\ffprobe.exe"
echo.
pause
exit /b 1
)
rem ============================================================
rem VERIFICAR LISTA DE URL
rem ============================================================
if not exist "%LISTA%" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO LA LISTA DE VIDEOS
echo ============================================================
echo.
echo Archivo esperado:
echo "%LISTA%"
echo.
echo Crea videos.txt y coloca una URL por renglon.
echo.
pause
exit /b 1
)
rem ============================================================
rem MOSTRAR INFORMACION
rem ============================================================
cls
echo ============================================================
echo DESCARGADOR AUTOMATICO DE YOUTUBE
echo ============================================================
echo.
echo Programa: %YTDLP%
echo FFmpeg: %FFMPEG%
echo Destino: %DESTINO%
echo Lista: %LISTA%
echo Historial: %HISTORIAL%
echo Resolucion: Hasta 360p
echo.
echo Fecha: %date%
echo Hora: %time%
echo.
echo ============================================================
echo.
rem ============================================================
rem REGISTRAR INICIO
rem ============================================================
echo.>>"%LOG%"
echo ============================================================>>"%LOG%"
echo INICIO: %date% %time%>>"%LOG%"
echo RESOLUCION: Hasta 360p>>"%LOG%"
echo ============================================================>>"%LOG%"
rem ============================================================
rem DESCARGAR VIDEOS
rem ============================================================
rem
rem Resolucion maxima preferida: 360p
rem Sin subcarpetas por canal
rem Nombre:
rem FECHA - TITULO - CANAL [ID].EXTENSION
rem ============================================================
"%YTDLP%" ^
--ffmpeg-location "%FFMPEG%" ^
--batch-file "%LISTA%" ^
--download-archive "%HISTORIAL%" ^
--continue ^
--ignore-errors ^
--no-overwrites ^
--windows-filenames ^
--restrict-filenames ^
--merge-output-format mp4 ^
--format "bv*[height<=360]+ba/b[height<=360]" ^
--output "%DESTINO%\%%(upload_date)s - %%(title)s - %%(channel,uploader)s [%%(id)s].%%(ext)s" ^
--newline
rem ============================================================
rem GUARDAR RESULTADO
rem ============================================================
set "RESULTADO=%ERRORLEVEL%"
echo.
echo ============================================================
if "%RESULTADO%"=="0" (
echo PROCESO TERMINADO CORRECTAMENTE
echo RESULTADO: Correcto>>"%LOG%"
) else (
echo EL PROCESO TERMINO CON UNO O MAS ERRORES
echo Codigo de salida: %RESULTADO%
echo RESULTADO: Error %RESULTADO%>>"%LOG%"
)
echo.
echo Fecha final: %date%
echo Hora final: %time%
echo ============================================================
echo FIN: %date% %time%>>"%LOG%"
echo ============================================================>>"%LOG%"
echo.
pause
endlocal
Cómo interpreta la resolución
La expresión:
--format "bv*[height<=360]+ba/b[height<=360]"
significa:
bv*: seleccionar la mejor pista de video disponible.[height<=360]: no superar 360 píxeles de altura.+ba: agregar la mejor pista de audio./b[height<=360]: si no existen pistas separadas apropiadas, intentar un formato combinado de hasta 360p.
Si el video ofrece:
144p 240p 360p 480p 720p
el sistema elegirá normalmente 360p.
Si no existe 360p, elegirá la mejor opción inferior disponible.
FFmpeg: unión de video y audio
YouTube suele almacenar por separado:
- La imagen.
- El sonido.
Por eso yt-dlp puede descargar inicialmente dos archivos:
Nombre_del_video.f398.mp4 Nombre_del_video.f251.webm
En este ejemplo:
f398.mp4puede contener únicamente la imagen.f251.webmpuede contener únicamente el sonido.
FFmpeg los fusiona en:
Nombre_del_video.mp4
La línea:
--ffmpeg-location "%FFMPEG%"
indica expresamente dónde se encuentran:
E:\00_APP\00_YOUTUBE_Videos\yt-dlp\ffmpeg.exe E:\00_APP\00_YOUTUBE_Videos\yt-dlp\ffprobe.exe
Comprobación de FFmpeg
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\ffmpeg.exe" -version
Si aparece la información de versión, FFmpeg está disponible.
| Mensaje | Significado | Solución |
|---|---|---|
ffmpeg is not installed
|
yt-dlp no puede unir las pistas. | Instalar FFmpeg o corregir su ruta. |
Archivos .f398 y .f251
|
La imagen y el audio quedaron separados. | Instalar FFmpeg y volver a procesar o unir manualmente. |
| Un solo MP4 con audio | La fusión se completó correctamente. | No requiere corrección. |
Cookies
Las cookies permiten que yt-dlp utilice una sesión de navegador ya autenticada.
Esto puede ser necesario cuando YouTube muestra:
Sign in to confirm you’re not a bot
Prueba de autenticación desde Chrome:
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" ^ -vU ^ --cookies-from-browser chrome ^ --js-runtimes "deno:E:\00_APP\00_YOUTUBE_Videos\yt-dlp\deno.exe" ^ --simulate ^ "https://www.youtube.com/watch?v=dqgMNHYk1Gk"
La opción:
--simulate
hace una prueba sin descargar el video completo.
La opción:
-vU
activa información detallada y comprueba actualizaciones.
Perfil específico de Chrome
Chrome puede tener varios perfiles:
Default Profile 1 Profile 2
Para conocer la ruta del perfil activo, abrir en Chrome:
chrome://version
Buscar:
Ruta del perfil
Ejemplo:
C:\Users\USUARIO\AppData\Local\Google\Chrome\User Data\Profile 1
Después se puede utilizar:
--cookies-from-browser "chrome:Profile 1"
Archivo de cookies
También es posible trabajar con un archivo:
E:\00_APP\00_YOUTUBE_Videos\youtube_cookies.txt
y llamarlo desde el script:
--cookies "%BASE%\youtube_cookies.txt" ^
| Precaución de seguridad |
|---|
|
Un archivo de cookies puede contener datos de sesión activos. No debe publicarse, adjuntarse a WikiFSF, compartirse por mensajería ni almacenarse en una carpeta pública. Debe tratarse como una credencial privada. |
Deno y JavaScript
El aviso:
No supported JavaScript runtime could be found
indica que yt-dlp no encontró un entorno JavaScript compatible.
La ruta utilizada es:
E:\00_APP\00_YOUTUBE_Videos\yt-dlp\deno.exe
Comprobación:
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\deno.exe" --version
Uso dentro del script:
--js-runtimes "deno:%DENO%" ^
Deno no descarga el video por sí mismo. Su función es ayudar a yt-dlp a interpretar procesos modernos de extracción utilizados por YouTube.
Error: confirmar que no eres un robot
Mensaje habitual:
ERROR: [youtube] Sign in to confirm you’re not a bot. Use --cookies-from-browser or --cookies for the authentication.
Posibles causas:
- Muchas solicitudes consecutivas.
- Una lista con cientos de videos.
- Cookies ausentes.
- Perfil incorrecto del navegador.
- Sesión de YouTube no iniciada.
- Restricción temporal de la dirección IP.
- Falta de entorno JavaScript.
- Cookies caducadas.
- Ejecución demasiado rápida.
Posibles soluciones:
- Detener temporalmente el proceso.
- Confirmar que YouTube abre normalmente en el navegador.
- Iniciar sesión en la cuenta correcta.
- Identificar el perfil correcto de Chrome.
- Usar cookies del navegador o un archivo de cookies.
- Añadir Deno.
- Reducir la velocidad de las solicitudes.
- Probar primero con un solo video.
- Esperar varias horas si existe una limitación temporal.
- Reiniciar el módem solamente si se comprende el funcionamiento de la conexión y el proveedor entrega IP dinámica.
Pausas recomendadas
--sleep-requests 3 ^ --sleep-interval 5 ^ --max-sleep-interval 12 ^
Estas líneas hacen que yt-dlp espere entre solicitudes.
| Parámetro | Función |
|---|---|
--sleep-requests 3
|
Espera tres segundos entre determinadas solicitudes de extracción. |
--sleep-interval 5
|
Espera como mínimo cinco segundos entre descargas. |
--max-sleep-interval 12
|
Permite una espera variable de hasta doce segundos. |
--retries 10
|
Reintenta una operación hasta diez veces. |
--fragment-retries 10
|
Reintenta fragmentos individuales del video. |
Las pausas hacen el proceso más lento, pero también más estable y menos agresivo frente al servidor.
Script ampliado con cookies, Deno y pausas
El siguiente bloque conserva el enfoque de 360p, una sola carpeta y nombres completos, pero añade autenticación, JavaScript y pausas.
@echo off
setlocal EnableExtensions
rem ============================================================
rem DESCARGADOR AUTOMATICO DE YOUTUBE - 360p
rem ============================================================
set "BASE=E:\00_APP\00_YOUTUBE_Videos"
set "YTDLP=%BASE%\yt-dlp\yt-dlp.exe"
set "FFMPEG=%BASE%\yt-dlp"
set "DENO=%BASE%\yt-dlp\deno.exe"
set "DESTINO=%BASE%\Videos_Descargados"
set "LISTA=%BASE%\videos.txt"
set "HISTORIAL=%BASE%\videos_descargados.txt"
set "LOG=%BASE%\registro_descargas.txt"
if not exist "%DESTINO%" mkdir "%DESTINO%"
if not exist "%YTDLP%" (
echo ERROR: No se encontro "%YTDLP%"
pause
exit /b 1
)
if not exist "%FFMPEG%\ffmpeg.exe" (
echo ERROR: No se encontro "%FFMPEG%\ffmpeg.exe"
pause
exit /b 1
)
if not exist "%FFMPEG%\ffprobe.exe" (
echo ERROR: No se encontro "%FFMPEG%\ffprobe.exe"
pause
exit /b 1
)
if not exist "%DENO%" (
echo ERROR: No se encontro "%DENO%"
pause
exit /b 1
)
if not exist "%LISTA%" (
echo ERROR: No se encontro "%LISTA%"
pause
exit /b 1
)
cls
echo ============================================================
echo DESCARGADOR AUTOMATICO DE YOUTUBE
echo ============================================================
echo.
echo Resolucion: Hasta 360p
echo Cookies: Google Chrome
echo JavaScript: Deno
echo Destino: %DESTINO%
echo Lista: %LISTA%
echo.
echo ============================================================
echo.
echo.>>"%LOG%"
echo ============================================================>>"%LOG%"
echo INICIO: %date% %time%>>"%LOG%"
echo ============================================================>>"%LOG%"
"%YTDLP%" ^
--ffmpeg-location "%FFMPEG%" ^
--js-runtimes "deno:%DENO%" ^
--cookies-from-browser chrome ^
--batch-file "%LISTA%" ^
--download-archive "%HISTORIAL%" ^
--continue ^
--ignore-errors ^
--no-overwrites ^
--windows-filenames ^
--restrict-filenames ^
--merge-output-format mp4 ^
--format "bv*[height<=360]+ba/b[height<=360]" ^
--sleep-requests 3 ^
--sleep-interval 5 ^
--max-sleep-interval 12 ^
--retries 10 ^
--fragment-retries 10 ^
--output "%DESTINO%\%%(upload_date)s - %%(title)s - %%(channel,uploader)s [%%(id)s].%%(ext)s" ^
--newline
set "RESULTADO=%ERRORLEVEL%"
echo.
echo ============================================================
if "%RESULTADO%"=="0" (
echo PROCESO TERMINADO CORRECTAMENTE
echo RESULTADO: Correcto>>"%LOG%"
) else (
echo PROCESO TERMINADO CON ERRORES
echo Codigo: %RESULTADO%
echo RESULTADO: Error %RESULTADO%>>"%LOG%"
)
echo FIN: %date% %time%>>"%LOG%"
echo ============================================================>>"%LOG%"
echo.
pause
endlocal
Programación automática en Windows
El Programador de tareas de Windows permite ejecutar el archivo sin necesidad de recordar manualmente cuándo hacerlo.
Abrir el Programador de tareas
- Presionar
Windows + R. - Escribir:
- Presionar
taskschd.msc
- Presionar
Enter. - Elegir Crear tarea básica.
- Presionar
Configuración sugerida
| Campo | Valor sugerido |
|---|---|
| Nombre | Descargar videos de YouTube |
| Desencadenador | Diario, semanal o al iniciar sesión |
| Hora | Madrugada o periodo de poco uso |
| Acción | Iniciar un programa |
| Programa | E:\00_APP\00_YOUTUBE_Videos\descargar_youtube.bat
|
| Iniciar en | E:\00_APP\00_YOUTUBE_Videos
|
Frecuencias posibles
- Cada noche.
- Una vez por semana.
- Los domingos.
- Al iniciar la computadora.
- Al iniciar sesión.
- Cuando el equipo esté inactivo.
- En horarios donde la conexión no sea utilizada por otras personas.
Adaptación para ejecución automática
El comando:
pause
mantiene abierta la ventana al terminar.
Esto es útil durante pruebas, porque permite leer errores. Sin embargo, en una tarea automática puede dejar una ventana esperando indefinidamente.
Para la versión programada, puede cambiarse por:
rem pause
o eliminarse.
Conviene conservar dos archivos: uno de prueba con pause y otro automático sin pause.
Flujo de trabajo recomendado
| Paso | Acción | Resultado |
|---|---|---|
| 1 | Localizar el video, playlist o canal. | Se obtiene una URL. |
| 2 | Pegar la URL en videos.txt.
|
Queda registrada en la cola. |
| 3 | Ejecutar descargar_youtube.bat.
|
yt-dlp examina la lista. |
| 4 | Consultar el historial. | Se omiten elementos anteriores. |
| 5 | Descargar video y audio. | Se obtienen las pistas necesarias. |
| 6 | Unir mediante FFmpeg. | Se crea el MP4 final. |
| 7 | Guardar fecha, título, canal e ID. | El archivo queda identificable. |
| 8 | Revisar la reproducción. | Se confirma imagen y sonido. |
| 9 | Clasificar o vincular en WikiFSF. | El archivo se integra al sistema de conocimiento. |
Uso para estudio y aprendizaje
Esta herramienta puede funcionar como una estación de aprendizaje y no solamente como un descargador.
Biblioteca de estudio
Es posible crear listas temáticas:
- Pedagogía.
- Tecnología.
- Historia.
- Cocina.
- Salud.
- Documentales.
- Espiritualidad.
- Programación.
- Videojuegos.
- Escuela RyE.
- 5Era.
- Memoria familiar.
Cada lista puede agregarse a videos.txt y descargarse poco a poco.
Aprendizaje sin conexión
Los archivos locales permiten estudiar cuando:
- La conexión falla.
- El proveedor reduce la velocidad.
- Se viaja.
- Se desea evitar distracciones de la plataforma.
- El contenido será reproducido varias veces.
- Se busca conservar una clase para consulta futura.
Estudio pausado
Un video guardado localmente puede:
- Reproducirse a menor velocidad.
- Pausarse para tomar notas.
- Compararse con otros materiales.
- Utilizarse para crear una ficha WikiFSF.
- Revisarse sin publicidad o recomendaciones externas.
- Dividirse en estaciones de estudio.
- Convertirse en audio cuando la imagen no es esencial.
- Integrarse a una cronología de aprendizaje.
Conservación de memoria
Un archivo de video puede ser memoria cultural, educativa, técnica, familiar o personal.
Algunos contenidos desaparecen por:
- Eliminación del canal.
- Cierre de cuentas.
- Cambios en derechos de distribución.
- Conversión del video en privado.
- Fallos de almacenamiento.
- Transformaciones de la plataforma.
- Pérdida de acceso a internet.
- Olvido de la dirección original.
Conservar responsablemente una copia de materiales significativos puede ayudar a mantener:
- Recuerdos familiares.
- Programas antiguos.
- Explicaciones técnicas.
- Recetas.
- Testimonios.
- Clases.
- Entrevistas.
- Documentales difíciles de localizar.
- Fuentes utilizadas en artículos.
- Material para reflexión futura.
Relación con WikiFSF
Los videos descargados pueden servir como material de apoyo para:
- Crear artículos.
- Resumir clases.
- Documentar procesos.
- Conservar fuentes.
- Extraer cronologías.
- Registrar recetas.
- Crear tablas comparativas.
- Construir estaciones de aprendizaje.
- Vincular recuerdos con fechas y personas.
- Preservar una fuente antes de que desaparezca.
Ficha mínima sugerida
== Video == * Título: * Canal: * Fecha de publicación: * URL original: * Fecha de descarga: * Resolución: * Duración: * Tema: * Motivo de conservación: * Resumen: * Aprendizajes: * Palabras clave:
Importancia del identificador
El nombre:
20231029 - Spicy_City - Orbital_Bacon [LkdWdBg-0kA].mp4
conserva:
20231029: fecha de publicación.Spicy_City: título.Orbital_Bacon: canal.LkdWdBg-0kA: identificador original de YouTube..mp4: formato final.
El identificador es especialmente útil porque permite reconstruir la URL:
https://www.youtube.com/watch?v=LkdWdBg-0kA
aunque el nombre del archivo haya sido modificado.
Mejoras posibles
El sistema puede adaptarse para realizar tareas adicionales.
| Mejora | Utilidad |
|---|---|
| Descargar miniaturas | Conservar la portada original del video. |
| Descargar subtítulos | Facilitar lectura, búsqueda y estudio. |
| Guardar descripción | Conservar fuentes, enlaces y contexto. |
| Descargar solamente audio | Crear una biblioteca de clases, música autorizada o conferencias. |
| Separar por tema | Crear diferentes carpetas y listas de trabajo. |
| Crear registro CSV o JSON | Analizar fechas, canales, duración y títulos. |
| Limitar duración | Evitar transmisiones demasiado largas. |
| Limitar tamaño | Proteger el espacio del disco. |
| Descargar solamente videos nuevos | Mantener actualizada una lista o canal. |
| Programación nocturna | Aprovechar periodos de bajo uso. |
Descargar miniatura
--write-thumbnail ^
Descargar subtítulos disponibles
--write-subs ^ --write-auto-subs ^ --sub-langs "es.*,en.*" ^
Guardar descripción y metadatos
--write-description ^ --write-info-json ^
Descargar solamente audio
-x ^ --audio-format mp3 ^ --audio-quality 5 ^
Descargar solo una parte de una playlist
--playlist-start 1 ^ --playlist-end 25 ^
Limitar cantidad de elementos
Puede dividirse una lista grande en segmentos:
--playlist-start 1 --playlist-end 50 --playlist-start 51 --playlist-end 100 --playlist-start 101 --playlist-end 150
Esto reduce sesiones excesivamente largas y facilita detectar errores.
Limitar duración
Ejemplo conceptual para evitar videos demasiado extensos:
--match-filter "duration < 14400"
El valor 14400 equivale a cuatro horas.
Lista de espera pedagógica
Una playlist propia puede utilizarse como una cola de aprendizaje:
- Se crea una playlist privada o no listada.
- Se agregan videos que se desean estudiar.
- El archivo
videos.txtconserva la dirección de esa playlist. - La tarea programada revisa periódicamente la lista.
- Los videos nuevos se descargan.
- El historial evita duplicados.
- La persona consulta después el material sin depender de la plataforma.
La playlist deja de ser solamente una colección temporal y se convierte en una estación de selección, conservación y aprendizaje.
Mantenimiento
Actualizar yt-dlp
Comando:
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" -U
También puede revisarse la versión:
"E:\00_APP\00_YOUTUBE_Videos\yt-dlp\yt-dlp.exe" --version
Revisar espacio disponible
Las playlists y canales pueden consumir mucho espacio.
Antes de procesar una colección grande conviene revisar:
- Cantidad de videos.
- Duración promedio.
- Resolución seleccionada.
- Espacio disponible.
- Posibilidad de duplicados externos.
- Capacidad del disco.
- Tiempo estimado de descarga.
Copias de seguridad
Conviene respaldar:
videos.txt videos_descargados.txt descargar_youtube.bat registro_descargas.txt
El archivo más importante para evitar repeticiones es:
videos_descargados.txt
Limpieza
No deben borrarse automáticamente archivos con nombres como:
.f398.mp4 .f251.webm .part .ytdl
sin revisar primero su estado.
Pueden representar:
- Descargas incompletas.
- Pistas pendientes de fusionar.
- Archivos temporales.
- Procesos interrumpidos.
- Datos útiles para reanudar.
Diagnóstico rápido
| Síntoma | Causa probable | Acción |
|---|---|---|
| Aparecen dos archivos por video | Falta FFmpeg o no se encontró su ruta. | Verificar ffmpeg.exe y --ffmpeg-location.
|
| El archivo no tiene audio | Se conservó solamente la pista de video. | Unir con FFmpeg o repetir la descarga. |
| El archivo solo tiene sonido | Se abrió la pista de audio. | Buscar el MP4 final o instalar FFmpeg. |
| Se crean dos carpetas iguales | La plantilla de salida contiene canal y playlist como carpetas. | Eliminar las carpetas de la expresión --output.
|
| El video se omite | Está registrado en el historial. | Revisar videos_descargados.txt.
|
| No eres un robot | YouTube solicita autenticación. | Usar cookies, Deno y pausas. |
| No hay entorno JavaScript | Falta Deno. | Instalar deno.exe.
|
| El nombre usa guiones bajos | Está activo --restrict-filenames.
|
Quitar esa línea si se desean nombres naturales. |
| La ventana queda abierta | El script contiene pause.
|
Eliminarlo en la versión programada. |
| Descarga nuevamente una colección | El historial fue borrado o cambiado. | Restaurar la copia de seguridad del historial. |
Límites prácticos
La herramienta no garantiza que todos los videos puedan descargarse.
Algunos contenidos pueden estar:
- Eliminados.
- Privados.
- Restringidos por edad.
- Bloqueados geográficamente.
- Protegidos por membresía.
- Limitados por derechos.
- Disponibles solamente mediante una sesión específica.
- Sujetos a cambios técnicos de YouTube.
- Protegidos por mecanismos que yt-dlp todavía no interpreta.
La automatización facilita el proceso, pero requiere supervisión, actualización y uso responsable.
Reflexión
Las plataformas digitales ofrecen una sensación de permanencia, pero muchos contenidos son temporales. Una dirección puede funcionar hoy y desaparecer mañana.
Guardar un video no significa únicamente acumular archivos. Cuando existe una intención clara, puede convertirse en un acto de:
- Estudio.
- Preservación.
- Memoria.
- Documentación.
- Preparación.
- Autonomía.
- Curaduría.
- Continuidad educativa.
El valor no se encuentra solamente en descargar, sino en decidir:
- Qué merece conservarse.
- Por qué se conserva.
- Cómo se clasifica.
- Cuándo se revisará.
- Qué aprendizaje puede extraerse.
- Cómo se relaciona con otros conocimientos.
- Qué debe eliminarse cuando deja de tener sentido.
Una biblioteca útil no es la que contiene más archivos, sino aquella cuyos contenidos pueden encontrarse, comprenderse, relacionarse y convertirse en aprendizaje.
Autoría y documentación
| Dato | Información |
|---|---|
| Documento base | Información, rutas, pruebas y scripts conservados por Ziv. |
| Curaduría, ampliación y organización | Inteligencia Artificial, mediante la plantilla 🤝ChatGPT ✨ 🧩🌐- 20260616. |
| Fecha de ampliación | 16 de junio de 2026. |
| Propósito | Documentar la instalación, automatización, uso pedagógico, conservación y mantenimiento de yt-dlp en WikiFSF. |
| Ruta documentada | E:\00_APP\00_YOUTUBE_Videos
|
🤝ChatGPT ✨ 🧩🌐- 20260616 - Creado mayormente por CHATGPT a petición mia (Ziv).
Script para conservar AUDIO
- Este script reduce lo más que puede el video y su resolución para crear archivos pequeños.
- Pero trata de conservar una buena calidad de AUDIO.
- E:\00_APP\00_YOUTUBE_Videos\descargar_youtube_compacto_audio_mejor.bat
@echo off
setlocal EnableExtensions
rem ============================================================
rem YOUTUBE: VIDEO MAS COMPACTO + MEJOR AUDIO DISPONIBLE
rem ============================================================
rem
rem Objetivo:
rem - Buscar la pista de video con menor tamano estimado.
rem - Mantener la mejor calidad de audio disponible.
rem - Preferir MP4 y M4A cuando sea posible.
rem - Usar MKV si MP4 no admite los codecs seleccionados.
rem - Guardar todos los videos en una sola carpeta.
rem
rem VLC puede reproducir MP4, MKV y la mayoria de codecs usados.
rem ============================================================
rem ============================================================
rem RUTAS PRINCIPALES
rem ============================================================
set "BASE=E:\00_APP\00_YOUTUBE_Videos"
set "YTDLP=%BASE%\yt-dlp\yt-dlp.exe"
set "FFMPEG=%BASE%\yt-dlp"
set "DENO=%BASE%\yt-dlp\deno.exe"
set "DESTINO=%BASE%\Videos_Descargados"
set "LISTA=%BASE%\videos.txt"
rem Historial separado para esta modalidad
set "HISTORIAL=%BASE%\videos_descargados_compactos.txt"
set "LOG=%BASE%\registro_descargas_compactas.txt"
rem ============================================================
rem CREAR CARPETA DE DESTINO
rem ============================================================
if not exist "%DESTINO%" (
mkdir "%DESTINO%"
)
rem ============================================================
rem VERIFICAR YT-DLP
rem ============================================================
if not exist "%YTDLP%" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO YT-DLP
echo ============================================================
echo.
echo Archivo esperado:
echo "%YTDLP%"
echo.
pause
exit /b 1
)
rem ============================================================
rem VERIFICAR FFMPEG
rem ============================================================
if not exist "%FFMPEG%\ffmpeg.exe" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO FFMPEG
echo ============================================================
echo.
echo Archivo esperado:
echo "%FFMPEG%\ffmpeg.exe"
echo.
pause
exit /b 1
)
if not exist "%FFMPEG%\ffprobe.exe" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO FFPROBE
echo ============================================================
echo.
echo Archivo esperado:
echo "%FFMPEG%\ffprobe.exe"
echo.
pause
exit /b 1
)
rem ============================================================
rem VERIFICAR DENO
rem ============================================================
if not exist "%DENO%" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO DENO
echo ============================================================
echo.
echo Archivo esperado:
echo "%DENO%"
echo.
pause
exit /b 1
)
rem ============================================================
rem VERIFICAR LISTA DE URL
rem ============================================================
if not exist "%LISTA%" (
echo.
echo ============================================================
echo ERROR: NO SE ENCONTRO LA LISTA DE VIDEOS
echo ============================================================
echo.
echo Archivo esperado:
echo "%LISTA%"
echo.
echo Coloca una URL por renglon dentro de videos.txt.
echo.
pause
exit /b 1
)
rem ============================================================
rem MOSTRAR INFORMACION
rem ============================================================
cls
echo ============================================================
echo VIDEO MAS COMPACTO + MEJOR AUDIO DISPONIBLE
echo ============================================================
echo.
echo Programa: %YTDLP%
echo FFmpeg: %FFMPEG%
echo Deno: %DENO%
echo Destino: %DESTINO%
echo Lista: %LISTA%
echo Historial: %HISTORIAL%
echo.
echo Video: Menor tamano estimado
echo Audio: Mejor bitrate disponible
echo Contenedor: Preferencia MP4; alternativa MKV
echo.
echo Fecha: %date%
echo Hora: %time%
echo.
echo ============================================================
echo.
rem ============================================================
rem REGISTRAR INICIO
rem ============================================================
echo.>>"%LOG%"
echo ============================================================>>"%LOG%"
echo INICIO: %date% %time%>>"%LOG%"
echo VIDEO: Menor tamano estimado>>"%LOG%"
echo AUDIO: Mejor bitrate disponible>>"%LOG%"
echo CONTENEDOR: MP4 o MKV>>"%LOG%"
echo ============================================================>>"%LOG%"
rem ============================================================
rem DESCARGAR
rem ============================================================
rem
rem bv+ba:
rem Pista de video separada + pista de audio separada.
rem
rem /b:
rem Si no existen pistas separadas compatibles, usa un formato
rem combinado.
rem
rem abr:
rem Prefiere mayor bitrate de audio.
rem
rem +size:
rem Prefiere menor tamano de archivo.
rem
rem vext:mp4:
rem Da preferencia al contenedor de video MP4.
rem
rem aext:m4a:
rem Da preferencia al audio M4A.
rem
rem mp4/mkv:
rem Intenta MP4 y utiliza MKV cuando sea necesario.
rem ============================================================
"%YTDLP%" ^
--ffmpeg-location "%FFMPEG%" ^
--js-runtimes "deno:%DENO%" ^
--batch-file "%LISTA%" ^
--download-archive "%HISTORIAL%" ^
--continue ^
--ignore-errors ^
--no-overwrites ^
--windows-filenames ^
--restrict-filenames ^
--format "bv+ba/b" ^
--format-sort "abr,+size,vext:mp4,aext:m4a" ^
--merge-output-format "mp4/mkv" ^
--sleep-requests 3 ^
--sleep-interval 5 ^
--max-sleep-interval 12 ^
--retries 10 ^
--fragment-retries 10 ^
--output "%DESTINO%\%%(upload_date)s - %%(title)s - %%(channel,uploader)s [%%(id)s] [COMPACTO_AUDIO_MEJOR].%%(ext)s" ^
--newline
rem ============================================================
rem GUARDAR RESULTADO
rem ============================================================
set "RESULTADO=%ERRORLEVEL%"
echo.
echo ============================================================
if "%RESULTADO%"=="0" (
echo PROCESO TERMINADO CORRECTAMENTE
echo RESULTADO: Correcto>>"%LOG%"
) else (
echo EL PROCESO TERMINO CON UNO O MAS ERRORES
echo Codigo de salida: %RESULTADO%
echo RESULTADO: Error %RESULTADO%>>"%LOG%"
)
echo.
echo Fecha final: %date%
echo Hora final: %time%
echo ============================================================
echo FIN: %date% %time%>>"%LOG%"
echo ============================================================>>"%LOG%"
echo.
pause
endlocal