mirror of
https://github.com/JaCoB1123/dupe-finder.git
synced 2025-05-18 06:01:56 +02:00
Try to improve hashing and progress
This commit is contained in:
parent
f4f827b3e4
commit
fc2d1c0cb5
6
file.go
6
file.go
@ -54,21 +54,15 @@ func calculateImageHash(path string) (uint64, error) {
|
|||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
fmt.Println("jh:", path, err)
|
|
||||||
img, _, err := image.Decode(f)
|
img, _, err := image.Decode(f)
|
||||||
fmt.Println("oh:", path, err)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("kh:", path, err)
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
fmt.Println("lh:", path, err)
|
|
||||||
hash, err := goimagehash.DifferenceHash(img)
|
hash, err := goimagehash.DifferenceHash(img)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("mh:", path, err)
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("nh:", path, err)
|
|
||||||
fmt.Println(path, hash.ToString())
|
fmt.Println(path, hash.ToString())
|
||||||
return hash.GetHash(), nil
|
return hash.GetHash(), nil
|
||||||
}
|
}
|
||||||
|
36
filesmap.go
36
filesmap.go
@ -55,6 +55,8 @@ func (fm *FilesMap) FileHashingWorker(wg *sync.WaitGroup) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hash, err := calculateFileHash(file.path)
|
hash, err := calculateFileHash(file.path)
|
||||||
|
fm.hashingBar.IncrInt64(file.size)
|
||||||
|
fm.FilesHashed <- file
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error calculating Hash file for %s: %v\n", file.path, err)
|
log.Printf("Error calculating Hash file for %s: %v\n", file.path, err)
|
||||||
@ -62,8 +64,6 @@ func (fm *FilesMap) FileHashingWorker(wg *sync.WaitGroup) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
file.hash = hash
|
file.hash = hash
|
||||||
fm.hashingBar.IncrInt64(file.size)
|
|
||||||
fm.FilesHashed <- file
|
|
||||||
}
|
}
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}
|
}
|
||||||
@ -75,6 +75,9 @@ func (fm *FilesMap) ImageHashingWorker(wg *sync.WaitGroup) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hash, err := calculateImageHash(file.path)
|
hash, err := calculateImageHash(file.path)
|
||||||
|
fm.hashingBar.IncrInt64(file.size)
|
||||||
|
fm.ImagesHashed <- file
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error calculating Hash for image %s: %v\n", file.path, err)
|
log.Printf("Error calculating Hash for image %s: %v\n", file.path, err)
|
||||||
continue
|
continue
|
||||||
@ -101,8 +104,8 @@ func (fm *FilesMap) HashedWorker(done chan bool) {
|
|||||||
done <- true
|
done <- true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fm *FilesMap) WalkDirectories() int {
|
func (fm *FilesMap) WalkDirectories() int64 {
|
||||||
countFiles := 0
|
var countFiles int64 = 0
|
||||||
sumSize := int64(0)
|
sumSize := int64(0)
|
||||||
for _, path := range flag.Args() {
|
for _, path := range flag.Args() {
|
||||||
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
|
filepath.Walk(path, func(path string, info os.FileInfo, err error) error {
|
||||||
@ -115,14 +118,13 @@ func (fm *FilesMap) WalkDirectories() int {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("Walked past", path)
|
fm.hashImage(path, size)
|
||||||
|
count := fm.hashFile(path, size)
|
||||||
sumSize += size
|
sumSize += size * count
|
||||||
countFiles++
|
countFiles += count
|
||||||
fm.incomingBar.SetTotal(int64(countFiles), false)
|
fm.incomingBar.SetTotal(int64(countFiles), false)
|
||||||
fm.hashingBar.SetTotal(int64(sumSize), false)
|
fm.hashingBar.SetTotal(int64(sumSize), false)
|
||||||
fm.hashFile(path, size)
|
fmt.Printf("count: %d, size: %d\n", countFiles, sumSize)
|
||||||
fm.hashImage(path, size)
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -132,15 +134,11 @@ func (fm *FilesMap) WalkDirectories() int {
|
|||||||
return countFiles
|
return countFiles
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fm *FilesMap) hashFile(path string, size int64) {
|
func (fm *FilesMap) hashFile(path string, size int64) int64 {
|
||||||
prevFile, ok := fm.FilesBySize[size]
|
prevFile, ok := fm.FilesBySize[size]
|
||||||
if !ok {
|
if !ok {
|
||||||
fm.FilesBySize[size] = path
|
fm.FilesBySize[size] = path
|
||||||
return
|
return 0
|
||||||
}
|
|
||||||
|
|
||||||
if prevFile != "" {
|
|
||||||
fm.FilesHashing <- fileEntry{prevFile, size, ""}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fm.FilesBySize[size] = ""
|
fm.FilesBySize[size] = ""
|
||||||
@ -150,6 +148,12 @@ func (fm *FilesMap) hashFile(path string, size int64) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fm.FilesHashing <- fileEntry{path, size, ""}
|
fm.FilesHashing <- fileEntry{path, size, ""}
|
||||||
|
if prevFile != "" {
|
||||||
|
fm.FilesHashing <- fileEntry{prevFile, size, ""}
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (fm *FilesMap) hashImage(path string, size int64) {
|
func (fm *FilesMap) hashImage(path string, size int64) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user