Работа с архивом фотографий.

  • warning: mysql_query(): Unable to save result set in /usr/data/www/drupal6/includes/database.mysql.inc on line 115.
  • user warning: Can't create/write to file '/tmp/#sql33d_a0dc_0.MYI' (Errcode: 28 - No space left on device) query: SELECT t.*,v.weight AS v_weight_unused FROM drupal_term_node r INNER JOIN drupal_term_data t ON r.tid = t.tid INNER JOIN drupal_vocabulary v ON t.vid = v.vid WHERE r.vid = 2028 ORDER BY v.weight, t.weight, t.name in /usr/data/www/drupal6/modules/taxonomy/taxonomy.module on line 640.
  • warning: mysql_query(): Unable to save result set in /usr/data/www/drupal6/includes/database.mysql.inc on line 115.
  • user warning: Can't create/write to file '/tmp/#sql33d_a0dc_2.MYI' (Errcode: 28 - No space left on device) query: SELECT DISTINCT b.* FROM drupal_blocks b LEFT JOIN drupal_blocks_roles r ON b.module = r.module AND b.delta = r.delta WHERE b.theme = 'garland' AND b.status = 1 AND (r.rid IN (1) OR r.rid IS NULL) ORDER BY b.region, b.weight, b.module in /usr/data/www/drupal6/modules/block/block.module on line 460.

В очередной раз захотелось навести порядок с фотографиями.

На данный момент набралось что-то около 100 тыс. файлов примерно на 700 гб.

Что не нравится в текущих:

  1. Нет возможности работы на сервере
  2. Нельзя работать из нескольких мест
  3. Нет работы с несколькими местами хранения файлов (т.е. что-то мы положили на внешний винт, что-то на нашем винте и все это слить в экстазе)

Какие программы для фотоархива нашел:

Для сортировки файлов по папкам год/месяц день:

  • скрипт с каким-то просмотрщиком - Wita
  • под Windows - FotoSort

Начал думать как должно все работать. Придумались требования:

  • Поиск дубликатов (по имени, md5, md5 без exif) и различные работы с ними. (Реализован поиск по хэшу и по имени)
  • Поддержка множества хранилищ. (Подключили, проиндексировали, создали превьюшки, живем наслаждаемся, в случае необходимости знаем откуда выдернуть.)
  • Создание превьюшек, т.к. обычно, полновесные фотографии смотреть не обязательно, но сохранить хочется.
  • Работа в консоли и на сервере: периодический поиск дубликатов, создание превьюшек и прочее.
  • Тэги: люди, места, события, даты, автор и т.д. (список дополнять). Выдергивание тэгов из пикасы и пр. Загрузка тэгов из имен каталогов.
  • Поиск по критериям: тэги, дата и прочее
  • Сканирование изменений файлов. На случай, если файлы побились, чтобы могло сообщить.
  • История: когда и куда файл загружен, перемещен, удален.
  • Экспорт - в каталог, облака. Возможно с вычищением EXIF, добавлением тегов и пр.
  • Архивирование. Запуск скрипта с ключами.
  • Массовые операции: перенос по тегам (загрузили в каталог с текущей датой, переместили в каталог тэг/год/месяц/день/дата-событие)

Пока думаю над написание самому. Мысли, чтобы не забыть.

  • Сканирование списка всех файлов и занесение в базу. (Имя, путь, дата, размер, дата внесения в базу) - сделано
  • Подсчет хэша файлов по выборке из базы. (Файлы без хэша и файлы которые давно не сканировали, порциями по Х штук.) - сделано
  • Построение превьюшек для свежих файлов с добавлением тегов к файлам.