34 lines
950 B
JavaScript
34 lines
950 B
JavaScript
import { get_video } from "./video.js";
|
|
import { spawn } from "child_process";
|
|
import os from "os";
|
|
|
|
const so = os.platform();
|
|
|
|
export async function get_audio(url, id) {
|
|
const video = await get_video(url, id);
|
|
const output = `downloads/${id}.mp3`;
|
|
|
|
const cmd = so === "win32" ? ".\\bin\\ffmpeg.exe" : "./bin/ffmpeg";
|
|
const args = ["-i", video, "-vn", "-acodec", "libmp3lame", "-q:a", "2", output];
|
|
|
|
await runCmd(cmd, args);
|
|
return output;
|
|
}
|
|
|
|
async function runCmd(cmd, args) {
|
|
return new Promise((resolve, reject) => {
|
|
const proc = spawn(cmd, args);
|
|
|
|
proc.stdout.on("data", data => console.log("[cmd]", data.toString()));
|
|
proc.stderr.on("data", data => console.error("[cmd ERR]", data.toString()));
|
|
|
|
proc.on("close", code => {
|
|
if (code !== 0) {
|
|
return reject(new Error(
|
|
"Não foi possível converter o áudio. Tente novamente com outro link."
|
|
));
|
|
}
|
|
resolve();
|
|
});
|
|
});
|
|
} |