
Security News
npm Adopts OIDC for Trusted Publishing in CI/CD Workflows
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
youtube-dl-exec
Advanced tools
A simple Node.js wrapper for yt-dlp.
yt-dlp
version available.Note: It requires Python 3.7 or above available in your system as
python3
. Otherwise, the library will throw an error.
$ npm install youtube-dl-exec --save
By default, the library will auto-install the latest yt-dlp
available that will downloaded on build time.
Any yt-dlp
flags is supported:
const youtubedl = require('youtube-dl-exec')
youtubedl('https://www.youtube.com/watch?v=6xKWiCMKKJg', {
dumpSingleJson: true,
noCheckCertificates: true,
noWarnings: true,
preferFreeFormats: true,
addHeader: ['referer:youtube.com', 'user-agent:googlebot']
}).then(output => console.log(output))
It's equivalent to:
$ ./bin/yt-dlp \
--dump-single-json \
--no-check-certificates \
--no-warnings \
--prefer-free-formats \
--add-header='user-agent:googlebot' \
--add-header='referer:youtube.com' \
'https://www.youtube.com/watch?v=6xKWiCMKKJg'
Type yt-dlp --help
for seeing all of them.
In case you need, you can specify your own binary path using .create
:
const { create: createYoutubeDl } = require('youtube-dl-exec')
const youtubedl = createYoutubeDl('/my/binary/path')
Since the library is returning a promise, you can use any library that makes a progress estimation taking a promise as input:
const logger = require('progress-estimator')()
const youtubedl = require('youtube-dl-exec')
const url = 'https://www.youtube.com/watch?v=6xKWiCMKKJg'
const promise = youtubedl(url, { dumpSingleJson: true })
const result = await logger(promise, `Obtaining ${url}`)
console.log(result)
Alternatively, you can access to the subprocess to have more granular control. See youtubedl.exec.
Also, combine that with YOUTUBE_DL_SKIP_DOWNLOAD. See environment variables to know more.
You can customize spawn#options by passing a third argument:
const url = 'https://www.youtube.com/watch?v=6xKWiCMKKJg'
const result = await youtubedl.exec(url, ,{ dumpSingleJson: true }, {
timeout: 5000,
killSignal: 'SIGKILL'
})
console.log(result)
You can also interact with the subprocess programmatically:
const url = 'https://www.youtube.com/watch?v=6xKWiCMKKJg'
const subprocess = youtubedl.exec(url, { dumpSingleJson: true })
setTimeout(() => {
subprocess.kill('SIGKILL')
}, 5000)
const result = await subprocess
console.log(result)
It execs any yt-dlp
command, returning back the output.
Required
Type: string
The URL to target.
Type: object
Any flag supported by yt-dlp
.
Any option provided here will passed to spawn#options.
Similar to main method but instead of a parsed output, it will return the internal subprocess object:
const youtubedl = require('youtube-dl-exec')
const fs = require('fs')
const subprocess = youtubedl.exec(
'https://www.youtube.com/watch?v=6xKWiCMKKJg',
{
dumpSingleJson: true
}
)
console.log(`Running subprocess as ${subprocess.pid}`)
subprocess.stdout.pipe(fs.createWriteStream('stdout.txt'))
subprocess.stderr.pipe(fs.createWriteStream('stderr.txt'))
setTimeout(subprocess.cancel, 30000)
It creates a yt-dlp
using the binaryPath
provided.
The environment variables are used to customize the postinstall script behavior that will be triggered after npm install
is performed.
This is mostly for backward compatibility or debugging purposes. You don't need to do anything by default.
Set DEBUG="youtube-dl-exec*"
to enable debug mode. This will enable log additional information during the post-install script.
It determines the folder where to put the binary file.
The default folder is bin
.
It determines the binary filename.
The default binary file could be yt-dlp
or youtube-dl.exe
, depending of the YOUTUBE_DL_PLATFORM
value.
It determines the remote URL for getting the yt-dlp
binary file.
The default URL is yt-dlp/yt-dlp latest release.
It determines the architecture of the machine that will use the yt-dlp
binary.
The default value will computed from process.platform
, being 'unix'
or 'win32'
.
When is present, it will skip the postinstall script for fetching the latest yt-dlp
version.
That variable should be set before performing the installation command, such as:
YOUTUBE_DL_SKIP_DOWNLOAD=true npm install
When is present, it skip the python step on installation.
youtube-dl-exec © microlink.io, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.
microlink.io · GitHub microlink.io · X @microlinkhq
FAQs
A simple Node.js wrapper for youtube-dl
The npm package youtube-dl-exec receives a total of 11,699 weekly downloads. As such, youtube-dl-exec popularity was classified as popular.
We found that youtube-dl-exec demonstrated a healthy version release cadence and project activity because the last version was released less than 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
npm now supports Trusted Publishing with OIDC, enabling secure package publishing directly from CI/CD workflows without relying on long-lived tokens.
Research
/Security News
A RubyGems malware campaign used 60 malicious packages posing as automation tools to steal credentials from social media and marketing tool users.
Security News
The CNA Scorecard ranks CVE issuers by data completeness, revealing major gaps in patch info and software identifiers across thousands of vulnerabilities.