
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
youtube-dl-wrap
Advanced tools
A simple node.js wrapper for youtube-dl.
You can install youtube-dl-wrap via npm (npm i youtube-dl-wrap).
Youtube-dl itself will not be automatically downloaded.
Provide it yourself or use some of the following functions to download the binary.
const YoutubeDlWrap = require("youtube-dl-wrap");
//Get the data from the github releases API. In this case get page 1 with a maximum of 5 items.
let githubReleasesData = await YoutubeDlWrap.getGithubReleases(1, 5);
//Download the youtube-dl binary for the given version and platform to the provided path.
//By default the latest version will be downloaded to "./youtube-dl" and platform = os.platform().
await YoutubeDlWrap.downloadFromGithub("path/to/youtube-dl/binary", "2020.06.16.1", "win32");
//Same as above but always downloads the latest version from the youtube-dl website.
await YoutubeDlWrap.downloadFromWebsite("path/to/youtube-dl/binary", "win32");
//Init an instance with a given binary path.
//If none is provided "youtube-dl" will be used as command.
const youtubeDlWrap = new YoutubeDlWrap("path/to/youtube-dl/binary");
//The binary path can also be changed later on.
youtubeDlWrap.setBinaryPath("path/to/another/youtube-dl/binary");
Excecute youtube-dl and returns an EventEmitter.
The youtubeDlEvent event will expose all youtube-dl events, for example:
The log message [download] Destination: output.mp4 will emit the event type download and the event data Destination: output.mp4.
youtubeDlEmitter.youtubeDlProcess exposes the spawned youtube-dl process.
const YoutubeDlWrap = require("youtube-dl-wrap");
const youtubeDlWrap = new YoutubeDlWrap("path/to/youtube-dl/binary");
let youtubeDlEventEmitter = youtubeDlWrap.exec(["https://www.youtube.com/watch?v=aqz-KE-bpKQ",
"-f", "best", "-o", "output.mp4"])
.on("progress", (progress) =>
console.log(progress.percent, progress.totalSize, progress.currentSpeed, progress.eta))
.on("youtubeDlEvent", (eventType, eventData) => console.log(eventType, eventData));
.on("error", (error) => console.error(error))
.on("close", () => console.log("all done"));
console.log(youtubeDlEventEmitter.youtubeDlProcess.pid);
Excecute youtube-dl and returns an Readable Stream.
The interface works just like the EventEmitter.
let readableStream = youtubeDlWrap.execStream(["https://www.youtube.com/watch?v=aqz-KE-bpKQ",
"-f", "best[ext=mp4]"])
readableStream.pipe(fs.createWriteStream("test.mp4"));
Excecute youtube-dl and returns an Promise.
let stdout = await youtubeDlWrap.execPromise(["https://www.youtube.com/watch?v=aqz-KE-bpKQ",
"-f", "best", "-o", "output.mp4"]);
console.log(stdout);
Additionally you can set the options of the spawned process and abort the process.
The abortion of the spawned process is handled by passing the signal of an AbortController.
let controller = new AbortController();
let youtubeDlEventEmitter = youtubeDlWrap.exec(["https://www.youtube.com/watch?v=aqz-KE-bpKQ",
"-f", "best", "-o", "output.mp4"], {shell:true, detached:true}, controller.signal);
setTimeout(() =>
{
controller.abort();
console.log(youtubeDlEventEmitter.youtubeDlProcess.killed);
}, 500);
Returns the youtube-dl --dump-json metadata as an object.
let metadata = await youtubeDlWrap.getVideoInfo("https://www.youtube.com/watch?v=aqz-KE-bpKQ");
console.log(metadata.title);
Just a few utility functions to get informations.
let version = await youtubeDlWrap.getVersion();
let userAgent = await youtubeDlWrap.getUserAgent();
let help = await youtubeDlWrap.getHelp();
let extractors = await youtubeDlWrap.getExtractors();
let extractorDescriptions = await youtubeDlWrap.getExtractorDescriptions();
MIT
FAQs
A simple node.js wrapper for youtube-dl.
The npm package youtube-dl-wrap receives a total of 724 weekly downloads. As such, youtube-dl-wrap popularity was classified as not popular.
We found that youtube-dl-wrap demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.