Português (Brasil)

Vídeo e legendas · Kit de ferramentas de legendas

Como um arquivo de legenda é editado sem sair do seu dispositivo: Arquivo API para Blob

· Como funciona

legendas processamento do navegador privacidade

Um identificador de arquivo que entra em uma guia do navegador, transformado na memória e gravado novamente como um download, sem caminho para um servidor
Ilustração vetorial original ToolAcre

As ferramentas de arquivo de ToolAcre leem e gravam arquivos dentro da guia. Esta postagem explica as APIs do navegador que tornam isso possível para um arquivo de legenda, desde o seletor de arquivos até o link de download, e como confirmar se nada foi carregado.

A transcrição é confidencial e o conversor deseja que você a carregue – o problema que o processamento no navegador resolve

Uma transcrição de depoimento não é um arquivo que você entrega a um serviço da web para descobrir se a conversão funciona. A maioria dos conversores online são de upload e retorno: os bytes vão para um servidor, algo acontece e um resultado volta. Para material confidencial isso é uma divulgação e já aconteceu no momento em que você vê o resultado.

O processamento do lado do navegador elimina a questão. O arquivo é aberto pela página em vez de enviado para ela, cada transformação é executada em uma cópia na memória e o resultado é gravado de volta no disco a partir da mesma guia. A reclamação é testável, o que importa mais do que a reclamação, pois o painel da rede mostrará se alguma solicitação transportou o conteúdo.

Selecionando um arquivo: o objeto Arquivo — como o navegador atribui à página um identificador de bytes sem enviá-los a lugar nenhum

Escolher um arquivo através de uma entrada de arquivo não transfere nada. A página recebe um objeto File, que é um identificador: um nome, um tamanho, um tipo e uma referência que o navegador pode ler. Selecionar um arquivo não é um upload e nada sobre manter esse identificador causa uma solicitação. Os bytes permanecem onde estão até que o código os solicite.

Essa distinção é toda a base do processamento local e é também o motivo pelo qual a propriedade de privacidade é uma propriedade do código e não do navegador. Uma página contendo um objeto File é perfeitamente capaz de publicá-lo em algum lugar. O que torna uma ferramenta local é que isso não acontece.

Lendo texto localmente — File.text() e TextDecoder transformando bytes em dicas na memória

A leitura do texto chama o método de texto Arquivo API, que resulta em uma string decodificada como UTF-8. Essa string é analisada em sugestões na memória, e cada operação subsequente funciona nesses objetos de sinalização: mudança de acréscimos a carimbos de data e hora inteiros em milissegundos, limpeza de substitutos no texto, validação percorre a lista em busca de falhas de ordem e duração. Nada disso afeta o arquivo original, no qual nunca é gravado.

Como a análise produz objetos simples, o arquivo no disco permanece intacto mesmo se a guia for fechada no meio da edição. Não há cópia temporária para limpar nem saída parcialmente gravada, pois a gravação só acontece quando um download é solicitado.

Por que isso é executado no thread principal e não em um Web Worker, e o que o tamanho máximo realmente faz

O esboço da pasta de trabalho espera que esse estágio seja executado em um Web Worker, e isso acontece para diversas ferramentas ToolAcre; os aplicativos CSV, image e PDF transferem seu trabalho pesado para fora do thread principal. O aplicativo de legenda deliberadamente não o faz, e o motivo está registrado em sua própria fonte: um trabalhador adicionaria um segundo pacote e um segundo modo de falha para o trabalho que não precisa dele, porque um arquivo de legenda com comprimento de recurso tem algumas centenas de kilobytes e é analisado em milissegundos.

A ressalva honesta é o tamanho do teto. Um limite de dez megabytes é aplicado antes da análise e nomeado na página da ferramenta, mas a ferramenta documenta que a verificação é ignorada para qualquer coisa nomeada com uma extensão de legenda, portanto, um arquivo de legenda superdimensionado carrega e bloqueia a página em vez de ser recusado. Essa é uma consequência real da execução no thread principal e está documentada e não oculta.

Escrevendo de volta: Blob e o atributo de download — como o arquivo editado chega ao seu disco como um novo download

A escrita de volta cria um Blob a partir do texto serializado e o entrega ao navegador como um download. O texto é encapsulado com um tipo de mídia explícito contendo um conjunto de caracteres UTF-8, um objeto URL é criado para esse Blob, uma âncora contendo o atributo de download é clicada e a âncora é removida. O arquivo chega na pasta de downloads como um novo arquivo; o original não é modificado.

A revogação é deliberadamente adiada em vez de imediata. Revogar o objeto URL de forma síncrona após o clique pode cancelar o download em alguns navegadores, por isso é agendado uma macrotarefa depois, o que é seguro e rápido. Esse é o tipo de detalhe que só aparece quando os downloads falham ao iniciar de forma intermitente.

Exemplo resolvido: observar o painel de rede durante uma conversão e retime completa - um painel silencioso desde a abertura do arquivo até o salvamento do arquivo

URLs de objetos são a parte que vaza se ninguém estiver observando. A lição está escrita no auxiliar do repositório: um projeto auditado criou URLs de objetos em vários lugares e os revogou exatamente em zero, de modo que cada visualização mantivesse seu blob inteiro durante a vida útil da guia. Em um telefone, um punhado de páginas rasterizadas é suficiente para o navegador encerrar a guia.

A solução é estrutural e não disciplinar. Nada chama o navegador API diretamente; um auxiliar com escopo executado executa seu código com um URL e o revoga quando o código é resolvido, em caso de sucesso, lançamento e rejeição, e um identificador gerenciado oferece uma revogação idempotente para os casos que sobrevivem a uma única função. A limpeza correta é o padrão, e não algo que cada site de chamada precisa lembrar.

O que isso não cobre – a ferramenta não pode proteger um arquivo que você carrega posteriormente em outro lugar; a privacidade termina onde seu fluxo de trabalho sai da guia

Para verificar em vez de confiar, abra o painel de rede antes de selecionar o arquivo e deixe-o aberto durante todo o trabalho. Escolha o arquivo, converta-o, programe-o novamente e baixe o resultado. As solicitações da página e seus scripts aparecem quando a página é carregada; o que não deve aparecer é qualquer requisição cujo payload seja o arquivo. Preserve o log durante toda a sessão para que nada seja perdido entre as etapas.

Duas qualificações honestas. Uma página pode carregar scripts analíticos ou de publicidade de outras origens, e eles ficam visíveis no mesmo painel e são uma questão separada de saber se o seu arquivo foi enviado. E a propriedade termina na guia: uma ferramenta que processa localmente não pode proteger um arquivo que você envia por e-mail posteriormente, sincroniza com armazenamento em nuvem ou cola em outro serviço. O processamento local restringe a exposição à sua própria máquina; ele não segue o arquivo posteriormente.

Conclusão: seu arquivo, sua guia, seu disco – como o Subtitle Toolkit faz todo o trabalho localmente e permite verificá-lo

O caminho é identificador de arquivo, texto na memória, dicas na memória, Blob, download e nada nessa sequência requer um servidor. O arquivo é lido pela página em vez de enviado a ela, transformado em objetos e gravado de volta como um novo arquivo, com o original intacto.

A razão para preferir isto para material confidencial não é porque uma promessa foi feita, mas porque a reivindicação pode ser verificada em cerca de um minuto. Abra primeiro o painel de rede, faça todo o trabalho e leia o log. Uma ferramenta que processa localmente mostrará um painel sem solicitação contendo sua transcrição, o que é uma garantia mais forte do que qualquer política de privacidade.