日本語

ビデオと字幕 · 字幕ツールキット

デバイスを離れることなく字幕ファイルを編集する方法: Blob へのファイル API

· 仕組み

字幕 ブラウザ処理 プライバシー

ブラウザーのタブに入り、メモリ内で変換され、ダウンロードとして書き戻されるファイル ハンドル。サーバーへのパスはありません。
オリジナル ToolAcre ベクトル イラスト

ToolAcre のファイル ツールは、タブ内のファイルを読み書きします。この投稿では、ファイル ピッカーからダウンロード リンクまで、字幕ファイルのそれを可能にするブラウザ API と、何もアップロードされていないことを確認する方法について説明します。

トランスクリプトは機密であり、コンバーターはそれをアップロードするよう求めています - 問題はブラウザ側の処理で解決されます

証言録取書は、変換が機能するかどうかを確認するために Web サービスに渡すファイルではありません。ほとんどのオンライン コンバータはアップロード アンド リターン型です。バイトがサーバーに送信され、何かが起こって結果が返されます。機密資料の場合、これは開示であり、出力を確認した時点ではすでに開示が行われています。

ブラウザ側の処理により質問が削除されます。ファイルはページに送信されるのではなくページによって開かれ、すべての変換はメモリ内のコピーに対して実行され、結果は同じタブからディスクに書き戻されます。クレームはテスト可能ですが、ネットワーク パネルにはリクエストにコンテンツが含まれているかどうかが表示されるため、クレームよりも重要です。

ファイルの選択: File オブジェクト — ブラウザーがバイトをどこにも送信せずにページにバイトのハンドルを与える方法

ファイル入力でファイルを選択しても、何も転送されません。ページは、ハンドルである File オブジェクトを受け取ります。これは、ブラウザーが読み取ることができる名前、サイズ、タイプ、および参照です。ファイルの選択はアップロードではなく、そのハンドルを保持してもリクエストは発生しません。バイトは、コードが要求するまで、その場所に留まります。

この区別は、ローカル処理の基本全体であり、プライバシー プロパティがブラウザーではなくコードのプロパティである理由でもあります。 File オブジェクトを保持するページは、それをどこかに投稿することが完全に可能です。ツールをローカルにするのは、ローカルではないからです。

ローカルでテキストを読み取る — File.text() と TextDecoder がバイトをメモリ内のキューに変換する

テキストを読み取ると、File API テキスト メソッドが呼び出され、UTF-8 としてデコードされた文字列に解決されます。その文字列はメモリ内のキューに解析され、後続のすべての操作はそれらのキュー オブジェクトに対して行われます。シフトにより整数ミリ秒のタイムスタンプが追加され、テキスト上の置換が削除され、検証によりリストが順序と期間のエラーを探します。いずれも元のファイルには影響せず、書き込まれることはありません。

解析ではプレーン オブジェクトが生成されるため、編集中にタブを閉じても、ディスク上のファイルは変更されません。ダウンロードが要求された場合にのみ書き込みが行われるため、クリーンアップする一時コピーや部分的に書き込まれる出力はありません。

これが Web Worker ではなくメインスレッドで実行される理由と、サイズ上限が実際に何をするのか

ワークブックのアウトラインでは、このステージが Web Worker で実行されることを想定しており、いくつかの ToolAcre ツールでは実行されます。 CSV、イメージ、および PDF アプリはそれぞれ、重い作業をメインスレッドから移動します。字幕アプリは意図的にそうしません。その理由は独自のソースに記録されています。長編字幕ファイルは数百キロバイトで、ミリ秒で解析されるため、作業者は、それを必要としない作業に 2 つ目のバンドルと 2 つ目の失敗モードを追加します。

正直な注意点は、サイズの上限です。解析してツール ページに名前を付ける前に 10 メガバイトの制限が適用されますが、このツールでは、字幕拡張子が付いた名前のチェックはスキップされるため、サイズが大きすぎる字幕ファイルは拒否されるのではなく、読み込まれてページがブロックされることが文書に記載されています。これはメインスレッドでの実行の実際の結果であり、隠蔽されるのではなく文書化されます。

書き戻し: BLOB とダウンロード属性 — 編集されたファイルが新しいダウンロードとしてディスクに到達する方法

書き戻すと、シリアル化されたテキストから BLOB が構築され、ダウンロードとしてブラウザーに渡されます。テキストは UTF-8 文字セットを含む明示的なメディア タイプでラップされ、その BLOB のオブジェクト URL が作成され、ダウンロード属性を含むアンカーがクリックされて、アンカーが削除されます。ファイルは新しいファイルとしてダウンロード フォルダーに到着します。オリジナルは変更されていません。

取り消しは即時ではなく意図的に延期されます。クリック後にオブジェクト URL を同期的に取り消すと、一部のブラウザではダウンロードがキャンセルされる可能性があるため、1 つのマクロタスク後にスケジュールされるため、安全かつ迅速です。これは、ダウンロードが断続的に開始できない場合にのみ表示される種類の詳細です。

うまくいった例: 完全な変換とリタイム中にネットワーク パネルを監視する — ファイルを開いてからファイルを保存するまで静かなパネル

オブジェクト URL は、誰も見ていない場合に漏洩する部分です。この教訓はリポジトリ ヘルパーに書き込まれます。監査されたプロジェクトでは、いくつかの場所でオブジェクト URL が作成され、それらがちょうど 0 個で取り消されたため、タブの存続期間中、すべてのプレビューで BLOB 全体が保持されました。携帯電話では、ブラウザがタブを強制終了するには、ラスタライズされたページが数枚あれば十分です。

この救済策は規律的なものではなく、構造的なものです。ブラウザ API を直接呼び出すものはありません。スコープ付きヘルパーは、URL を使用してコードを実行し、コードが成功時、スロー時、拒否時に同様に解決したときにそのコードを取り消します。また、マネージド ハンドルは、単一関数よりも存続するケースに対して冪等の取り消しを提供します。正しいクリーンアップは、各呼び出しサイトが覚えておく必要があるものではなく、デフォルトです。

これでカバーされないこと — このツールは、後で他の場所にアップロードしたファイルを保護することはできません。ワークフローがタブを離れた時点でプライバシーは終了します

信頼するのではなく検証するには、ファイルを選択する前にネットワーク パネルを開き、ジョブ全体を通じて開いたままにしておきます。ファイルを選択し、変換し、時間を調整し、結果をダウンロードします。ページとそのスクリプトに対するリクエストは、ページが読み込まれるときに表示されます。ペイロードがファイルであるリクエストは表示すべきではありません。ステップ間で何も見逃さないように、セッション全体にわたってログを保存します。

2 つの正直な資格。ページには他のオリジンから分析スクリプトや広告スクリプトを読み込むことができますが、それらは同じパネルに表示され、ファイルが送信されたかどうかとは別の問題になります。そして、プロパティはタブで終わります。ローカルで処理するツールは、後で電子メールで送信したり、クラウド ストレージに同期したり、別のサービスに貼り付けたりするファイルを保護することはできません。ローカル処理では、自分のマシンへの影響が限定されます。その後はファイルに従いません。

要点: ファイル、タブ、ディスク — 字幕ツールキットがすべての作業をローカルで実行し、それを検証できるようにする方法

パスはファイル ハンドル、メモリ内テキスト、メモリ内キュー、Blob、ダウンロードであり、そのシーケンス内でサーバーを必要とするものはありません。ファイルはページに送信されるのではなく、ページによって読み取られ、オブジェクトとして変換され、元のファイルはそのままの状態で新しいファイルとして書き戻されます。

機密資料としてこれを選択する理由は、約束がなされたからではなく、申し立てが約 1 分で確認できるためです。まずネットワーク パネルを開き、ジョブ全体を実行して、ログを読み取ります。ローカルで処理するツールは、トランスクリプトを含むリクエストのないパネルを表示します。これは、どのプライバシー ポリシーよりも強力な保証です。