mExiftoolOption.sh 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #!/bin/bash
  2. E='echo -e';e='echo -en';trap "R;exit" 2
  3. ESC=$( $e "\e")
  4. TPUT(){ $e "\e[${1};${2}H" ;}
  5. CLEAR(){ $e "\ec";}
  6. # 25 возможно это
  7. CIVIS(){ $e "\e[?25l";}
  8. # это цвет текста списка перед курсором при значении 0 в переменной UNMARK(){ $e "\e[0m";}
  9. MARK(){ $e "\e[1;90m";}
  10. # 0 это цвет заднего фона списка
  11. UNMARK(){ $e "\e[0m";}
  12. # ~~~~~~~~ Эти строки задают цвет фона ~~~~~~~~
  13. R(){ CLEAR ;stty sane;CLEAR;};
  14. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. HEAD(){ for (( a=2; a<=13; a++ ))
  16. do
  17. TPUT $a 1
  18. $E "\033[34m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  19. done
  20. TPUT 2 3
  21. $E "\033[1;2mОбзор опций \033[36mOption Overview\033[0m";
  22. TPUT 3 1
  23. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m"
  24. TPUT 12 3
  25. $E "\033[36mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter\033[0m";
  26. MARK;TPUT 1 1
  27. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m" ;UNMARK;}
  28. i=0; CLEAR; CIVIS;NULL=/dev/null
  29. FOOT(){ MARK;TPUT 14 1
  30. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
  31. # это управляет кнопками ввер/хвниз
  32. i=0; CLEAR; CIVIS;NULL=/dev/null
  33. #
  34. ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
  35. if [[ $key = $ESC ]];then
  36. read -s -n1 key 2>/dev/null >&2;
  37. if [[ $key = \[ ]]; then
  38. read -s -n1 key 2>/dev/null >&2;
  39. if [[ $key = A ]]; then echo up;fi
  40. if [[ $key = B ]];then echo dn;fi
  41. fi
  42. fi
  43. if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
  44. M0(){ TPUT 4 3; $e "Опции \033[32m Options \033[0m";}
  45. M1(){ TPUT 5 3; $e "Операции с тегами \033[32m Tag operations \033[0m";}
  46. M2(){ TPUT 6 3; $e "Форматирование текста ввода-вывода\033[32m Input-output text formatting\033[0m";}
  47. M3(){ TPUT 7 3; $e "Контроль обработки \033[32m Processing control \033[0m";}
  48. M4(){ TPUT 8 3; $e "Другие oпции \033[32m Other options \033[0m";}
  49. M5(){ TPUT 9 3; $e "Особые возможности \033[32m Special features \033[0m";}
  50. M6(){ TPUT 10 3; $e "Утилиты \033[32m Utilities \033[0m";}
  51. M7(){ TPUT 11 3; $e "Расширенные опции \033[32m Advanced options \033[0m";}
  52. #
  53. M8(){ TPUT 13 3; $e "Выход \033[32m EXIT \033[0m";}
  54. LM=8
  55. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  56. POS(){ if [[ $cur == up ]];then ((i--));fi
  57. if [[ $cur == dn ]];then ((i++));fi
  58. if [[ $i -lt 0 ]];then i=$LM;fi
  59. if [[ $i -gt $LM ]];then i=0;fi;}
  60. REFRESH(){ after=$((i+1)); before=$((i-1))
  61. if [[ $before -lt 0 ]];then before=$LM;fi
  62. if [[ $after -gt $LM ]];then after=0;fi
  63. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  64. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  65. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  66. INIT(){ R;HEAD;FOOT;MENU;}
  67. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  68. # Функция возвращения в меню
  69. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  70. while [[ "$O" != " " ]]; do case $i in
  71. 0) S=M0;SC;if [[ $cur == enter ]];then R;echo " Регистр не имеет значения для каких-либо параметров командной строки (включая имена тегов и групп), за исключением односимвольных параметров, когда
  72. соответствующий верхний регистр вариант существует. Многие односимвольные параметры имеют эквивалентные версии с длинными именами (показаны в скобках), а некоторые
  73. параметры имеют инверсии, которые вызываются с помощью ведущее двойное тире. Нераспознанные параметры интерпретируются как имена тегов (по этой причине несколько
  74. односимвольных параметров НЕ могут быть объединены в один аргумент). Вопреки стандартной практике, параметры могут появляться после имен исходных файлов
  75. в командной строке exiftool.";ES;fi;;
  76. 1) S=M1;SC;if [[ $cur == enter ]];then R;echo "
  77. -TAG или --TAG Извлечь или исключить указанный тег
  78. -TAG [+ - ^] = [VALUE] Записать новое значение для тега
  79. -TAG [+ -] <= DATFILE Записать значение тега из содержимого файла
  80. -TAG [+ -] <SRCTAG Копировать значение тега (см. -TagsFromFile)
  81. -tagsFromFile SRCFILE Копировать значения тегов из файла
  82. -x TAG (-exclude) Исключить указанный тег
  83. ";ES;fi;;
  84. 2) S=M2;SC;if [[ $cur == enter ]];then R;echo "
  85. -args (-argFormat) Форматировать метаданные как аргументы exiftool
  86. -b (-binary) Выводить метаданные в двоичном формате
  87. -c FMT (-coordFormat) Установить формат для координат GPS
  88. -charset [[TYPE =] CHARSET] Укажите кодировку для специальных символов.
  89. -csv [[+] = CSVFILE] Экспорт / импорт тегов в формате CSV.
  90. -d FMT (-dateFormat) Установить формат для значений даты / времени
  91. -D (-decimal) Показать номера идентификаторов тегов в десятичном формате
  92. -E, -ex, -ec (-escape (HTML | XML | C)) Экранировать значения тегов для HTML, XML или C
  93. -f (-forcePrint) Принудительная печать всех указанных тегов
  94. -g [ЧИСЛО ...] (-groupHeadings) Организовать вывод по группам тегов
  95. -G [ЧИСЛО ...] (-groupNames) Вывести имя группы для каждого тега
  96. -h (-htmlFormat) Использовать форматирование HTML для вывода
  97. -H (-hex) Показать номера идентификаторов тегов в шестнадцатеричном формате
  98. -htmlDump [OFFSET] Создать двоичный дамп в формате HTML.
  99. -j [[+] = JSONFILE] (-json) Экспорт / импорт тегов в формате JSON
  100. -l (-long) Использовать длинный 2-строчный формат вывода
  101. -L (-latin) Использовать кодировку Windows Latin1
  102. -lang [LANG] Установить текущий язык
  103. -listItem INDEX Извлечь определенный элемент из списка
  104. -n (--printConv) Без преобразования печати
  105. -p FMTFILE (-printFormat) Распечатать вывод в указанном формате
  106. -php Экспорт тегов в виде массива PHP
  107. -s [ЧИСЛО] (-short) Короткий формат вывода
  108. -S (-veryShort) Очень короткий выходной формат
  109. -sep STR (-separator) Установить строку-разделитель для элементов списка
  110. -sort Сортировать вывод по алфавиту
  111. -struct Разрешить вывод структурированной информации
  112. -t (-tab) Вывод в формате списка с разделителями табуляции
  113. -T (-table) Вывод в табличном формате
  114. -v [ЧИСЛО] (-verbose) Печатать подробные сообщения
  115. -w [+ |!] EXT (-textOut) Записывать (или перезаписывать!) выходные текстовые файлы
  116. -W [+ |!] FMT (-tagOut) Записать выходной текстовый файл для каждого тега
  117. -Wext EXT (-tagOutExt) Записывать только указанные типы файлов с -W
  118. -X (-xmlFormat) Использовать выходной формат RDF / XML
  119. ";ES;fi;;
  120. 3) S=M3;SC;if [[ $cur == enter ]];then R;echo "
  121. -a (-duplicates) Разрешить извлечение повторяющихся тегов
  122. -e (--composite) Не создавать составные теги
  123. -ee (-extractEmbedded) Извлечь информацию из встроенных файлов
  124. -ext [+] EXT (-extension) Обрабатывать файлы с указанным расширением
  125. -F [OFFSET] (-fixBase) Исправить базу для смещения заметок производителя.
  126. -fast [NUM] Увеличить скорость при извлечении метаданных
  127. -fileOrder [NUM] [-] TAG Установить порядок обработки файлов
  128. -i DIR (-ignore) Игнорировать указанное имя каталога
  129. -if [NUM] EXPR Условно обрабатывать файлы
  130. -m (-ignoreMinorErrors) Игнорировать мелкие ошибки и предупреждения
  131. -o OUTFILE (-out) Установить выходной файл или имя каталога
  132. -overwrite_original Перезаписать оригинал путем переименования файла tmp
  133. -overwrite_original_in_place Перезаписать оригинал, скопировав файл tmp
  134. -P (-preserve) Сохранить дату / время изменения файла
  135. -password PASSWD Пароль для обработки защищенных файлов
  136. -progress [: [TITLE]] Показать счетчик прогресса файла
  137. -q (-quiet) Тихая обработка
  138. -r [.] (-recurse) Рекурсивно обрабатывать подкаталоги
  139. -scanForXMP Сканирование XMP методом грубой силы
  140. -u (-unknown) Извлечь неизвестные теги
  141. -U (-unknown2) Извлечь также неизвестные двоичные теги
  142. -wm MODE (-writeMode) Установить режим для записи / создания тегов
  143. -z (-zip) Чтение / запись сжатой информации
  144. ";ES;fi;;
  145. 4) S=M4;SC;if [[ $cur == enter ]];then R;echo "
  146. - @ ARGFILE Прочитать аргументы командной строки из файла
  147. -k (-pause) Пауза перед завершением
  148. -list [w | f | wf | g [NUM] | d | x] Список различных возможностей exiftool
  149. -ver Вывести номер версии exiftool
  150. - Конец опций
  151. ";ES;fi;;
  152. 5) S=M5;SC;if [[ $cur == enter ]];then R;echo "
  153. -geotag TRKFILE Геотегирование изображений из указанного журнала GPS
  154. -globalTimeShift SHIFT Сдвигает все форматированные значения даты / времени
  155. -use MODULE Добавить функции из подключаемого модуля
  156. ";ES;fi;;
  157. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo "
  158. -delete_original [!] Удалить_оригинальные резервные копии
  159. -restore_original Восстановление из резервных копий _original
  160. ";ES;fi;;
  161. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo "
  162. -api OPT [[^] = [VAL]] Установить параметр ExifTool API
  163. -common_args Определить общие аргументы
  164. -config CFGFILE Укажите имя файла конфигурации
  165. -echo [NUM] TEXT Выводить текст на стандартный вывод или стандартный поток.
  166. -efile [NUM] [!] ERRFILE Сохранить имена файлов с ошибками
  167. -execute [ЧИСЛО] Выполнять несколько команд в одной строке
  168. -srcfile FMT Обработка другого исходного файла
  169. -stay_open FLAG Продолжайте читать - @ argfile даже после EOF
  170. -userParam PARAM [[^] = [VAL]] Установить параметр пользователя (опция UserParam API)
  171. ";ES;fi;;
  172. 8) S=M8;SC;if [[ $cur == enter ]];then R;clear;exit 0;fi;;
  173. esac;POS;done