Puko
Dseda
Verificación en dos pasos activada
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Si tambien funciona en -o el path y el nombre juntos y sin -pMis disculpas por cualquier confusión. Parece que en yt-dlp, la opción -o se usa como mencionaste para determinar el nombre y el formato del archivo de salida, mientras que la opción -P no parece usarse para especificar el directorio de salida. Sin embargo, en tu comando, no veo -P definido en la documentación de yt-dlp. Generalmente, el directorio de salida se incluye en la opción -o:
Insertar CODE, HTML o PHP:yt-dlp -o "C:/MyVideos/%(upload_date)s-%(title)s.%(ext)s" "https://www.tiktok.com/@user/video/id"
Esta es la sintaxis comúnmente utilizada, donde puedes especificar tanto el directorio como el nombre del archivo en la opción -o.
Comprueba si hay actualizaciones o cambios en la documentación de yt-dlp, ya que estos comandos pueden cambiar con las nuevas versiones del programa.
Por el momento, yt-dlp/dev-ytdl no proporciona una opción para cambiar el formato de la fecha directamente. El valor de %(upload_date)s se formatea automáticamente como 'YYYYMMDD'. Sin embargo, puedes reformatear la fecha después de la descarga con un script en bash o usando una herramienta de línea de comandos como awk, sed o fecha. Ten en cuenta que esto puede variar dependiendo de tu sistema operativo y ambiente de línea de comandos.Si tambien funciona en -o el path y el nombre juntos y sin -p
En %(upload_date)s ¿no hay más opciones para que quede la fecha asi: 2023-07-23 en lugar de 20230723?
tengo una duda, porque las fotos se muestran solamente cuando se cargan todas las fotos?En HTML, cada elemento debería tener un ID único. Si quieres seleccionar varios elementos a la vez, deberías usar clases. Aquí te muestro cómo hacerlo:
Primero, asigna a todas tus imágenes la misma clase en tu HTML:
HTML:<div id="loading" class="loader">Cargando...</div> <img class="myImage" style="display: none;" src="ruta_imagen1.jpg"> <img class="myImage" style="display: none;" src="ruta_imagen2.jpg"> <img class="myImage" style="display: none;" src="ruta_imagen3.jpg">
Luego, en tu JavaScript, puedes seleccionar todos los elementos que tienen esa clase y asignar la función onload a cada uno de ellos:
JavaScript:window.onload = function() { var images = document.getElementsByClassName('myImage'); Array.from(images).forEach(img => { img.onload = function() { document.getElementById('loading').style.display = "none"; img.style.display = "block"; }; // Activa manualmente el evento de carga en caso de que la imagen ya esté cargada if (img.complete) img.onload(); }); };
Este código ocultará la animación de carga y mostrará cada imagen a medida que se carga.
El código que has mencionado, muestra cada imagen individualmente cuando se termina de cargar. Sin embargo, si todas las imágenes aparecen al mismo tiempo, podría ser que todas se carguen aproximadamente al mismo tiempo o que tu navegador esté cacheando las imágenes, haciendo que la carga sea casi instantánea. Además, el tiempo de carga puede variar dependiendo del tamaño de las imágenes y la velocidad de tu conexión a internet. Si quieres mostrar las imágenes una por una a medida que se van cargando, deberías asegurar de no tener configurado algún otro código de javascript que pueda estar afectando el comportamiento de la carga.tengo una duda, porque las fotos se muestran solamente cuando se cargan todas las fotos?
mm no ya entendi, esto funciona solamente cuando el navegador termina de cargar cierto?El código que has mencionado, muestra cada imagen individualmente cuando se termina de cargar. Sin embargo, si todas las imágenes aparecen al mismo tiempo, podría ser que todas se carguen aproximadamente al mismo tiempo o que tu navegador esté cacheando las imágenes, haciendo que la carga sea casi instantánea. Además, el tiempo de carga puede variar dependiendo del tamaño de las imágenes y la velocidad de tu conexión a internet. Si quieres mostrar las imágenes una por una a medida que se van cargando, deberías asegurar de no tener configurado algún otro código de javascript que pueda estar afectando el comportamiento de la carga.
Correcto, el evento "onload" se dispara cuando el objeto (en este caso, la imagen) se ha cargado completamente. Sin embargo, esto es independiente de otros elementos en la página. No necesariamente significa que la página entera ha terminado de cargar, sólo que el elemento de imagen específico ha terminado. En este caso, la imagen se mostrará tan pronto como esté completamente cargada.mm no ya entendi, esto funciona solamente cuando el navegador termina de cargar cierto?
esta misma funcion la puedo usar con los videos verdad??Correcto, el evento "onload" se dispara cuando el objeto (en este caso, la imagen) se ha cargado completamente. Sin embargo, esto es independiente de otros elementos en la página. No necesariamente significa que la página entera ha terminado de cargar, sólo que el elemento de imagen específico ha terminado. En este caso, la imagen se mostrará tan pronto como esté completamente cargada.
Sí, puedes usar una lógica similar para los videos, pero en lugar del evento "onload", generalmente se usa "canplaythrough". Este evento se dispara cuando el video se ha cargado lo suficiente como para reproducirse hasta el final sin tener que detenerse para más búfer. Aquí te dejo un ejemplo:esta misma funcion la puedo usar con los videos verdad??
window.onload = function() {
var videos = document.getElementsByClassName('myVideo');
Array.from(videos).forEach(video => {
video.oncanplaythrough = function() {
document.getElementById('loading').style.display = "none";
video.style.display = "block";
};
});
};
Sí, es cierto, yt-dlp introduce un cambio con respecto a youtube-dl. Con "-f best" no necesariamente estás obteniendo la mejor calidad posible, porque solo selecciona el mejor formato que ya está premezclado. Si se omite "-f best", yt-dlp seleccionará automáticamente el mejor audio y video de manera independiente y luego los mezclará, lo cual podría resultar en una calidad superior. Si todavía quieres usar sólo el mejor formato premezclado, puedes usar "-f b" en su lugar. Sin embargo, la calidad de este formato no siempre será la mejor disponible. Entonces, si buscas la mejor calidad, te sugeriría omitir la opción "-f" por completo.En el yt-dlp en url tiktok si le pongo -f best me sale:
WARNING: "-f best" selects the best pre-merged format which is often not the best option.
To let yt-dlp download and merge the best available formats, simply do not pass any format selection.
If you know what you are doing and want only the best pre-merged format, use "-f b" instead to suppress this warning
¿no selecciona la mejor calidad o la selecciona sola o esta mal el comando?
El comando -f best[format_note*=watermarked] selecciona el mejor formato de video que tiene una nota de formato ('format_note') que incluye la palabra 'watermarked'. Esto te dará el mejor video que tiene una marca de agua.En el yt-dlp ¿qué hace -f best[format_note*=watermarked] or -f best[format_id*=download_addr] ? , el primero me da el video con mayor resolución en kbs
Cómo puedo hacer para que carguen primero el contenido que está arriba y luego el que está abajo?Sí, es cierto, yt-dlp introduce un cambio con respecto a youtube-dl. Con "-f best" no necesariamente estás obteniendo la mejor calidad posible, porque solo selecciona el mejor formato que ya está premezclado. Si se omite "-f best", yt-dlp seleccionará automáticamente el mejor audio y video de manera independiente y luego los mezclará, lo cual podría resultar en una calidad superior. Si todavía quieres usar sólo el mejor formato premezclado, puedes usar "-f b" en su lugar. Sin embargo, la calidad de este formato no siempre será la mejor disponible. Entonces, si buscas la mejor calidad, te sugeriría omitir la opción "-f" por completo.
Para cargar primero el contenido ubicado en la parte superior de tu página web puedes utilizar la estrategia de "lazy loading". Básicamente, esto permite que solo el contenido necesario o "above the fold" se cargue al principio, y el resto del contenido (usualmente imágenes y videos) se cargue a medida que el usuario desplaza hacia abajo la página.Cómo puedo hacer para que carguen primero el contenido que está arriba y luego el que está abajo?
<img src="image.jpg" loading="lazy" alt="..." /> <!--Cargará solo al aproximarse a ella-->
<img src="image2.jpg" loading="eager" alt="..." /> <!--Cargará tan pronto como sea posible-->
Cómo puedo usar lazy con observar?Para cargar primero el contenido ubicado en la parte superior de tu página web puedes utilizar la estrategia de "lazy loading". Básicamente, esto permite que solo el contenido necesario o "above the fold" se cargue al principio, y el resto del contenido (usualmente imágenes y videos) se cargue a medida que el usuario desplaza hacia abajo la página.
En JavaScript existe la API Intersection Observer para implementar el lazy loading. Para las imágenes, otra opción simple pero eficaz es usar el atributo "loading" en HTML5 que tiene dos valores: "lazy" y "eager". "Lazy" hace que el navegador posponga la carga de la imagen hasta que esté a punto de desplazarse hasta su posición. Aquí un ejemplo:
Te recomendaría explorar estas opciones y elegir la que mejor se adapte a tus necesidades.HTML:<img src="image.jpg" loading="lazy" alt="..." /> <!--Cargará solo al aproximarse a ella--> <img src="image2.jpg" loading="eager" alt="..." /> <!--Cargará tan pronto como sea posible-->
Para usar la técnica de "lazy loading" con la API Intersection Observer de JavaScript, primero debes aplicarle a tus imágenes (o cualquier otro elemento que quieras cargar de forma "lazy") una clase y quitarles el atributo "src" (o "srcset" para imágenes responsive). En su lugar, puedes usar un atributo de datos personalizado, como "data-src". Aquí hay un ejemplo:Cómo puedo usar lazy con observar?
<img data-src="image.jpg" class="lazyload" alt="My Image" />
document.addEventListener("DOMContentLoaded", function() {
var lazyImages = [].slice.call(document.querySelectorAll("img.lazyload"));
if ("IntersectionObserver" in window) {
let lazyImageObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
let lazyImage = entry.target;
lazyImage.src = lazyImage.dataset.src;
lazyImage.classList.remove("lazyload");
lazyImageObserver.unobserve(lazyImage);
}
});
});
lazyImages.forEach(function(lazyImage) {
lazyImageObserver.observe(lazyImage);
});
}
});
Y como sería para vídeos?Para usar la técnica de "lazy loading" con la API Intersection Observer de JavaScript, primero debes aplicarle a tus imágenes (o cualquier otro elemento que quieras cargar de forma "lazy") una clase y quitarles el atributo "src" (o "srcset" para imágenes responsive). En su lugar, puedes usar un atributo de datos personalizado, como "data-src". Aquí hay un ejemplo:
HTML:<img data-src="image.jpg" class="lazyload" alt="My Image" />
Luego, utiliza el siguiente script JavaScript para observar las imágenes:
JavaScript:document.addEventListener("DOMContentLoaded", function() { var lazyImages = [].slice.call(document.querySelectorAll("img.lazyload")); if ("IntersectionObserver" in window) { let lazyImageObserver = new IntersectionObserver(function(entries, observer) { entries.forEach(function(entry) { if (entry.isIntersecting) { let lazyImage = entry.target; lazyImage.src = lazyImage.dataset.src; lazyImage.classList.remove("lazyload"); lazyImageObserver.unobserve(lazyImage); } }); }); lazyImages.forEach(function(lazyImage) { lazyImageObserver.observe(lazyImage); }); } });
Este código crea un nuevo IntersectionObserver que carga la imagen cuando está a punto de entrar en la vista del usuario y deja de observarla una vez se ha cargado.
Recuerda que este código no funcionará en navegadores antiguos que no soporten IntersectionObserver. Para esos casos, puedes agregar una biblioteca polyfill o bien un fallback usando el evento scroll, aunque no es lo ideal por cuestiones de rendimiento.
Para aplicar "lazy loading" a videos la lógica es muy similar a las imágenes. Primero, debes remover el atributo "src" de tus elementos de video y en su lugar usar un atributo de datos personalizado. Aquí te dejo un ejemplo:Y como sería para vídeos?
<video class="lazyload" data-src="myVideo.mp4" controls></video>
document.addEventListener("DOMContentLoaded", function() {
var lazyVideos = [].slice.call(document.querySelectorAll("video.lazyload"));
if ("IntersectionObserver" in window) {
let lazyVideoObserver = new IntersectionObserver(function(entries, observer) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
let lazyVideo = entry.target;
lazyVideo.src = lazyVideo.dataset.src;
lazyVideo.classList.remove("lazyload");
lazyVideoObserver.unobserve(lazyVideo);
}
});
});
lazyVideos.forEach(function(lazyVideo) {
lazyVideoObserver.observe(lazyVideo);
});
}
});
Para evitar sobrescribir archivos existentes y en su lugar hacer que yt-dlp renombre automáticamente los nuevos archivos, puedes utilizar la opciónEn el yt-dlp ¿qué le agrego a %(title)s.%(ext)s para que si encuentra un nombre igual lo renombre en lugar de omitir la descarga?
--auto-number
. De esta manera, si ya existe un archivo con el mismo nombre, yt-dlp agregará un número al final del nombre del archivo.yt-dlp --auto-number -o "%(title)s.%(ext)s" url_del_video
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?