Tema para preguntas random a Chatgpt 🤖

  • Autor Autor Carlos Arreola
  • Fecha de inicio Fecha de inicio
Sí, puedes hacerlo usando la librería clipboard que te permitirá acceder al contenido del portapapeles. Aquí te dejo un ejemplo:

Python:
import os
import clipboard

def seleccion_url():
    print("\nIntroduce URL:\n1 Desde el portapapeles\n2 Manualmente")
    opcion = input("> ")
    if opcion == '1':
        return clipboard.paste()   # Obtiene la URL del portapapeles
    elif opcion == '2':
        return input("Introduce URL > ")
    else:
        print("Opción no válida, intenta de nuevo.")
        return seleccion_url()

print("tiktok")

url = seleccion_url()
descarga = seleccion_carpeta()

input("Presiona 'Enter' para continuar")

command = f'yt-dlp -f best[format_id*=h264_540p] -o "{descarga}/%(upload_date)s - %(title)s (%(id)s).%(ext)s" "{url}"'
os.system(command)
Recuerda instalar la librería clipboard usando pip:
Insertar CODE, HTML o PHP:
pip install clipboard
Este código permitirá que el usuario introduzca una URL ya sea pegándola desde el portapapeles o escribiéndola manualmente.
y si no tengo "clipboard" como lo modifico para que continue asi como esta el codigo sin quitarle nada y no diga No module named 'clipboard' ?
 
y si no tengo "clipboard" como lo modifico para que continue asi como esta el codigo sin quitarle nada y no diga No module named 'clipboard' ?
Si no tienes la librería "clipboard" o no puedes instalarla, puedes simplemente quitar esa parte de la lógica. Aquí te dejo cómo quedaría el código:

Python:
import os

def seleccion_url():
    url = input("Introduce URL > ")
    return url

def seleccion_carpeta():
    print("\nEscoge la carpeta de descarga:\n1 Descargas\n2 Escritorio\n3 Manual (introduce la ruta)")
    opcion = input("> ")
    if opcion == '1':
        return os.path.expandvars('%userprofile%\\Downloads')
    elif opcion == '2':
        return os.path.expandvars('%userprofile%\\Desktop')
    elif opcion == '3':
        return input("Introduce la ruta de descarga > ")
    else:
        print("Opción no válida, intenta de nuevo.")
        return seleccion_carpeta()

print("tiktok")

url = seleccion_url()
descarga = seleccion_carpeta()

input("Presiona 'Enter' para continuar")

command = f'yt-dlp -f best[format_id*=h264_540p] -o "{descarga}/%(upload_date)s - %(title)s (%(id)s).%(ext)s" "{url}"'
os.system(command)

Con esto, el programa te pedirá de manera manual la URL, sin la opción de obtenerla desde el portapapeles.
 
Si no tienes la librería "clipboard" o no puedes instalarla, puedes simplemente quitar esa parte de la lógica. Aquí te dejo cómo quedaría el código:

Python:
import os

def seleccion_url():
    url = input("Introduce URL > ")
    return url

def seleccion_carpeta():
    print("\nEscoge la carpeta de descarga:\n1 Descargas\n2 Escritorio\n3 Manual (introduce la ruta)")
    opcion = input("> ")
    if opcion == '1':
        return os.path.expandvars('%userprofile%\\Downloads')
    elif opcion == '2':
        return os.path.expandvars('%userprofile%\\Desktop')
    elif opcion == '3':
        return input("Introduce la ruta de descarga > ")
    else:
        print("Opción no válida, intenta de nuevo.")
        return seleccion_carpeta()

print("tiktok")

url = seleccion_url()
descarga = seleccion_carpeta()

input("Presiona 'Enter' para continuar")

command = f'yt-dlp -f best[format_id*=h264_540p] -o "{descarga}/%(upload_date)s - %(title)s (%(id)s).%(ext)s" "{url}"'
os.system(command)

Con esto, el programa te pedirá de manera manual la URL, sin la opción de obtenerla desde el portapapeles.
Ya funciona 🥳 nomas que me diste el codigo en partes, los junte y hasta con "clipboard" funciona
 
Ya funciona 🥳 nomas que me diste el codigo en partes, los junte y hasta con "clipboard" funciona
¡Genial! Me alegra mucho saber que el código está funcionando correctamente para ti. Si tienes más preguntas o necesitas ayuda con algo más, no dudes en preguntar. ¡Sigue programando!
 
Aquí te dejo un ejemplo de cómo puedes hacerlo en Python:

Python:
import os

print("tiktok")

url = input("Introduce URL > ")
descarga = input("Introduce carpeta de descarga > ")

input("Presiona 'Enter' para continuar")

command = f'yt-dlp -f best[format_id*=h264_540p] -o "{descarga}/%(upload_date)s - %(title)s (%(id)s).%(ext)s" "{url}"'
os.system(command)

Este script tomará la URL y la carpeta de descarga que ingreses, las usará para construir un comando yt-dlp, y luego ejecutará ese comando. Asegúrate de instalar yt-dlp en tu entorno para que este script funcione correctamente.
var coco=document.getElementsByClassName("nombre")[0];
if(coco.value=false){
alert("parece que hay texto");
}

como hago para verificar que hay texto en un input??
 
var coco=document.getElementsByClassName("nombre")[0];
if(coco.value=false){
alert("parece que hay texto");
}

como hago para verificar que hay texto en un input??
Para verificar que hay texto en un input en JavaScript, puedes usar el atributo .value del elemento input y verificar si es un string vacío o no. Tu código sería:

JavaScript:
var coco = document.getElementsByClassName("nombre")[0];
if(coco.value){
    alert("parece que hay texto");
} else {
    alert("el input está vacío");
}
Esto mostrará una alerta que dice "parece que hay texto" cuando haya texto en el input, y "el input está vacío" cuando no haya texto. Nota que en JavaScript, un string vacío se considera falsy, por lo que if (coco.value) se evalúa a true cuando hay texto.
 
Para verificar que hay texto en un input en JavaScript, puedes usar el atributo .value del elemento input y verificar si es un string vacío o no. Tu código sería:

JavaScript:
var coco = document.getElementsByClassName("nombre")[0];
if(coco.value){
    alert("parece que hay texto");
} else {
    alert("el input está vacío");
}
Esto mostrará una alerta que dice "parece que hay texto" cuando haya texto en el input, y "el input está vacío" cuando no haya texto. Nota que en JavaScript, un string vacío se considera falsy, por lo que if (coco.value) se evalúa a true cuando hay texto.
oks, ahora puedes añadirle que no puedan escribir letras con tilde y comillas?
 
oks, ahora puedes añadirle que no puedan escribir letras con tilde y comillas?
Sí, puedes usar una expresión regular (regex) para comprobar que el texto no contenga letras con tildes ni comillas. Aquí te dejo cómo podrías hacerlo:

JavaScript:
var coco = document.getElementsByClassName("nombre")[0];
var texto = coco.value;
var regex = /^[^áéíóúüÁÉÍÓÚÜ"'`]+$/; // No permite tildes, comillas simples ni dobles.

if(texto) {
  if(regex.test(texto)) {
    alert("El texto es válido");
  } else {
    alert("El texto contiene caracteres inválidos (tildes o comillas)");
  }
} else {
  alert("El input está vacío");
}

Este código mostrará una alerta que dice "El texto es válido" si no hay tildes ni comillas, "El texto contiene caracteres inválidos (tildes o comillas)" si hay alguno de estos caracteres, y "El input está vacío" si no hay texto.
 
Sí, puedes usar una expresión regular (regex) para comprobar que el texto no contenga letras con tildes ni comillas. Aquí te dejo cómo podrías hacerlo:

JavaScript:
var coco = document.getElementsByClassName("nombre")[0];
var texto = coco.value;
var regex = /^[^áéíóúüÁÉÍÓÚÜ"'`]+$/; // No permite tildes, comillas simples ni dobles.

if(texto) {
  if(regex.test(texto)) {
    alert("El texto es válido");
  } else {
    alert("El texto contiene caracteres inválidos (tildes o comillas)");
  }
} else {
  alert("El input está vacío");
}

Este código mostrará una alerta que dice "El texto es válido" si no hay tildes ni comillas, "El texto contiene caracteres inválidos (tildes o comillas)" si hay alguno de estos caracteres, y "El input está vacío" si no hay texto.
pointer-events:none;
el pointer funciona para todos los navegadores??
 
pointer-events:none;
el pointer funciona para todos los navegadores??
La propiedad CSS pointer-events: none; es ampliamente soportada en la mayoría de los navegadores modernos, incluyendo Google Chrome, Firefox, Safari, y las últimas versiones de Edge e Internet Explorer. Sin embargo, puede haber algunas inconsistencias a la hora de manejar cierto tipos de eventos o en navegadores más antiguos. Por ejemplo, Internet Explorer 10 y versiones anteriores no soportan pointer-events en elementos HTML, solo en SVGs. Te recomiendo revisar la compatibilidad exacta en la documentación o en páginas como "Can I use".
 
La propiedad CSS pointer-events: none; es ampliamente soportada en la mayoría de los navegadores modernos, incluyendo Google Chrome, Firefox, Safari, y las últimas versiones de Edge e Internet Explorer. Sin embargo, puede haber algunas inconsistencias a la hora de manejar cierto tipos de eventos o en navegadores más antiguos. Por ejemplo, Internet Explorer 10 y versiones anteriores no soportan pointer-events en elementos HTML, solo en SVGs. Te recomiendo revisar la compatibilidad exacta en la documentación o en páginas como "Can I use".
var r = new Resumable({
target:'uploadpro.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
maxFileSize: 250*1024*1024, // Set maximum file size to 250MB
});

r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));

r.on('fileAdded', function(file) {
if(file.size > r.getOpt('maxFileSize')) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("Tamaño maximo 250MB!");
}
return;
} else if (r.files.length > 1) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("1 archivo a la vez!");
}
return;
}
r.upload();
});

r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
});

r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
document.getElementsByClassName("bluegold")[0].style.pointerEvents = "none";
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
});

r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'green';
});

r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});

tengo una duda, porque solo sube los videos pero no detecta los demas input??
 
var r = new Resumable({
target:'uploadpro.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
maxFileSize: 250*1024*1024, // Set maximum file size to 250MB
});

r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));

r.on('fileAdded', function(file) {
if(file.size > r.getOpt('maxFileSize')) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("Tamaño maximo 250MB!");
}
return;
} else if (r.files.length > 1) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("1 archivo a la vez!");
}
return;
}
r.upload();
});

r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
});

r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
document.getElementsByClassName("bluegold")[0].style.pointerEvents = "none";
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
});

r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'green';
});

r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});

tengo una duda, porque solo sube los videos pero no detecta los demas input??
Tu código está funcionando correctamente para manejar subida de archivos, pero hay un detalle que podrías estar pasando por alto y es que, la biblioteca Resumable.js maneja solo la subida de archivos. No maneja ni llena otros campos de input en un formulario, por ejemplo inputs de texto.

Si estás usando un formulario y esperas que este código suba otros datos del formulario (como los inputs de texto, seleccionadores, checkboxes, etc), necesitarías manejar esos inputs de manera separada, ya sea con un manejo de formularios tradicional o mediante AJAX.

Y si tus intenciones son subir otros tipos de archivos (no solo videos) y Resumable.js no los está detectando, verifica si esos archivos cumplen con las reglas que estableces en la función 'fileAdded' como el tamaño y cantidad permitida. Asegúrate también de que el input de archivos permita seleccionar los tipos de archivos que intentas subir.
 
Tu código está funcionando correctamente para manejar subida de archivos, pero hay un detalle que podrías estar pasando por alto y es que, la biblioteca Resumable.js maneja solo la subida de archivos. No maneja ni llena otros campos de input en un formulario, por ejemplo inputs de texto.

Si estás usando un formulario y esperas que este código suba otros datos del formulario (como los inputs de texto, seleccionadores, checkboxes, etc), necesitarías manejar esos inputs de manera separada, ya sea con un manejo de formularios tradicional o mediante AJAX.

Y si tus intenciones son subir otros tipos de archivos (no solo videos) y Resumable.js no los está detectando, verifica si esos archivos cumplen con las reglas que estableces en la función 'fileAdded' como el tamaño y cantidad permitida. Asegúrate también de que el input de archivos permita seleccionar los tipos de archivos que intentas subir.
mysqli_query($conexion,"UPDATE user SET password='".$_POST['password']."', email='".$_POST['email']."' where email='".$_SESSION['email']."'");


como hago para que este update solo seleccione el ultimo id??
 
mysqli_query($conexion,"UPDATE user SET password='".$_POST['password']."', email='".$_POST['email']."' where email='".$_SESSION['email']."'");


como hago para que este update solo seleccione el ultimo id??
Puedes actualizar la entrada más reciente (es decir, con el ID más grande, dado que los IDs suelen incrementarse automáticamente) usando una subconsulta SQL para seleccionar el ID máximo. Tu consulta se vería de la siguiente manera:

PHP:
mysqli_query($conexion,"UPDATE user SET password='".$_POST['password']."', email='".$_POST['email']."' WHERE id = (SELECT MAX(id) FROM user)");

Eso actualizaría la entrada con el ID más grande en la tabla user. Pero ten en cuenta que esto podría no funcionar como esperas si tienes múltiples usuarios trabajando con la base de datos simultáneamente. Idealmente, deberías tener algún otro criterio para seleccionar el registro que quieras actualizar, para asegurarte de que estás actualizando la entrada correcta.
 
Puedes actualizar la entrada más reciente (es decir, con el ID más grande, dado que los IDs suelen incrementarse automáticamente) usando una subconsulta SQL para seleccionar el ID máximo. Tu consulta se vería de la siguiente manera:

PHP:
mysqli_query($conexion,"UPDATE user SET password='".$_POST['password']."', email='".$_POST['email']."' WHERE id = (SELECT MAX(id) FROM user)");

Eso actualizaría la entrada con el ID más grande en la tabla user. Pero ten en cuenta que esto podría no funcionar como esperas si tienes múltiples usuarios trabajando con la base de datos simultáneamente. Idealmente, deberías tener algún otro criterio para seleccionar el registro que quieras actualizar, para asegurarte de que estás actualizando la entrada correcta.
como hago para reemplazar comillas y tildes en php?
 
como hago para reemplazar comillas y tildes en php?
Puedes usar la función str_replace en PHP para reemplazar las comillas y tildes. Aquí te dejo un ejemplo:

PHP:
$texto = "¡Hola, cómo 'estás'?";
$busqueda = array('á', 'é', 'í', 'ó', 'ú', 'Á', 'É', 'Í', 'Ó', 'Ú', "'", '"');
$reemplazo = array('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U', '', '');
$textoNuevo = str_replace($busqueda, $reemplazo, $texto);

En el código anterior, $busqueda es un array de los caracteres que queremos reemplazar, y $reemplazo es un array de los caracteres con los que queremos reemplazarlos. La función str_replace luego reemplaza cada instancia de cada carácter en $busqueda con el carácter correspondiente en $reemplazo.
 
Puedes usar la función str_replace en PHP para reemplazar las comillas y tildes. Aquí te dejo un ejemplo:

PHP:
$texto = "¡Hola, cómo 'estás'?";
$busqueda = array('á', 'é', 'í', 'ó', 'ú', 'Á', 'É', 'Í', 'Ó', 'Ú', "'", '"');
$reemplazo = array('a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U', '', '');
$textoNuevo = str_replace($busqueda, $reemplazo, $texto);

En el código anterior, $busqueda es un array de los caracteres que queremos reemplazar, y $reemplazo es un array de los caracteres con los que queremos reemplazarlos. La función str_replace luego reemplaza cada instancia de cada carácter en $busqueda con el carácter correspondiente en $reemplazo.
<form id="uploadForm" action="uploadpro.php" method="POST" enctype="multipart/form-data">
<input type="hidden" accept="video/mp4" required id="fileInput" name="file">
</form>
<div id="dropTarget">Arrastra y suelta los archivos aquí</div>
<button id="browseButton">Seleccionar archivos</button>
<div class="barra"><div class="barra_azul" id="barra_estado"><span></span></div></div>
<div id="mbRemaining">MB restantes: N/A</div>

<script>

var r = new Resumable({
target:'uploadpro.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
maxFileSize: 250*1024*1024, // Set maximum file size to 250MB
});

r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));

r.on('fileAdded', function(file) {
if(file.size > r.getOpt('maxFileSize')) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("Tamaño maximo 250MB!");
}
return;
} else if (r.files.length > 1) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("1 archivo a la vez!");
}
return;
}
r.upload();
});

r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
});

r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
document.getElementsByClassName("bluegold")[0].style.pointerEvents = "none";
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
});

r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById("merum").style.display = "block";
document.getElementsByClassName("bluegold")[0].style.display = "none";
document.getElementById('barra_estado').style.backgroundColor = 'green';
});

r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});
</script>

como hago para que este codigo busque solo los archivos .mp4??
 
<form id="uploadForm" action="uploadpro.php" method="POST" enctype="multipart/form-data">
<input type="hidden" accept="video/mp4" required id="fileInput" name="file">
</form>
<div id="dropTarget">Arrastra y suelta los archivos aquí</div>
<button id="browseButton">Seleccionar archivos</button>
<div class="barra"><div class="barra_azul" id="barra_estado"><span></span></div></div>
<div id="mbRemaining">MB restantes: N/A</div>

<script>

var r = new Resumable({
target:'uploadpro.php',
chunkSize:1*1024*1024,
simultaneousUploads:4,
testChunks:false,
throttleProgressCallbacks:1,
maxFileSize: 250*1024*1024, // Set maximum file size to 250MB
});

r.assignDrop(document.getElementById('dropTarget'));
r.assignBrowse(document.getElementById('browseButton'));

r.on('fileAdded', function(file) {
if(file.size > r.getOpt('maxFileSize')) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("Tamaño maximo 250MB!");
}
return;
} else if (r.files.length > 1) {
r.removeFile(file);
if(!document.querySelector('.plants')){
migrate("1 archivo a la vez!");
}
return;
}
r.upload();
});

r.on('uploadStart', function() {
document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
});

r.on('progress', function() {
var progress = r.progress() * 100;
document.getElementById('barra_estado').style.width = progress + '%';
document.getElementsByClassName("bluegold")[0].style.pointerEvents = "none";
var remainingSize = r.getSize() - r.progress() * r.getSize();
document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
});

r.on('fileSuccess', function(file, message) {
console.log('Archivo cargado correctamente', file, message);
document.getElementById("merum").style.display = "block";
document.getElementsByClassName("bluegold")[0].style.display = "none";
document.getElementById('barra_estado').style.backgroundColor = 'green';
});

r.on('fileError', function(file, message) {
console.log('Error al cargar el archivo', file, message);
document.getElementById('barra_estado').style.backgroundColor = 'red';
});
</script>

como hago para que este codigo busque solo los archivos .mp4??
Tu código actual debería aceptar solo archivos .mp4 debido a la línea accept="video/mp4" en tu etiqueta de entrada del archivo. Sin embargo, Resumable.js no respeta el atributo de aceptar de los elementos de entrada del archivo y tienes que implementar la restricción de tipo de archivo manualmente:

Insertar CODE, HTML o PHP:
r.on('fileAdded', function(file) {
    var fileType = file.fileType;
    if (fileType !== 'mp4') {
      alert('Por favor, selecciona solo archivos .mp4');
      r.removeFile(file);
      return;
    }
    //... Resto de tu código
});

Esta verificación asegurará que solo archivos .mp4 son procesados y un mensaje de alerta se mostrará si se intenta añadir un archivo que no es .mp4.
 
Tu código actual debería aceptar solo archivos .mp4 debido a la línea accept="video/mp4" en tu etiqueta de entrada del archivo. Sin embargo, Resumable.js no respeta el atributo de aceptar de los elementos de entrada del archivo y tienes que implementar la restricción de tipo de archivo manualmente:

Insertar CODE, HTML o PHP:
r.on('fileAdded', function(file) {
    var fileType = file.fileType;
    if (fileType !== 'mp4') {
      alert('Por favor, selecciona solo archivos .mp4');
      r.removeFile(file);
      return;
    }
    //... Resto de tu código
});

Esta verificación asegurará que solo archivos .mp4 son procesados y un mensaje de alerta se mostrará si se intenta añadir un archivo que no es .mp4.
podrias añadir el codigo complto porfa?
 
podrias añadir el codigo complto porfa?
Por supuesto, aquí está el código completo ajustado para permitir solo archivos .mp4.

HTML:
<form id="uploadForm" action="uploadpro.php" method="POST" enctype="multipart/form-data">
<input type="hidden" accept="video/mp4" required id="fileInput" name="file">
</form>
<div id="dropTarget">Arrastra y suelta los archivos aquí</div>
<button id="browseButton">Seleccionar archivos</button>
<div class="barra"><div class="barra_azul" id="barra_estado"><span></span></div></div>
<div id="mbRemaining">MB restantes: N/A</div>

<script>
    var r = new Resumable({
    target:'uploadpro.php',
    chunkSize:1*1024*1024,
    simultaneousUploads:4,
    testChunks:false,
    throttleProgressCallbacks:1,
    maxFileSize: 250*1024*1024, // Set maximum file size to 250MB
    });

    r.assignDrop(document.getElementById('dropTarget'));
    r.assignBrowse(document.getElementById('browseButton'));

    r.on('fileAdded', function(file) {
        var fileType = file.file.type;
        if (fileType.indexOf('mp4') === -1) {
          alert('Por favor, selecciona solo archivos .mp4');
          r.removeFile(file);
          return;
        }

        if(file.size > r.getOpt('maxFileSize')) {
            r.removeFile(file);
            if(!document.querySelector('.plants')){
            migrate("Tamaño maximo 250MB!");
            }
            return;
        } else if (r.files.length > 1) {
            r.removeFile(file);
            if(!document.querySelector('.plants')){
            migrate("1 archivo a la vez!");
            }
            return;
        }
        r.upload();
    });

    r.on('uploadStart', function() {
        document.getElementById('mbRemaining').textContent = 'MB restantes: calculando...';
    });

    r.on('progress', function() {
        var progress = r.progress() * 100;
        document.getElementById('barra_estado').style.width = progress + '%';
        document.getElementsByClassName("bluegold")[0].style.pointerEvents = "none";
        var remainingSize = r.getSize() - r.progress() * r.getSize();
        document.getElementById('mbRemaining').textContent = 'MB restantes: ' + (remainingSize / (1024 * 1024)).toFixed(2);
    });

    r.on('fileSuccess', function(file, message) {
        console.log('Archivo cargado correctamente', file, message);
        document.getElementById("merum").style.display = "block";
        document.getElementsByClassName("bluegold")[0].style.display = "none";
        document.getElementById('barra_estado').style.backgroundColor = 'green';
    });

    r.on('fileError', function(file, message) {
        console.log('Error al cargar el archivo', file, message);
        document.getElementById('barra_estado').style.backgroundColor = 'red';
    });
</script>

En la sección 'fileAdded', se consulta la propiedad file.type (que refleja el MIME type del archivo). Si el 'MIME type' no contiene 'mp4', significa que el archivo no es un .mp4, y muestra una alerta y luego remueve el archivo del cargador.
 
Atrás
Arriba