Default to 16 hash size and add "Original" similarity (#768)

pull/776/head
Rafał Mikrut 1 month ago committed by GitHub
parent d1c66fda1b
commit e3cea67634
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      Cargo.lock
  2. 2
      czkawka_cli/src/commands.rs
  3. 2
      czkawka_core/Cargo.toml
  4. 3
      czkawka_core/i18n/en/czkawka_core.ftl
  5. 7
      czkawka_core/src/similar_images.rs
  6. 4
      czkawka_core/src/similar_videos.rs
  7. 4
      czkawka_gui/src/saving_loading.rs

24
Cargo.lock generated

@ -221,9 +221,9 @@ checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3"
[[package]]
name = "bytemuck"
version = "1.9.1"
version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc"
checksum = "c53dfa917ec274df8ed3c572698f381a24eef2efba9492d797301b72b6db408a"
[[package]]
name = "byteorder"
@ -455,9 +455,9 @@ dependencies = [
[[package]]
name = "crypto-common"
version = "0.1.3"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8"
checksum = "5999502d32b9c48d492abe66392408144895020ec4709e549e840799f3bb74c0"
dependencies = [
"generic-array",
"typenum",
@ -1415,9 +1415,9 @@ dependencies = [
[[package]]
name = "infer"
version = "0.8.1"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e035cede526e0b21d5adffc9fa0eb4ef5d6026fe9c5b0bfe8084b9472b587a55"
checksum = "f178e61cdbfe084aa75a2f4f7a25a5bb09701a47ae1753608f194b15783c937a"
dependencies = [
"cfb",
]
@ -1810,9 +1810,9 @@ dependencies = [
[[package]]
name = "once_cell"
version = "1.12.0"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "opaque-debug"
@ -2887,9 +2887,9 @@ dependencies = [
[[package]]
name = "trash"
version = "2.1.4"
version = "2.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d0492e349e41bfa40e9d446a5803b84275898f0b3bda568b23e10325702095d"
checksum = "fe090367848cd40c4230ff3ce4e2ff6a2fd511c1e14ae047a4a4c37ef7965236"
dependencies = [
"chrono",
"libc",
@ -2924,9 +2924,9 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "ucd-trie"
version = "0.1.3"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c"
[[package]]
name = "unic-langid"

@ -145,7 +145,7 @@ pub enum Commands {
hash_alg: HashAlg,
#[clap(short = 'z', long, default_value = "Lanczos3", parse(try_from_str = parse_similar_image_filter), help = "Hash algorithm (allowed: Lanczos3, Nearest, Triangle, Faussian, Catmullrom)")]
image_filter: FilterType,
#[clap(short = 'c', long, default_value = "8", parse(try_from_str = parse_image_hash_size), help = "Hash size (allowed: 4, 8, 16)")]
#[clap(short = 'c', long, default_value = "16", parse(try_from_str = parse_image_hash_size), help = "Hash size (allowed: 8, 16, 32, 64)")]
hash_size: u8,
},
#[clap(name = "music", about = "Finds same music by tags", help_message = HELP_MESSAGE, after_help = "EXAMPLE:\n czkawka music -d /home/rafal -f results.txt")]

@ -63,7 +63,7 @@ imagepipe = "0.5.0"
# Checking for invalid extensions
mime_guess = "2.0.4"
infer = "0.8.0"
infer = "0.9.0"
num_cpus = "1.13.1"

@ -1,4 +1,5 @@
# Core
core_similarity_original = Original
core_similarity_very_high = Very High
core_similarity_high = High
core_similarity_medium = Medium
@ -26,7 +27,7 @@ core_directory_overlap = Directories: All directories to search overlaps with ex
core_directory_unable_to_get_device_id = Directories: Unable to get device id from folder { $path }
core_ffmpeg_not_found = Cannot find proper installation of FFmpeg
core_ffmpeg_not_found_windows = When using Windows be sure that ffmpeg.exe and ffprobe.exe are available in PATH or are put directly to same folder where is app executable
core_ffmpeg_not_found_windows = Be sure that ffmpeg.exe and ffprobe.exe are available in PATH or are put directly to same folder where is app executable
core_ffmpeg_missing_in_snap = Similar Videos don't work currently with snap, if you want help look at - { $url }
core_saving_to_cache = Saved to file { $number } cache entries

@ -1247,7 +1247,9 @@ pub fn get_string_from_similarity(similarity: &u32, hash_size: u8) -> String {
// }
// #[cfg(not(debug_assertions))]
if *similarity <= SIMILAR_VALUES[index_preset][0] {
if *similarity == 0 {
flc!("core_similarity_original")
} else if *similarity <= SIMILAR_VALUES[index_preset][0] {
flc!("core_similarity_very_high")
} else if *similarity <= SIMILAR_VALUES[index_preset][1] {
flc!("core_similarity_high")
@ -1347,6 +1349,9 @@ pub fn test_image_conversion_speed() {
}
#[allow(dead_code)]
// Function to validate if after first check there are any duplicated entries
// E.g. /a.jpg is used also as master and similar image which is forbidden, because may
// cause accidentally delete more pictures that user wanted
fn debug_check_for_duplicated_things(
hashes_parents: HashMap<&Vec<u8>, u32>,
hashes_similarity: HashMap<&Vec<u8>, (&Vec<u8>, u32)>,

@ -203,7 +203,9 @@ impl SimilarVideos {
pub fn find_similar_videos(&mut self, stop_receiver: Option<&Receiver<()>>, progress_sender: Option<&futures::channel::mpsc::UnboundedSender<ProgressData>>) {
if !check_if_ffmpeg_is_installed() {
self.text_messages.errors.push(flc!("core_ffmpeg_not_found"));
#[cfg(target_os = "windows")]
self.text_messages.errors.push(flc!("core_ffmpeg_not_found_windows"));
#[cfg(target_os = "linux")]
self.text_messages.errors.push(flc!(
"core_ffmpeg_missing_in_snap",
generate_translation_hashmap(vec![("url", "https://github.com/snapcrafters/ffmpeg/issues/73".to_string())])
@ -803,7 +805,7 @@ pub fn load_hashes_from_file(text_messages: &mut Messages, delete_outdated_cache
}
fn get_cache_file() -> String {
"cache_similar_videos_50.bin".to_string()
"cache_similar_videos.bin".to_string()
}
pub fn check_if_ffmpeg_is_installed() -> bool {

@ -755,7 +755,7 @@ pub fn load_configuration(
let combo_box_duplicate_hash_type = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxDuplicateHashType).unwrap().clone(), 0);
let combo_box_duplicate_checking_method = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxDuplicateCheckMethod).unwrap().clone(), 0);
let combo_box_image_hash_size = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxImageHashSize).unwrap().clone(), 0);
let combo_box_image_hash_size = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxImageHashSize).unwrap().clone(), 1); // 16 instead default 8
let combo_box_image_hash_algorithm = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxImageHashType).unwrap().clone(), 0);
let combo_box_image_resize_algorithm = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxImageResizeAlgorithm).unwrap().clone(), 0);
let combo_box_big_files_mode = loaded_entries.get_object(hashmap_ls.get(&LoadText::ComboBoxBigFiles).unwrap().clone(), 0);
@ -1033,7 +1033,7 @@ pub fn reset_configuration(manual_clearing: bool, upper_notebook: &GuiUpperNoteb
main_notebook.combo_box_duplicate_check_method.set_active(Some(0));
main_notebook.combo_box_image_hash_algorithm.set_active(Some(0));
main_notebook.combo_box_image_resize_algorithm.set_active(Some(0));
main_notebook.combo_box_image_hash_size.set_active(Some(0));
main_notebook.combo_box_image_hash_size.set_active(Some(1)); // Set as 16 instead 8
main_notebook.combo_box_big_files_mode.set_active(Some(0));
main_notebook.check_button_broken_files_audio.set_active(DEFAULT_BROKEN_FILES_AUDIO);

Loading…
Cancel
Save