Именование фото-файлов
Jul. 14th, 2009 11:57 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
В жизни любого обладателя цифровой камеры наступает момент, когда трудно найти нужную фотографию. Ищешь прошлогодние фотографии со дня рождения подруги жены? Вроде, скидывал вот сюда... или сюда... короче, где-то точно есть, но где? Обладателю цифровой камеры очень быстро становится ясно, что нужна единая система именований файлов, которая позволит быстро находить фотографии.
Опишу мои этапы большого пути. Начинал я с простой системы, назовём её Алеф:
1. создать каталог вида "День Рождения Лены 2002"
2. в созданный каталог скопировать файлы с фотоаппарата вида IMG_0804.jpg
Мысль о неудобности выбранного способа, приходит, когда количество каталогов превысит пятьдесят. Поиск среди дней рождений, морских прогулок и встреч в лесу становится невыносимым. У меня система Алеф продержалась около полу-года. На смену пришла система Бэт:
1. каталог вида YYYYMMDD.description, где YYYY - год, MM - месяц, DD - день, например, 20020328.lena.birthday
2. файл вида YYYYMMDD-CC.jpg, где CC - порядковый номер в серии (от 01 до 99, или 001-999), например, 20020328-36.jpg
Этот способ позволяет сортировать каталоги по времени. Также появилась уникальность отдельного файла, что позволяет комбинировать фотографии из разных каталогов, не боясь конфликта имён. Система Бэт довольно хороша, она служила мне семь лет. С течением времени обнаружились некоторые недостатки, с которыми я покорно мирился. Например, как именовать фотографии других фотографов. Я добавлял буквы 'b', 'c' или 'e' к имени, например, 20020328b-01.jpg. Или, как отсортировать по времени фотографии с двух разных камер? Простым файловым менеджером эта задача не решалась, так как время съёмки не входило в имя файла. В общем, пришла очередь системы Гимел:
1. каталог вида YYYYMMDD-what-where, где YYYY - год, MM - месяц, DD - день, what - краткое описание события, where - место события, например, 20020328-lena-birthday-jerusalem
2. файл вида YYYYMMDDHHMISS-name-CCCC.jpg, где HH - час, MI - минута, SS - секунда, CCCC - порядковый номер в серии (от 0001 до 9999, или 001-999), например, 20020328223625-rabkin-0036.jpg
Я отказался от использования точки как разделителя. За точкой закреплено разделение имени файла и его раширения, другое использование не комильфо. Я увеличил разрядность счётчика кадров, так как стал больше фотографировать, а стирать меньше.
Чтобы автоматизировать переименование файлов, я написал скрипт. Он использует бесплатную утилиту для работы с EXIF данными ExifTool. Кроме переименования, скрипт добавляет к файлам аттрибит read-only, что затрудняет случайное удаление или изменение файлов. Также скрипт переводит все буквы имени в нижний регистр.
Вообще говоря, система именования файлов не так проста, как кажется на первый взгляд. Так что в будущем я не исключаю появления системы Далет.
no subject
Date: 2009-07-14 09:36 pm (UTC)no subject
Date: 2009-07-14 09:45 pm (UTC)Тэги - песня отдельная и тоже, как выясняется, неоднозначная: бывают иерархии, синонимы и всякое такое. Как выстрою что-нибудь логичное, напишу.
no subject
Date: 2009-07-14 09:54 pm (UTC)rem if there is no first parameter default path is a current directory
if "%1" == "" (set pathname=.) else (set pathname=%1)
т.е. если я напишу в командной строке
rename.cmd kukuriku
то скрипт поймёт, что я хотел написать
rename.cmd . kukuriku
или таки я имел в виду
rename.cmd kukuriku rabkin
????
а в остальном мне понравился. ВиБи скрипт, да? ;о)
no subject
Date: 2009-07-14 10:05 pm (UTC)Тип скрипта в Виндусе называется батсч-файл или команд-файл. Выполняется в Виндоусовсой командной строке. Страшная вещь. И задокументирована по-сташному.
no subject
Date: 2009-07-14 10:07 pm (UTC)no subject
Date: 2009-07-14 10:17 pm (UTC)if(a == b) {
do_it();
do_that();
}
Скобочки, блин, тут не работают. Оттого в коде оставил излишность, которая запутывает.
no subject
Date: 2009-07-14 10:03 pm (UTC)Плюс иерархия по годам.
А скрипт твой попробую.
no subject
Date: 2009-07-14 10:03 pm (UTC)no subject
Date: 2009-07-14 10:18 pm (UTC)no subject
Date: 2009-07-14 10:58 pm (UTC)В принципе я пока так делаю, Folders с четким названием JerusalemZoo/ или там France/Paris/.. можно и дату присобачить.
no subject
Date: 2009-07-15 08:15 am (UTC)Возможен нелинейный подход к группам. То есть в каталог JerusalemZoo только фотографии из зоопарка, а вечерний обед в Макдональдсе куда ещё. А случайную кошку в раздел животные. Я так не делаю.
no subject
Date: 2009-07-15 02:52 am (UTC)no subject
Date: 2009-07-15 08:17 am (UTC)no subject
Date: 2009-07-15 06:30 pm (UTC)скрипт интересен.