Español

Vídeo y subtítulos · Kit de herramientas de subtítulos

Cómo se edita un archivo de subtítulos sin salir de su dispositivo: File API to Blob

· Cómo funciona

subtítulos procesamiento del navegador privacidad

Un identificador de archivo que ingresa a una pestaña del navegador, se transforma en la memoria y se vuelve a escribir como una descarga, sin ruta a un servidor
Ilustración de vector original de ToolAcre

Las herramientas de archivos de ToolAcre leen y escriben archivos dentro de la pestaña. Esta publicación explica las API del navegador que lo hacen posible para un archivo de subtítulos, desde el selector de archivos hasta el enlace de descarga, y cómo confirmar que no se cargó nada.

La transcripción es confidencial y el convertidor quiere que la cargues; el problema se resuelve con el procesamiento del lado del navegador.

Una transcripción de una declaración no es un archivo que usted entrega a un servicio web para averiguar si la conversión funciona. La mayoría de los convertidores en línea son de carga y devolución: los bytes van a un servidor, sucede algo y se obtiene un resultado. Para material confidencial, eso es una divulgación y ya ha sucedido en el momento en que ve el resultado.

El procesamiento del lado del navegador elimina la pregunta. La página abre el archivo en lugar de enviarlo, cada transformación se ejecuta en una copia en la memoria y el resultado se vuelve a escribir en el disco desde la misma pestaña. El reclamo es comprobable, lo que importa más que el reclamo, porque el panel de la red mostrará si alguna solicitud llevó el contenido.

Seleccionar un archivo: el objeto Archivo: cómo el navegador le da a la página un identificador de bytes sin enviarlos a ninguna parte

Elegir un archivo a través de una entrada de archivo no transfiere nada. La página recibe un objeto Archivo, que es un identificador: un nombre, un tamaño, un tipo y una referencia que el navegador puede leer. Seleccionar un archivo no es cargarlo y nada relacionado con mantener ese identificador genera una solicitud. Los bytes permanecen donde están hasta que el código los solicita.

Esta distinción es la base completa del procesamiento local y también es la razón por la que la propiedad de privacidad es una propiedad del código y no del navegador. Una página que contiene un objeto Archivo es perfectamente capaz de publicarlo en algún lugar. Lo que hace que una herramienta sea local es que no lo es.

Lectura de texto localmente: File.text() y TextDecoder convierten bytes en señales en la memoria

La lectura del texto llama al método de texto File API, que se resuelve en una cadena decodificada como UTF-8. Esa cadena se analiza en señales en la memoria, y cada operación posterior funciona en esos objetos de señal: el desplazamiento agrega marcas de tiempo enteras de milisegundos, limpia sustitutos sobre el texto, la validación recorre la lista en busca de fallas de orden y duración. Nada de esto toca el archivo original, en el que nunca se escribe.

Debido a que el análisis produce objetos simples, el archivo en el disco no se modifica incluso si la pestaña se cierra a mitad de la edición. No hay ninguna copia temporal que limpiar ni salida parcialmente escrita, ya que la escritura sólo ocurre cuando se solicita una descarga.

Por qué esto se ejecuta en el hilo principal en lugar de en un Web Worker y qué hace realmente el límite de tamaño

El esquema del libro de trabajo espera que esta etapa se ejecute en un Web Worker, y para varias herramientas de ToolAcre así lo hace; las aplicaciones CSV, imagen y PDF mueven su trabajo pesado fuera del hilo principal. La aplicación de subtítulos deliberadamente no lo hace, y el motivo está registrado en su propia fuente: un trabajador agregaría un segundo paquete y un segundo modo de falla para un trabajo que no lo necesita, porque un archivo de subtítulos de largometraje tiene unos cientos de kilobytes y se analiza en milisegundos.

La advertencia honesta es el límite de tamaño. Se aplica un límite de diez megabytes antes de analizar y nombrar en la página de la herramienta, pero la herramienta documenta que se omite la verificación de cualquier cosa cuyo nombre tenga una extensión de subtítulo, por lo que un archivo de subtítulos de gran tamaño se carga y bloquea la página en lugar de ser rechazado. Esta es una consecuencia real de ejecutar el hilo principal y está documentada en lugar de oculta.

Respuesta a escritura: Blob y el atributo de descarga: cómo el archivo editado llega a su disco como una nueva descarga

La reescritura crea un Blob a partir del texto serializado y lo entrega al navegador como descarga. El texto se ajusta con un tipo de medio explícito que lleva un conjunto de caracteres UTF-8, se crea una URL de objeto para ese Blob, se hace clic en un ancla que lleva el atributo de descarga y se elimina el ancla. El archivo llega a la carpeta de descargas como un archivo nuevo; el original no se modifica.

La revocación se difiere deliberadamente en lugar de ser inmediata. Revocar la URL del objeto sincrónicamente después del clic puede cancelar la descarga en algunos navegadores, por lo que se programa una macrotarea más tarde, lo cual es seguro y rápido. Este es el tipo de detalle que sólo aparece cuando las descargas no se inician de forma intermitente.

Ejemplo resuelto: observar el panel de red durante una conversión y reprogramación completa: un panel silencioso desde la apertura del archivo hasta el guardado del archivo

Las URL de objetos son la parte que se filtra si nadie está mirando. La lección está escrita en el asistente del repositorio: un proyecto auditado creó URL de objetos en varios lugares y las revocó exactamente en cero, por lo que cada vista previa mantuvo su blob completo durante la vida útil de la pestaña. En un teléfono, un puñado de páginas rasterizadas son suficientes para que el navegador elimine la pestaña.

El remedio es estructural más que disciplinario. Nada llama directamente a la API del navegador; un asistente con alcance ejecuta su código con una URL y lo revoca cuando ese código se establece, tanto en caso de éxito como de lanzamiento y rechazo, y un identificador administrado ofrece una revocación idempotente para los casos que sobreviven a una sola función. La limpieza correcta es la opción predeterminada y no algo que cada sitio de llamada deba recordar.

Lo que esto no cubre: la herramienta no puede proteger un archivo que luego carga en otro lugar; la privacidad termina donde su flujo de trabajo deja la pestaña

Para verificar en lugar de confiar, abra el panel de red antes de seleccionar el archivo y déjelo abierto durante todo el trabajo. Elija el archivo, conviértalo, vuelva a programarlo, descargue el resultado. Las solicitudes de la página y sus scripts aparecen cuando se carga la página; lo que no debería aparecer es ninguna solicitud cuya carga útil sea el archivo. Conserve el registro durante toda la sesión para que no se pierda nada entre los pasos.

Dos calificaciones honestas. Una página puede cargar scripts de análisis o publicidad de otros orígenes, y esos son visibles en el mismo panel y son una pregunta separada de si su archivo fue enviado. Y la propiedad termina en la pestaña: una herramienta que procesa localmente no puede proteger un archivo que posteriormente envía por correo electrónico, sincroniza con el almacenamiento en la nube o lo pega en otro servicio. El procesamiento local reduce la exposición a su propia máquina; no sigue el archivo después.

Conclusión: su archivo, su pestaña, su disco: cómo Subtitle Toolkit hace todo el trabajo localmente y le permite verificarlo

La ruta es identificador de archivo, texto en memoria, señales en memoria, Blob, descarga y nada en esa secuencia requiere un servidor. El archivo es leído por la página en lugar de enviarse a ella, se transforma como objetos y se vuelve a escribir como un archivo nuevo, sin modificar el original.

La razón para preferir esto para material confidencial no es que se haya hecho una promesa sino que el reclamo se puede verificar en aproximadamente un minuto. Primero abra el panel de red, haga todo el trabajo y lea el registro. Una herramienta que procesa localmente le mostrará un panel sin solicitud que contenga su transcripción, lo cual es una garantía más sólida que cualquier política de privacidad.