главная страница
материалы
  ms access и bitmap
  win в ucs-2 на perl
  приложение facebook
  медиа библиотека
  восстановление exif
  netgear stora
  netgear stora usb
  html и javascript
  openwrt upgrade
  yandex dns
  playlist vbs
  фотоархив
  node.js
  изменения в mrtg
  windows
  конвертация
  перекодировка для tv
  перекодировка для tvix

Оформление фотоархива

Наименование файлов

[дата[+]_][подпись_]пленка[гост][(пленка и гост коробки)][-номер]_кадр[_кадр пленки][_дата сканирования]

  • дата - дата съемки, указанная на коробке или ориентировачная дата (с +) в формате год[-месяц[-число]]
  • + - ставится, когда
    • либо очевидно, что кадры с пленки выходят за пределы указанного года
    • либо дата является годом выпуска пленки (при сроке хранения 2-3 года, которые могут и несоблюдаться)
    • либо дата является годом, за два до срока годности пленки (зачастую годом выпуска)
    обозначается на странице словами "или позднее".
  • подпись - подпись на коробке
  • пленка - изготовитель (обозначено на коробке или пленке):
    • К - КХЗ (химзавод им. Куйбышева, г. Казань, в будущем - Тасма)
    • Т - Тасма (производственное объединение Татарские светочувствительные материалы)
    • С - Свема (производственное объединение Светочувствительные материалы, г. Шостке)
    • П - ПХЗ
  • гост - ГОСТ чуствительности пленки (крупными цифрами обозначено на коробке). При отсутствии - пленка без коробки.
  • пленка и гост коробки - при несовпадении, обозначения на коробке, в которой лежит пленка
  • номер - номер пленки, при совпадении предыдущих значений у двух и более пленках
  • кадр
    • номер кадра на пленке, если нет необходимости переупорядочивания
    • при необходимости переупорядочивания (присутствует еще кадр пленки) - порядковый номер.
    • если кадр состоит из четырех цифр - YYXX, то первые две - номер отрезка пленки, вторые две - номер кадра по порядку справа.
  • кадр пленки - при необходимости переупорядочивания, номер на пленке. Обозначается на странице основным, порядковый номер пишется в скобках.
  • дата сканирования и номер - если присутствует, то дата сканирования на сканере Nikon LS-40 и номер в формате год-месяц-число-номер. Отсутствие обозначает, что сканирование было на сканере Canon LiDE 700F.
К примеру: 1976-08_Отпуск_К65_17_23_2019-12-23-0001
  • август 1976 г.
  • на коробке подпись: Отпуск
  • пленка производства КХЗ, гост: 65 (на коробке символ "К" на другой стороне от ГОСТ)
  • кадр по порядку: 17, на пленке: 23
  • дата сканирования 23 декабря 2019 г., первый кадр в этот день в папке записи

Процесс наименования файлов

  1. Сначала имена файлов без расширения (дата сканирования и номер) записал в комментарии EXIF
  2. В поле "Подпись" базы данных ACD записывается номер кадра на пленке
  3. В поле "Примечания" базы данных ACD записывается дата_подпись_пленка
  4. Все фотографии переименовываются в соотвествии с шаблоном
    <База данных ACD:Примечания>_##_<База данных ACD:Подпись>_<Изображение:Комментарий пользователя>
    ## начиная с 1. Если нет необходимости в переупорядочивании, то по шаблону
    <База данных ACD:Примечания>_<База данных ACD:Подпись>_<Изображение:Комментарий пользователя>
  5. Убирается последний символ _, если сканирование было на сканере Canon LiDE 700F.

Заполнение базы данных

На ap запускается скрипт, формирующий список файлов и папок, в базе данных photos схемы photoarc list.csv

.photoarc_make_list
#!/bin/sh

mysql photoarc -e "SELECT folder,file FROM photos INTO OUTFILE '/.../list.csv' FIELDS TERMINATED BY ';'"
mv /.../list.csv /.../PhotoArchive

На stora запускается скрипт, формирующий список файлов и папок с соответствующими полями, которых нет в базе данных

  1. ls.csv - список для импорта в базу данных в кодировке UTF-8
  2. ls-win.csv - список для проверки соответствия полям в кодировке Windows-1215

lsphotoarc
cd /home/0common/PhotoArchive
find | grep '.jpg' | grep '_' | grep -v '.thumbnails' | grep -v '.webviews' | grep -v '\[Originals\]' |
sed s/'^\.\/'/''/ | 
# проверка совпадений с list.csv и дублирование имя файла с пробелами вместо "_"
awk -F '/' '{ 
  G=system("grep \"^"$1";"$2"$\" list.csv > /dev/null");
  if (G != 0) { N=$2; gsub("_"," ",N); print $1";"$2";"N; }
}' | sed s/'.jpg$'/''/ |
#      folder    file       year          title        gost                        other
sed s/'^\([^;]*\);\([^;]*\);\([0-9-]*+\?\) \(\(.*\) \)*\(\xD0[\x9A\xA1\xA2][^ ]*\) \(.*\)$'/'\1;\2;\3;\5;\6;\7'/ |
#        (foldr file  year  title gost  ) num          num2         scan
sed s/'^\([^;]*;[^;]*;[^;]*;[^;]*;[^;]*\);\([0-9-]*\)\( \([0-9]*\)\)*\( \(.*-.*\)\)\?$'/'\1;\2;\4;\6'/ |
# для импорта
sort > ls.csv
# для проверки
iconv -f utf-8 -t windows-1251 ls.csv > ls-win.csv

На ap запускается скрипт экспорта списка в базу данных photos схемы photoarc

.photoarc_import
#!/bin/sh

mysql photoarc -e "LOAD DATA INFILE '/.../ls.csv' IGNORE INTO TABLE photos FIELDS TERMINATED BY ';'"

Для удаления неправильных записей на ap можно запустить скрипт

.photoarc_delete
#!/bin/sh

select="SELECT * FROM photos WHERE $@"
delete="DELETE FROM photos WHERE $@"
echo $select

mysql photoarc -B -e "$select" #| sed s/'\t'/';'/g
read -p 'Удалить строки(y/n):' y
if test "$y" == "y"; then
  mysql photoarc -e "$delete"
fi

в формате ./.photoarc_delete "поле='значение'"
или ./.photoarc_delete "поле like '[%]значение[%]' "
или ./.photoarc_delete "все, что можно поставить в SQL после WHERE".
где поле (или поля): folder, file, date, date, caption, num, num2, datescan, tags.
Будет предоставлен список удаляемых строк, удаление который необходимо подтвердить.

.photoarc_update
#!/bin/sh

select="SELECT * FROM photos WHERE $1"
update="UPDATE photos SET $2 WHERE $1"
echo $select

mysql photoarc -B -e "$select" #| sed s/'\t'/';'/g
read -p 'Редактировать строки(y/n):' y
if test "$y" == "y"; then
  mysql photoarc -e "$update"
fi

в формате ./.photoarc_update "поле='значение'" "поле='новое значение'"
или в первом аргументе "поле like '[%]значение[%]' "
или в первом аргументе "все, что можно поставить в SQL после WHERE".
где поле (или поля): folder, file, date, date, caption, num, num2, datescan, tags.
Будет предоставлен список изменяемых строк, изменение который необходимо подтвердить.

Страница фотоархива

Установка галочек в checkbox делает неактивными элементы, которые не содержат выбор. В папках (слева) и пленках (справа) активными остаются элементы, если фотография содержится в каком-либо элементе выбора категории. В тэгах (снизу) можно выбрать

  • или - либо должен присутствовать какой-либо выбранный тэг
  • и - либо должны присутствовать все выбранные тэги
По кнопке "показать" отображаются фотографии, соответствующие выбору. Если в категории не выбрано ни одного элемента, то фильтрации по этой категории не будет. Соответственно, если нажать на кнопку "показать" без какого-либо выбора, то будут представлены все фотографии фотоархива (содержащиеся в базе на данный момент). Неактивность года не осуществляется. Выбор года соответсвует выбору всех пленок этого года.

Можно кликнуть на элемент любой категории - папку, год, пленку, тэг - будут представлены все фотографии, соответствующие этому элементу, вне зависимости от выбора.