mirror of
https://github.com/djibux/BoilR.git
synced 2026-09-01 05:53:41 +02:00
Add option to only download images for BoilR shortcuts (#106)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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![]);
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user