From 44bebfc59e4d3e579299850bbdc2bcecd2af8079 Mon Sep 17 00:00:00 2001 From: Philip Kristoffersen Date: Sat, 30 Apr 2022 09:04:02 +0200 Subject: [PATCH] Add option to only download images for BoilR shortcuts (#106) --- src/defaultconfig.toml | 1 + src/steamgriddb/downloader.rs | 23 +++++++++++++---------- src/steamgriddb/settings.rs | 1 + src/sync/mod.rs | 1 + src/sync/synchronization.rs | 10 +++++----- src/ui/ui_settings.rs | 4 ++++ 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/defaultconfig.toml b/src/defaultconfig.toml index c0fe7d9..187a260 100644 --- a/src/defaultconfig.toml +++ b/src/defaultconfig.toml @@ -6,6 +6,7 @@ auth_key = "Write your authentication key between these quotes" enabled = true prefer_animated = false banned_images = [] +only_download_boilr_images = false [origin] enabled = true diff --git a/src/steamgriddb/downloader.rs b/src/steamgriddb/downloader.rs index 19fd238..6947845 100644 --- a/src/steamgriddb/downloader.rs +++ b/src/steamgriddb/downloader.rs @@ -12,13 +12,13 @@ use tokio::sync::watch::Sender; // 0.3.1 use steam_shortcuts_util::shortcut::ShortcutOwned; use steamgriddb_api::Client; +use super::CachedSearch; use crate::settings::Settings; use crate::steam::{get_shortcuts_for_user, get_users_images, SteamUsersInfo}; use crate::steamgriddb::ImageType; +use crate::sync::IsBoilRShortcut; use crate::sync::SyncProgress; -use super::CachedSearch; - const CONCURRENT_REQUESTS: usize = 10; pub async fn download_images_for_users<'b>( @@ -150,14 +150,17 @@ async fn search_for_images_to_download( types }; - let shortcuts_to_search_for = shortcuts.iter().filter(|s| { - // if we are missing any of the images we need to search for them - types - .iter() - .map(|t| t.file_name(s.app_id)) - .any(|image| !known_images.contains(&image)) - && !s.app_name.is_empty() - }); + let shortcuts_to_search_for = shortcuts + .iter() + .filter(|s| !settings.steamgrid_db.only_download_boilr_images || s.is_boilr_shortcut()) + .filter(|s| { + // if we are missing any of the images we need to search for them + types + .iter() + .map(|t| t.file_name(s.app_id)) + .any(|image| !known_images.contains(&image)) + && !s.app_name.is_empty() + }); let shortcuts_to_search_for: Vec<&ShortcutOwned> = shortcuts_to_search_for.collect(); if shortcuts_to_search_for.is_empty() { return Ok(vec![]); diff --git a/src/steamgriddb/settings.rs b/src/steamgriddb/settings.rs index bc440da..9073b0b 100644 --- a/src/steamgriddb/settings.rs +++ b/src/steamgriddb/settings.rs @@ -8,6 +8,7 @@ pub struct SteamGridDbSettings { pub auth_key: Option, pub prefer_animated: bool, pub banned_images: Vec, + pub only_download_boilr_images: bool, } impl SteamGridDbSettings { diff --git a/src/sync/mod.rs b/src/sync/mod.rs index 0fc8806..8f977b0 100644 --- a/src/sync/mod.rs +++ b/src/sync/mod.rs @@ -6,4 +6,5 @@ pub use synchronization::download_images; pub use synchronization::get_platform_shortcuts; pub use synchronization::run_sync; +pub use synchronization::IsBoilRShortcut; pub use synchronization::SyncProgress; diff --git a/src/sync/synchronization.rs b/src/sync/synchronization.rs index 22f0625..0ee61dd 100644 --- a/src/sync/synchronization.rs +++ b/src/sync/synchronization.rs @@ -109,12 +109,12 @@ pub async fn download_images( } } -trait IsBoilRShortcut { - fn is_boilr_tag(&self) -> bool; +pub trait IsBoilRShortcut { + fn is_boilr_shortcut(&self) -> bool; } impl IsBoilRShortcut for ShortcutOwned { - fn is_boilr_tag(&self) -> bool { + fn is_boilr_shortcut(&self) -> bool { let boilr_tag = BOILR_TAG.to_string(); self.tags.contains(&boilr_tag) || self.dev_kit_game_id.starts_with(&boilr_tag) } @@ -123,7 +123,7 @@ impl IsBoilRShortcut for ShortcutOwned { fn remove_old_shortcuts(shortcut_info: &mut ShortcutInfo) { shortcut_info .shortcuts - .retain(|shortcut| !shortcut.is_boilr_tag()); + .retain(|shortcut| !shortcut.is_boilr_shortcut()); } fn fix_shortcut_icons( @@ -141,7 +141,7 @@ fn fix_shortcut_icons( }; for shortcut in shortcuts { - if shortcut.is_boilr_tag() { + if shortcut.is_boilr_shortcut() { let replace_icon = shortcut.icon.trim().eq("") || !Path::new(shortcut.icon.trim()).exists() || shortcut.icon.eq(&shortcut.exe); diff --git a/src/ui/ui_settings.rs b/src/ui/ui_settings.rs index a04376c..fe3b378 100644 --- a/src/ui/ui_settings.rs +++ b/src/ui/ui_settings.rs @@ -211,6 +211,10 @@ impl MyEguiApp { ) }); ui.checkbox(&mut self.settings.steamgrid_db.prefer_animated, "Prefer animated images").on_hover_text("Prefer downloading animated images over static images (this can slow Steam down but looks neat)"); + ui.checkbox( + &mut self.settings.steamgrid_db.only_download_boilr_images, + "Only download images for BoilR shortcuts", + ); } ui.add_space(SECTION_SPACING); }