1
0
Fork 0
mirror of synced 2024-05-03 03:52:58 +12:00

6.0.0 version (#988)

* 4.10 and build heif for all

* 4.10

* Disable heif in windows build

* A1

* B1
This commit is contained in:
Rafał Mikrut 2023-06-11 08:51:21 +02:00 committed by GitHub
parent 55b2744bf4
commit 7cb355a359
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 638 additions and 149 deletions

View file

@ -31,6 +31,13 @@ jobs:
RUSTFLAGS: "-C debuginfo=0"
if: ${{ (matrix.type == 'release') && (matrix.toolchain == '1.67.1') }}
- name: Store Linux GUI Heif
uses: actions/upload-artifact@v3
with:
name: czkawka_gui-${{ runner.os }}-${{ matrix.toolchain }}-heif
path: target/release/czkawka_gui
if: ${{ matrix.type == 'release' }}
- name: Build Release
run: cargo build --release
env:

View file

@ -10,9 +10,12 @@ env:
jobs:
container:
strategy:
matrix:
use_heif: [ non_heif ] #, heif ] - heif problems with mingw
runs-on: ubuntu-22.04
container:
image: ghcr.io/piegamesde/gtk4-cross:gtk-4.8
image: ghcr.io/mglolenstine/gtk4-cross:gtk-4.10
steps:
- uses: actions/checkout@v1
- name: Install additional dependencies
@ -33,6 +36,18 @@ jobs:
with:
path: target
key: windows-build-target
- name: Cross compile for Windows Heif
run: |
#!/bin/bash
set -euo pipefail
export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/usr/share/pkgconfig:$MINGW_PREFIX/lib/pkgconfig/:/usr/x86_64-w64-mingw32/lib/pkgconfig/
cargo build --target=x86_64-pc-windows-gnu --release --locked --features heif
mkdir -p package
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/release/czkawka_cli.exe package/
if: ${{ matrix.use_heif == 'heif' }}
- name: Cross compile for Windows
run: |
#!/bin/bash
@ -42,6 +57,8 @@ jobs:
mkdir -p package
cp target/x86_64-pc-windows-gnu/release/czkawka_gui.exe package/
cp target/x86_64-pc-windows-gnu/release/czkawka_cli.exe package/
if: ${{ matrix.use_heif == 'non_heif' }}
- name: Package
run: |
#!/bin/bash
@ -67,7 +84,7 @@ jobs:
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: czkawka-windows-${{ github.sha }}
name: czkawka-windows-${{ github.sha }}-${{ matrix.use_heif }}
path: |
./package
if-no-files-found: error
@ -76,7 +93,7 @@ jobs:
container_console_window:
runs-on: ubuntu-22.04
container:
image: ghcr.io/piegamesde/gtk4-cross:gtk-4.8
image: ghcr.io/mglolenstine/gtk4-cross:gtk-4.10
steps:
- uses: actions/checkout@v1
- name: Install additional dependencies

20
Cargo.lock generated
View file

@ -207,7 +207,7 @@ dependencies = [
"arrayvec",
"cc",
"cfg-if",
"constant_time_eq 0.2.5",
"constant_time_eq 0.2.6",
"digest",
]
@ -428,9 +428,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc"
[[package]]
name = "constant_time_eq"
version = "0.2.5"
version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13418e745008f7349ec7e449155f419a61b92b58a99cc3616942b926825ec76b"
checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6"
[[package]]
name = "core-foundation-sys"
@ -517,7 +517,7 @@ dependencies = [
[[package]]
name = "czkawka_cli"
version = "5.1.0"
version = "6.0.0"
dependencies = [
"clap",
"czkawka_core",
@ -526,7 +526,7 @@ dependencies = [
[[package]]
name = "czkawka_core"
version = "5.1.0"
version = "6.0.0"
dependencies = [
"anyhow",
"audio_checker",
@ -570,7 +570,7 @@ dependencies = [
[[package]]
name = "czkawka_gui"
version = "5.1.0"
version = "6.0.0"
dependencies = [
"chrono",
"crossbeam-channel",
@ -1799,9 +1799,9 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.18"
version = "0.4.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "518ef76f2f87365916b142844c16d8fefd85039bc5699050210a7778ee1cd1de"
checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
[[package]]
name = "loom"
@ -2206,9 +2206,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
[[package]]
name = "png"
version = "0.17.8"
version = "0.17.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa"
checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11"
dependencies = [
"bitflags 1.3.2",
"crc32fast",

View file

@ -1,6 +1,7 @@
## Version 5.2.0 - ?
## Version 6.0.0 - 11.06.2023r
- Add finding similar audio files by content - [#970](https://github.com/qarmin/czkawka/pull/970)
- Allow to find duplicates by name/size at once - [#956](https://github.com/qarmin/czkawka/pull/956)
- Fix, simplify and speed up finding similar images - [#983](https://github.com/qarmin/czkawka/pull/956)
- Fixed bug when cache for music tags not worked - [#970](https://github.com/qarmin/czkawka/pull/970)
- Allow to set number of threads from CLI - [#972](https://github.com/qarmin/czkawka/pull/972)
- Fix problem with invalid item sorting in bad extensions mode - [#972](https://github.com/qarmin/czkawka/pull/972)

View file

@ -1,6 +1,6 @@
[package]
name = "czkawka_cli"
version = "5.1.0"
version = "6.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021"
rust-version = "1.67.1"
@ -17,7 +17,7 @@ image_hasher = "1.2"
[dependencies.czkawka_core]
path = "../czkawka_core"
version = "5.1.0"
version = "6.0.0"
features = []
[features]

View file

@ -1,6 +1,6 @@
[package]
name = "czkawka_core"
version = "5.1.0"
version = "6.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021"
rust-version = "1.67.1"

View file

@ -379,9 +379,8 @@ impl BrokenFiles {
let err = validate_pdf_error(&mut file_entry, e);
if let PdfError::InvalidPassword = err {
return None;
} else {
break;
}
break;
}
}
}

View file

@ -682,6 +682,7 @@ impl SimilarImages {
let mut hashes_similarity: HashMap<ImHash, (ImHash, u32)> = Default::default(); // Hashes used as child, (parent_hash, similarity)
// Check them in chunks, to decrease number of used memory
// println!();
let base_hashes_chunks = base_hashes.chunks(1000);
for chunk in base_hashes_chunks {
let partial_results = chunk
@ -718,6 +719,10 @@ impl SimilarImages {
.filter(|(original_hash, vec_similar_hashes)| !vec_similar_hashes.is_empty() || hashes_with_multiple_images.contains(*original_hash))
.collect::<Vec<_>>();
// for (hash, vec) in &partial_results {
// println!("{hash:?} --- {:?}", vec.iter().map(|e| e.1).collect::<Vec<_>>());
// }
if check_was_stopped.load(Ordering::Relaxed) {
send_info_and_wait_for_ending_all_threads(&progress_thread_run, progress_thread_handle);
return false;
@ -1304,155 +1309,193 @@ fn debug_check_for_duplicated_things(
#[cfg(test)]
mod tests {
use bk_tree::BKTree;
use std::collections::HashMap;
use std::path::PathBuf;
use crate::common_directory::Directories;
use crate::similar_images::{FileEntry, Hamming, SimilarImages};
use crate::similar_images::{FileEntry, Hamming, ImHash, SimilarImages};
#[test]
fn test_compare_no_images() {
let mut similar_images = SimilarImages::default();
similar_images.find_similar_images(None, None);
assert_eq!(similar_images.get_similar_images().len(), 0);
for _ in 0..100 {
let mut similar_images = SimilarImages::default();
similar_images.find_similar_images(None, None);
assert_eq!(similar_images.get_similar_images().len(), 0);
}
}
#[test]
fn test_compare_tolerance_0_normal_mode() {
let mut similar_images = SimilarImages {
similarity: 0,
..Default::default()
};
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 0,
..Default::default()
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "cde.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "rrt.txt");
let fe5 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "bld.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1.clone(), fe2.clone()]);
similar_images.image_hashes.insert(fe3.hash.clone(), vec![fe3.clone(), fe4.clone(), fe5.clone()]);
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "cde.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "rrt.txt");
let fe5 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "bld.txt");
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 2);
let first_group = similar_images.get_similar_images()[0].iter().map(|e| &e.path).collect::<Vec<_>>();
let second_group = similar_images.get_similar_images()[1].iter().map(|e| &e.path).collect::<Vec<_>>();
// Initial order is not guaranteed, so we need to check both options
if similar_images.get_similar_images()[0][0].hash == fe1.hash {
assert_eq!(first_group, vec![&fe1.path, &fe2.path]);
assert_eq!(second_group, vec![&fe3.path, &fe4.path, &fe5.path]);
} else {
assert_eq!(first_group, vec![&fe3.path, &fe4.path, &fe5.path]);
assert_eq!(second_group, vec![&fe1.path, &fe2.path]);
add_hashes(&mut similar_images.image_hashes, vec![fe1.clone(), fe2.clone(), fe3.clone(), fe4.clone(), fe5.clone()]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 2);
let first_group = similar_images.get_similar_images()[0].iter().map(|e| &e.path).collect::<Vec<_>>();
let second_group = similar_images.get_similar_images()[1].iter().map(|e| &e.path).collect::<Vec<_>>();
// Initial order is not guaranteed, so we need to check both options
if similar_images.get_similar_images()[0][0].hash == fe1.hash {
assert_eq!(first_group, vec![&fe1.path, &fe2.path]);
assert_eq!(second_group, vec![&fe3.path, &fe4.path, &fe5.path]);
} else {
assert_eq!(first_group, vec![&fe3.path, &fe4.path, &fe5.path]);
assert_eq!(second_group, vec![&fe1.path, &fe2.path]);
}
}
}
#[test]
fn test_simple_normal_one_group() {
let mut similar_images = SimilarImages {
similarity: 1,
..Default::default()
};
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 1,
..Default::default()
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1, fe2]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 1);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 1);
}
}
#[test]
fn test_simple_normal_one_group_extended() {
let mut similar_images = SimilarImages {
similarity: 2,
use_reference_folders: false,
..Default::default()
};
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 2,
use_reference_folders: false,
..Default::default()
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "rrd.txt");
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 2], "rrd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1, fe2]);
similar_images.image_hashes.insert(fe3.hash.clone(), vec![fe3]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2, fe3]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 1);
assert_eq!(similar_images.get_similar_images()[0].len(), 3);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 1);
assert_eq!(similar_images.get_similar_images()[0].len(), 3);
}
}
// TODO this not works yet,
// Need to find a way to
// #[test]
// fn test_similar_similarity() {
// for _ in 0..100 {
// let mut similar_images = SimilarImages {
// similarity: 10,
// use_reference_folders: false,
// ..Default::default()
// };
//
// let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0000_0001], "abc.txt");
// let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0000_0010], "bcd.txt");
// let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0000_0100], "rrd.txt");
// let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0111_1111], "rdd.txt");
//
// add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2, fe3, fe4]);
//
// similar_images.find_similar_hashes(None, None);
// assert_eq!(similar_images.get_similar_images().len(), 1);
// assert_eq!(similar_images.get_similar_images()[0].len(), 4);
// }
// }
#[test]
fn test_simple_referenced_same_group() {
let mut similar_images = SimilarImages {
similarity: 0,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 0,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
},
..Default::default()
};
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/bcd.txt");
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/bcd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1, fe2]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 0);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images().len(), 0);
}
}
#[test]
fn test_simple_referenced_group_extended() {
let mut similar_images = SimilarImages {
similarity: 0,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 0,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
},
..Default::default()
};
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/kk/bcd.txt");
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/kk/bcd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1, fe2]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2]);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images_referenced().len(), 1);
assert_eq!(similar_images.get_similar_images_referenced()[0].1.len(), 1);
similar_images.find_similar_hashes(None, None);
assert_eq!(similar_images.get_similar_images_referenced().len(), 1);
assert_eq!(similar_images.get_similar_images_referenced()[0].1.len(), 1);
}
}
#[test]
fn test_simple_referenced_group_extended2() {
let mut similar_images = SimilarImages {
similarity: 0,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 0,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
},
..Default::default()
};
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc2.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/kk/bcd.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/kk/bcd2.txt");
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/rr/abc2.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/kk/bcd.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 1], "/home/kk/bcd2.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1, fe2, fe3, fe4]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2, fe3, fe4]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images_referenced();
assert_eq!(res.len(), 1);
assert_eq!(res[0].1.len(), 2);
assert!(res[0].1.iter().all(|e| e.path.starts_with("/home/kk/")));
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images_referenced();
assert_eq!(res.len(), 1);
assert_eq!(res[0].1.len(), 2);
assert!(res[0].1.iter().all(|e| e.path.starts_with("/home/kk/")));
}
}
#[test]
fn test_simple_normal_too_small_similarity() {
for _ in 0..50 {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 1,
use_reference_folders: false,
@ -1463,9 +1506,7 @@ mod tests {
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b00100], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b10000], "rrd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1]);
similar_images.image_hashes.insert(fe2.hash.clone(), vec![fe2]);
similar_images.image_hashes.insert(fe3.hash.clone(), vec![fe3]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2, fe3]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images();
@ -1487,9 +1528,7 @@ mod tests {
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0000_1111], "bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0111_1111], "rrd.txt");
similar_images.image_hashes.insert(fe1.hash.clone(), vec![fe1]);
similar_images.image_hashes.insert(fe2.hash.clone(), vec![fe2]);
similar_images.image_hashes.insert(fe3.hash.clone(), vec![fe3]);
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2, fe3]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images();
@ -1505,6 +1544,119 @@ mod tests {
}
}
}
#[test]
fn test_reference_similarity_only_one() {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 1,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0001], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0011], "/home/kk/bcd.txt");
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images_referenced();
assert_eq!(res.len(), 1);
assert_eq!(res[0].1.len(), 1);
assert_eq!(res[0].0.path, PathBuf::from("/home/rr/abc.txt"));
assert_eq!(res[0].1[0].path, PathBuf::from("/home/kk/bcd.txt"));
}
}
#[test]
fn test_reference_too_small_similarity() {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 1,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0001], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0010], "/home/kk/bcd.txt");
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images_referenced();
assert_eq!(res.len(), 0);
}
}
#[test]
fn test_reference_minimal() {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 1,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
};
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0001], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0011], "/home/kk/bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0100], "/home/kk/bcd2.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b1100], "/home/rr/krkr.txt");
add_hashes(&mut similar_images.image_hashes, vec![fe1, fe2, fe3, fe4]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images_referenced();
assert_eq!(res.len(), 2);
assert_eq!(res[0].1.len(), 1);
assert_eq!(res[1].1.len(), 1);
if res[0].1[0].path == PathBuf::from("/home/kk/bcd.txt") {
assert_eq!(res[0].0.path, PathBuf::from("/home/rr/abc.txt"));
assert_eq!(res[1].0.path, PathBuf::from("/home/rr/krkr.txt"));
} else if res[0].1[0].path == PathBuf::from("/home/kk/bcd2.txt") {
assert_eq!(res[0].0.path, PathBuf::from("/home/rr/krkr.txt"));
assert_eq!(res[1].0.path, PathBuf::from("/home/rr/abc.txt"));
}
}
}
#[test]
fn test_reference_union() {
for _ in 0..100 {
let mut similar_images = SimilarImages {
similarity: 10,
use_reference_folders: true,
directories: Directories {
reference_directories: vec![PathBuf::from("/home/rr/")],
..Default::default()
},
..Default::default()
};
let fe0 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b1000], "/home/rr/abc2.txt");
let fe1 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0001], "/home/rr/abc.txt");
let fe2 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b1110], "/home/kk/bcd.txt");
let fe3 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b0100], "/home/kk/bcd2.txt");
let fe4 = create_random_file_entry(vec![1, 1, 1, 1, 1, 1, 1, 0b1100], "/home/rr/krkr.txt");
add_hashes(&mut similar_images.image_hashes, vec![fe0, fe1, fe2, fe3, fe4]);
similar_images.find_similar_hashes(None, None);
let res = similar_images.get_similar_images_referenced();
assert_eq!(res.len(), 1);
assert_eq!(res[0].1.len(), 2);
assert_eq!(res[0].0.path, PathBuf::from("/home/rr/krkr.txt"));
}
}
#[test]
fn test_tolerance() {
@ -1525,6 +1677,19 @@ mod tests {
bktree.add(fe1);
let (similarity, _hash) = bktree.find(&fe2, 100).next().unwrap();
assert_eq!(similarity, 1);
let fe1 = vec![1, 1, 1, 1, 1, 1, 1, 0b0000_0000];
let fe2 = vec![1, 1, 1, 1, 1, 1, 1, 0b0000_1000];
let mut bktree = BKTree::new(Hamming);
bktree.add(fe1);
let (similarity, _hash) = bktree.find(&fe2, 100).next().unwrap();
assert_eq!(similarity, 1);
}
fn add_hashes(hashmap: &mut HashMap<ImHash, Vec<FileEntry>>, file_entries: Vec<FileEntry>) {
for fe in file_entries {
hashmap.entry(fe.hash.clone()).or_insert_with(Vec::new).push(fe);
}
}
fn create_random_file_entry(hash: Vec<u8>, name: &str) -> FileEntry {

View file

@ -1,6 +1,6 @@
[package]
name = "czkawka_gui"
version = "5.1.0"
version = "6.0.0"
authors = ["Rafał Mikrut <mikrutrafal@protonmail.com>"]
edition = "2021"
rust-version = "1.67.1"
@ -59,7 +59,7 @@ features = ["v4_6"]
[dependencies.czkawka_core]
path = "../czkawka_core"
version = "5.1.0"
version = "6.0.0"
features = []
[features]

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Přenosová rychlost
music_genre_checkbox = Žánr
music_length_checkbox = Délka
music_comparison_checkbox = Přibližné srovnání
music_checking_by_tags = Štítky
music_checking_by_content = Obsah
same_music_seconds_label = Minimální délka trvání druhého fragmentu
same_music_similarity_label = Maximální rozdíl
same_music_tooltip =
Vyhledávání podobných hudebních souborů podle jejich obsahu může být nakonfigurováno nastavením:
- Minimální doba fragmentu, po které mohou být hudební soubory identifikovány jako podobné
- Maximální rozdíl mezi dvěma testovanými fragmenty
Klíč k dobrým výsledkům je najít rozumné kombinace těchto parametrů, pro stanovení.
Nastavení minimální doby na 5 s a maximální rozdíl na 1,0 bude hledat téměř stejné fragmenty v souborech.
Čas 20 s a maximální rozdíl 6,0 na druhé straně funguje dobře pro nalezení remixů/živých verzí atd.
Ve výchozím nastavení je každý hudební soubor porovnáván mezi sebou a to může trvat dlouho při testování mnoha souborů, takže je obvykle lepší používat referenční složky a specifikovat, které soubory mají být vzájemně porovnány (se stejným množstvím souborů, porovnávání otisků prstů bude rychlejší alespoň 4x než bez referenčních složek).
music_comparison_checkbox_tooltip =
Vyhledá podobné hudební soubory pomocí AI, která používá strojové učení k odstranění závorek z fráze. Například, pokud je tato možnost povolena, příslušné soubory budou považovány za duplicitní soubory:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Pokud je povoleno, skupiny pouze záznamy, pokud mají přesně stejný název, např.Żołd <-> Żołd
Zakázání takové volby bude názvy skupin bez kontroly, zda je každé písmeno stejné velikosti, např. żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Velikost a název
duplicate_mode_name_combo_box = Název
duplicate_mode_size_combo_box = Velikost
duplicate_mode_hash_combo_box = Hash
@ -388,8 +405,11 @@ progress_scanning_image = Hashování { $file_checked }/{ $all_files } obrázku
progress_comparing_image_hashes = Porovnávám { $file_checked }/{ $all_files } hash obrázků
progress_scanning_music_tags_end = Porovnávání značek s { $file_checked }/{ $all_files } hudebním souborem
progress_scanning_music_tags = Čtení tagů z { $file_checked }/{ $all_files } hudebního souboru
progress_scanning_music_content_end = Porovnání otisku prstu v { $file_checked }/{ $all_files } hudebního souboru
progress_scanning_music_content = Výpočet otisku prstu { $file_checked }/{ $all_files } hudebního souboru
progress_scanning_empty_folders = Skenování { $folder_number } složky
progress_scanning_size = Skenování velikosti { $file_number } souboru
progress_scanning_size_name = Skenování jména a velikosti souboru { $file_number }
progress_scanning_name = Skenování názvu souboru { $file_number }
progress_analyzed_partial_hash = Analyzován částečný hash souborů { $file_checked }/{ $all_files }
progress_analyzed_full_hash = Analyzováno úplné hash souborů { $file_checked }/{ $all_files }

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Bitrate
music_genre_checkbox = Genre
music_length_checkbox = Dauer
music_comparison_checkbox = Ungefährer Vergleich
music_checking_by_tags = Tags
music_checking_by_content = Inhalt
same_music_seconds_label = Minimale Dauer des Fragment Sekunde
same_music_similarity_label = Maximaler Unterschied
same_music_tooltip =
Die Suche nach ähnlichen Musikdateien nach dem Inhalt kann über die Einstellung konfiguriert werden:
- Die minimale Fragmentzeit, nach der Musikdateien als ähnlich identifiziert werden können
- Der maximale Unterschied zwischen zwei getesteten Fragmenten
Der Schlüssel zu guten Ergebnissen ist die Suche nach sinnvollen Kombinationen dieser Parameter. für bereitgestellt.
Wenn Sie die minimale Zeit auf 5 Sekunden und den maximalen Unterschied auf 1,0 setzen, werden fast identische Fragmente in den Dateien gesucht.
Eine Zeit von 20 Sekunden und ein maximaler Unterschied von 6.0 hingegen funktioniert gut um Remix/Live-Versionen zu finden.
Standardmäßig wird jede Musikdatei miteinander verglichen, und dies kann viel Zeit in Anspruch nehmen, wenn viele Dateien getestet werden so ist es in der Regel besser, Referenzordner zu verwenden und festzulegen, welche Dateien miteinander verglichen werden sollen (mit gleicher Dateigröße Der Vergleich von Fingerabdrücken wird mindestens 4x schneller als ohne Referenzordner sein).
music_comparison_checkbox_tooltip =
Mit Hilfe von einer KI, die maschinelles Lernen nutzt, um Klammern aus Sätzen zu entfernen, wird nach ähnlichen Musikdateien gesucht. Wenn die Option aktiviert ist, werden die folgenden Dateien zum Beispiel als Duplikate betrachtet:
@ -22,6 +38,7 @@ duplicate_case_sensitive_name = Gross-/Kleinschreibung beachten
duplicate_case_sensitive_name_tooltip =
Wenn aktiviert, gruppieren Sie nur Datensätze, wenn sie genau denselben Namen haben, z. żoŁD <-> Żołd
Deaktivieren dieser Option gruppiert Namen ohne zu überprüfen, ob jeder Buchstabe die gleiche Größe wie żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Größe und Name
duplicate_mode_name_combo_box = Name
duplicate_mode_size_combo_box = Größe
duplicate_mode_hash_combo_box = Hash
@ -387,8 +404,11 @@ progress_scanning_image = Hashing von { $file_checked }/{ $all_files } Bild
progress_comparing_image_hashes = Vergleicht { $file_checked }/{ $all_files } Bild-Hash
progress_scanning_music_tags_end = Vergleicht Tags von { $file_checked }/{ $all_files } Musikdatei
progress_scanning_music_tags = Lese Tags von { $file_checked }/{ $all_files } Musikdatei
progress_scanning_music_content_end = Vergleiche Fingerabdruck von { $file_checked }/{ $all_files } Musikdatei
progress_scanning_music_content = Berechne Fingerabdruck von { $file_checked }/{ $all_files } Musikdatei
progress_scanning_empty_folders = Scanne { $folder_number } Ordner
progress_scanning_size = Scanne Größe der { $file_number } Datei
progress_scanning_size_name = Scanne Namen und Größe der { $file_number } Datei
progress_scanning_name = Scanne Name der { $file_number } Datei
progress_analyzed_partial_hash = Teilhash von { $file_checked }/{ $all_files } Dateien analysiert
progress_analyzed_full_hash = Analysiert voller Hash von { $file_checked }/{ $all_files } Dateien

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Tasa de bits
music_genre_checkbox = Género
music_length_checkbox = Duración
music_comparison_checkbox = Comparación aproximada
music_checking_by_tags = Etiquetas
music_checking_by_content = Contenido
same_music_seconds_label = Duración mínima del segundo fragmento
same_music_similarity_label = Diferencia máxima
same_music_tooltip =
Buscando archivos de música similares por su contenido se puede configurar configurando:
- El tiempo mínimo de fragmento después del cual los archivos de música pueden ser identificados como similares
- La diferencia máxima entre dos fragmentos probados
La clave para los buenos resultados es encontrar combinaciones sensatas de estos parámetros, para proporcionar.
Establecer el tiempo mínimo a 5 s y la diferencia máxima a 1.0, buscará fragmentos casi idénticos en los archivos.
Un tiempo de 20 años y una diferencia máxima de 6.0, por otro lado, funciona bien para encontrar remixes/versiones en vivo, etc.
Por defecto, cada archivo de música se compara entre sí y esto puede tomar mucho tiempo al probar muchos archivos, por lo que normalmente es mejor usar carpetas de referencia y especificar qué archivos deben compararse entre sí (con la misma cantidad de archivos, comparar las huellas dactilares será más rápido al menos 4x que sin carpetas de referencia).
music_comparison_checkbox_tooltip =
Busca archivos de música similares usando IA, que usa el aprendizaje automático para eliminar paréntesis de una frase. Por ejemplo, con esta opción activada, los archivos en cuestión se considerarán duplicados:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Cuando está habilitado, agrupa registros sólo cuando tienen exactamente el mismo nombre p.ej. Żołd <-> Żołd
Deshabilitar tal opción agrupará nombres sin comprobar si cada letra tiene el mismo tamaño, p. ej. żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Tamaño y nombre
duplicate_mode_name_combo_box = Nombre
duplicate_mode_size_combo_box = Tamaño
duplicate_mode_hash_combo_box = Hash
@ -67,8 +84,8 @@ image_hash_alg_tooltip =
big_files_mode_combobox_tooltip = Permite buscar archivos más pequeños/mayores
big_files_mode_label = Archivos marcados
big_files_mode_smallest_combo_box = El más pequeño
big_files_mode_biggest_combo_box = El Bigote
main_notebook_duplicates = Duplicar archivos
big_files_mode_biggest_combo_box = El más grande
main_notebook_duplicates = Archivos Duplicados
main_notebook_empty_directories = Directorios vacíos
main_notebook_big_files = Archivos grandes
main_notebook_empty_files = Archivos vacíos
@ -103,13 +120,13 @@ main_label_hash_type = Tipo de Hash
main_label_hash_size = Tamaño hash
main_label_size_bytes = Tamaño (bytes)
main_label_min_size = Mínimo
main_label_max_size = Máx
main_label_max_size = Máximo
main_label_shown_files = Número de archivos mostrados
main_label_resize_algorithm = Redimensionar algoritmo
main_label_resize_algorithm = Algoritmo de Redimensionar
main_label_similarity = Similarity{ " " }
main_check_box_broken_files_audio = Sonido
main_check_box_broken_files_pdf = Pdf
main_check_box_broken_files_archive = Archivar
main_check_box_broken_files_archive = Guardar
main_check_box_broken_files_image = Imagen
check_button_general_same_size = Ignorar el mismo tamaño
check_button_general_same_size_tooltip = Ignorar de los resultados, archivos que tienen el mismo tamaño - generalmente son 1:1 duplicados
@ -162,7 +179,7 @@ popover_reverse = Invertir selección
popover_select_all_except_oldest = Seleccionar todo excepto más antiguo
popover_select_all_except_newest = Seleccionar todo excepto el más reciente
popover_select_one_oldest = Seleccione uno más antiguo
popover_select_one_newest = Seleccione un nuevo
popover_select_one_newest = Seleccione uno más nuevo
popover_select_custom = Seleccionar personalizado
popover_unselect_custom = Deseleccionar personalizado
popover_select_all_images_except_biggest = Seleccionar todo excepto mayor
@ -388,8 +405,11 @@ progress_scanning_image = Hash de { $file_checked }/{ $all_files } imagen
progress_comparing_image_hashes = Comparando hash de imagen { $file_checked }/{ $all_files }
progress_scanning_music_tags_end = Comparando etiquetas de { $file_checked }/{ $all_files } archivo de música
progress_scanning_music_tags = Leyendo etiquetas del archivo de música { $file_checked }/{ $all_files }
progress_scanning_music_content_end = Comparando huella dactilar de { $file_checked }/{ $all_files } archivo de música
progress_scanning_music_content = Calculando huella dactilar de { $file_checked }/{ $all_files } archivo de música
progress_scanning_empty_folders = Escaneando carpeta { $folder_number }
progress_scanning_size = Escaneando tamaño del archivo { $file_number }
progress_scanning_size_name = Escaneando nombre y tamaño del archivo { $file_number }
progress_scanning_name = Escaneando nombre del archivo { $file_number }
progress_analyzed_partial_hash = Has analizado el hash parcial de { $file_checked }/{ $all_files } archivos
progress_analyzed_full_hash = Se ha analizado el hash completo de { $file_checked }/{ $all_files } archivos

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Débit binaire
music_genre_checkbox = Genre
music_length_checkbox = Longueur
music_comparison_checkbox = Comparaison approximative
music_checking_by_tags = Tags
music_checking_by_content = Contenus
same_music_seconds_label = Durée minimale de seconde de fragment
same_music_similarity_label = Différence maximale
same_music_tooltip =
La recherche de fichiers de musique similaires par son contenu peut être configurée par la configuration :
- Le temps de fragment minimum après lequel les fichiers musicaux peuvent être identifiés comme similaires
- La différence maximale entre deux fragments testés
La clé de bons résultats est de trouver des combinaisons sensées de ces paramètres, pour ce qui est fourni.
En fixant le temps minimum à 5 secondes et la différence maximale à 1.0, cherchera des fragments presque identiques dans les fichiers.
Un temps de 20 secondes et une différence maximale de 6.0, d'autre part, fonctionne bien pour trouver des remixes/versions live, etc.
Par défaut, chaque fichier de musique est comparé l'un à l'autre et cela peut prendre beaucoup de temps lors du test de plusieurs fichiers, donc il est généralement préférable d'utiliser des dossiers de référence et de spécifier quels fichiers doivent être comparés les uns avec les autres (avec la même quantité de fichiers, la comparaison des empreintes digitales sera plus rapide au moins 4x que sans dossier de référence).
music_comparison_checkbox_tooltip =
Il recherche des fichiers de musique similaires à laide dune intelligence artificielle, qui utilise le machine learning pour supprimer les parenthèses dune phrase, par exemple avec cette option activée, les fichiers en question seront considérés comme des doublons :
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Lorsqu'il est activé, ne grouper que les enregistrements quand ils ont exactement le même nom (p. ex. Żołd <-> Żołd
Désactiver cette option va regrouper les noms sans vérifier si chaque lettre a la même taille, par exemple żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Taille et nom
duplicate_mode_name_combo_box = Nom
duplicate_mode_size_combo_box = Taille
duplicate_mode_hash_combo_box = Hachage
@ -388,8 +405,11 @@ progress_scanning_image = Hachage de l'image { $file_checked }/{ $all_files }
progress_comparing_image_hashes = Comparaison du hachage de l'image { $file_checked }/{ $all_files }
progress_scanning_music_tags_end = Comparaison des tags du fichier de musique { $file_checked }/{ $all_files }
progress_scanning_music_tags = Lecture des balises du fichier de musique { $file_checked }/{ $all_files }
progress_scanning_music_content_end = Comparaison de l'empreinte digitale du fichier de musique { $file_checked }/{ $all_files }
progress_scanning_music_content = Calcul de l'empreinte digitale du fichier de musique { $file_checked }/{ $all_files }
progress_scanning_empty_folders = Analyse du dossier { $folder_number }
progress_scanning_size = Analyse de la taille du fichier { $file_number }
progress_scanning_size_name = Analyse du nom et de la taille du fichier { $file_number }
progress_scanning_name = Analyse du nom du fichier { $file_number }
progress_analyzed_partial_hash = Hash partiel analysé des fichiers { $file_checked }/{ $all_files }
progress_analyzed_full_hash = Hash complet analysé des fichiers { $file_checked }/{ $all_files }

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Bitrate
music_genre_checkbox = Genere
music_length_checkbox = Durata
music_comparison_checkbox = Confronto approssimativo
music_checking_by_tags = Etichette
music_checking_by_content = Contenuto
same_music_seconds_label = Durata minima del frammento
same_music_similarity_label = Differenza massima
same_music_tooltip =
La ricerca di file musicali simili dal suo contenuto può essere configurata impostando:
- Il tempo minimo di frammento dopo il quale i file musicali possono essere identificati come simili
- La differenza massima tra due frammenti testati
La chiave per ottenere buoni risultati è trovare combinazioni sensate di questi parametri, per fornito.
Impostando il tempo minimo a 5s e la differenza massima a 1.0, cercherà frammenti quasi identici nei file.
Un tempo di 20 anni e una differenza massima di 6.0, d'altra parte, funziona bene per trovare remix/versioni live ecc.
Per impostazione predefinita, ogni file musicale viene confrontato tra loro e questo può richiedere molto tempo quando si testano molti file, quindi è di solito meglio usare le cartelle di riferimento e specificare quali file devono essere confrontati tra loro (con la stessa quantità di file, il confronto delle impronte digitali sarà più veloce di almeno 4x che senza cartelle di riferimento).
music_comparison_checkbox_tooltip =
Cerca file musicali simili usando l'IA, che utilizza l'apprendimento automatico per rimuovere parentesi da una frase. Ad esempio, con questa opzione abilitata, i file in questione saranno considerati duplicati:
@ -22,6 +38,7 @@ duplicate_case_sensitive_name = Case Sensitive
duplicate_case_sensitive_name_tooltip =
Se abilitato, raggruppa solo i record quando hanno esattamente lo stesso nome, ad es. Żołd <-> Żołd
La disattivazione di tale opzione raggrupperà i nomi senza controllare se ogni lettera ha le stesse dimensioni, ad esempio żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Dimensione e nome
duplicate_mode_name_combo_box = Nome
duplicate_mode_size_combo_box = Dimensione
duplicate_mode_hash_combo_box = Hash
@ -387,8 +404,11 @@ progress_scanning_image = Hashing di { $file_checked }/{ $all_files } image
progress_comparing_image_hashes = Confrontando { $file_checked }/{ $all_files } hash delle immagini
progress_scanning_music_tags_end = Confrontando le etichette di { $file_checked }/{ $all_files } file musicali
progress_scanning_music_tags = Leggendo le etichette di { $file_checked }/{ $all_files } file musicali
progress_scanning_music_content_end = Confronto delle impronte digitali di { $file_checked }/{ $all_files } file musicale
progress_scanning_music_content = Calcolo dell'impronta digitale di { $file_checked }/{ $all_files } file musicale
progress_scanning_empty_folders = Verificando { $folder_number } cartelle
progress_scanning_size = Leggendo le dimensioni di { $file_number } file
progress_scanning_size_name = Scansione nome e dimensione del file { $file_number }
progress_scanning_name = Leggendo il nome di { $file_number } file
progress_analyzed_partial_hash = Analizzato gli hash parziali di { $file_checked }/{ $all_files } file
progress_analyzed_full_hash = Analizzato gli hash completi di { $file_checked }/{ $all_files } file

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = ビットレート
music_genre_checkbox = ジャンル
music_length_checkbox = 長さ
music_comparison_checkbox = おおよその比較
music_checking_by_tags = タグ
music_checking_by_content = コンテンツ
same_music_seconds_label = フラグメント最小秒の持続時間
same_music_similarity_label = 最大差
same_music_tooltip =
Searching for similar music files by its content can be configured by setting:
- The minimum fragment time after which music files can be identified as similar
- The maximum difference difference between two tested fragments
The key to good results is to find sensible combinations of these parameters, for provided.
Setting the minimum time to 5s and the maximum difference to 1.0, will look for almost identical fragments in the files.
A time of 20s and a maximum difference of 6.0, on the other hand, works well for finding remixes/live versions etc.
By default, each music file is compared to each other and this can take a lot of time when testing many files, so it is usually better to use reference folders and specifying which files are to be compared with each other(with same amount of files, comparing fingerprints will be faster at least 4x than without reference folders).
music_comparison_checkbox_tooltip =
機械学習によりフレーズから括弧とその中身を除外するAIを使用して、類似の音楽ファイルを検索します。このオプションが有効な場合、例えば以下のファイルは重複とみなされます:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
有効な場合、グループのみレコードまったく同じ名前を持っている場合など。 Z<unk> ołd <-> Z<unk> ołd
このようなオプションを無効にすると、各文字のサイズが同じかどうかを確認せずに名前をグループ化します。例: z<unk> o<unk> D <-> Z<unk> ołd
duplicate_mode_size_name_combo_box = サイズと名前
duplicate_mode_name_combo_box = 名前
duplicate_mode_size_combo_box = サイズ
duplicate_mode_hash_combo_box = ハッシュ
@ -388,8 +405,11 @@ progress_scanning_image = { $file_checked }/{ $all_files } の画像のハッシ
progress_comparing_image_hashes = { $file_checked }/{ $all_files } 画像ハッシュの比較
progress_scanning_music_tags_end = { $file_checked }/{ $all_files } 音楽ファイルのタグの比較
progress_scanning_music_tags = { $file_checked }/{ $all_files } 音楽ファイルのタグを読み込み中
progress_scanning_music_content_end = { $file_checked }/{ $all_files } 音楽ファイルのフィンガープリントの比較
progress_scanning_music_content = { $file_checked }/{ $all_files } 音楽ファイルのフィンガープリントを計算中
progress_scanning_empty_folders = { $folder_number } フォルダをスキャン中
progress_scanning_size = { $file_number } ファイルのサイズをスキャン中
progress_scanning_size_name = 名前と { $file_number } ファイルのサイズをスキャンしています
progress_scanning_name = { $file_number } ファイルの名前をスキャン中
progress_analyzed_partial_hash = { $file_checked }/{ $all_files } ファイルの部分ハッシュを分析中
progress_analyzed_full_hash = { $file_checked }/{ $all_files } ファイルの完全ハッシュを分析中

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = 비트레이트
music_genre_checkbox = 장르
music_length_checkbox = 길이
music_comparison_checkbox = 근사값 비교
music_checking_by_tags = Tags
music_checking_by_content = Content
same_music_seconds_label = Minimal fragment second duration
same_music_similarity_label = Maximum difference
same_music_tooltip =
Searching for similar music files by its content can be configured by setting:
- The minimum fragment time after which music files can be identified as similar
- The maximum difference difference between two tested fragments
The key to good results is to find sensible combinations of these parameters, for provided.
Setting the minimum time to 5s and the maximum difference to 1.0, will look for almost identical fragments in the files.
A time of 20s and a maximum difference of 6.0, on the other hand, works well for finding remixes/live versions etc.
By default, each music file is compared to each other and this can take a lot of time when testing many files, so it is usually better to use reference folders and specifying which files are to be compared with each other(with same amount of files, comparing fingerprints will be faster at least 4x than without reference folders).
music_comparison_checkbox_tooltip =
기계학습을 통해 각 항목의 괄호를 제거합니다. 예를 들어, 다음 두 파일은 같은 파일로 인식될 것입니다.
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
대소문자 구분이 켜져 있으면, 완전히 같은 이름만이 중복 파일로 검색됩니다. 예시: Żołd <-> Żołd
대소문자 구분이 꺼져 있으면, 대문자와 소문자 구별을 하지 않고 중복 파일을 검색합니다. 예시: żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Size and Name
duplicate_mode_name_combo_box = 파일명
duplicate_mode_size_combo_box = 파일 크기
duplicate_mode_hash_combo_box = 해시
@ -230,15 +247,15 @@ bottom_hardlink_button_tooltip =
그룹 내에서 최소한 2개의 파일이 선택되어 있어야 합니다.
첫 번째 파일은 그대로 남으며, 두 번째 이후 파일은 첫 번째 파일로 향하는 하드 링크가 됩니다.
bottom_hardlink_button_not_available_tooltip =
Create hardlinks.
Button is disabled, because hardlinks cannot be created.
Hardlinks only works with administrator privileges on Windows, so be sure to run app as administrator.
If app already works with such privileges check for similar issues on Github.
하드 링크를 생성합니다.
현재 하드 링크를 만들 수 없어 버튼이 비활성화되었습니다.
Windows에서 하드 링크는 관리자 권한으로만 만들 수 있습니다. 프로그램이 관리자 권한으로 실행되었는지 확인하세요.
만일 프로그램이 이미 관리자 권한으로 실행되었다면, Github에서 비슷한 이슈가 있는지 확인해보세요.
bottom_move_button_tooltip =
선택된 디렉터리로 파일을 이동합니다.
이 동작은 원본이 위치한 경로를 전부 무시하고, 선택한 경로로 파일을 전부 복사합니다.
만일 2개 이상의 파일이 같은 이름을 가지고 있다면, 첫 번째 이후의 파일은 복사에 실패하고 오류 메시지를 보여줄 것입니다.
bottom_sort_button_tooltip = Sorts files/folders according to selected method.
bottom_sort_button_tooltip = 파일/폴더를 선택한 방법으로 정렬합니다.
bottom_show_errors_tooltip = 하단 텍스트 패널을 보이거나 숨깁니다.
bottom_show_upper_notebook_tooltip = 상단 패널을 보이거나 숨깁니다.
# Progress Window
@ -262,9 +279,9 @@ header_about_button_tooltip = 이 앱에 대한 정보창을 엽니다.
## General
settings_number_of_threads = Number of used threads
settings_number_of_threads_tooltip = Number of used threads, 0 means that all available threads will be used.
settings_label_restart = You need to restart app to apply settings!
settings_number_of_threads = 스레드 수
settings_number_of_threads_tooltip = 사용할 스레드 수입니다. 0이면 가능한 최대 스레드를 사용합니다.
settings_label_restart = 이 설정을 적용하려면 프로그램을 재시작해야 합니다!
settings_ignore_other_filesystems = 다른 파일시스템 무시(Linux에서만)
settings_ignore_other_filesystems_tooltip =
검색할 디렉터리와 파일시스템이 다른 디렉터리를 무시합니다.
@ -280,7 +297,7 @@ settings_confirm_link_button_tooltip = 하드 링크/심볼릭 링크 버튼을
settings_confirm_group_deletion_button_tooltip = 그룹의 모든 항목을 삭제할 경우 경고창을 보여줍니다.
settings_show_text_view_button_tooltip = UI 하단에 텍스트 패널을 보여줍니다.
settings_use_cache_button_tooltip = 파일 캐시를 사용합니다.
settings_save_also_as_json_button_tooltip = 캐시를 사람이 읽을 수 있도록 JSON 포맥으로 저장합니다. 캐시 내용을 수정할 수 있습니다. 만일 bin 확장자를 가진 바이너리 캐시 파일이 없으면, JSON 캐시가 프로그램 시작 시에 대신 로드됩니다.
settings_save_also_as_json_button_tooltip = 캐시를 (사람이 읽을 수 있는) JSON 포맷으로 저장합니다. 캐시 내용을 수정할 수 있습니다. 만일 bin 확장자를 가진 바이너리 캐시 파일이 없으면, JSON 캐시가 프로그램 시작 시에 대신 로드됩니다.
settings_use_trash_button_tooltip = 파일을 영구 삭제하는 대신 휴지통으로 이동합니다.
settings_language_label_tooltip = UI에 표시될 언어를 설정합니다.
settings_save_at_exit_button = 프로그램을 닫을 때 설정을 저장
@ -386,8 +403,11 @@ progress_scanning_image = { $file_checked }/{ $all_files }개 이미지 해시
progress_comparing_image_hashes = { $file_checked }/{ $all_files }개 이미지 해시 비교 중
progress_scanning_music_tags_end = { $file_checked }/{ $all_files }개 음악 파일 태그 검색 중
progress_scanning_music_tags = { $file_checked }/{ $all_files }개 음악 파일 태그 읽는 중
progress_scanning_music_content_end = Comparing fingerprint of { $file_checked }/{ $all_files } music file
progress_scanning_music_content = Calculating fingerprint of { $file_checked }/{ $all_files } music file
progress_scanning_empty_folders = { $folder_number }개 폴더 검색 중
progress_scanning_size = { $file_number }개 파일의 크기 스캔 중
progress_scanning_size_name = Scanning name and size of { $file_number } file
progress_scanning_name = { $file_number }개 파일의 이름 스캔 중
progress_analyzed_partial_hash = { $file_checked }/{ $all_files }개 파일의 부분 해시 계산 중
progress_analyzed_full_hash = { $file_checked }/{ $all_files }개 파일의 전체 해시 계산 중

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Bitrate
music_genre_checkbox = Sjanger
music_length_checkbox = Lengde
music_comparison_checkbox = Omtrentlig sammenligning
music_checking_by_tags = Tagger
music_checking_by_content = Innhold
same_music_seconds_label = Minste fragment andre varighet
same_music_similarity_label = Maksimal differanse
same_music_tooltip =
Søker etter lignende musikkfiler av innholdet kan konfigureres ved å gå inn:
- Minimumsfragmenteringstiden etter hvilken musikkfiler som kan identifiseres som lignende
- Maksimal forskjell mellom to testede fragmenter
Nøkkelen til gode resultater er å finne fornuftige kombinasjoner av disse parametrene, for utlevert.
Angir minimum tid til 5 s og maksimal forskjell til 1,0, vil se etter nesten identiske fragmenter i filene.
En tid på 20 s og en maksimal forskjell på 6.0, for den andre siden fungerer bra for å finne remikser/levende versjoner osv.
Som standard kan hver musikkfil sammenlignes med hverandre, og dette kan ta mye tid når du tester mange filer, slik at det vanligvis er bedre å bruke referanselapper og spesifisere hvilke filer som skal sammenlignes med hverandre (med samme mengde filer, å sammenligne fingeravtrykk vil være raskere minst 4 x enn uten referansemapper).
music_comparison_checkbox_tooltip =
Den søker etter lignende musikkfiler ved hjelp av AI, som bruker maskiner til å fjerne parenteser fra et frase. For eksempel, med dette alternativet er aktivert. filene du vil bli betraktet som duplikater:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Når aktivert, vil du bare gruppere når de har nøyaktig samme navn, f.eks. Żołd <-> Żołd
Deaktivering av en slik opsjon vil gi deg egne navn uten å sjekke om hver bokstav er like stort, f.eks. żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Størrelse og navn
duplicate_mode_name_combo_box = Navn
duplicate_mode_size_combo_box = Størrelse
duplicate_mode_hash_combo_box = Hash
@ -388,8 +405,11 @@ progress_scanning_image = Hashing av { $file_checked }/{ $all_files } bilde
progress_comparing_image_hashes = Sammenligner { $file_checked }/{ $all_files } bilde-hash
progress_scanning_music_tags_end = Sammenligner tagger med { $file_checked }/{ $all_files } musikkfil
progress_scanning_music_tags = Leser tagger på { $file_checked }/{ $all_files } musikkfil
progress_scanning_music_content_end = Sammenligner fingeravtrykk på { $file_checked }/{ $all_files } musikkfil
progress_scanning_music_content = Beregner fingeravtrykk på { $file_checked }/{ $all_files } musikkfil
progress_scanning_empty_folders = Skanner { $folder_number } mappe
progress_scanning_size = Skanner størrelse på { $file_number } fil
progress_scanning_size_name = Skanning av navn og størrelse på { $file_number } fil
progress_scanning_name = Skanning av navn på { $file_number } fil
progress_analyzed_partial_hash = Analyserte delvis hash med { $file_checked }/{ $all_files } filer
progress_analyzed_full_hash = Analyserte full hash med { $file_checked }/{ $all_files } filer

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Bitrate
music_genre_checkbox = Gatunek
music_length_checkbox = Długość
music_comparison_checkbox = Przybliżone Porównywanie
music_checking_by_tags = Tagi
music_checking_by_content = Zawartość
same_music_seconds_label = Minimalny fragment drugi czas trwania
same_music_similarity_label = Maksymalna różnica
same_music_tooltip =
Wyszukiwanie podobnych plików muzycznych przez jego zawartość można skonfigurować przez ustawienie:
- Minimalny czas fragmentu, po którym pliki muzyczne mogą być zidentyfikowane jako podobne
- Maksymalna różnica między dwoma testowanymi fragmentami
Kluczem do dobrych wyników jest znalezienie rozsądnych kombinacji tych parametrów, do dostarczania.
Ustawianie minimalnego czasu na 5s i maksymalnej różnicy na 1.0, będzie szukać prawie identycznych fragmentów w plikach.
Czas 20s i maksymalna różnica 6.0, z drugiej strony, dobrze działa w poszukiwaniu remiksów/wersji na żywo itp.
Domyślnie każdy plik muzyczny jest porównywany ze sobą, co może zająć dużo czasu podczas testowania wielu plików, więc zwykle lepiej jest używać folderów referencyjnych i określać, które pliki mają być porównywane ze sobą (z taką samą ilością plików, porównywanie odcisków palców będzie szybsze niż bez folderów referencyjnych).
music_comparison_checkbox_tooltip =
Wyszukuje podobne pliki muzyczne za pomocą AI, która używa nauki maszynowej, aby usunąć nawiasy z frazy. Na przykład, z tą opcją włączoną, rozpatrywane pliki będą traktowane jako duplikaty:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Gdy włączone, grupowe rekordy tylko wtedy, gdy mają dokładnie taką samą nazwę, np. Żołd <-> Żołd
Wyłączenie tej opcji spowoduje grupowanie nazw bez sprawdzania, czy każda litera ma ten sam rozmiar, np. żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Rozmiar i nazwa
duplicate_mode_name_combo_box = Nazwa
duplicate_mode_size_combo_box = Rozmiar
duplicate_mode_hash_combo_box = Hash
@ -388,8 +405,11 @@ progress_scanning_image = Hashowanie { $file_checked }/{ $all_files } obrazu
progress_comparing_image_hashes = Porównywanie { $file_checked }/{ $all_files } hashu obrazu
progress_scanning_music_tags_end = Porównywanie tagów { $file_checked }/{ $all_files } pliku audio
progress_scanning_music_tags = Sczytywanie tagów { $file_checked }/{ $all_files } pliku audio
progress_scanning_music_content_end = Porównywanie odcisku palca { $file_checked }/{ $all_files } pliku muzycznego
progress_scanning_music_content = Obliczanie odcisku palca { $file_checked }/{ $all_files } pliku muzycznego
progress_scanning_empty_folders = Przeszukiwanie { $folder_number } folderu
progress_scanning_size = Sprawdzanie rozmiaru { $file_number } pliku
progress_scanning_size_name = Skanowanie nazwy i rozmiaru pliku { $file_number }
progress_scanning_name = Sprawdzanie nazwy { $file_number } pliku
progress_analyzed_partial_hash = Obliczanie częściowego hashu { $file_checked }/{ $all_files } pliku
progress_analyzed_full_hash = Obliczanie pełnego hashu { $file_checked }/{ $all_files } pliku

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Taxa de bits
music_genre_checkbox = Género
music_length_checkbox = Comprimento
music_comparison_checkbox = Comparação aproximada
music_checking_by_tags = Etiquetas
music_checking_by_content = Conteúdo
same_music_seconds_label = Duração mínima do fragmento segundo tempo
same_music_similarity_label = Diferença máxima
same_music_tooltip =
Procurar por arquivos de música semelhantes por seu conteúdo pode ser configurado pela configuração:
- Tempo mínimo de fragmento depois do qual os arquivos de música podem ser identificados como semelhantes
- A diferença máxima entre dois fragmentos testados
A chave para bons resultados é encontrar combinações sensíveis desses parâmetros, para fornecido.
Definir o tempo mínimo para 5s e a diferença máxima para 1.0, irá procurar fragmentos quase idênticos nos arquivos.
Um tempo de 20s e uma diferença máxima de 6.0, por outro lado, funciona bem para encontrar versões remixes/ao vivo, etc.
Por padrão, cada arquivo de música é comparado entre si, e isso pode levar muito tempo para testar muitos arquivos, portanto, é geralmente melhor usar pastas de referência e especificar quais arquivos devem ser comparados (com a mesma quantidade de arquivos, A comparação de impressões digitais será mais rápida pelo menos 4 vezes do que nas pastas de referência).
music_comparison_checkbox_tooltip =
Ele busca arquivos de música semelhantes usando IA, que usa aprendizado de máquina para remover parênteses duma frase. Por exemplo, com esta opção ativada, os arquivos em questão serão considerados duplicatas:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Quando ativado, o grupo só registra quando eles têm o mesmo nome, por exemplo, Żołd <-> Żołd
Desativar esta opção agrupará os nomes sem verificar se cada letra é do mesmo tamanho, por exemplo, żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Tamanho e Nome
duplicate_mode_name_combo_box = Nome
duplicate_mode_size_combo_box = Tamanho
duplicate_mode_hash_combo_box = Hash
@ -385,8 +402,11 @@ progress_scanning_image = Hash de { $file_checked }/{ $all_files } imagem
progress_comparing_image_hashes = Comparando de { $file_checked }/{ $all_files } hash de imagem
progress_scanning_music_tags_end = Comparando etiquetas de { $file_checked }/{ $all_files } arquivo de música
progress_scanning_music_tags = Lendo etiquetas de { $file_checked }/{ $all_files } arquivo de música
progress_scanning_music_content_end = Comparação de impressão digital de { $file_checked }/{ $all_files } arquivo de música
progress_scanning_music_content = Calculando impressão digital de { $file_checked }/{ $all_files } arquivo de música
progress_scanning_empty_folders = Verificando { $folder_number } diretório
progress_scanning_size = Verificando tamanho de { $file_number } arquivo
progress_scanning_size_name = Verificando nome e tamanho de { $file_number } arquivo
progress_scanning_name = Verificando nome de { $file_number } arquivo
progress_analyzed_partial_hash = Hash parcial analisado de { $file_checked }/{ $all_files } arquivos
progress_analyzed_full_hash = Hash completo analisado de { $file_checked }/{ $all_files } arquivos

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Битрейт
music_genre_checkbox = Жанр
music_length_checkbox = Длительность
music_comparison_checkbox = Приблизительное сравнение
music_checking_by_tags = Теги
music_checking_by_content = Содержание
same_music_seconds_label = Минимальная длительность второго фрагмента
same_music_similarity_label = Максимальная разница
same_music_tooltip =
Поиск похожих музыкальных файлов по его содержимому может быть настроен с помощью настройки:
- Минимальное время фрагмента, после которого музыкальные файлы можно определить как похожие
- Максимальная разница между двумя проверенными фрагментами
Ключ к хорошим результатам - найти разумные комбинации этих параметров, для предоставленных.
Установка минимального времени на 5 секунд, а максимальная разница в 1.0, будет искать практически идентичные фрагменты файлов.
Время 20 секунд и максимальная разница в 6,0, с другой стороны, хорошо подходит для поиска ремиксов/версий и т.д.
По умолчанию, каждый музыкальный файл сравнивается друг с другом, и это может занять много времени при тестировании множества файлов, поэтому обычно лучше использовать справочные папки и указать, какие файлы следует сравнивать друг с другом (одинаковое количество файлов), сравнение отпечатков пальцев будет быстрее по крайней мере на 4х, чем без ссылочных папок).
music_comparison_checkbox_tooltip =
Ищет похожие музыкальные файлы с помощью ИИ, использующего машинное обучение для удаления скобок из фраз. Например, если эта опция включена, следующие файлы будут считаться дубликатами:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
При включённой опции записи группируются, только если у них полностью совпадают имена с точностью до каждого символа. Например, «ХИТ Дискотека» не совпадёт с «хит дискотека».
При отключённой опции записи группируются вне зависимости от того, заглавные или строчные буквы использовались при написании. Например, «ХИТ Дискотека», «хит дискотека», «хИт ДиСкОтЕКа» будут эквивалентны.
duplicate_mode_size_name_combo_box = Размер и имя
duplicate_mode_name_combo_box = Имя
duplicate_mode_size_combo_box = Размер
duplicate_mode_hash_combo_box = Хэш
@ -312,7 +329,7 @@ settings_notebook_videos = Похожие видео
## Multiple - settings used in multiple tabs
settings_multiple_image_preview_checkbutton_tooltip = Показывать предварительный просмотр справа (при выборе файла изображения).
settings_multiple_image_preview_checkbutton = Предпросмотр изображения
settings_multiple_image_preview_checkbutton = Показывать предпросмотр изображения
settings_multiple_clear_cache_button_tooltip =
Очистка устаревших записей кэша вручную.
Следует использовать только в том случае, если автоматическая очистка отключена.
@ -388,8 +405,11 @@ progress_scanning_image = Хэширование изображения: { $file
progress_comparing_image_hashes = Сравнение хэша изображений: { $file_checked }/{ $all_files }
progress_scanning_music_tags_end = Сравнение тегов { $file_checked }/{ $all_files } музыкального файла
progress_scanning_music_tags = Чтение тэгов музыкальных файлов: { $file_checked }/{ $all_files }
progress_scanning_music_content_end = Сравнение отпечатка пальца из { $file_checked }/{ $all_files } музыкального файла
progress_scanning_music_content = Вычисление отпечатка пальца из { $file_checked }/{ $all_files } музыкального файла
progress_scanning_empty_folders = Сканирование папки { $folder_number }
progress_scanning_size = Сканирование размера файла { $file_number }
progress_scanning_size_name = Сканирование имени и размера файла { $file_number }
progress_scanning_name = Сканирование имени файла { $file_number }
progress_analyzed_partial_hash = Анализ частичного хэша файла { $file_checked }/{ $all_files }
progress_analyzed_full_hash = Анализ полного хэша файла { $file_checked }/{ $all_files }

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Bitrate
music_genre_checkbox = Genre
music_length_checkbox = Längd
music_comparison_checkbox = Ungefärlig jämförelse
music_checking_by_tags = Taggar
music_checking_by_content = Innehåll
same_music_seconds_label = Minsta fragment sekund varaktighet
same_music_similarity_label = Maximal skillnad
same_music_tooltip =
Sökning efter liknande musikfiler genom dess innehåll kan konfigureras genom att ställa in:
- Minsta fragmenttid efter vilken musikfiler kan identifieras som liknande
- Maximal skillnad mellan två testade fragment
Nyckeln till bra resultat är att hitta förnuftiga kombinationer av dessa parametrar, för tillhandahållen.
Att ställa in den minsta tiden till 5s och den maximala skillnaden till 1.0, kommer att leta efter nästan identiska fragment i filerna.
En tid på 20-talet och en maximal skillnad på 6,0, å andra sidan, fungerar bra för att hitta remixer/live-versioner etc.
Som standard jämförs varje musikfil med varandra och detta kan ta mycket tid vid testning av många filer, så är det oftast bättre att använda referensmappar och ange vilka filer som ska jämföras med varandra(med samma mängd filer, Att jämföra fingeravtryck kommer att vara snabbare minst 4x än utan referensmappar).
music_comparison_checkbox_tooltip =
Den söker efter liknande musikfiler med AI, som använder maskininlärning för att ta bort parenteser från en fras. Till exempel, med detta alternativ aktiverat, filerna i fråga kommer att betraktas som dubbletter:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
När detta är aktiverat spelar gruppen bara in när de har exakt samma namn t.ex. Żołd <-> Żołd
Inaktivera sådana alternativ kommer gruppnamn utan att kontrollera om varje bokstav är samma storlek t.ex. żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = Storlek och namn
duplicate_mode_name_combo_box = Namn
duplicate_mode_size_combo_box = Storlek
duplicate_mode_hash_combo_box = Hash
@ -388,8 +405,11 @@ progress_scanning_image = Hashning av { $file_checked }/{ $all_files } bild
progress_comparing_image_hashes = Jämföra { $file_checked }/{ $all_files } bildhash
progress_scanning_music_tags_end = Jämföra taggar för { $file_checked }/{ $all_files } musikfil
progress_scanning_music_tags = Lästaggar för { $file_checked }/{ $all_files } musikfil
progress_scanning_music_content_end = Jämföra fingeravtryck av { $file_checked }/{ $all_files } musikfil
progress_scanning_music_content = Beräknar fingeravtryck av { $file_checked }/{ $all_files } musikfil
progress_scanning_empty_folders = Skannar { $folder_number } mappen
progress_scanning_size = Skannar storleken på { $file_number } fil
progress_scanning_size_name = Skannar namn och storlek på { $file_number } fil
progress_scanning_name = Skannar namn på { $file_number } fil
progress_analyzed_partial_hash = Analyserade partiella hash av { $file_checked }/{ $all_files } filer
progress_analyzed_full_hash = Analyserad full hash av { $file_checked }/{ $all_files } filer

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Bit-hızı
music_genre_checkbox = Müzik Türü
music_length_checkbox = Uzunluk
music_comparison_checkbox = Yaklaşık Karşılaştırma
music_checking_by_tags = Tags
music_checking_by_content = Content
same_music_seconds_label = Minimal fragment second duration
same_music_similarity_label = Maximum difference
same_music_tooltip =
Searching for similar music files by its content can be configured by setting:
- The minimum fragment time after which music files can be identified as similar
- The maximum difference difference between two tested fragments
The key to good results is to find sensible combinations of these parameters, for provided.
Setting the minimum time to 5s and the maximum difference to 1.0, will look for almost identical fragments in the files.
A time of 20s and a maximum difference of 6.0, on the other hand, works well for finding remixes/live versions etc.
By default, each music file is compared to each other and this can take a lot of time when testing many files, so it is usually better to use reference folders and specifying which files are to be compared with each other(with same amount of files, comparing fingerprints will be faster at least 4x than without reference folders).
music_comparison_checkbox_tooltip =
Yapay zeka kullanarak benzer müzik dosyalarını arar.
Örneğin, bir tümcenin parantezlerini kaldırmak için makine öğrenimini kullanır.
@ -31,9 +47,10 @@ duplicate_case_sensitive_name_tooltip =
denetlemeden aynı adları eşleyip grup oluşturur.
fatih.kavalci <--> FatiH.KaVaLCi
duplicate_mode_size_name_combo_box = Size and Name
duplicate_mode_name_combo_box = Ad Karşılaştırma
duplicate_mode_size_combo_box = Boyut Karşılaştırma
duplicate_mode_hash_combo_box = SUÇ (hash) Karşılaştırma
duplicate_mode_hash_combo_box = Özet Değeri
duplicate_hash_type_tooltip =
Czkawka, 3 tür Sabit Uzunlukta Çıktı (SUÇ) üretimi sunar:
@ -82,7 +99,7 @@ image_resize_filter_tooltip =
8x8 boyutluk SURÇ üretimi ile daha iyi eşleştirilmiş resim gruplarına sahip olmak için
Nearest'ten farklı bir algoritma kullanmanız önerilir.
image_hash_alg_tooltip =
Kullanıcılar, SURÇ oluşturmanın birçok algoritmasından birini seçebilir.
Kullanıcılar, SUÇ oluşturmanın birçok algoritmasından birini seçebilir.
Her birinin hem güçlü hem de zayıf noktaları vardır ve farklı görüntüler için
bazen daha iyi, bazen daha kötü sonuçlar verir. Bu nedenle, size göre en iyisini belirlemek için
elle test gereklidir.
@ -268,7 +285,7 @@ bottom_move_button_tooltip =
Dosyaları seçilen dizine taşır.
Dizin ağacını korumadan tüm dosyaları dizine taşır.
Aynı ada sahip iki dosyayı klasöre taşımaya çalışırken, ikincisi başarısız olur ve hata gösterir.
bottom_sort_button_tooltip = Sorts files/folders according to selected method.
bottom_sort_button_tooltip = Dosyaları/Dizinleri seçilen metoda göre sırala.
bottom_show_errors_tooltip = Alt çıktı panelini göster/gizle.
bottom_show_upper_notebook_tooltip = Üst denetim panelini göster/gizle.
# Progress Window
@ -430,8 +447,11 @@ progress_scanning_image = { $file_checked }/{ $all_files } resmin SURÇ kaydı o
progress_comparing_image_hashes = { $file_checked }/{ $all_files } resim SURÇ kaydı karşılaştırıldı.
progress_scanning_music_tags_end = { $file_checked }/{ $all_files } müzik dosyasının etiketleri karşılaştırıldı.
progress_scanning_music_tags = { $file_checked }/{ $all_files } müzik dosyasının etiketleri okundu.
progress_scanning_music_content_end = Comparing fingerprint of { $file_checked }/{ $all_files } music file
progress_scanning_music_content = Calculating fingerprint of { $file_checked }/{ $all_files } music file
progress_scanning_empty_folders = { $folder_number } klasör tarandı.
progress_scanning_size = { $file_number } dosyanın boyutu tarandı.
progress_scanning_size_name = Scanning name and size of { $file_number } file
progress_scanning_name = { $file_number } dosyanın adı tarandı.
progress_analyzed_partial_hash = { $file_checked }/{ $all_files } dosyanın kısmi-SUÇ kaydı analiz edildi. ;-)
progress_analyzed_full_hash = { $file_checked }/{ $all_files } dosyanın tam SUÇ kaydı analiz edildi. ;-)

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = Бітрейт
music_genre_checkbox = Жанр
music_length_checkbox = Тривалість
music_comparison_checkbox = Приблизне порівняння
music_checking_by_tags = Мітки
music_checking_by_content = Зміст
same_music_seconds_label = Мінімальна тривалість фрагменту
same_music_similarity_label = Максимальна різниця
same_music_tooltip =
Пошук подібних музичних файлів за його вмістом може бути налаштований за налаштуванням:
- Мінімальний час фрагменту, після якого музичні файли можна визначити як схожий
- Максимальна різниця між двома тестовими фрагментами
—Що ключові з хороших результатів - знайти розумні комбінації цих параметрів, за умов.
Встановлення мінімального часу на 5 сек і максимальна різниця складає 1.0, буде шукати майже однакові фрагменти у файлах.
Час 20 і максимальна різниця в 6.0, з іншого боку, добре працює для пошуку реміксиксів/живу версії і т. д.
За замовчуванням, кожен музичний файл порівнюється один з одним, і це може зайняти багато часу при тестуванні багатьох файлів, так що використовувати референтні папки і вказати, які файли слід порівнювати один з одним (з тією ж кількістю файлів, порівняння відбитків пальців буде швидше 4x, ніж без стандартних папок).
music_comparison_checkbox_tooltip =
Шукає схожі музичні файли за допомогою ШІ, що використовує машинне навчання для видалення дужок із фраз. Наприклад, якщо ця опція увімкнена, наступні файли будуть вважатися дублікатами:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
Коли увімкнено, записи групуються, тільки якщо вони повністю збігаються імена з точністю до кожного символу. Наприклад, «ХІТ Дискотека» не збігається з "хіт дискотека".
Коли вимкнено, записи групуються незалежно від того, великі або малі літери використовувалися при написанні. Наприклад, «ХІТ Дискотека», «хіт дискотека», «хІт ДиСкОтЕКа» будуть еквівалентні.
duplicate_mode_size_name_combo_box = Розмір і ім'я
duplicate_mode_name_combo_box = Ім'я
duplicate_mode_size_combo_box = Розмір
duplicate_mode_hash_combo_box = Хеш
@ -388,8 +405,11 @@ progress_scanning_image = Хешування зображення: { $file_check
progress_comparing_image_hashes = Порівняння хешу зображення: { $file_checked }/{ $all_files }
progress_scanning_music_tags_end = Порівняння тегів музичного файлу: { $file_checked }/{ $all_files }
progress_scanning_music_tags = Читання тегів музичного файлу: { $file_checked }/{ $all_files }
progress_scanning_music_content_end = Порівняння відбитку пальця { $file_checked }/{ $all_files } музичного файлу
progress_scanning_music_content = Розрахунок відбитку пальця { $file_checked }/{ $all_files } музичного файлу
progress_scanning_empty_folders = Сканування теки { $folder_number }
progress_scanning_size = Сканування розміру файлу { $file_number }
progress_scanning_size_name = Сканування назви і розміру файлу { $file_number }
progress_scanning_name = Сканування імені файлу { $file_number }
progress_analyzed_partial_hash = Аналіз часткового хешу файлу { $file_checked }/{ $all_files }
progress_analyzed_full_hash = Аналіз повного хешу файлу { $file_checked }/{ $all_files }

View file

@ -14,6 +14,22 @@ music_bitrate_checkbox = 码率
music_genre_checkbox = 流派
music_length_checkbox = 长度
music_comparison_checkbox = 近似比较
music_checking_by_tags = 标签
music_checking_by_content = 内容
same_music_seconds_label = 最小碎片第二持续时间
same_music_similarity_label = 最大差异
same_music_tooltip =
通过设置搜索类似的音乐文件。
- 可以在最小的片段时间之后将音乐文件识别为相似
- 两个测试片段之间的最大差异
良好结果的关键是找到这些参数的合理组合, 提供的资料。
将最小时间设置为5秒最大差设置为1.0,将寻找文件中几乎相同的片段。
另一方面20秒和最大差6.0之间的时间对寻找混编/实时版本等非常有用。
默认情况下,每个音乐文件彼此比较,这可能需要很多时间来测试许多文件, 通常最好使用参考文件夹并指定哪些文件可以相互比较(文件数量相同) 比较指纹至少要比没有参考文件夹快4x)。
music_comparison_checkbox_tooltip =
它使用 AI搜索类似的音乐文件它使用机器学习从短语中删除括号。 例如,启用此选项, 所涉文件将被视为重复:
@ -23,6 +39,7 @@ duplicate_case_sensitive_name_tooltip =
启用时,仅当记录具有完全相同的名称时分组,例如 Żołd <-> Żołd
禁用这种选项将不会检查每封字母是否相同的大小,例如 żoŁD <-> Żołd
duplicate_mode_size_name_combo_box = 大小和名称
duplicate_mode_name_combo_box = 名称
duplicate_mode_size_combo_box = 大小
duplicate_mode_hash_combo_box = 哈希
@ -388,8 +405,11 @@ progress_scanning_image = 散列 { $file_checked }/{ $all_files } 图像
progress_comparing_image_hashes = 比较 { $file_checked }/{ $all_files } 图像哈希
progress_scanning_music_tags_end = 对比标签 { $file_checked }/{ $all_files } 音乐文件
progress_scanning_music_tags = 正在读取标签 { $file_checked }/{ $all_files } 音乐文件
progress_scanning_music_content_end = 比较指纹 { $file_checked }/{ $all_files } 音乐文件
progress_scanning_music_content = 正在计算指纹 { $file_checked }/{ $all_files } 音乐文件
progress_scanning_empty_folders = 正在扫描 { $folder_number } 文件夹
progress_scanning_size = 正在扫描文件大小 { $file_number }
progress_scanning_size_name = 扫描文件名和大小 { $file_number }
progress_scanning_name = 正在扫描 { $file_number } 文件的名称
progress_analyzed_partial_hash = 分析了 { $file_checked }/{ $all_files } 文件的部分哈希
progress_analyzed_full_hash = 分析了 { $file_checked }/{ $all_files } 文件的完整哈希值

View file

@ -11,6 +11,6 @@ This program is free to use and will always be.
<property name="license-type">mit-x11</property>
<property name="logo-icon-name">help-about-symbolic</property>
<property name="program-name">Czkawka</property>
<property name="version">5.1.0</property>
<property name="version">6.0.0</property>
</object>
</interface>

View file

@ -343,7 +343,7 @@
(3,1,"GtkAboutDialog","license-type","mit-x11",None,None,None,None,None),
(3,1,"GtkAboutDialog","logo-icon-name","help-about-symbolic",None,None,None,None,None),
(3,1,"GtkAboutDialog","program-name","Czkawka",None,None,None,None,None),
(3,1,"GtkAboutDialog","version","5.1.0",None,None,None,None,None),
(3,1,"GtkAboutDialog","version","6.0.0",None,None,None,None,None),
(4,2,"GtkOrientable","orientation","vertical",None,None,None,None,None),
(4,2,"GtkWidget","vexpand","1",None,None,None,None,None),
(4,4,"GtkLabel","label","Group XD/PER XD (99 images in current group)",1,None,None,None,None),
@ -682,7 +682,7 @@
(5,177,"GtkWidget","focusable","1",None,None,None,None,None),
(5,177,"GtkWidget","hexpand","1",None,None,None,None,None),
(5,178,"GtkEditable","editable","0",None,None,None,None,None),
(5,178,"GtkEditable","text","Czkawka 5.1.0",1,None,None,None,None),
(5,178,"GtkEditable","text","Czkawka 6.0.0",1,None,None,None,None),
(5,178,"GtkEditable","xalign","1",None,None,None,None,None),
(5,178,"GtkEntry","has-frame","0",None,None,None,None,None),
(5,178,"GtkWidget","focusable","1",None,None,None,None,None),

View file

@ -1149,7 +1149,7 @@
<property name="editable">0</property>
<property name="focusable">1</property>
<property name="has-frame">0</property>
<property name="text" translatable="yes">Czkawka 5.1.0</property>
<property name="text" translatable="yes">Czkawka 6.0.0</property>
<property name="xalign">1</property>
</object>
</child>

View file

@ -19,7 +19,7 @@
</screenshot>
</screenshots>
<releases>
<release version="5.1.0" date="2023-02-19"/>
<release version="6.0.0" date="2023-06-11"/>
</releases>
<content_rating type="oars-1.0"/>
<developer_name>Rafał Mikrut</developer_name>

View file

@ -85,7 +85,7 @@ Install the GUI version on Linux:
```shell
# download
curl --location https://github.com/qarmin/czkawka/releases/download/5.1.0/linux_czkawka_gui --output ~/.local/bin/linux_czkawka_gui
curl --location https://github.com/qarmin/czkawka/releases/download/6.0.0/linux_czkawka_gui --output ~/.local/bin/linux_czkawka_gui
# mark as executable
chmod +x ~/.local/bin/linux_czkawka_gui
# run

View file

@ -1,5 +1,5 @@
#!/bin/bash
NUMBER="5.1.0"
NUMBER="6.0.0"
CZKAWKA_PATH="/home/rafal"
cd "$CZKAWKA_PATH"

View file

@ -1,5 +1,5 @@
#!/bin/bash
NUMBER="5.1.0"
NUMBER="6.0.0"
CZKAWKA_PATH="/home/rafal"
cd "$CZKAWKA_PATH"

View file

@ -1,6 +1,6 @@
name: czkawka # you probably want to 'snapcraft register <name>'
base: core22 # the base snap is the execution environment for this snap
version: '5.1.0' # just for humans, typically '1.2+git' or '1.3.2'
version: '6.0.0' # just for humans, typically '1.2+git' or '1.3.2'
summary: Czkawka - fast data cleaner written in Rust # 79 char long summary
description: |
Czkawka is very fast and feature rich cleaner which finds file duplicates, empty folders and files, duplicated music, similar images or the biggest files in selected directories.