diff --git a/src/main.rs b/src/main.rs index 3edaeb5..3186418 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,143 +1,31 @@ -use futures::executor::block_on; -use std::time::{Duration, Instant}; -use std::thread::sleep; -use std::env; +mod setwp; use std::fs; -use download_rs::async_download::Download; -use wallpaper; - fn main() { - for arg in env::args() { - if arg == "hd" { - loop { - let b = hdd(); - block_on(b); + for _ in 0..24 { + setwp::del(); + let _ = fs::create_dir_all("/tmp/unwp").expect("Программе не удалось создать временный каталог для её работы."); + let mut base_url = "https://source.unsplash.com/random/".to_string(); - let _f = Instant::now(); - sleep(Duration::new(3600, 3600)); + for arg in std::env::args() { + if arg == "hd" { + let irl: &mut String = &mut base_url; + irl.push_str("1280x720"); + setwp::download(irl); + } else if arg == "fhd" { + let irl: &mut String = &mut base_url; + irl.push_str("1920x1080"); + setwp::download(irl); + } else if arg == "qhd" { + let irl: &mut String = &mut base_url; + irl.push_str("3840x2160"); + setwp::download(irl); + } else if arg == "uhd" { + let irl: &mut String = &mut base_url; + irl.push_str("7680x4320"); + setwp::download(irl); } - } else if arg == "fhd" { - loop { - let b = fhdd(); - block_on(b); - - let _f = Instant::now(); - sleep(Duration::new(3600, 3600)); - } - } else if arg == "qhd" { - loop { - let b = qhdd(); - block_on(b); - - let _f = Instant::now(); - sleep(Duration::new(3600, 3600)); - } - } else if arg == "uhd" { - loop { - let b = uhdd(); - block_on(b); - - let _f = Instant::now(); - sleep(Duration::new(3600, 3600)); - } - } else if arg == "help"{ - println!(" Чтобы начать пользоваться этой программой введите в терминал 'unwp hd'. Вместо hd разрешение обоев, которое вы хотите видеть. \n Доспупные разрешения: \n hd \n fhd \n qhd \n uhd\n\n Автор: KhomyaK_HTF, Донецк, 2023 год."); - }/* else if arg == " " { - println!("Пожалуйста, введите разрешение обоев, которое вы хотите видеть у себя на рабочем столе. Например 'unwp fhd'"); - }*/ + } } } -async fn cr() { - fs::create_dir_all("/tmp/unwp").expect("Программе не удалось создать временный каталог для её работы."); - fs::remove_file("/tmp/unwp/bg.png"); -} - -async fn hd() { - let _url = "https://source.unsplash.com/random/1280x720/?backgrounds/"; - - let name = "/tmp/unwp/bg.png"; - - let down = Download::new(_url, Some(name),None); - match down.download() { - Ok(_) => println!("Изображение успешно скачано!"), - Err(_e) => println!("Не удалось скачать изображение :("), - }; -} - -async fn fhd() { - let _url = "https://source.unsplash.com/random/1920x1080/?backgrounds/"; - - let name = "/tmp/unwp/bg.png"; - - let down = Download::new(_url, Some(name),None); - match down.download() { - Ok(_) => println!("Изображение успешно скачано!"), - Err(_e) => println!("Не удалось скачать изображение :("), - }; -} - -async fn qhd() { - let _url = "https://source.unsplash.com/random/3840x1440/?backgrounds/"; - - let name = "/tmp/unwp/bg.png"; - - let down = Download::new(_url, Some(name),None); - match down.download() { - Ok(_) => println!("Изображение успешно скачано!"), - Err(_e) => println!("Не удалось скачать изображение :("), - }; -} - -async fn uhd() { - let _url = "https://source.unsplash.com/random/7680x4320/?backgrounds/"; - - let name = "/tmp/unwp/bg.png"; - - let down = Download::new(_url, Some(name),None); - match down.download() { - Ok(_) => println!("Изображение успешно скачано!"), - Err(_e) => println!("Не удалось скачать изображение :("), - }; -} - -async fn set() { - wallpaper::set_from_path("/tmp/unwp/bg.png"); - wallpaper::set_mode(wallpaper::Mode::Fit); - - fs::remove_dir("/tmp/unwp"); -} - -async fn hdd() { - let a = cr(); - let b = hd(); - let c = set(); - - futures::join!(a, b, c); -} - -async fn fhdd() { - let a = cr(); - let b = fhd(); - let c = set(); - - futures::join!(a, b, c); -} - -async fn qhdd() { - let a = cr(); - let b = qhd(); - let c = set(); - - futures::join!(a, b, c); -} - -async fn uhdd() { - let a = cr(); - let b = uhd(); - let c = set(); - - futures::join!(a, b, c); -} - diff --git a/src/setwp.rs b/src/setwp.rs new file mode 100644 index 0000000..f69c0da --- /dev/null +++ b/src/setwp.rs @@ -0,0 +1,36 @@ +use std::{thread::sleep, fs, time::{Duration, Instant}}; +use download_rs::async_download::Download; +use wallpaper; + +pub static FILENAME: &str = "/tmp/unwp/bg.png"; + +pub fn download(url: &mut String) { + url.push_str("/?background/"); + + let d = Download::new(&url, Some(FILENAME),None); match d.download() { + Ok(_) => { println!("[ OK ]"); set() }, + Err(_e) => { println!("[ !! ]"); loop { + match d.download() { + Ok(_) => { println!("[ OK ]"); break; }, + Err(_e) => { + let _ = Instant::now(); + sleep(Duration::new(5, 5)); + println!("[ !! ]"); + continue; + }, + }; + } + }, + }; +} + +pub fn set() { + let _ = wallpaper::set_from_path(FILENAME); + let _ = wallpaper::set_mode(wallpaper::Mode::Fit); + let _ = Instant::now(); sleep(Duration::new(3600, 3600)); + del() +} + +pub fn del() { + let _ = fs::remove_file(FILENAME); +}