Удалить дубликаты фото

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
Друзья, помогите снипетом. Есть папка с фото, в ней могут быть одинаковые фото, но с разными названиями, нужно удалить дубликаты. Надо как то через MD5 реализовать, но как, чёт не соображу
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
 
  • Спасибо
Реакции: Igorii

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 983
Благодарностей
4 433
Баллы
113
Он же Зенкой хочет.
 
  • Спасибо
Реакции: Igorii

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
  • Спасибо
Реакции: Igorii

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
Решил вопрос на этапе скачивания фото в папку, с помощью чёрного списка:
После загрузки фото, получаю его md5 этим кодом:

var filePath = project.Variables["tmp"].Value;
using (var md5 = System.Security.Cryptography.MD5.Create())
{
using (var stream = File.OpenRead(filePath))
{
return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-",string.Empty);
}
}

За тем проверяю его наличие в чёрном списке, этим кодом:

IZennoList list = project.Lists["MD5"]; // список с именами
string str = project.Variables["md5"].Value; // переменная с текстом
if (list.Any(s => str.Contains(s)))
throw new Exception(); // выход по красной = пропуск

При наличии md5 в списке, удаляю фото с диска, при отсутствии, добавляю md5 в список.
После сохранения всех фото, очищаю список.

Может, кому пригодится)
 

Web

Client
Регистрация
03.10.2011
Сообщения
86
Благодарностей
5
Баллы
8
Решил вопрос на этапе скачивания фото в папку, с помощью чёрного списка:
После загрузки фото, получаю его md5 этим кодом:

var filePath = project.Variables["tmp"].Value;
using (var md5 = System.Security.Cryptography.MD5.Create())
{
using (var stream = File.OpenRead(filePath))
{
return BitConverter.ToString(md5.ComputeHash(stream)).Replace("-",string.Empty);
}
}

За тем проверяю его наличие в чёрном списке, этим кодом:

IZennoList list = project.Lists["MD5"]; // список с именами
string str = project.Variables["md5"].Value; // переменная с текстом
if (list.Any(s => str.Contains(s)))
throw new Exception(); // выход по красной = пропуск

При наличии md5 в списке, удаляю фото с диска, при отсутствии, добавляю md5 в список.
После сохранения всех фото, очищаю список.

Может, кому пригодится)

Можно это все подробнее объяснить? Как в зенку это запихнуть. В прогр. полный 0
Столкнулся с такой же проблемой, парсится куча дублей...
 

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
Можно это все подробнее объяснить? Как в зенку это запихнуть. В прогр. полный 0
Столкнулся с такой же проблемой, парсится куча дублей...
Так вроде ж подробно расписал, эти коды засунуть в кубики C#, в проекте должны быть соответствующие переменные и списки. После выполнения этих двух кубиков, в зависимости от результата, либо стандартным кубиком работы с файлами удаляем фото из папки, либо оставляем его
 
  • Спасибо
Реакции: Web

Web

Client
Регистрация
03.10.2011
Сообщения
86
Благодарностей
5
Баллы
8
Да, разобрался...
Но как быть с одинаковыми фото но разного размера, качества, зеркального отражения и т.п.
MD5 у них разное
 

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
Да, разобрался...
Но как быть с одинаковыми фото но разного размера, качества, зеркального отражения и т.п.
MD5 у них разное
Тут уже, наверное, нейросети надо подключать, хз
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
118
Баллы
43
Да, разобрался...
Но как быть с одинаковыми фото но разного размера, качества, зеркального отражения и т.п.
MD5 у них разное
через cli

для этой задачи существует так называемый перцептивный хэш, подробнее https://habr.com/ru/post/120562/

библиотека
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)