leonder 12.06.2010 11:10
Скрипты — Загрузка фотографий с цифровой камеры по usb с сортировкой по дате
Мне не очень повезло с фотокамерой, при подключении к компьютеру она не желает определяться, как блочное устройство (съемный диск), ее файловая система не доступна. Она определяется, как цифровая камера, и поэтому можно работать с ней только с помощью специальных программ (GtKam, DigiKam, gphotofs и иже с ними). Программ этих множество, но их работа не кажется мне быстрой и удобной, поэтому для получения фоток с камеры я написал небольшой костыль скрипт.Мне не очень повезло с фотокамерой, при подключении к компьютеру она не желает определяться, как блочное устройство (съемный диск), ее файловая система не доступна. Она определяется, как цифровая камера, и поэтому можно работать с ней только с помощью специальных программ (GtKam, DigiKam, gphotofs и иже с ними). Программ этих множество, но их работа не кажется мне быстрой и удобной, поэтому для получения фоток с камеры я написал небольшой костыль скрипт.
ОБНОВЛЕНО: Решена проблема с дубликатами и сортировкой.
Работа сценария состоит из двух частей: сначала фото и видео загружается во временный каталог, расположенный (создающийся) в базовой директории, которая в целом является как бы буфером для получения фоток с камеры. Затем из фото извлекаются exif данные о времени снимка и с их помощью создается древовидная структура каталогов вида год/месяц/число (Обменка/2010/06/15). И фото перемещаются в соответствующие каталоги. Видеофайлы пока остаются во временном каталоге.
1 |
#!/bin/bash
|
У меня локализованная версия exiv2, если у вас это не так, то замените в 31-34 grep "Отметка времени" на "Image timestamp". И вообще, в целом, пробегите взглядом, может быть что-то еще под себя следует скорректировать, как минимум, путь к обменной папке.
Сохранил скрипт как getphoto в ~/bin и использую, нажав f4 в dolphin (открыв консоль). Подключаю кабелем к компу, включаю камеру, выполняю команду, дожидаюсь, пока все скачается (или лампочка перестанет мигать на камере), выключаю камеру и смотрю буферный каталог.
Результат работы:
Первая версия скрипта:
Скрипт использует программу gphoto2 (её же и все модные программы вроде DigiKam используют).
#!/bin/bash
#Создается путь для сохранения - в "буферном" каталоге
#вложенные каталоги с сортировкой по дате
DIR="/home/leonder/photo/Canon PowerShot 1100 IS/`date +%Y` год/`date +%m\ %b`/`date +%d`"
if ! [ -d "$DIR" ]
then mkdir -p "$DIR" && echo "$DIR - каталог создан"
else echo "$DIR - каталог существует"
fi
cd "$DIR"
#По уму надо бы в скрипте же получить имя камеры, но я не могу,
#поэтому свою единственную камеру вручную определил и прописал
#gphoto2 --auto-detect
#почему-то у меня без sudo - gphoto2 не получает фотки...
sudo gphoto2 --camera "USB PTP Class Camera" -P
#фотки (и видео) из-за sudo принадлежат root, надо исправить
sudo chown leonid:users *
#и раз... и два... закончили!
echo "All done!"
Получает он, естественно, всё содержимое, поэтому есть проблема: если не удалять фото после загрузки в комп, то они загрузятся в следующий раз снова, уже в другой каталог и придется удалять дубликаты, а это муторно.
leonder 12.06.2010 11:13 #
+ 1 -
В kde кстати, есть возможность удобно прописать свои действия для подключаемых устройств. Но пока скрипт сырой и не решена проблема дубликатов - использую только вручную
Ну самый прямой путь для устранения дубликатов - вычисление контрольных сум. Но это годится только именно для полностью одинаковых фотографий. Скажем, 2 фотографии сделанных в течении 1-й 2-х секунд, на которых изображен один и тот же человек, но например, голова уже несущественно сменила наклон - будут различны. Но в "человеческом восприятии" - фото по сути одно и то же.
В KDE наверное есть возможность в скрипт передавать параметры. Так вот, можно было бы не жестко прописывать каталог, а передавать путь к нему из Dolphin`а.
В KDE наверное есть возможность в скрипт передавать параметры. Так вот, можно было бы не жестко прописывать каталог, а передавать путь к нему из Dolphin`а.
Можно еще в exif попробовать что-то прописать после синхронизации, а при следующей синхронизации такие файлы отсеивать. Ну или тупо после копирования те файлы, что на фотике переносить в специальную папку, если удалять не желательно.
Надо было с этого начинать конечно: http://www.faqs.org/docs/Linux-HOWTO/USB-Digital-Camera-HOWTO.html
А вот и не правда (я на англ. яз. не очень быстро соображаю)! Это как раз про те камеры, которые определяются, как блочные устройства (/dev/sd*)
Буду делать на базе autofs и gphotofs, как здесь: http://www.gentoo-wiki.info/Gphoto2
gphotofs собрался из AUR в арче, в репах не было. В общем скоро сделаю.
Буду делать на базе autofs и gphotofs, как здесь: http://www.gentoo-wiki.info/Gphoto2
gphotofs собрался из AUR в арче, в репах не было. В общем скоро сделаю.
Не удается завести autofs в arch... fail и все тут...
Зато появилась идея - скачать все содержимое, как сейчас, но во временный каталог, $DIR/temp например. Затем для всего, что скачалось создать файл-список где будет сопоставлено имя файла и, допустим, время съёмки из exif, или хэш. Затем каким-то образом сверить фотки с имеющимися в буферном каталоге. Вот тут-то я и теряюсь... каким образом проверять, чтобы нормально было, не знаю
Зато появилась идея - скачать все содержимое, как сейчас, но во временный каталог, $DIR/temp например. Затем для всего, что скачалось создать файл-список где будет сопоставлено имя файла и, допустим, время съёмки из exif, или хэш. Затем каким-то образом сверить фотки с имеющимися в буферном каталоге. Вот тут-то я и теряюсь... каким образом проверять, чтобы нормально было, не знаю
как сказали выше, если, к примеру, фотки будут практически одинаковыми(чуть смещённый наклон головы), то у неё будет совсем другой хэш... хотя первоначальную отсевку дубликатов по md5 делать довольно правильно...
Вот парочка интересных (python):
- http://code.activestate.com/recipes/500266-cataloging-and-adding-iptc-keywords-to-digital-pho/
- http://web-brains.com/2010/05/10/sbros-fotografij-s-fotika-na-komp/
А вы настройки камеры крутить не пробовали? Там, возможно есть опция которая говорит камере как себя "преподносить" у меня, например, камера может "общаться" с компьютером и как MassStorage и, как PicBridge. Еще в ней есть режим "Внутренняя память + флешка", тогда помимо Флешки становится доступной и внутренняя память камеры (определяется как CD-ROM на ней записаны какие то модули для MAC-а). Может и вам настройки камеры покрутить?
Нет, к сожалению, камера оказалась не очень дружелюбна, такой возможности нет.
Работает только с локализованной версией exiv2. У кого не работает - правим строки 31-34. Заменяем "Отметка времени" на "Image timestamp"
у меня сыпет syntax error почти в каждой строчке
Ума попрваить синтаксис не хватает? за 50р я сделаю эту работу за тебя.
иди броди... Коммерсант выискался