Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Привет всем.

Шкурный вопрос.

Имеется директория с фотками. Снятая разными моделями цифровых мыльниц. Fuji, Canon, Olimpus и д.т. И мобилами.
DCS_0118.jpg
IMG_9234.jpg


И вобщем есть идея разложить их по каталогам по дате создания. Дату создания - брать из специальных
EXIF-тегов. Они хранятся в шапке файла. См.фрагмент под катом.

+
[ Exif IFD0 ] Date/Time = 306 (2013:08:29 21:09:06)
[ Exif IFD0 ] YCbCr Positioning = 531 (Datum point)
[ Exif IFD0 ] Related Image Width = 4097 (3264)
[ Exif IFD0 ] Related Image Height = 4098 (2176)


Хотелось-бы на выходе получить нечто вроде.

2013/01-20/2013-01-20_16.74_Canon_3264x2176.jpg
2010/03-30/2010-03-30_00.23_Fuji_2048x1536.jpg


В данной задаче я предполагаю что 99% всех фоток это именно jpg-формат. Другие как-то не представлены.
Да и соотв проблем с другими не будет в силу их ограниченного количества. Как-то так.

+
Подозреваю что кто-то уже находил готовый софт или что-то делал для себя. Но меня конечно будут интересовать
не готовые продукты а некие скрипты или код. В основном чтобы "подпилить под себя". Сделать требуемый
формат имени файла и разложить по годам или по месяцам. И добавить доп-инфо к имени. Каким снято
фотиком.


Вторичная задача - дедупликация. Хм... тоже немаловажно. Бывает - промахнешся и скопируешь тонну файлов.
А потом еще раз.

Реализация - на любом ЯП. С++/Python e.t.c. Конешно хотелось-бы чтоб на Windows и на Linux летало.

Go-go кодить! У меня пока еще своего решения нет. Так что... gogo!
13 фев 19, 00:29    [21807918]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Програмёр
Member

Откуда: Москва
Сообщений: 2995
Лень...

А задача вроде плёвая :) ставим какой-нить exiv2, например, и дальше дело техники: осталось распарсить строку и подставить полученные переменные по формату (то есть никакой фантазии, строго рутинная работа по парсингу строки и подгонке шаблонов). Да и у любого языка есть своя собственная либа для работы с exif тэгами :) Так что и тут всё просто.

Насчёт вторичной задачи, при такой ошибке копирования у каждой системы есть свои правила изменения имени (у меня вот добавляется "(копия)" к названию)... по указанному шаблону очень легко отслеживаются и удаляются все дубли, если названия исходных файлов однотипны, как у камеры, которая их генерирует автоматически. так что rm с нужным шаблоном решит проблему в 2 секунды :)
13 фев 19, 04:12    [21807955]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Посмотрел exiv2. Эта консольная тулза работает с 1 файлом. Маловато...

Gogo кодить!
13 фев 19, 09:29    [21808044]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18572
mayton
Вторичная задача - дедупликация. Хм... тоже немаловажно. Бывает - промахнешся и скопируешь тонну файлов.
А потом еще раз.
Программ поиска (и удаления) дубликатов - аки грязи.
mayton
Хотелось-бы на выходе получить нечто вроде.

Поиск по словам "export exif data to text file". Потом сливаешь любой подходящей тулзой в текстовый файл полное имя файла, размер, дату-время, прочее что надо. Обрабатываешь полученный список и строишь батч-файл переименования (элементарно делается в Excel). Выполняешь. Профит.
13 фев 19, 09:35    [21808054]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Dima T
Member

Откуда:
Сообщений: 13348
Если дата создания файла совпадает с датой съемки (обычно совпадает если позже фотка не корректировалась), то можно по дате создания распихать по подпапкам. Дату создания любым ЯП элементарно получить.

ИМХО имя файла нет смысла менять, оставь как есть, думаю ты не часто снимал разными девайсами в один день.
13 фев 19, 09:48    [21808065]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Изопропил
Member

Откуда:
Сообщений: 30985
mayton,

Exiftool адаптируй
13 фев 19, 09:53    [21808073]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Изопропил
Member

Откуда:
Сообщений: 30985
Насчёт дедупликации - каков критерий равенства каков?
13 фев 19, 10:01    [21808084]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Какой критерий?

Поскипаем пока делупликацию.

Залача-прим - разложить фотки по датам. При этом количество на входе и на выходе должно совпалать.
Файлы без exif даты - сложить в отдельный folder (unsorted).
13 фев 19, 10:48    [21808140]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
KpoxaPym
Member

Откуда: Москва
Сообщений: 1339
В общем-то тут и программу писать не надо. Совсем.

Поиск дубликатов - Auslogics Duplicate File Finder.

Переименование файлов кучей, Excel + Total Commander.

Для отображения EXIF-информации в Total Commander есть плагин, что ещё больше упрощает задачу.

P.S. Конкретно EXIF-плагин сам не использовал, всё остальное работает - быстро и удобно.
13 фев 19, 11:47    [21808229]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3161
mayton
Посмотрел exiv2. Эта консольная тулза работает с 1 файлом. Маловато...

Gogo кодить!

ну это не мешает путем перенаправления ввода\вывода организовать конвеер в цикле
13 фев 19, 12:21    [21808280]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Alibek B.
Member

Откуда:
Сообщений: 2992
KpoxaPym
Конкретно EXIF-плагин сам не использовал

Отлично работает. Нужен только TC+плагин, ничего другого не требуется.
Только нужно иметь ввиду ряд нюансов. Например в EXIF дата/время могут быть в разных полях и на разных фотоаппаратах эта логика отличается.
13 фев 19, 12:45    [21808316]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Alibek B.
Member

Откуда:
Сообщений: 2992
mayton
Вторичная задача - дедупликация. Хм... тоже немаловажно. Бывает - промахнешся и скопируешь тонну файлов.

Если это бинарные копии файлов, то это легко решается тем же TC.
Способов много. Например прямо в диалоге поиска файлов можно включить поиск дубликатов по полю плагина [=wdhash.CRC32], но это будет очень медленно. Намного быстрее будет переименовать файлы с помощью плагина (в CRC32, например) и делать поиск дубликатов по совпадению части имени файла и размера.
Если же нужен поиск идентичного содержимого, то тут надежного решения нет. Из бесплатных лучшие результаты я получил в VisiPics, но все равно нужно просматривать найденные дубли самому, часто ошибается.
13 фев 19, 12:52    [21808329]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Alibek B.
Member

Откуда:
Сообщений: 2992
Вообще я для сортировки фотографий использую следующий шаблон:

/photos/{category}/{year} {album}/{ymd}{hm}_{####}_{crc32} [{tag}] ({device} {model})

Здесь:
{category} - категория фотографий (личные, путешествия, технические), задается вручную
{year} - год съемки
{album} - в зависимости от категории место съемки или наименование события
{ymd} - дата в формате ГГГГММДД
{hm} - время в формате ЧЧММ (без секунд)
{####} - порядковый номер фотографии в альбоме
{crc32} - контрольная сумма в нижнем регистре
{tag} - пометка для случаев специальной съемки (hdr, burst и т.п.)
{device} - производитель фотоаппарата
{model} - модель фотоаппарата

Наличие CRC32 в имени файла позволяет находить оригиналы и дубли, даже если файл редактировался.
Дата/время в начале файла позволяет сортировать в порядке съемки.
Порядковый номер исключает появление разных файлов с одним именем.
13 фев 19, 13:03    [21808343]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Програмёр
Member

Откуда: Москва
Сообщений: 2995
mayton
Посмотрел exiv2. Эта консольная тулза работает с 1 файлом. Маловато...

Gogo кодить!


Не вижу проблемы :) Разумеется вместо того, чтобы показывать exif данные, их можно обработать и пересохранить файлик
bash
for file in ./*.jpg; do exiv2 $file; done
13 фев 19, 13:18    [21808376]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
KpoxaPym, нету у меня тотал коммандер. У меня - Linux.
13 фев 19, 14:13    [21808467]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Alibek B.
Вообще я для сортировки фотографий использую следующий шаблон:

/photos/{category}/{year} {album}/{ymd}{hm}_{####}_{crc32} [{tag}] ({device} {model})

Здесь:
{category} - категория фотографий (личные, путешествия, технические), задается вручную
{year} - год съемки
{album} - в зависимости от категории место съемки или наименование события
{ymd} - дата в формате ГГГГММДД
{hm} - время в формате ЧЧММ (без секунд)
{####} - порядковый номер фотографии в альбоме
{crc32} - контрольная сумма в нижнем регистре
{tag} - пометка для случаев специальной съемки (hdr, burst и т.п.)
{device} - производитель фотоаппарата
{model} - модель фотоаппарата

Наличие CRC32 в имени файла позволяет находить оригиналы и дубли, даже если файл редактировался.
Дата/время в начале файла позволяет сортировать в порядке съемки.
Порядковый номер исключает появление разных файлов с одним именем.

Спасибо. Хороший шаблон. Но у меня будет попроще. Например категория мне не нужна.
13 фев 19, 14:21    [21808482]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Dima T
Если дата создания файла совпадает с датой съемки (обычно совпадает если позже фотка не корректировалась), то можно по дате создания распихать по подпапкам. Дату создания любым ЯП элементарно получить.

ИМХО имя файла нет смысла менять, оставь как есть, думаю ты не часто снимал разными девайсами в один день.

Я-бы файл тоже сделал уникальным. Бывает тот-же регистратор фоткает файлы с ограниченным циклом.
И в серии разных фоток будет две с одним номером например. И потом эти два одинаковые файла уже
почтой не переслать. В один фолдер - не скопировать. Вобщем.. имя файла тоже должно быть уникальным.
Вариант - сквозная нумерация для одной даты. Или контрольная сумма как товарищ фотограф делает там у себя.
Но мне контрольная сумма кажется слишком уж большим балластом для глаз.
13 фев 19, 14:29    [21808497]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 9024
mayton
Бывает тот-же регистратор фоткает файлы с ограниченным циклом.
И в серии разных фоток будет две с одним номером например.
И потом эти два одинаковые файла уже почтой не переслать.
Вот как раз при отправке - никаких проблем с одноимёнными вложениями.
При получении - да, возникают сложности.
13 фев 19, 14:32    [21808505]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Alibek B.
Наличие CRC32 в имени файла позволяет находить оригиналы и дубли, даже если файл редактировался.

По поводу уникальности. Есть персептивный хеш. Но это лучше отдельным топиком.
13 фев 19, 14:34    [21808510]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Alibek B.
Member

Откуда:
Сообщений: 2992
crc32 вполне достаточен. У меня на 20 ГБ фотографий коллизий не было, при этом он быстро считается.
13 фев 19, 14:54    [21808544]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Alibek B.
crc32 вполне достаточен. У меня на 20 ГБ фотографий коллизий не было, при этом он быстро считается.

У меня часто было такое. Хотел кода-то зааплодить фотку. Или приаттачить. Не влезла по размеру. Сделал scale. Сохранил.
Лежат две фотки. Один контент. Разный размер и контрольная сумма. Но ладно... я это подниму отдельным топиком.
Типа умная дедупликация.
13 фев 19, 15:13    [21808572]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Alibek B.
Member

Откуда:
Сообщений: 2992
mayton
Разный размер и контрольная сумма.

Так в том и смысл сохранять crc32 в имени файла, чтобы при изменении файла он все равно сохранялся оригинальный.
Иначе нужно использовать инструменты сравнения по содержимому, а они медленные и неточные.
13 фев 19, 17:21    [21808765]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Alibek B.
mayton
Разный размер и контрольная сумма.

Так в том и смысл сохранять crc32 в имени файла, чтобы при изменении файла он все равно сохранялся оригинальный.
Иначе нужно использовать инструменты сравнения по содержимому, а они медленные и неточные.

Инструменты сравнения могут работать единоразово. После скидывания содержимого фотика. Или слияния
архивов и прочее. Да мне вообще-то пофиг сколько они будут работать. Есть коробочная утилита fdupes для
Linux. Она работает на уровне скорости дискового чтения файлов. Временная сложность - линейна от объема
файлов. Но мой интерес даже не в том быстро она работает или медленно. А просто в том чтобы убедится что
каталог фоток имеет относительный порядок.
13 фев 19, 17:27    [21808772]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
Alibek B.
Member

Откуда:
Сообщений: 2992
Я не про fdupes и прочие бинарные утилиты.
Если на картинке изменить exif, то такие утилиты посчитают этот файл уникальным.
Для поиска дубликатов фотографий нужно использовать специальные утилиты, которые сравнивают содержимое (контент), например VisiPics. А они медленные и неточные, и как следствие интерактивные.
13 фев 19, 17:35    [21808779]     Ответить | Цитировать Сообщить модератору
 Re: Вторничный фотографЪ  [new]
mayton
Member

Откуда: loopback
Сообщений: 39224
Alibek B.
Я не про fdupes и прочие бинарные утилиты.
Если на картинке изменить exif, то такие утилиты посчитают этот файл уникальным.
Для поиска дубликатов фотографий нужно использовать специальные утилиты, которые сравнивают содержимое (контент), например VisiPics. А они медленные и неточные, и как следствие интерактивные.

Давайте разделим 2 направления.
1) Дедупликация контрольной суммой (crc32/md5). Полностью автоматически позволяет убрать дубликаты. Здесь - вопросов
вообще нет. Решенная уже задача.

2) Дедубликация на основе персептивного хеша - работает в режиме диалога. Или в режиме рекомендаций,
всего-лишь предлагая пользователю ознакомится с кандидатами на удаление. Я так думаю.

По поводу изменения 1 exif-тега. Такой кейс мне представляется сомнительным. Я никогда в жизни этого
не делал и не понимаю ценности этого действия. Предполагаю что 99.9% мои файлы что я фоткал мыльницами
никогда не меняли своих тегов кроме тех случаев когда я редактировал размер-яркость-контраснтность но
это вообще выходит за рамки пункта (1) и соотв нет вопросов. С точки зрения контрольной суммы - это вообще
другой файл.
13 фев 19, 17:51    [21808798]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Программирование Ответить