Download Youtube playlist videos as video or audio with command line tool.
node >= 8.9.0
ffmpeg (for audio)
- Node - Javascript run-time environment
- Youtube Data Api Youtube Data Api
- Ytdl Core YouTube video downloader in javascript
- FFMPEG - Multimedia framework, able to decode, encode, transcode, vs.
- Fluent-ffmpeg A fluent API to FFMPEG
- Got Simplified HTTP requests
- Joi Object schema validation
- Commander Node.js command-line interfaces made easy
clone this repo, then
npm install
Take your api key from here and set app.api_key property in the package.json file.
node index [options]
Options
-v, --version version number
-h, --help help
-f, --format output format (video || audio), default: video
-o, --output output folder name, default: playlist name
-u, --url youtube playlist url (overrides "id" option)
-i, --id youtube playlist id
-r, --range playlist items range, must be like a-b
-j, --json options from .json file (overrides other options)
-t, --threads amount of concurrent downloads
Options json file format
"id" or "url" must be valid, you can't set both. Other options have default values (see --help output).
{
"id": "PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW",
// "url": "https://www.youtube.com/watch?v=9OIjPKLuu5g&list=PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW&index=10&t=0s",
"range": [5, 10],
"format": "audio",
"output": "My Playlist XYZ"
}
Basic
node index -i "PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW"
Via playlist url
node index -u "https://www.youtube.com/watch?v=9OIjPKLuu5g&list=PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW&index=10&t=0s"
Save as audio (bitrate: 192kbps)
node index -i "PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW" -f "audio"
Output folder name
node index -i "PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW" -o "My Playlist XYZ"
Save items by range
node index -i "PLlPn9MKk0K5HuCjbm3i0_JCnSuamvkugW" -r 5-10
Options from file
node index -j "../json/playlist.json"