Do not search for more than 99 images at a time

This commit is contained in:
Philip Kristoffersen
2022-04-18 21:08:08 +02:00
parent e9d10499f2
commit 06de2bdf60
+32 -30
View File
@@ -43,7 +43,7 @@ pub async fn download_images_for_users<'b>(
let shortcut_info = get_shortcuts_for_user(user); let shortcut_info = get_shortcuts_for_user(user);
async move { async move {
let known_images = get_users_images(user).unwrap_or_default(); let known_images = get_users_images(user).unwrap_or_default();
let res = search_fo_to_download( let res = search_for_images_to_download(
known_images, known_images,
user.steam_user_data_folder.as_str(), user.steam_user_data_folder.as_str(),
&shortcut_info.shortcuts, &shortcut_info.shortcuts,
@@ -113,7 +113,7 @@ pub struct PublicGameResponse {
data: Option<PublicGameResponseData>, data: Option<PublicGameResponseData>,
} }
async fn search_fo_to_download( async fn search_for_images_to_download(
known_images: Vec<String>, known_images: Vec<String>,
user_data_folder: &str, user_data_folder: &str,
shortcuts: &[ShortcutOwned], shortcuts: &[ShortcutOwned],
@@ -196,36 +196,38 @@ async fn search_fo_to_download(
} }
} }
} else { } else {
let image_search_result = for image_ids in image_ids.chunks(99){
get_images_for_ids(client, &image_ids, &image_type, download_animated).await; let image_search_result =
match image_search_result { get_images_for_ids(client, &image_ids, &image_type, download_animated).await;
Ok(images) => { match image_search_result {
let images = images Ok(images) => {
.iter() let images = images
.enumerate() .iter()
.map(|(index, image)| (image, shortcuts[index], image_ids[index])); .enumerate()
let download_for_this_type = stream::iter(images) .map(|(index, image)| (image, shortcuts[index], image_ids[index]));
.filter_map(|(image, shortcut, game_id)| { let download_for_this_type = stream::iter(images)
let path = grid_folder.join(image_type.file_name(shortcut.app_id)); .filter_map(|(image, shortcut, game_id)| {
async move { let path = grid_folder.join(image_type.file_name(shortcut.app_id));
let image_url = match image { async move {
Ok(img) => Some(img.url.clone()), let image_url = match image {
Err(_) => get_steam_image_url(game_id, &image_type).await, Ok(img) => Some(img.url.clone()),
}; Err(_) => get_steam_image_url(game_id, &image_type).await,
image_url.map(|url| ToDownload { };
path, image_url.map(|url| ToDownload {
url, path,
app_name: shortcut.app_name.clone(), url,
image_type, app_name: shortcut.app_name.clone(),
}) image_type,
} })
}) }
.collect::<Vec<ToDownload>>() })
.await; .collect::<Vec<ToDownload>>()
.await;
to_download.extend(download_for_this_type); to_download.extend(download_for_this_type);
}
Err(err) => println!("Error getting images: {}", err),
} }
Err(err) => println!("Error getting images: {}", err),
} }
} }
} }