私はFirefoxのアドオンSDK拡張WebExtensionsに移植しています。以前はブラウザの検索エンジンにアクセスできましたが、今はできません。有用なユーザーが、すべてのエンジンがインストールされているsearch.json.mozlz4ファイルを読むように勧めました。しかし、このファイルはLZ4圧縮のjsonであり、Mozillaのown LZ4 formatにはカスタムのマジックナンバー「mozLz40 \ 0」があります。(JavaScriptのは、Firefox)WebExtensionsにLZ4圧縮されたテキストファイル(mozlz4を)読ん
、1はmozlz4ファイルを含め、LZ4圧縮を使用して、テキストファイルを読むためにこれを使用することができる前に:
let bytes = OS.File.read(path, { compression: "lz4" });
let content = new TextDecoder().decode(bytes);
は(私はそれが動作する、「圧縮」フィールドについてのドキュメントを見つけることができませんでしたが)
は今、WebExtensionsを使用して、私はファイルを読むために思い付くことができる最高のは、これはどのような方法で圧縮処理されません
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(ev) {
let content = ev.target.result;
};
です。 This libraryはLZ4 を処理しますが、node.js用ですので使用できません。 [編集:それもスタンドアロンで動作します]。
import lz4
file_obj = open("search.json.mozlz4", "rb")
if file_obj.read(8) != b"mozLz40\0":
raise InvalidHeader("Invalid magic number")
print(lz4.block.decompress(file_obj.read()))
がどのように私は、これはJSで行うことができます。このPythonコード、比較して、期待通りに動作しながら、しかし、私はカスタムのマジックナンバーの処理を削除した場合でも、私は、それがファイルを解凍するために得ることができませんか?
ありがたいことに、私が間違っていたとノードLZ4は、実際にラッパーを避けるために、 'require'を実装するだけでなく、スタンドアロンで動作します。しかし、それはカスタムlz4マジックナンバーを持つ特定のmozlz4フォーマットを処理しているようには見えません(データとそれぞれのチェックからマジックナンバーを取り除いても)。私はこのすべてで質問を更新しました。 – CanisLupus