rusty_dl 1.0.2

A crate for downloading youtube videos, twitter medias (videos, images, gif) from tweets and files on the web.
Documentation
# rusty_dl

[![LICENSE](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![crates.io Version](https://img.shields.io/crates/v/rusty_dl.svg)](https://crates.io/crates/rusty_dl)
![Minimum rustc version](https://img.shields.io/badge/rustc-1.70.0+-lightgray.svg)

Rusty_dl is a versatile crate designed for effortlessly fetching a wide range of content types, including YouTube videos, tweet media (such as videos, images, and gifs), and eventually various other media directly from the web.

## Features

- Download YouTube videos
- Download tweet media (videos, images, gifs)
- Download other media from the web (through url fetching)

## Todo

### In the Library

- [x] Add features to download content to specific directories
- [x] Implement functions to retrieve metadata on downloaded media
- [x] Allow users to specify whether spaces in file names should be replaced by underscores
- [x] Add support for downloading images-only or videos-only from tweets
- [x] Add support for downloading playlists on youtube (only the 100 videos coming first)
- [x] Add examples

### Other

- [ ] Create a CLI for easy downloading from the terminal
- [ ] Develop a desktop application (using Tauri ?)
- [ ] Build a web application for downloading media from the browser

## Get started

- Add the crate to your project

```bash
cargo add rusty_dl
```

- Use the crate in a synchronous environment

```rust
use rusty_dl::prelude::{Downloader, YoutubeDownloader, DownloadError};

const URL: &str = "my_yt_video_link";

fn main() -> Result<(), DownloadError>  {
    let downloader = YoutubeDownloader::new(URL);

    downloader.blocking_download()
}
```

- Use the crate in a tokio environment

```rust
use rusty_dl::prelude::{Downloader, YoutubeDownloader, DownloadError};

const URL: &str = "my_yt_video_link";

#[tokio::main]
async fn main() -> Result<(), DownloadError> {
    let downloader = YoutubeDownloader::new(URL);

    downloader.download().await
}
```

This crate also exports a TwitterDownloader and a ResourceDownloader which work the same way as presented up there.

See more in [examples directory](/examples/)

## Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to help improve this library.

## License

This project is licensed under the [MIT License](./LICENSE).