yt-dlx
Version:
Effortless Audio-Video Downloader And Streamer!
47 lines (45 loc) • 1.5 kB
JavaScript
const fs = require("fs");
const path = require("path");
const axios = require("axios");
(async () => {
try {
const platform = process.platform;
let fileExtension = "";
switch (platform) {
case "win32":
fileExtension = ".exe";
break;
case "darwin":
fileExtension = "_macos";
break;
case "linux":
fileExtension = "_linux";
break;
default:
throw new Error("Unsupported platform");
}
const filepath = path.join(__dirname, `cprobe${fileExtension}`);
if (!fs.existsSync(filepath)) {
const url = `https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/latest/download/yt-dlp${fileExtension}`;
let downloadedSize = 0;
const response = await axios.get(url, { responseType: "stream" });
if (response.status !== 200) {
throw new Error(`Error: ${response.statusText}`);
}
const totalSize = parseInt(response.headers["content-length"], 10);
const writer = fs.createWriteStream(filepath);
response.data.on("data", chunk => {
downloadedSize += chunk.length;
const progress = Math.round((downloadedSize / totalSize) * 100);
process.stdout.write(`@cprobe: ${progress}%\r`);
});
response.data.pipe(writer);
await new Promise((resolve, reject) => {
writer.on("finish", resolve);
writer.on("error", reject);
});
}
} catch (error) {
console.error("@error:", error.message);
}
})();