Video e sottotitoli · Toolkit sottotitoli
Come viene modificato un file di sottotitoli senza lasciare il dispositivo: file API in BLOB
· Come funziona
sottotitoli elaborazione del browser privacy
Gli strumenti file di ToolAcre leggono e scrivono file all'interno della scheda. Questo post spiega le API del browser che lo rendono possibile per un file di sottotitoli, dal selettore file al collegamento per il download, e come verificare che non sia stato caricato nulla.
La trascrizione è confidenziale e il convertitore vuole che tu la carichi: il problema dell'elaborazione lato browser viene risolto
Una trascrizione della deposizione non è un file che consegni a un servizio web per scoprire se la conversione funziona. La maggior parte dei convertitori online sono di tipo upload-and-return: i byte vanno a un server, succede qualcosa e ritorna un risultato. Per materiale riservato si tratta di una divulgazione ed è già avvenuta nel momento in cui vedi l'output.
L'elaborazione lato browser rimuove la domanda. Il file viene aperto dalla pagina anziché inviato ad essa, ogni trasformazione viene eseguita su una copia in memoria e il risultato viene riscritto sul disco dalla stessa scheda. L'affermazione è verificabile, il che conta più dell'affermazione, perché il pannello di rete mostrerà se qualche richiesta conteneva i contenuti.
Selezione di un file: l'oggetto File: il modo in cui il browser fornisce alla pagina un handle di byte senza inviarli da nessuna parte
La scelta di un file tramite un input di file non trasferisce nulla. La pagina riceve un oggetto File, che è un handle: un nome, una dimensione, un tipo e un riferimento da cui il browser può leggere. La selezione di un file non è un caricamento e nulla nel mantenere quell'handle provoca una richiesta. I byte rimangono dove sono finché il codice non li richiede.
Questa distinzione è alla base dell'elaborazione locale ed è anche il motivo per cui la proprietà privacy è una proprietà del codice anziché del browser. Una pagina che contiene un oggetto File è perfettamente in grado di pubblicarlo da qualche parte. Ciò che rende locale uno strumento è il fatto che non lo sia.
Lettura del testo localmente: File.text() e TextDecoder trasformano i byte in segnali in memoria
La lettura del testo chiama il metodo di testo File API, che si risolve in una stringa decodificata come UTF-8. Quella stringa viene analizzata in segnali in memoria e ogni operazione successiva funziona su quegli oggetti segnale: lo spostamento aggiunge a timestamp interi di millisecondi, pulisce i sostituti sul testo, la convalida percorre l'elenco alla ricerca di errori di ordinamento e durata. Nessuno di questi tocca il file originale, sul quale non viene mai scritto.
Poiché l'analisi produce oggetti semplici, il file su disco non viene toccato anche se la scheda viene chiusa durante la modifica. Non esiste una copia temporanea da pulire e nessun output parzialmente scritto, poiché la scrittura avviene solo quando viene richiesto un download.
Perché questo viene eseguito sul thread principale anziché in un Web Worker e cosa fa effettivamente il limite massimo delle dimensioni
La struttura della cartella di lavoro prevede che questa fase venga eseguita in un Web Worker e per diversi strumenti ToolAcre lo fa; le app CSV, image e PDF spostano ciascuna il proprio lavoro pesante fuori dal thread principale. L'app per i sottotitoli deliberatamente non lo fa, e il motivo è registrato nella sua stessa fonte: un lavoratore aggiungerebbe un secondo pacchetto e una seconda modalità di errore per un lavoro che non ne ha bisogno, perché un file di sottotitoli lungo un tratto è di poche centinaia di kilobyte e viene analizzato in millisecondi.
L'onesto avvertimento è la dimensione massima. Viene applicato un limite di dieci megabyte prima dell'analisi e del nome nella pagina dello strumento, ma lo strumento documenta che il controllo viene saltato per qualsiasi cosa denominata con un'estensione di sottotitoli, quindi un file di sottotitoli di grandi dimensioni carica e blocca la pagina anziché essere rifiutato. Questa è una conseguenza reale dell'esecuzione sul thread principale ed è documentata anziché nascosta.
Rispondiamo: BLOB e attributo di download: in che modo il file modificato raggiunge il disco come nuovo download
La riscrittura crea un BLOB dal testo serializzato e lo passa al browser come download. Il testo viene racchiuso in un tipo di supporto esplicito che trasporta un set di caratteri UTF-8, viene creato un oggetto URL per quel BLOB, viene fatto clic su un'ancora che trasporta l'attributo download e l'ancora viene rimossa. Il file arriva nella cartella download come nuovo file; l'originale non viene modificato.
La revoca è deliberatamente differita anziché immediata. La revoca dell'oggetto URL in modo sincrono dopo il clic può annullare il download in alcuni browser, quindi viene pianificato un macrotask successivo, il che è sicuro e rapido. Questo è il tipo di dettaglio che viene visualizzato solo quando i download non si avviano in modo intermittente.
Esempio pratico: osservare il pannello di rete durante una conversione e retime completa: un pannello silenzioso dall'apertura del file al salvataggio del file
Gli URL degli oggetti sono la parte che perde se nessuno guarda. La lezione è scritta nell'helper del repository: un progetto controllato ha creato URL di oggetti in diversi punti e li ha revocati esattamente in zero, quindi ogni anteprima ha mantenuto l'intero blob per tutta la durata della scheda. Su un telefono, una manciata di pagine rasterizzate è sufficiente affinché il browser uccida la scheda.
Il rimedio è strutturale piuttosto che disciplinare. Niente chiama direttamente il browser API; un helper con ambito esegue il codice con un URL e lo revoca quando il codice si risolve, in caso di successo, lancio e rifiuto allo stesso modo, e un handle gestito offre una revoca idempotente per i casi che sopravvivono a una singola funzione. La pulizia corretta è l'impostazione predefinita e non qualcosa che ogni sito di chiamata deve ricordare.
Cosa non copre: lo strumento non può proteggere un file che carichi successivamente altrove; la privacy termina nel punto in cui il flusso di lavoro lascia la scheda
Per verificare anziché fidarsi, aprire il pannello di rete prima di selezionare il file e lasciarlo aperto durante l'intero lavoro. Scegli il file, convertilo, riprogrammalo, scarica il risultato. Le richieste per la pagina e i relativi script vengono visualizzate quando la pagina viene caricata; ciò che non dovrebbe apparire è qualsiasi richiesta il cui payload è il file. Conserva il registro per l'intera sessione in modo che non venga perso nulla tra i passaggi.
Due qualifiche oneste. Una pagina può caricare analisi o script pubblicitari da altre origini e questi sono visibili nello stesso pannello e rappresentano una domanda separata dall'invio o meno del file. E la proprietà termina con la scheda: uno strumento che elabora localmente non può proteggere un file che successivamente invii via email, sincronizzi nell'archivio cloud o incolli in un altro servizio. L'elaborazione locale restringe l'esposizione alla propria macchina; non segue il file in seguito.
Conclusione: il tuo file, la tua scheda, il tuo disco: come Subtitle Toolkit svolge l'intero lavoro localmente e ti consente di verificarlo
Il percorso è handle di file, testo in memoria, segnali in memoria, BLOB, download e nulla in quella sequenza richiede un server. Il file viene letto dalla pagina anziché inviato ad essa, trasformato come oggetto e riscritto come un nuovo file, con l'originale intatto.
Il motivo per preferirlo per materiale confidenziale non è che sia stata fatta una promessa ma che la richiesta sia verificabile in circa un minuto. Apri prima il pannello di rete, fai l'intero lavoro e leggi il registro. Uno strumento che elabora localmente ti mostrerà un pannello senza alcuna richiesta contenente la tua trascrizione, il che rappresenta una garanzia più forte di qualsiasi politica sulla privacy.