mExiftool.sh 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. #!/bin/bash
  2. #-----------------------------------------------------------------------------------------------------------
  3. t='\033[1;36m' # Turquoise Бирюзовый
  4. bb="***";for ((i = 0; i < ${#bb}; i++)); do echo -en ${t}${bb:i:1};sleep 0,020;done;
  5. echo -n " ";bq="exiftool"; for ((i = 0; i < ${#bq}; i++)); do echo -en ${t}${bq:i:1};sleep 0,020;done;
  6. echo -n " ";bw="-"; for ((i = 0; i < ${#bw}; i++)); do echo -en ${t}${bw:i:1};sleep 0,020;done;
  7. echo -n " ";be="чтение"; for ((i = 0; i < ${#be}; i++)); do echo -en ${t}${be:i:1};sleep 0,020;done;
  8. echo -n " ";br="и"; for ((i = 0; i < ${#br}; i++)); do echo -en ${t}${br:i:1};sleep 0,020;done;
  9. echo -n " ";bt="запись"; for ((i = 0; i < ${#bt}; i++)); do echo -en ${t}${bt:i:1};sleep 0,020;done;
  10. echo -n " ";by="метаинформации";for ((i = 0; i < ${#by}; i++)); do echo -en ${t}${by:i:1};sleep 0,020;done;
  11. echo -n " ";bu="в"; for ((i = 0; i < ${#bu}; i++)); do echo -en ${t}${bu:i:1};sleep 0,020;done;
  12. echo -n " ";bu="файлы"; for ((i = 0; i < ${#bu}; i++)); do echo -en ${t}${bu:i:1};sleep 0,020;done;
  13. echo -n " ";bb="***"; for ((i = 0; i < ${#bb}; i++)); do echo -en ${t}${bb:i:1};sleep 0,020;done;
  14. #-----------------------------------------------------------------------------------------------------------
  15. E='echo -e';e='echo -en';trap "R;exit" 2
  16. ESC=$( $e "\e")
  17. TPUT(){ $e "\e[${1};${2}H" ;}
  18. CLEAR(){ $e "\ec";}
  19. # 25 возможно это
  20. CIVIS(){ $e "\e[?25l";}
  21. # это цвет текста списка перед курсором при значении 0 в переменной UNMARK(){ $e "\e[0m";}
  22. MARK(){ $e "\e[1;90m";}
  23. # 0 это цвет заднего фона списка
  24. UNMARK(){ $e "\e[0m";}
  25. # ~~~~~~~~ Эти строки задают цвет фона ~~~~~~~~
  26. R(){ CLEAR ;stty sane;CLEAR;};
  27. clear
  28. HEAD(){ for (( a=2; a<=38; a++ ))
  29. do
  30. TPUT $a 1
  31. $E "\033[34m\xE2\x94\x82 \xE2\x94\x82\033[0m";
  32. done
  33. TPUT 2 3
  34. $E "\033[1;36m*** exiftool - чтение и запись метаинформации в файлы ***\033[0m";
  35. TPUT 1 1
  36. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m"
  37. TPUT 36 4
  38. $E "\033[32mUp \xE2\x86\x91 \xE2\x86\x93 Down Select Enter\033[0m";
  39. MARK;TPUT 3 1
  40. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
  41. i=0; CLEAR; CIVIS;NULL=/dev/null
  42. FOOT(){ MARK;TPUT 39 1
  43. $E "\033[0m\033[34m+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+\033[0m";UNMARK;}
  44. # это управляет кнопками ввер/хвниз
  45. i=0; CLEAR; CIVIS;NULL=/dev/null
  46. #
  47. ARROW(){ IFS= read -s -n1 key 2>/dev/null >&2
  48. if [[ $key = $ESC ]];then
  49. read -s -n1 key 2>/dev/null >&2;
  50. if [[ $key = \[ ]]; then
  51. read -s -n1 key 2>/dev/null >&2;
  52. if [[ $key = A ]]; then echo up;fi
  53. if [[ $key = B ]];then echo dn;fi
  54. fi
  55. fi
  56. if [[ "$key" == "$($e \\x0A)" ]];then echo enter;fi;}
  57. M0(){ TPUT 4 3; $e "Обзор \033[32m SYNOPSIS \033[0m";}
  58. M1(){ TPUT 5 3; $e "Описание \033[32m DESCRIPTION \033[0m";}
  59. M2(){ TPUT 6 3; $e " Типы файлов \033[32m File Types \033[0m";}
  60. M3(){ TPUT 7 3; $e " Метаинформация \033[32m Meta Information \033[0m";}
  61. M4(){ TPUT 8 3; $e "Имена файлов Windows Unicode \033[32m WINDOWS UNICODE FILE NAMES \033[0m";}
  62. M5(){ TPUT 9 3; $e "Запись файлов только для чтения \033[32m WRITING READ-ONLY FILES \033[0m";}
  63. M6(){ TPUT 10 3; $e "Статус выхода \033[32m EXIT STATUS \033[0m";}
  64. M7(){ TPUT 11 3; $e "Автор \033[32m AUTHOR \033[0m";}
  65. M8(){ TPUT 12 3; $e "Смотрите также \033[32m SEE ALSO \033[0m";}
  66. M9(){ TPUT 13 3; $e "Установка и удаление \033[32m Install \033[0m";}
  67. M10(){ TPUT 14 3; $e "Примечание \033[32m Note \033[0m";}
  68. M11(){ TPUT 15 3; $e "Опции \033[34m Option \033[0m";}
  69. M12(){ TPUT 16 3; $e "Тэги \033[34m Tag \033[0m";}
  70. M13(){ TPUT 17 3; $e "Другие и Расширенные опции \033[34m Other & Advanced options \033[0m";}
  71. M14(){ TPUT 18 3; $e "Утилиты \033[32m Utilities \033[0m";}
  72. M15(){ TPUT 19 3; $e "Вспомогательные функции \033[32m Helper functions \033[0m";}
  73. M16(){ TPUT 20 3; $e "Примеры чтения \033[34m Reding exemples \033[0m";}
  74. M17(){ TPUT 21 3; $e "Написание примеров \033[34m WRITING EXAMPLES \033[0m";}
  75. M18(){ TPUT 22 3; $e "Копирование и переименование примеров \033[34m COPYING & RENAMING EXAMPLES \033[0m";}
  76. M19(){ TPUT 23 3; $e "Примеры геотегирования и трубопроводов \033[34m GEOTAGGING & PIPING EXAMPLES \033[0m";}
  77. M20(){ TPUT 24 3; $e "Показать метаданные, связанные с указанным файлом \033[32m exiftool file.fmt \033[0m";}
  78. M21(){ TPUT 25 3; $e "Отобразить информацию о GPS координатах содержащихся вфайле в форматированном виде\033[32m -filename -gpslatitude -gpslongitude -T \033[0m";}
  79. M22(){ TPUT 26 3; $e "Изменить координаты GPS \033[32m -exif: gpslatitude gpslatituderef gpslongitude gpslongituderef\033[0m";}
  80. M23(){ TPUT 27 3; $e "Kопирует все теги из указанного файла в файл, указанный в качестве аргумента \033[32m -TagsFromFile \033[0m";}
  81. M24(){ TPUT 28 3; $e "Oсновные опции \033[32m basic options \033[0m";}
  82. M25(){ TPUT 29 3; $e "Справочник \033[32m man \033[0m";}
  83. M26(){ TPUT 30 3; $e "Если надо вывести данные на русском \033[32m exiftool -lang ru file.ff \033[0m";}
  84. M27(){ TPUT 31 3; $e "Доступные языки можно посмотреть \033[32m exiftool -lang \033[0m";}
  85. M28(){ TPUT 32 3; $e "Изменение метаданных \033[32m option = \033[0m";}
  86. M29(){ TPUT 33 3; $e "Удаление метаданных \033[32m empty value \033[0m";}
  87. M30(){ TPUT 34 3; $e "Пакетное редактирование \033[32m * \033[0m";}
  88. M31(){ TPUT 35 3; $e "Название и пояснения к наиболее популярным EXIF-тегам ";}
  89. #
  90. M32(){ TPUT 37 3; $e "\033[34mGrannik Git -------------------------------------------------------------------------------------------------------------------------------------\033[0m";}
  91. M33(){ TPUT 38 3; $e "Выход \033[32m EXIT \033[0m";}
  92. LM=33
  93. MENU(){ for each in $(seq 0 $LM);do M${each};done;}
  94. POS(){ if [[ $cur == up ]];then ((i--));fi
  95. if [[ $cur == dn ]];then ((i++));fi
  96. if [[ $i -lt 0 ]];then i=$LM;fi
  97. if [[ $i -gt $LM ]];then i=0;fi;}
  98. REFRESH(){ after=$((i+1)); before=$((i-1))
  99. if [[ $before -lt 0 ]];then before=$LM;fi
  100. if [[ $after -gt $LM ]];then after=0;fi
  101. if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi
  102. if [[ $after -eq 0 ]] || [ $before -eq $LM ];then
  103. UNMARK; M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;}
  104. INIT(){ R;HEAD;FOOT;MENU;}
  105. SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;}
  106. # Функция возвращения в меню
  107. ES(){ MARK;$e " ENTER = main menu ";$b;read;INIT;};INIT
  108. while [[ "$O" != " " ]]; do case $i in
  109. 0) S=M0;SC;if [[ $cur == enter ]];then R;echo "
  110. Чтение Reading exiftool [OPTIONS] [-TAG...] [--TAG...] FILE...
  111. Запись Writing exiftool [OPTIONS] -TAG[+-<]=[VALUE]... FILE...
  112. Копирование Copying exiftool [OPTIONS] -tagsFromFile SRCFILE [-SRCTAG[>DSTTAG]...] FILE...
  113. Другоe Other exiftool [ -ver | -list[w|f|r|wf|g[NUM]|d|x] ]
  114. Конкретные примеры см. В разделах ПРИМЕРЫ ниже. Эта документация отображается, если exiftool запускается без входного ФАЙЛА, когда он ожидается.
  115. ";ES;fi;;
  116. 1) S=M1;SC;if [[ $cur == enter ]];then R;echo -e "
  117. ExifTool - это бесплатная программа с открытым исходным кодом для чтения, записи и управления изображениями, аудио, видео и метаданными PDF. Он не зависит от
  118. платформы и доступен как в виде библиотеки Perl, так и в виде приложения командной строки.
  119. Интерфейс командной строки для Image :: ExifTool, используемый для чтения и записи метаинформации в файлы различных типов. ФАЙЛ - это один или несколько исходных
  120. файлов имен, имена каталогов или \"-\" для стандартного ввода. Метаданные считываются из исходных файлов и выводятся в читаемой форме на консоль (или записываются в
  121. выводить текстовые файлы с -w).
  122. Для записи или удаления метаданных значения тегов назначаются с помощью параметров -TAG = [VALUE] и / или -geotag, -csv = или -json =. Чтобы скопировать или
  123. переместить метаданные, Используется функция -tagsFromFile. По умолчанию исходные файлы сохраняются с добавлением \"_original\" к их именам - обязательно убедитесь,
  124. что новые файлa в порядке, прежде чем стирать оригиналы. Находясь в режиме записи, exiftool игнорирует любые параметры чтения.
  125. Примечание. Если FILE - это имя каталога, то обрабатываются только поддерживаемые типы файлов в каталоге (в режиме записи обрабатываются только типы с возможностью
  126. записи). Однако файлы могут быть указаны по имени, или параметр -ext может использоваться для принудительной обработки файлов с любым расширением. Скрытые файлы в
  127. каталоге также обработан. Добавление опции -r вызывает рекурсивную обработку подкаталогов, но подкаталоги с именами, начинающимися с \".\" пропускаются если только
  128. -r. используется.
  129. При внесении изменений в файлы ExifTool автоматически сохраняет копии оригинальных файлов, добавляя к их именам префикс _original.
  130. Для того, чтобы бэкапы не создавались нужно добавлять параметр -overwrite_original к командам. Для удаления созданного бэкапа нужно добавлять параметр:
  131. \033[32m -delete_original[!]\033[0m
  132. Для восстановления из бэкапа
  133. \033[32m -restore_original\033[0m
  134. Ещё может понадобится параметр -progress для отображения прогресса и -r для рекурсивной обработки.
  135. ";ES;fi;;
  136. 2) S=M2;SC;if [[ $cur == enter ]];then R;echo "
  137. Ниже список типов файлов и метаданных поддерживаемых ExifTool (r = чтение, w = запись, c = создание). Поддерживаемые типы файлов :
  138. -------------------------------------------------------------------
  139. *** File Types ***
  140. ------------+-------------+-------------+-------------+------------
  141. 3FR r | DPX r | ISO r | O r | RAW r/w
  142. 3G2 r/w | DR4 r/w/c | ITC r | ODP r | RIFF r
  143. 3GP r/w | DSS r | J2C r | ODS r | RSRC r
  144. A r | DV r | JNG r/w | ODT r | RTF r
  145. AA r | DVB r/w | JP2 r/w | OFR r | RW2 r/w
  146. AAE r | DVR-MS r | JPEG r/w | OGG r | RWL r/w
  147. AAX r/w | DYLIB r | JSON r | OGV r | RWZ r
  148. ACR r | EIP r | K25 r | OPUS r | RM r
  149. AFM r | EPS r/w | KDC r | ORF r/w | SEQ r
  150. AI r/w | EPUB r | KEY r | OTF r | SKETCH r
  151. AIFF r | ERF r/w | LA r | PAC r | SO r
  152. APE r | EXE r | LFP r | PAGES r | SR2 r/w
  153. ARQ r/w | EXIF r/w/c | LNK r | PBM r/w | SRF r
  154. ARW r/w | EXR r | LRV r/w | PCD r | SRW r/w
  155. ASF r | EXV r/w/c | M2TS r | PCX r | SVG r
  156. AVI r | F4A/V r/w | M4A/V r/w | PDB r | SWF r
  157. AVIF r/w | FFF r/w | MAX r | PDF r/w | THM r/w
  158. AZW r | FITS r | MEF r/w | PEF r/w | TIFF r/w
  159. BMP r | FLA r | MIE r/w/c | PFA r | TORRENT r
  160. BPG r | FLAC r | MIFF r | PFB r | TTC r
  161. BTF r | FLIF r/w | MKA r | PFM r | TTF r
  162. CHM r | FLV r | MKS r | PGF r | TXT r
  163. COS r | FPF r | MKV r | PGM r/w | VCF r
  164. CR2 r/w | FPX r | MNG r/w | PLIST r | VRD r/w/c
  165. CR3 r/w | GIF r/w | MOBI r | PICT r | VSD r
  166. CRM r/w | GPR r/w | MODD r | PMP r | WAV r
  167. CRW r/w | GZ r | MOI r | PNG r/w | WDP r/w
  168. CS1 r/w | HDP r/w | MOS r/w | PPM r/w | WEBP r
  169. CSV r | HDR r | MOV r/w | PPT r | WEBM r
  170. CZI r | HEIC r/w | MP3 r | PPTX r | WMA r
  171. DCM r | HEIF r/w | MP4 r/w | PS r/w | WMV r
  172. DCP r/w | HTML r | MPC r | PSB r/w | WTV r
  173. DCR r | ICC r/w/c | MPG r | PSD r/w | WV r
  174. DFONT r | ICS r | MPO r/w | PSP r | X3F r/w
  175. DIVX r | IDML r | MQV r/w | QTIF r/w | XCF r
  176. DJVU r | IIQ r/w | MRW r/w | R3D r | XLS r
  177. DLL r | IND r/w | MXF r | RA r | XLSX r
  178. DNG r/w | INSP r/w | NEF r/w | RAF r/w | XMP r/w/c
  179. DOC r | INSV r | NRW r/w | RAM r | ZIP r
  180. DOCX r | INX r | NUMBERS r | RAR r |
  181. ";ES;fi;;
  182. 3) S=M3;SC;if [[ $cur == enter ]];then R;echo "
  183. ----------------------+----------------------+---------------------
  184. EXIF r/w/c | CIFF r/w | Ricoh RMETA r
  185. GPS r/w/c | AFCP r/w | Picture Info r
  186. IPTC r/w/c | Kodak Meta r/w | Adobe APP14 r
  187. XMP r/w/c | FotoStation r/w | MPF r
  188. MakerNotes r/w/c | PhotoMechanic r/w | Stim r
  189. Photoshop IRB r/w/c | JPEG 2000 r | DPX r
  190. ICC Profile r/w/c | DICOM r | APE r
  191. MIE r/w/c | Flash r | Vorbis r
  192. JFIF r/w/c | FlashPix r | SPIFF r
  193. Ducky APP12 r/w/c | QuickTime r | DjVu r
  194. PDF r/w/c | Matroska r | M2TS r
  195. PNG r/w/c | MXF r | PE/COFF r
  196. Canon VRD r/w/c | PrintIM r | AVCHD r
  197. Nikon Capture r/w/c | FLAC r | ZIP r
  198. GeoTIFF r/w/c | ID3 r | (and more)
  199. ";ES;fi;;
  200. 4) S=M4;SC;if [[ $cur == enter ]];then R;echo "
  201. В Windows аргументы командной строки указываются с использованием текущей кодовой страницы и автоматически перекодируются на системную кодовую страницу. Это
  202. перекодирование не сделано для аргументов в файлах arg ExifTool, поэтому по умолчанию имена файлов в файлах arg используют системную кодовую страницу. К сожалению,
  203. эти кодовые страницы не являются полными наборы символов, поэтому могут быть представлены не все имена файлов.
  204. ExifTool 9.79 и более поздние версии позволяют указывать кодировку имени файла с помощью «-charset filename = CHARSET», где «CHARSET» - это имя действующего
  205. ExifTool набор символов, предпочтительно UTF8 (полный список см. в параметре -charset). Установка этого параметра запускает использование подпрограмм ввода-вывода
  206. широких символов Windows, таким образом обеспечение поддержки большинства имен файлов Unicode (см. примечание 4). Но обратите внимание, что передать правильно
  207. закодированные имена файлов в команде Windows нетривиально строку (см. https://exiftool.org/faq.html#Q18 для получения подробной информации), поэтому рекомендуется
  208. разместить их в кодировке UTF-8 - @ argfile и использовать -charset filename = utf8 если возможно.
  209. Предупреждение выдается, если указанное имя файла содержит специальные символы, а набор символов имени файла не был предоставлен. Однако предупреждение может быть
  210. отключено установкой -charset filename = \"\", и ExifTool может по-прежнему работать правильно, если системная кодовая страница совпадает с набором символов,
  211. используемым для файла имена.
  212. Если указано имя каталога, кодировку имени файла указывать не нужно (если имя каталога не содержит специальных символов), и ExifTool будет автоматически
  213. использовать подпрограммы расширенных символов для сканирования каталога.
  214. Набор символов имени файла применяется к аргументам ФАЙЛА, а также к аргументам имени файла - @, -geotag, -o, -p, -srcfile, -tagsFromFile, -csv =, -j = и -ТЭГ <=
  215. Однако это не относится к имени файла -config, которое всегда использует системный набор символов. Параметр -charset filename = должен стоять перед параметр - @
  216. будет эффективным, но порядок не имеет значения по отношению к другим параметрам.
  217. Примечания:
  218. 1) Значения тегов FileName и Directory по-прежнему используют ту же кодировку, что и другие значения тегов, и преобразуются в / из набора символов имени файла,
  219. когда запись / чтение, если указано.
  220. 2) Поддержка Unicode еще не реализована для других систем на базе Windows, таких как Cygwin.
  221. 3) См. Раздел «ЗАПИСЬ ФАЙЛОВ ТОЛЬКО ДЛЯ ЧТЕНИЯ» ниже, чтобы узнать о редактировании файлов только для чтения с именами Unicode.
  222. 4) Имена файлов Unicode с суррогатными парами (кодовые точки над U + FFFF) по-прежнему вызывают проблемы.
  223. ";ES;fi;;
  224. 5) S=M5;SC;if [[ $cur == enter ]];then R;echo "
  225. Как правило, ExifTool может использоваться для записи метаданных в файлы, доступные только для чтения, при условии, что у пользователя есть разрешение на запись в
  226. каталог. Однако есть три случая, когда также требуется разрешение на запись в файл:
  227. 1) При использовании параметра -overwrite_original_in_place.
  228. 2) При записи только псевдосистемных тегов (например, FileModifyDate).
  229. 3) В Windows, если в имени файла есть символы Юникода и а) используется параметр -overwrite_original, или б) резервная копия _original уже существует.
  230. Скрытые файлы в Windows ведут себя как файлы только для чтения при попытке записать в файл какие-либо реальные теги - при использовании
  231. -overwrite_original_in_place, в противном случае запись должна быть успешной и скрытый атрибут будет удален. Но можно использовать параметр -if, чтобы избежать
  232. обработка скрытых файлов (при наличии Win32API :: File):
  233. exiftool -if "\$fileattributes !~ /Hidden/" ...
  234. ";ES;fi;;
  235. 6) S=M6;SC;if [[ $cur == enter ]];then R;echo "
  236. Приложение exiftool завершает работу со статусом 0 в случае успеха,
  237. или 1, если произошла ошибка,
  238. или 2, если все файлы не прошли условие -if (для любого из команды, если использовалось -execute).
  239. ";ES;fi;;
  240. 7) S=M7;SC;if [[ $cur == enter ]];then R;echo " Авторское право 2003-2020, Фил Харви. Это бесплатное программное обеспечение; вы можете распространять и / или изменять его на тех же условиях, что и сам Perl.";ES;fi;;
  241. 8) S=M8;SC;if [[ $cur == enter ]];then R;echo " Image::ExifTool(3pm), Image::ExifTool::TagNames(3pm), Image::ExifTool::Shortcuts(3pm), Image::ExifTool::Shift.pl";ES;fi;;
  242. 9) S=M9;SC;if [[ $cur == enter ]];then R;echo "
  243. Установка ExifTool Для «ExifTool» требуется «Perl» версии 5.004 или новее. Никакие другие библиотеки не требуются.
  244. Установить exiftool: sudo apt install libimage-exiftool-perl
  245. Удалить exiftool: sudo apt remove libimage-exiftool-perl && sudo apt autoremove
  246. ";ES;fi;;
  247. 10) S=M10;SC;if [[ $cur == enter ]];then R;echo " Примечание: Существует множество типов метаданных и ExifTool удаляет только те метаданные с которыми умеет работать!";ES;fi;;
  248. 11) S=M11;SC;if [[ $cur == enter ]];then R;./mExiftoolOption.sh;ES;fi;;
  249. 12) S=M12;SC;if [[ $cur == enter ]];then R;./mExiftoolTagA.sh;ES;fi;;
  250. 13) S=M13;SC;if [[ $cur == enter ]];then R;./mExiftoolOtherAdvanced.sh;ES;fi;;
  251. 14) S=M14;SC;if [[ $cur == enter ]];then R;echo "
  252. -restore_original -delete_original[!]
  253. Эти параметры служебной программы автоматизируют обслуживание файлов \"_original\", созданных exiftool. Они не действуют на файлы без \"_original\" копировать.
  254. Параметр -restore_original восстанавливает указанные файлы из их исходных копий путем переименования файлов \"_original\" для замены отредактированных версии.
  255. Например, следующая команда восстанавливает оригиналы всех изображений JPG в каталоге «DIR»:
  256. exiftool -restore_original -ext jpg КАТАЛОГ
  257. Параметр -delete_original удаляет \"_original\" копии всех файлов, указанных в командной строке. Без завершающего \"!\" эта опция запрашивает подтверждение перед
  258. продолжением. Например, следующая команда удаляет «a.jpg_original», если он существует, после вопроса «Вы уверены?»:
  259. exiftool -delete_original a.jpg
  260. Эти параметры нельзя использовать с другими параметрами для чтения или записи значений тегов в той же команде, но их можно комбинировать с такими параметрами,
  261. как -ext, -if, -r, -q и -v.
  262. ";ES;fi;;
  263. 15) S=M15;SC;if [[ $cur == enter ]];then R;echo "
  264. \"DateFmt\"
  265. Упрощает переформатирование отдельных значений даты и времени. Эта функция работает со стандартным значением даты / времени в формате EXIF ​​в \$ _ и форматирует
  266. его в соответствии с указанная строка формата (см. параметр -d). Чтобы не пытаться переформатировать уже отформатированное значение даты / времени, к имени тега
  267. необходимо добавить \"#\" (как в примере ниже), если также используется опция -d. Например:
  268. exiftool -p '$ {createdate #; DateFmt ("% Y-% m-% d_% H% M% S")}' a.jpg
  269. \"ShiftTime\"
  270. Сдвигает строку даты / времени в формате EXIF ​​на указанную величину. Начните с ведущего знака минус, чтобы переместиться назад во времени.
  271. См. Image :: ExifTool :: Shift.pl для получения подробной информации о синтаксисе сдвига. Например, чтобы сдвинуть значение даты / времени назад на один год:
  272. exiftool -p '\$ {createdate; ShiftTime (\"- 1: 0: 0 0\")}' a.jpg
  273. \"NoDups\"
  274. Удаляет повторяющиеся элементы из списка с разделителем, указанным параметром -sep. Эта функция наиболее полезна при копировании тегов типа списка. Например,
  275. следующую команду можно использовать для удаления повторяющихся ключевых слов:
  276. exiftool -sep '##' '-keywords <\$ {keywords; NoDups}' a.jpg
  277. Параметр -sep необходим для разделения строки на отдельные элементы списка при записи в тег типа списка.
  278. Необязательный аргумент флага может быть установлен в 1, чтобы «NoDups» возвращал undef, если дубликаты не существовали, что предотвращает перезапись файла без
  279. надобности:
  280. exiftool -sep '##' '-keywords <\$ {keywords; NoDups (1)}' a.jpg
  281. Обратите внимание, что имена функций чувствительны к регистру.
  282. ";ES;fi;;
  283. 16) S=M16;SC;if [[ $cur == enter ]];then R;./mExiftoolRedingExemples.sh;ES;fi;;
  284. 17) S=M17;SC;if [[ $cur == enter ]];then R;./mExiftoolWritingExamples.sh;ES;fi;;
  285. 18) S=M18;SC;if [[ $cur == enter ]];then R;./mExiftoolCopyingRenaming.sh;ES;fi;;
  286. 19) S=M19;SC;if [[ $cur == enter ]];then R;./mExiftoolGeotaggingPiping.sh;ES;fi;;
  287. 20) S=M20;SC;if [[ $cur == enter ]];then R;echo "
  288. exiftool imagen.jpg
  289. #
  290. Прочитать какой-либо отдельный тег в метаданных изображения: exiftool -ISO FOTO.JPG
  291. ";ES;fi;;
  292. 21) S=M21;SC;if [[ $cur == enter ]];then R;echo "
  293. Для отображения информации о GPS координатах содержащихся в фотографии в форматированном виде:
  294. exiftool -filename -gpslatitude -gpslongitude -T input.jpg
  295. #
  296. GPS Alittude - количество метров над уровнем моря;
  297. GPS Latitude - географическая широта, в градусах, минутах и секундах;
  298. GPS Longitude - географическая долгота в градусах, минутах и секундах;
  299. #
  300. отфильтровать из вывода команды только геоданные:
  301. exiftool video.mp4 | grep GPS
  302. ";ES;fi;;
  303. 22) S=M22;SC;if [[ $cur == enter ]];then R;echo "
  304. Чтобы добавить или изменить Координаты GPS к фотографии мы должны написать что-то вроде следующего:
  305. exiftool -exif:gpslatitude\"27 33\" -exif:gpslatituderef=S -exif:gpslongitude=\"165 130\" -exif:gpslongituderef=E fotografia.jpg
  306. ";ES;fi;;
  307. 23) S=M23;SC;if [[ $cur == enter ]];then R;echo "
  308. Параметр -TagsFromFile копирует все теги из указанного файла в файл, указанный в качестве последнего аргумента. Например:
  309. exiftool -TagsFromFile sourcefile.jpg resultfile.jpg
  310. ";ES;fi;;
  311. 24) S=M24;SC;if [[ $cur == enter ]];then R;echo "
  312. -x - исключить указанные теги данных;
  313. -b - выводить данные в двоичном формате;
  314. -с - установить формат вывода GPS координат;
  315. -d - установить формат для даты и времени;
  316. -h выводить данные, отформатированные в HTML: exiftool -h video.mp4 > data.html
  317. -j - выводить информацию в формате JSON;
  318. -X - выводить информацию в формате XML;
  319. -o - вывести данные в указанный файл;
  320. -P - сохранить атрибуты даты модификации файла;
  321. -s вывести имена тегов вместо их описаний: exiftool -s video.mp4
  322. -G Посмотреть в какой группе находится каждый выводимый тег: exiftool -G video.mp4
  323. -list вывести список всех доступных тегов: exiftool -list
  324. Вывести все теги группы можно с помощью той же опции -list или -listw только дополнительно надо указать имя группы и приставку :all.
  325. Например, для группы Composite: exiftool -list -Composite:all
  326. -listw вывести список всех тегов, которые можно редактировать: exiftool -listw FOTO.JPG
  327. -listg Вывести все доступные группы тегов: exiftool -listg
  328. -lang - установить язык.
  329. ";ES;fi;;
  330. 25) S=M25;SC;if [[ $cur == enter ]];then R;echo " man exiftool";ES;fi;;
  331. 26) S=M26;SC;if [[ $cur == enter ]];then R;echo " exiftool -lang ru video.mp4";ES;fi;;
  332. 27) S=M27;SC;if [[ $cur == enter ]];then R;echo " exiftool -lang";ES;fi;;
  333. 28) S=M28;SC;if [[ $cur == enter ]];then R;echo "
  334. Чтобы изменить значение тега, надо передать его в виде опции, а после знака равно передать его значение. Например добавим параметр GPSSpeed:
  335. exiftool -GPSSpeed=2 video.mp4
  336. #
  337. По умолчанию новые метаданные записываются в новый файл с таким же именем, а старая версия сохраняется в файле с приставкой _original.
  338. Чтобы этот файл не создавался надо использовать опцию -overwrite_original:
  339. exiftool -overwrite_original -GPSSpeed=2 video.mp4
  340. ";ES;fi;;
  341. 29) S=M29;SC;if [[ $cur == enter ]];then R;echo "
  342. Для того чтобы затереть значение параметра надо передать ему пустое значение. Например:
  343. exiftool -GPSSpeed= video.mp4
  344. #
  345. Для того чтобы удалить вообще все метаданные используйте модификатор all и присвойте ему пустое значение:
  346. exiftool -all= video.mp4
  347. #
  348. удалить метаданные из всех файлов в папке:
  349. exiftool -all= *.mp4
  350. ";ES;fi;;
  351. 30) S=M30;SC;if [[ $cur == enter ]];then R;echo "
  352. чтобы один или несколько одинаковых тегов нужно записать или удалить во множестве изображений. Ниже команда запишет значение ISO во все файлы с расширением jpg в
  353. текущей папке. Символ * в имени файла — шаблон для любого имени:
  354. exiftool -ISO='200' *.JPG
  355. #
  356. При редактировании тегов утилита создаёт рядом с новым файлом файл-оригинал с суффиксом \"_original\". Если этого не требуется, нужно использовать дополнительную
  357. опцию -overwrite_original:
  358. exiftool -ISO='200' -overwrite_original *.JPG
  359. #
  360. Примечание: если же эту опцию забыли написать и ExifTool создал много архивных копий с суффиксом \"_original\", то удалить эти копии можно выполнив в консоли для
  361. систем Linux в текущем каталоге несложный одно-строчный скрипт:
  362. for f in *_original ; do rm \$f; done
  363. ";ES;fi;;
  364. 31) S=M31;SC;if [[ $cur == enter ]];then R;echo "
  365. Make — производитель камеры
  366. Model — модель камеры
  367. DateTime — дата последнего изменения изображения
  368. ExposureTime — выдержка
  369. FNumber — число диафрагмы
  370. ISO — светочувствительность
  371. DateTimeOriginal — время съемки
  372. FocalLength — фокусное расстояние объектива на камере
  373. Artist — автор
  374. Copyright — копирайт
  375. UserComment — комментарии пользователя к файлу
  376. ";ES;fi;;
  377. #
  378. 32) S=M32;SC;if [[ $cur == enter ]];then R;echo "
  379. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  380. https://gitlab.com/GrannikOleg/mexiftool
  381. https://github.com/GrannikOleg/mExiftool
  382. https://notabug.org/Grannikoleg/mExiftool
  383. https://sourceforge.net/p/mexiftool/git/ci/master/tree/
  384. https://bitbucket.org/grannikoleg/mexiftool/src/master/
  385. https://framagit.org/GrannikOleg/mexiftool
  386. --------+----------------------------------------------
  387. Grannik | 2021.01.05
  388. ~~~~~~~~+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  389. ";ES;fi;;
  390. 33) S=M33;SC;if [[ $cur == enter ]];then R;clear;ls -l;exit 0;fi;;
  391. esac;POS;done