| Crates.io | shirodl |
| lib.rs | shirodl |
| version | 0.1.3 |
| created_at | 2021-08-13 18:53:14.627178+00 |
| updated_at | 2021-08-21 16:05:43.598583+00 |
| description | An async download library for massive batch of urls downloading. |
| homepage | https://github.com/Oyami-Srk/shirodl |
| repository | https://github.com/Oyami-Srk/shirodl |
| max_upload_size | |
| id | 435823 |
| size | 101,703 |
ShiroDL is an Async Download Library for Massive Batch of Urls Downloading
cargo install --example shirodl --git https://github.com/Oyami-Srk/shirodl
shirodl --help for usage helps.
use shirodl::Downloader;
use std::path::PathBuf;
fn main() {
let mut dler = Downloader::new();
dler.set_destination(PathBuf::from("."));
dler.set_hash_check(true);
dler.append_task(
"https://avatars.githubusercontent.com/u/6939913?s=48&v=4".to_string(),
PathBuf::from("."),
None,
);
let result = dler.download(|_, _, _, _| {});
for r in result {
println!("Failed: {}, due to {:?}", r.url, r.err);
}
}
Downloader::download will create Tokio runtime, so you can call it directly in normal sync code.
Default Download parameters:
folder: Default::default(),
timeout: Some(Duration::from_secs(10)),
headers: HeaderMap::new(),
hash_check: false,
only_binary: true,
auto_rename: true,
Notice that currently auto-rename only determinates extensions simply by MIME via http header content-type and extracts subtype as extension.
Manually check is required but at least it could give you a tip.
shirodl::Error::ignorable() is not always ignorable, present errors to users always and leave the decisions to end user.