From 56624c7bd9a5d9a9a0f259a4b56def8ada5c093c Mon Sep 17 00:00:00 2001 From: lifegpc Date: Tue, 14 Jun 2022 04:32:35 +0000 Subject: [PATCH] update --- src/download.rs | 37 ++++++++++++------------------------ src/downloader/downloader.rs | 19 ++++++++++++++++++ 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/download.rs b/src/download.rs index 40c6507..60ec4bf 100644 --- a/src/download.rs +++ b/src/download.rs @@ -23,7 +23,6 @@ use crate::utils::get_file_name_from_url; use crate::webclient::WebClient; use crate::Main; use indicatif::MultiProgress; -use indicatif::ProgressStyle; use json::JsonValue; use reqwest::IntoUrl; use std::path::PathBuf; @@ -77,30 +76,18 @@ impl Main { let downloader = Downloader::::new(link, json::object!{"referer": "https://www.pixiv.net/"}, Some(&file_name), helper.overwrite())?; match downloader { DownloaderResult::Ok(d) => { - if helper.use_progress_bar() { - let style = ProgressStyle::default_bar() - .template(helper.progress_bar_template().as_ref()).unwrap() - .progress_chars("#>-"); - match progress_bars { - Some(b) => { - d.enable_progress_bar(style, Some(&b)); - } - None => { - d.enable_progress_bar(style, None); - } - } - d.download(); - d.join().await?; - if d.is_downloaded() { - #[cfg(feature = "exif")] - { - if add_exifdata_to_image(&file_name, &datas, np).is_err() { - println!( - "{} {}", - gettext("Failed to add exif data to image:"), - file_name.to_str().unwrap_or("(null)") - ); - } + d.handle_options(&helper, progress_bars); + d.download(); + d.join().await?; + if d.is_downloaded() { + #[cfg(feature = "exif")] + { + if add_exifdata_to_image(&file_name, &datas, np).is_err() { + println!( + "{} {}", + gettext("Failed to add exif data to image:"), + file_name.to_str().unwrap_or("(null)") + ); } } } diff --git a/src/downloader/downloader.rs b/src/downloader/downloader.rs index 67c057d..8d19e87 100644 --- a/src/downloader/downloader.rs +++ b/src/downloader/downloader.rs @@ -10,6 +10,7 @@ use crate::ext::io::ClearFile; use crate::ext::replace::ReplaceWith2; use crate::ext::rw_lock::GetRwLock; use crate::gettext; +use crate::opthelper::OptHelper; use crate::utils::ask_need_overwrite; use crate::utils::get_file_name_from_url; use crate::webclient::WebClient; @@ -369,17 +370,35 @@ impl D Ok(()) } + #[inline] /// Disable progress bar pub fn disable_progress_bar(&self) { self.downloader.disable_progress_bar() } + #[inline] /// Enable the progress bar /// * `style` - The style of the progress bar /// * `mults` - The instance of [MultiProgress] if multiple progress bars are needed. pub fn enable_progress_bar(&self, style: ProgressStyle, mults: Option<&MultiProgress>) { self.downloader.enable_progress_bar(style, mults) } + + /// Handle options + /// * `mults` - The instance of [MultiProgress] if multiple progress bars are needed. + pub fn handle_options(&self, helper: &OptHelper, mults: Option>) { + if helper.use_progress_bar() { + let style = ProgressStyle::default_bar() + .template(helper.progress_bar_template().as_ref()).unwrap() + .progress_chars("#>-"); + match mults { + Some(v) => { self.enable_progress_bar(style, Some(&v)); } + None => { self.enable_progress_bar(style, None); } + } + } else { + self.disable_progress_bar(); + } + } define_downloader_fn!(is_created, bool, "Returns true if the downloader is created just now."); define_downloader_fn!(is_downloading, bool, "Returns true if the downloader is downloading now."); define_downloader_fn!(is_multi_threads, bool, "Returns true if is multiple thread mode.");