17 releases (9 breaking)

0.10.0 Apr 16, 2024
0.9.0 Aug 20, 2023
0.8.1 May 20, 2023
0.8.0 Jan 22, 2023
0.1.1 Aug 9, 2019

#77 in Video

Download history 313/week @ 2024-12-21 326/week @ 2024-12-28 3129/week @ 2025-01-04 26935/week @ 2025-01-11 2601/week @ 2025-01-18 1505/week @ 2025-01-25 1944/week @ 2025-02-01 2159/week @ 2025-02-08 1853/week @ 2025-02-15 2769/week @ 2025-02-22 3228/week @ 2025-03-01 2828/week @ 2025-03-08 3685/week @ 2025-03-15 3371/week @ 2025-03-22 1788/week @ 2025-03-29 458/week @ 2025-04-05

9,788 downloads per month
Used in 2 crates

MIT/Apache

55KB
1.5K SLoC

youtube-dl-rs

Crates.io

NOTE: The name for this library is a bit misleading, it currently does not support youtube-dl as its development seems to be very slow recently, it does support yt-dlp, which has diverged from youtube-dl in some ways, but sees a lot more development.

Runs yt-dlp and parses its JSON output. Example:

use youtube_dl::YoutubeDl;

let output = YoutubeDl::new("https://www.youtube.com/watch?v=VFbhKZFzbzk")
  .socket_timeout("15")
  .run()
  .unwrap();
let title = output.into_single_video().unwrap().title;
println!("Video title: {}", title);

Or, if you want to it to run asynchronously (enable the feature tokio):

let output = YoutubeDl::new("https://www.youtube.com/watch?v=VFbhKZFzbzk")
    .socket_timeout("15")
    .run_async()
    .await?;
let title = output.into_single_video().unwrap().title;
println!("Video title: {}", title);
Ok(())

Feature flags

  • tokio: Enables the async variants of the run, run_raw and download_to methods.
  • downloader-native-tls / downloader-rustls-tls: Enables the download_yt_dlp method and YoutubeDlFetcher struct to download the yt-dlp executable with the given TLS backend used for reqwest.

Dependencies

~0.7–12MB
~139K SLoC