diff --git a/src/services/task_creator.rs b/src/services/task_creator.rs index a8580b8..a143a48 100644 --- a/src/services/task_creator.rs +++ b/src/services/task_creator.rs @@ -98,13 +98,19 @@ pub async fn create_archive( let books_count = books.len(); let mut bytes_count: u64 = 0; + let mut filenames: Vec = vec![]; + for (index, book) in books.iter().enumerate() { let (mut tmp_file, filename) = match download(book.id, file_format.clone()).await { Ok(v) => v, Err(_) => continue, }; - match archive.start_file::(filename, options) { + if filenames.contains(&filename) { + continue; + } + + match archive.start_file::(filename.clone(), options) { Ok(_) => (), Err(err) => return Err(Box::new(err)), }; @@ -114,6 +120,8 @@ pub async fn create_archive( Err(err) => return Err(Box::new(err)), }; + filenames.push(filename); + set_progress_description( key.clone(), format!("Загрузка книг: {}/{}", index + 1, books_count),