сортировщик фотографий (или еще чего-нибудь)

Автор lihacheff, октября 24, 2017, 14:09:17

« предыдущая - следующая »

lihacheff

Коллеги!
В связи с почти 100%тным переходом компо-парка отдельно взятой моей семьи на операционную систему от Линукс ищу замену очень нужной и любимой программы в (не к ночи будет сказано) Виндовс - сортировщик фотографий.
Если не посчитаете это рекламой, ищу замену программе - Easy Photo Sorter. Если нужно будет могу дать ссылку на скачивание.
Чего делает - показываешь ей каталог с сваленной кучей фоток из фотоаппарата/телефона и говоришь, чтобы она раскидала их по каталогам, которые имеет имя - дата_съемки, кликаешь "ок".
В результате в куче - остатки с "кривыми" датами/без них, двойники и НЕфотки,
в правильном месте - каталоги 10-10-2017, 11-10-2017 и т.д. в которых фотки сделанные 10го октября 2017г и 11 октября 2017г. соответственно.
Остается раскидать видео (mp4), которое тоже могут снимать фотики/телефоны и про которые прога не заточена.

Хочу простую и надежную как Газпром замену! Гуевую и просто настраиваемую.
Очень хочу!

Всем тепла
Прошу прощения за неразборчивый почерк

denkin

я в подобных случаях делаю так:
1. гуглю
2. Пробую
3. Оставляю что понравилось

Стоит лишь предостеречь - пробовать лучше всего на "тренировочном" каталоге, чтоб потом не возращать "как было".

lihacheff

Цитата: denkin от октября 24, 2017, 23:05:37
я в подобных случаях делаю так:
1. гуглю
2. Пробую
3. Оставляю что понравилось

Стоит лишь предостеречь - пробовать лучше всего на "тренировочном" каталоге, чтоб потом не возращать "как было".

вообще-то я так обычно и делаю...
вот только на п.2 времени нету... да и спец я в убунте, скажем честно, так себе... понаставишь кучу недостающих пакетов, саму прогу, потом удалять, хвосты-зависимости остаются...
вот и решил пойти за напутствием к мудрым, а тут... чистый дзен - все метафоры, аксиомы и метафизика...
Спрошу конкретно: что Вы нашли под мои помыслы и что Вами было оставлено?
Прошу прощения за неразборчивый почерк

padsel

октября 25, 2017, 02:13:19 #3 Последнее редактирование: октября 25, 2017, 22:32:38 от denkin
Цитата: denkin от октября 24, 2017, 23:05:37
я в подобных случаях делаю так:
1. гуглю
2. Пробую
3. Оставляю что понравилось

Стоит лишь предостеречь - пробовать лучше всего на "тренировочном" каталоге, чтоб потом не возращать "как было".

я в случаях, когда не знаю, как помочь прям сейчас, просто молчу, а не отправляю в гугл, и не говорю лениво ну можно такой скрипт написать
---
Добро пожаловать на форум!
Тут такое дело: я дал lihacheff направление и краткую инструкцию, а ты просто пофлудил, нарушив 3 правила форума, как минимум:
п. 1.6.

Цитировать1.6 Обо всех спорных моментах сообщайте модераторам форума, мы тоже живые люди и можем что-то пропустить. Не стесняйтесь пользоваться кнопкой «сообщить модератору» и личными сообщениями. Вы очень нам поможете, если обратите наше внимание на случаи нарушения данных правил.

п. 2.3.
Цитировать2.3 Флудить и заниматься флеймом, а так же оставлять сообщения, не относящиеся к теме обсуждения. Для общения есть соответствующий раздел -- «Обо всём», в котором, однако, так же стоит знать меру.

п. 2.8.
Цитировать2.8 Чрезмерное цитирование. Цитаты нужны для выделения какой-то небольшой части сообщения с целью её комментирования, не забывайте об этом.

Это предупреждение.
Denkin

denkin

lihacheff, я сам не любитель подобных программ, поэтому не стал давать прямых советов, но если ты готов рискнуть, то представляю: shotwell
Википедия
Установка:
sudo apt update
sudo apt install shotwell

lihacheff

Спасибо, Podsel, Denkil!

Цитата: denkin от октября 25, 2017, 22:40:10
lihacheff, я сам не любитель подобных программ, поэтому не стал давать прямых советов, но если ты готов рискнуть, то представляю:


Таким старчески-хриплым бурчанием:
"Вот не любитель, а все туда же - советы давать!"

Риск, дело конечно, благородное... там шампанское пить/не пить и пр. гусарско-усатые фантазии...
Токма мне не направление или совет куда пойти...
Короче не сортирует Вами предложенное.

Есть ли у почтенной публики действительно кандидаты, подходящие под мои страдания?
Просто дружеское напутствие и указание пути  - не стоит, ибо про поисковые машины интернета знаю и пользую...
Механическое - скачать/установить/понастраивать/понять_что_кажись_не_то/удалить - времени жалко.

2Denkin - ничего личного... но уж лучше пусто чем...

Добра!!!

ПыСы: снег пошел!
Прошу прощения за неразборчивый почерк

denkin

Странно, когда то я на этот shotwell рассердился именно за то, что он мне фотки рассортировал автоматом, после неосторожного нажатия клавиши. Потом пришлось обратно складывать, как мне нравится.

lihacheff

Совсем не гуевое, и не совсем то... но, на безрыбье и анаком - дор-брю
стырено отседа и чуток поправлено мною.
Копирует, но не переносит (какая команда переносит файлы? Копирует -ср).
Только jpg.
Подходим, пробуем:


#!/bin/bash
# Скрипт раскладывает фотографии по каталогам вида гггг-мм-дд, изменяет разрешение и качество в
# соответствии с заданными параметрами, а так же переименовывает изображения в формат
# гггг-мм-дд_чч-мм-сс.jpg
# На пример: /mnt/DCIM/IMG-20131014112354.jpg -> $HOME/Photo_Sorter/2013-10-14/2013-10-14_11-23-54.jpg
#
# Данные о дате снимка ищутся в следующем порядке:
# 1) Exif данные (Exif.Photo.DateTimeOriginal и Exif.Image.DateTime)
# 2) В названии фотографии. Распознает различные варианты написания даты
# 3) Из даты создания файла
#
# При запуске без аргументов обрабатывает текущий каталог и все его подкаталоги. В качестве аргумента
# можно указать другой рабочий каталог-источник.
# НЕ удаляет оригиналы изображений!
# НЕ увеличивает разрешение
# Для работы необходим пакет exiv2 (sudo apt-get install exiv2)
##################################

src_dir=${1-`pwd`} # По умолчанию используется текущий каталог
dst_dir=$HOME/Photo_Sorted # Каталог в который будут скопированны обработанные фотографии
# quality=80  # Качество JPG изображения
# resize=1600x900 # Размер после конвертации

# Ищем JPG файлы в указанной папке
#find "$src_dir" -iname "*.jpg" -print0 | sort | while IFS= read -r -d $'\0' file ; do

# Ищем JPG файлы в указанной папке и всех подпапках!
find "$src_dir" -iname "*.jpg" | sort | while IFS= read -r file ; do

  # Пробуем взять дату из Exif.Photo.DateTimeOriginal или Exif.Image.DateTime
  for photo_date in "Exif.Photo.DateTimeOriginal" "Exif.Image.DateTime" ; do
    photo_date=$(exiv2 -g "$photo_date" -Pv "$file")
    if [ -n "$photo_date" ] ; then  # Если дата найдена, прекращаем перебор
      break
    fi
  done

  if [ -z "$photo_date" ] ; then # Если в exif дата не найдена ищем в названии файла

    # Ищем дату в названии файла и приводим её к виду ггггммддччммсс
    photo_date=$(basename "$file" ".jpg" | egrep -o -m1 [0-9]\{4\}\([-_:\ ]?[0-9]\)\{10\})
      if [ -n "$photo_date" ] ; then

# Приводим дату к виду гггг:мм:дд чч:мм:сс для корректного добавляения в exif
photo_date=$(echo "$photo_date" | tr -d "\_\-\:\ " | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1:\2:\3 \4:\5:/')

# Добавляем дату из названия файла в exif
exiv2 -M"add Exif.Image.DateTime Ascii "$photo_date"" "$file"

      else # Если даты в названии не нашли, берем дату изменения (создания) файла
photo_date=$(date +"%Y:%m:%d %T" -r "$file")
#exiv2 -M"add Exif.Image.DateTime Ascii $photo_date" "$file"
      fi
  fi

  # Приводим различные вариации даты к единому виду гггг мм дд чч мм сс
  photo_date=$(echo "$photo_date" | egrep -o -m1 [0-9]\{4\}\([-_:\ ]?[0-9]\)\{10\} | tr -d "\_\-\:\ " | sed 's/\([0-9]\{4\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)\([0-9]\{2\}\)/\1 \2 \3 \4 \5 /')

  # Разбиваем полученную дату (гггг мм дд чч мм сс) на фрагменты
  # $1 - Год, $2 - Месяц, $3 - День, $4 - Час, $5 - Минута, $6 - Секунда
  set -- $photo_date

  mkdir -p "$dst_dir/$1-$2-$3" # Создаем структуру папок гггг-мм-дд

  dest_file="$dst_dir/$1-$2-$3/$1-$2-$3_$4-$5-$6.jpg" # Конечное имя файла
 
  a=0; 
  while [ -f "$dest_file" ] ; do
   md5src=$(md5sum "$file")
   md5src=${md5src% *}
   md5dst=$(md5sum "$dest_file")
   md5dst=${md5dst% *}
   if [ "$md5src" != "$md5dst" ] ; then
    dest_file="$dst_dir/$1-$2-$3/$1-$2-$3_$4-$5-$6_$a.jpg"
    let "a+=1"
   else
    echo "Файл $dest_file уже существует";
    break
   fi
  done
 
  # Копируем фотографию, только если исходный файл новее существующего или отсутствует.
  # При копировании сохраняется дата создания фотографии
  cp -uvp "$file" "$dest_file"

  # Изменяем качество и размер фотографий, переименовываем и копируем в папку назначения
  # convert -quality "$quality" -resize "$resize"\> -verbose "$file" "$dest_file"

  # Устанавливаем дату создания файла такую же как и дата в exif
  # touch -t "$1$2$3$4$5.$6" "$dest_file"
 
done

exit 0
Прошу прощения за неразборчивый почерк

butjapka

Цитата: lihacheff от октября 27, 2017, 02:48:57
Совсем не гуевое, и не совсем то... но, на безрыбье и анаком - дор-брю
стырено отседа и чуток поправлено мною.
Копирует, но не переносит (какая команда переносит файлы? Копирует -ср).
Только jpg.
Подходим, пробуем:

пробуйте повесить на особые действия в Thunar