Add option to only download images for BoilR shortcuts (#106)

This commit is contained in:
Philip Kristoffersen
2022-04-30 09:04:02 +02:00
committed by GitHub
parent 5589334e97
commit 44bebfc59e
6 changed files with 25 additions and 15 deletions
+1
View File
@@ -6,6 +6,7 @@ auth_key = "Write your authentication key between these quotes"
enabled = true enabled = true
prefer_animated = false prefer_animated = false
banned_images = [] banned_images = []
only_download_boilr_images = false
[origin] [origin]
enabled = true enabled = true
+13 -10
View File
@@ -12,13 +12,13 @@ use tokio::sync::watch::Sender; // 0.3.1
use steam_shortcuts_util::shortcut::ShortcutOwned; use steam_shortcuts_util::shortcut::ShortcutOwned;
use steamgriddb_api::Client; use steamgriddb_api::Client;
use super::CachedSearch;
use crate::settings::Settings; use crate::settings::Settings;
use crate::steam::{get_shortcuts_for_user, get_users_images, SteamUsersInfo}; use crate::steam::{get_shortcuts_for_user, get_users_images, SteamUsersInfo};
use crate::steamgriddb::ImageType; use crate::steamgriddb::ImageType;
use crate::sync::IsBoilRShortcut;
use crate::sync::SyncProgress; use crate::sync::SyncProgress;
use super::CachedSearch;
const CONCURRENT_REQUESTS: usize = 10; const CONCURRENT_REQUESTS: usize = 10;
pub async fn download_images_for_users<'b>( pub async fn download_images_for_users<'b>(
@@ -150,14 +150,17 @@ async fn search_for_images_to_download(
types types
}; };
let shortcuts_to_search_for = shortcuts.iter().filter(|s| { let shortcuts_to_search_for = shortcuts
// if we are missing any of the images we need to search for them .iter()
types .filter(|s| !settings.steamgrid_db.only_download_boilr_images || s.is_boilr_shortcut())
.iter() .filter(|s| {
.map(|t| t.file_name(s.app_id)) // if we are missing any of the images we need to search for them
.any(|image| !known_images.contains(&image)) types
&& !s.app_name.is_empty() .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(); let shortcuts_to_search_for: Vec<&ShortcutOwned> = shortcuts_to_search_for.collect();
if shortcuts_to_search_for.is_empty() { if shortcuts_to_search_for.is_empty() {
return Ok(vec![]); return Ok(vec![]);
+1
View File
@@ -8,6 +8,7 @@ pub struct SteamGridDbSettings {
pub auth_key: Option<String>, pub auth_key: Option<String>,
pub prefer_animated: bool, pub prefer_animated: bool,
pub banned_images: Vec<String>, pub banned_images: Vec<String>,
pub only_download_boilr_images: bool,
} }
impl SteamGridDbSettings { impl SteamGridDbSettings {
+1
View File
@@ -6,4 +6,5 @@ pub use synchronization::download_images;
pub use synchronization::get_platform_shortcuts; pub use synchronization::get_platform_shortcuts;
pub use synchronization::run_sync; pub use synchronization::run_sync;
pub use synchronization::IsBoilRShortcut;
pub use synchronization::SyncProgress; pub use synchronization::SyncProgress;
+5 -5
View File
@@ -109,12 +109,12 @@ pub async fn download_images(
} }
} }
trait IsBoilRShortcut { pub trait IsBoilRShortcut {
fn is_boilr_tag(&self) -> bool; fn is_boilr_shortcut(&self) -> bool;
} }
impl IsBoilRShortcut for ShortcutOwned { impl IsBoilRShortcut for ShortcutOwned {
fn is_boilr_tag(&self) -> bool { fn is_boilr_shortcut(&self) -> bool {
let boilr_tag = BOILR_TAG.to_string(); let boilr_tag = BOILR_TAG.to_string();
self.tags.contains(&boilr_tag) || self.dev_kit_game_id.starts_with(&boilr_tag) 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) { fn remove_old_shortcuts(shortcut_info: &mut ShortcutInfo) {
shortcut_info shortcut_info
.shortcuts .shortcuts
.retain(|shortcut| !shortcut.is_boilr_tag()); .retain(|shortcut| !shortcut.is_boilr_shortcut());
} }
fn fix_shortcut_icons( fn fix_shortcut_icons(
@@ -141,7 +141,7 @@ fn fix_shortcut_icons(
}; };
for shortcut in shortcuts { for shortcut in shortcuts {
if shortcut.is_boilr_tag() { if shortcut.is_boilr_shortcut() {
let replace_icon = shortcut.icon.trim().eq("") let replace_icon = shortcut.icon.trim().eq("")
|| !Path::new(shortcut.icon.trim()).exists() || !Path::new(shortcut.icon.trim()).exists()
|| shortcut.icon.eq(&shortcut.exe); || shortcut.icon.eq(&shortcut.exe);
+4
View File
@@ -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.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); ui.add_space(SECTION_SPACING);
} }