クロムネイティブメッセージングを使用して、youtube-dl
と通信するための拡張機能を、node.jsホストスクリプトを使用して作成しようとしています。 &でも子プロセス(つまりtouch file.dat
)を実行できましたが、exec/spawnしようとすると、コマンドでハングします。youtube-dl
私はクロムネイティブの入力とは独立してホストスクリプトを試しました。私はこの問題は、クロムネイティブメッセージのバッファサイズに1MBの制限が関係していると考えています。バッファを読み込む方法はありますか?クロムネイティブメッセージング - 子プロセスを掛ける
#! /usr/bin/env node
"use strict";
const fs = require('fs');
const exec = require('child_process').execSync;
const dlPath = '/home/toughluck/Music';
let first = true;
let buffers = [];
process.stdin.on('readable',() => {
let chunk = process.stdin.read();
if (chunk !== null) {
if (first) {
chunk = chunk.slice(4);
first = false;
}
buffers.push(chunk);
}
});
process.stdin.on('end',() => {
const res = Buffer.concat(buffers);
const url = JSON.parse(res).url;
const outTemplate = `${dlPath}/%(title)s.%(ext)s`;
const cmdOptions = {
shell: '/bin/bash'
};
const cmd = `youtube-dl --extract-audio --audio-format mp3 -o \"${outTemplate}\" ${url}`;
// const args = ['--extract-audio', '--audio-format', 'mp3', '-o', outTemplate, url];
// const cmd2 = 'youtube-dl';
process.stderr.write('Suck it chrome');
process.stderr.write('stderr doesnt stop host');
exec(cmd, cmdOptions, (err, stdout, stderr) => {
if (err) throw err;
process.stderr.write(stdout);
process.stderr.write(stderr);
});
process.stderr.write('\n Okay....');
});
フルコードベースは、だから私は、問題を引き起こしていたかについて正しかったhttps://github.com/wrleskovec/chrome-youtube-mp3-dl