Русский

Видео и субтитры · Инструментарий субтитров

Как редактировать файл субтитров, не покидая устройства: файл API в Blob

· Как это работает

субтитры обработка браузера конфиденциальность

Дескриптор файла, попадающий на вкладку браузера, преобразуемый в памяти и записываемый обратно как загрузка, без пути к серверу.
Оригинальная векторная иллюстрация ToolAcre

Файловые инструменты ToolAcre читают и записывают файлы внутри вкладки. В этом посте объясняются API-интерфейсы браузера, которые делают это возможным для файла субтитров, от средства выбора файла до ссылки для загрузки, а также способы подтверждения того, что ничего не было загружено.

Расшифровка является конфиденциальной, и конвертер хочет, чтобы вы ее загрузили — проблема решается обработкой на стороне браузера.

Транскрипт дачи показаний — это не файл, который вы передаете веб-сервису, чтобы узнать, работает ли преобразование. Большинство онлайн-конвертеров работают по принципу загрузки и возврата: байты отправляются на сервер, что-то происходит, и результат возвращается. Для конфиденциального материала это раскрытие, и оно уже произошло к тому времени, когда вы видите результат.

Обработка на стороне браузера снимает вопрос. Файл открывается страницей, а не отправляется на нее, каждое преобразование выполняется с копией в памяти, а результат записывается обратно на диск с той же вкладки. Утверждение можно проверить, что имеет большее значение, чем утверждение, поскольку сетевая панель покажет, передал ли какой-либо запрос содержимое.

Выбор файла: объект File — как браузер дает странице дескриптор байтов, не отправляя их никуда

Выбор файла через файловый ввод ничего не передает. Страница получает объект File, который представляет собой дескриптор: имя, размер, тип и ссылку, которую браузер может прочитать. Выбор файла не является загрузкой, и удержание этого дескриптора не вызывает запроса. Байты остаются там, где они есть, пока код не запросит их.

Это различие составляет всю основу локальной обработки, а также то, почему свойство конфиденциальности является свойством кода, а не браузера. Страница, содержащая объект File, вполне способна разместить его где-нибудь. Что делает инструмент локальным, так это то, что он этого не делает.

Локальное чтение текста — File.text() и TextDecoder, превращающие байты в сигналы в памяти

Чтение текста вызывает текстовый метод File API, который преобразуется в строку, декодированную как UTF-8. Эта строка анализируется на сигналы в памяти, и каждая последующая операция работает с этими объектами сигналов: сдвиг добавляет к целочисленным миллисекундным меткам времени, очищает текст от заменителей, проверка проходит по списку в поисках ошибок порядка и продолжительности. Ничто из этого не затрагивает исходный файл, в который никогда не производится запись.

Поскольку в результате анализа создаются простые объекты, файл на диске остается нетронутым, даже если вкладка закрыта во время редактирования. Нет временной копии для очистки и частично записанного вывода, поскольку запись происходит только тогда, когда запрашивается загрузка.

Почему это выполняется в основном потоке, а не в веб-воркере, и что на самом деле делает потолок размера

Структура рабочей книги предполагает, что этот этап будет выполняться в Web Worker, и для нескольких инструментов ToolAcre это так и происходит; приложения CSV, image и PDF переносят свою тяжелую работу из основного потока. Приложение субтитров намеренно этого не делает, и причина записана в его собственном источнике: рабочий добавил бы второй пакет и второй режим отказа для работы, которая в этом не нуждается, потому что полнометражный файл титров имеет размер в несколько сотен килобайт и анализируется за миллисекунды.

Честное предостережение — размер потолка. Ограничение в десять мегабайт применяется перед синтаксическим анализом и именем на странице инструмента, но инструмент документирует, что проверка пропускается для всего, что имеет имя с расширением субтитров, поэтому файл субтитров слишком большого размера загружается и блокирует страницу, а не отклоняется. Это реальное последствие работы в основном потоке, и оно документируется, а не скрывается.

Ответ: Blob и атрибут загрузки — как отредактированный файл попадает на ваш диск в виде новой загрузки.

При обратной записи создается Blob из сериализованного текста и передается браузеру для загрузки. Текст оборачивается явным типом носителя, содержащим кодировку UTF-8, для этого Blob создается объект URL, щелкается привязка, несущая атрибут загрузки, и привязка удаляется. Файл попадает в папку загрузок как новый файл; оригинал не изменен.

Отзыв намеренно отложен, а не немедленен. Отзыв объекта URL синхронно после щелчка может отменить загрузку в некоторых браузерах, поэтому она запланирована на одну макрозадачу позже, что безопасно и быстро. Такая информация появляется только тогда, когда загрузка периодически не запускается.

Рабочий пример: наблюдение за сетевой панелью во время полного преобразования и повторного преобразования времени — тихая панель от открытия файла до сохранения файла.

URL-адреса объектов — это та часть, которая утекает, если никто не смотрит. Урок записан в помощнике репозитория: проверенный проект создал URL-адреса объектов в нескольких местах и ​​отозвал их ровно в нуле, поэтому каждый предварительный просмотр сохранял весь свой большой двоичный объект на протяжении всего времени существования вкладки. На телефоне нескольких растрированных страниц достаточно, чтобы браузер закрыл вкладку.

Средство правовой защиты является структурным, а не дисциплинарным. Ничто не вызывает браузер API напрямую; помощник с ограниченной областью запускает ваш код с помощью URL и отзывает его, когда этот код стабилизируется, в случае успеха, при выдаче и при отклонении, а управляемый дескриптор предлагает идемпотентный отзыв для случаев, которые переживают одну функцию. Правильная очистка — это настройка по умолчанию, а не то, что должен помнить каждый сайт вызова.

На что это не распространяется: инструмент не может защитить файл, который вы позже загрузите в другое место; конфиденциальность заканчивается там, где ваш рабочий процесс выходит за пределы вкладки

Чтобы проверить, а не доверять, откройте сетевую панель перед выбором файла и оставляйте ее открытой на протяжении всего задания. Выберите файл, конвертируйте его, измените время и загрузите результат. Запросы к странице и ее скриптам появляются при загрузке страницы; что не должно появляться, так это запросы, полезной нагрузкой которых является файл. Сохраняйте журнал на протяжении всего сеанса, чтобы ничего не было пропущено между шагами.

Две честные квалификации. Страница может загружать аналитические или рекламные скрипты из других источников, и они видны в той же панели и являются отдельным вопросом от того, был ли отправлен ваш файл. И это свойство заканчивается на вкладке: инструмент, который обрабатывает локально, не может защитить файл, который вы впоследствии отправляете по электронной почте, синхронизируете с облачным хранилищем или вставляете в другую службу. Локальная обработка сужает доступ к вашей собственной машине; впоследствии он не следует за файлом.

Вывод: ваш файл, ваша вкладка, ваш диск — как Subtitle Toolkit выполняет всю работу локально и позволяет вам ее проверить.

Путь — это дескриптор файла, текст в памяти, сигналы в памяти, Blob, загрузка, и ничто в этой последовательности не требует сервера. Файл читается страницей, а не отправляется на нее, преобразуется как объект и записывается обратно как новый файл с неизмененным исходным текстом.

Причина, по которой предпочтение отдается конфиденциальным материалам, заключается не в том, что было дано обещание, а в том, что заявление можно проверить примерно за минуту. Сначала откройте сетевую панель, выполните всю работу и прочитайте журнал. Инструмент, который обрабатывает локально, покажет вам панель без запроса с вашей стенограммой, что является более сильной гарантией, чем любая политика конфиденциальности.