IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [144]
    Безопасность IT [404]
    Блоки питания, Power Banks, зарядки... [512]
    Видеорегистраторы [188]
    Гаджеты для спорта и здоровья... [191]
    Гаджеты, аксессуары... [627]
    Измерительная техника, инструменты [446]
    Накопители данных [233]
    Нетбуки, Ноутбуки, Ультрабуки [691]
    Мультиварки, блендеры и не только... [164]
    Планшеты [764]
    Радар-детекторы [26]
    Роботы-пылесосы [40]
    Своими руками [366]
    Сети, сетевые технологии, оборудование... [273]
    Смартфоны [4963]
    Фотокамеры, объективы, искусство фотографии.. [541]
    Умный дом [53]
    Электронные книги [102]
    CB, LPD, PMR- связь... [170]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [109]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [3983]
    mini computers и не только... [412]
    News IT, Это интересно, ликбез... [1121]
    Smart TV, UltraHD, приставки, проекторы... [416]
    Smart Watch [269]
    Sound: наушники, плееры, усилители... [619]
    Windows 10... [301]
    Windows 11 [37]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1347
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 174
    Гостей: 174
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2013 » Ноябрь » 24 » Скрипт автоматической сортировки фотографий по дате
    09:04
    Скрипт автоматической сортировки фотографий по дате

    Скрипт автоматической сортировки фотографий по дате

    Изображение пользователя dm.

    Накопилось у меня куча неразобраных и разномастных фотографий которые надо было как то разгрести. В ручную и даже с помощью digikam делать это было неудобно и долго.

    Пришлось написать небольшой скрипт для сортировки фотографий, который и выкладываю на ваш суд.

    Скрипт раскладывает фотографии по каталогам вида гггг/мм/дд, изменяет разрешение и качество в соответствии с заданными параметрами, а так же переименовывает изображения в формат гггг_мм_дд-чч-мм-сс.jpg

    На пример: /mnt/DCIM/IMG-20131014112354.jpg -> $HOME/Photo/2013/10/14/2013_10_14-11_23_54.jpg

    photo_sort.sh
    #!/bin/bash
    # Скрипт раскладывает фотографии по каталогам вида гггг/мм/дд, изменяет разрешение и качество в
    # соответствии с заданными параметрами, а так же переименовывает изображения в формат
    # гггг_мм_дд-чч-мм-сс.jpg
    # На пример: /mnt/DCIM/IMG-20131014112354.jpg -> $HOME/Photo/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 # Каталог в который будут скопированны обработанные фотографии
    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" # Создаем структуру папок гггг/мм/дд
     
      # Копируем фотографию, только если исходный файл новее существующего или отсутствует. При копировании сохраняется дата создания фотографии
      #cp -uvp "$file" "$dst_dir/$1/$2/$3/$1_$2_$3-$4_$5_$6.jpg"

      # Изменяем качество и размер фотографий, переименовываем и копируем в папку назначения
      convert -quality "$quality" -resize "$resize"\> -verbose "$file" "$dst_dir/$1/$2/$3/$1_$2_$3-$4_$5_$6.jpg"

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

    Данные о дате снимка ищутся в следующем порядке:

    1. Exif данные (Exif.Photo.DateTimeOriginal и Exif.Image.DateTime)
    2. В названии фотографии. Распознает различные варианты написания даты
    3. Из даты создания файла

    При запуске без аргументов обрабатывает текущий каталог и все его подкаталоги. В качестве аргумента можно указать другой рабочий каталог-источник.

    НЕ удаляет оригиналы изображений
    НЕ увеличивает разрешение
    Для работы необходим пакет exiv2 и imagemagick (sudo apt-get install exiv2 imagemagick)

    Для установки копируем код скрипта на пример в /usr/local/bin/photo_sort.sh
    Даем права на исполнение sudo chmod +x /usr/local/bin/photo_sort.sh
    Запускаем в нужной папке с фотографиями.

    http://kubuntu.ru/node/11852

    Категория: Linux и не только | Просмотров: 1089 | Добавил: laptop | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024