# youtube-dl-rs [Crates.io](https://crates.io/crates/youtube_dl) **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: ```rust 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`): ```rust 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.