exiftool_vendored 12.11.0 → 12.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +62 -2
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +70 -36
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool.pm +39 -4
- data/bin/lib/Image/ExifTool.pod +12 -8
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -4
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +28 -2
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +4 -4
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +14 -1
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +1 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +30 -11
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +1 -1
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +3 -3
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +315 -35
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +10 -2
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +12 -4
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
- data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +38 -23
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
- data/bin/lib/Image/ExifTool/RIFF.pm +83 -5
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +8 -2
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +3943 -3807
- data/bin/lib/Image/ExifTool/TagNames.pod +312 -18
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +26 -14
- data/bin/lib/Image/ExifTool/XMP.pm +17 -8
- data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +9 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6e5f50165965c391eee5f2088b8220f437030d2c6f03f3f1af04df861f962f24
|
|
4
|
+
data.tar.gz: e9c7f8127928dfc92efcbe0e851dffeea05f6a97282497ff7a1e456c4802c9b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 54b390d7d5dd0b4e8420b747301442137dba8efea7fb6fb3b509634560ac1f5845f5d8dfae09b35c8ce6793a13cdd88e8620068464437d97632f19fb567da837
|
|
7
|
+
data.tar.gz: c2f4c386d46378f95d080c67e9a06d8c0b4a8e48038aff3dda4dc3da32cfa280dd79f39ac85c15174dd6186a24e8093157ec2529944a72d19312f4a569806f77
|
data/bin/Changes
CHANGED
|
@@ -4,8 +4,68 @@ ExifTool Version History
|
|
|
4
4
|
|
|
5
5
|
RSS feed: https://exiftool.org/rss.xml
|
|
6
6
|
|
|
7
|
-
Note: The most recent production release is Version 12.
|
|
8
|
-
considered development releases, and are not uploaded to
|
|
7
|
+
Note: The most recent production release is Version 12.16. (Other versions are
|
|
8
|
+
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
|
+
|
|
10
|
+
Jan. 21, 2021 - Version 12.16 (production release)
|
|
11
|
+
|
|
12
|
+
- Extract another form of video subtitle text
|
|
13
|
+
- Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
|
|
14
|
+
stream in MP4 files
|
|
15
|
+
- Changed a Nikon FlashMode value
|
|
16
|
+
- Fixed problem that caused a failed DPX test on Strawberry Perl
|
|
17
|
+
|
|
18
|
+
Jan. 18, 2021 - Version 12.15 (production release)
|
|
19
|
+
|
|
20
|
+
- Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
|
|
21
|
+
- Added a new Nikon FlashMode value (thanks Mike)
|
|
22
|
+
- Decode NikonSettings (thanks Warren Hatch)
|
|
23
|
+
- Decode thermal information from DJI RJPEG images
|
|
24
|
+
- Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10
|
|
25
|
+
- Fixed out-of-memory problem when writing some very large PNG files under
|
|
26
|
+
Windows
|
|
27
|
+
|
|
28
|
+
Jan. 6, 2021 - Version 12.14
|
|
29
|
+
|
|
30
|
+
- Added support for 2 more types of timed GPS in video files (that makes 49
|
|
31
|
+
different formats now supported)
|
|
32
|
+
- Added validity check for PDF trailer dictionary Size
|
|
33
|
+
- Added a new Pentax LensType
|
|
34
|
+
- Extract metadata from Jpeg2000 Association box
|
|
35
|
+
- Changed -g:XX:YY and -G:XX:YY options to show empty strings for non-existent
|
|
36
|
+
groups
|
|
37
|
+
- Patched to issue warning and avoid writing date/time values with a zero
|
|
38
|
+
month or day number
|
|
39
|
+
- Patched to avoid runtime warnings if trying to set FileName to an empty
|
|
40
|
+
string
|
|
41
|
+
- Fixed issue that could cause GPS test number 12 to fail on some systems
|
|
42
|
+
- Fixed problem extracting XML as a block from Jpeg2000 images, and extract
|
|
43
|
+
XML tags in the XML group instead of XMP
|
|
44
|
+
|
|
45
|
+
Dec. 24, 2020 - Version 12.13
|
|
46
|
+
|
|
47
|
+
- Added -i HIDDEN option to ignore files with names that start with "."
|
|
48
|
+
- Added a few new Nikon ShutterMode values (thanks Jan Skoda)
|
|
49
|
+
- Added ability to write Google GCamera MicroVideo XMP tags
|
|
50
|
+
- Add time zone automatically to most string-based QuickTime date/time tags
|
|
51
|
+
when writing unless the PrintConv option is disabled
|
|
52
|
+
- Decode a new Sony tag (thanks LibRaw)
|
|
53
|
+
- Changed behaviour when writing only pseudo tags to return an error and avoid
|
|
54
|
+
writing any other tags if writing FileName fails
|
|
55
|
+
- Print "X image files read" message even if only 1 file is read when at least
|
|
56
|
+
one other file has failed the -if condition
|
|
57
|
+
|
|
58
|
+
Dec. 4, 2020 - Version 12.12
|
|
59
|
+
|
|
60
|
+
- Added ability to geotag from DJI CSV log files
|
|
61
|
+
- Added a new CanonModelID
|
|
62
|
+
- Added a couple of new Sony LensType values (thanks LibRaw)
|
|
63
|
+
- Enhanced -csvDelim option to allow "\t", "\n", "\r" and "\\"
|
|
64
|
+
- Unescape "\b" and "\f" in imported JSON values
|
|
65
|
+
- Fixed bug introduced in 12.10 which generated a "Not an integer" warning
|
|
66
|
+
when attempting to shift some QuickTime date/time tags
|
|
67
|
+
- Fixed shared-write permission problem with -@ argfile when using -stay_open
|
|
68
|
+
and a filename containing special characters on Windows
|
|
9
69
|
|
|
10
70
|
Nov. 27, 2020 - Version 12.11
|
|
11
71
|
|
data/bin/MANIFEST
CHANGED
|
@@ -115,6 +115,7 @@ html/TagNames/Motorola.html
|
|
|
115
115
|
html/TagNames/Nikon.html
|
|
116
116
|
html/TagNames/NikonCapture.html
|
|
117
117
|
html/TagNames/NikonCustom.html
|
|
118
|
+
html/TagNames/NikonSettings.html
|
|
118
119
|
html/TagNames/Nintendo.html
|
|
119
120
|
html/TagNames/OOXML.html
|
|
120
121
|
html/TagNames/Ogg.html
|
|
@@ -337,6 +338,7 @@ lib/Image/ExifTool/Motorola.pm
|
|
|
337
338
|
lib/Image/ExifTool/Nikon.pm
|
|
338
339
|
lib/Image/ExifTool/NikonCapture.pm
|
|
339
340
|
lib/Image/ExifTool/NikonCustom.pm
|
|
341
|
+
lib/Image/ExifTool/NikonSettings.pm
|
|
340
342
|
lib/Image/ExifTool/Nintendo.pm
|
|
341
343
|
lib/Image/ExifTool/OOXML.pm
|
|
342
344
|
lib/Image/ExifTool/Ogg.pm
|
|
@@ -567,6 +569,7 @@ t/GeoTiff_4.out
|
|
|
567
569
|
t/Geotag.t
|
|
568
570
|
t/Geotag_10.out
|
|
569
571
|
t/Geotag_11.out
|
|
572
|
+
t/Geotag_12.out
|
|
570
573
|
t/Geotag_2.out
|
|
571
574
|
t/Geotag_3.out
|
|
572
575
|
t/Geotag_5.out
|
|
@@ -602,6 +605,7 @@ t/Jpeg2000.t
|
|
|
602
605
|
t/Jpeg2000_2.out
|
|
603
606
|
t/Jpeg2000_3.out
|
|
604
607
|
t/Jpeg2000_4.out
|
|
608
|
+
t/Jpeg2000_5.out
|
|
605
609
|
t/Kodak.t
|
|
606
610
|
t/Kodak_2.out
|
|
607
611
|
t/Kodak_3.out
|
|
@@ -986,6 +990,7 @@ t/images/Geotag.log
|
|
|
986
990
|
t/images/Geotag.xml
|
|
987
991
|
t/images/Geotag2.log
|
|
988
992
|
t/images/Geotag3.log
|
|
993
|
+
t/images/Geotag_DJI_2020-12-02_[07-50-31].csv
|
|
989
994
|
t/images/GoPro.jpg
|
|
990
995
|
t/images/HTML.html
|
|
991
996
|
t/images/ICC_Profile.icc
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
|
|
|
106
106
|
terminal window to extract and run ExifTool:
|
|
107
107
|
|
|
108
108
|
cd ~/Desktop
|
|
109
|
-
gzip -dc Image-ExifTool-12.
|
|
110
|
-
cd Image-ExifTool-12.
|
|
109
|
+
gzip -dc Image-ExifTool-12.16.tar.gz | tar -xf -
|
|
110
|
+
cd Image-ExifTool-12.16
|
|
111
111
|
./exiftool t/images/ExifTool.jpg
|
|
112
112
|
|
|
113
113
|
Note: These commands extract meta information from one of the test images.
|
|
@@ -161,7 +161,7 @@ for calculating digest values and providing other features listed below:
|
|
|
161
161
|
|
|
162
162
|
COPYRIGHT AND LICENSE
|
|
163
163
|
|
|
164
|
-
Copyright 2003-
|
|
164
|
+
Copyright 2003-2021, Phil Harvey
|
|
165
165
|
|
|
166
166
|
This is free software; you can redistribute it and/or modify it under the
|
|
167
167
|
same terms as Perl itself.
|
data/bin/exiftool
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
use strict;
|
|
11
11
|
require 5.004;
|
|
12
12
|
|
|
13
|
-
my $version = '12.
|
|
13
|
+
my $version = '12.16';
|
|
14
14
|
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
|
16
16
|
my $exeDir;
|
|
@@ -106,6 +106,7 @@ my %csvTags; # lookup for all found tags with CSV option (lower case keys
|
|
|
106
106
|
my %database; # lookup for database information based on file name (in ExifTool Charset)
|
|
107
107
|
my %filterExt; # lookup for filtered extensions
|
|
108
108
|
my %ignore; # directory names to ignore
|
|
109
|
+
my $ignoreHidden; # flag to ignore hidden files
|
|
109
110
|
my %preserveTime; # preserved timestamps for files
|
|
110
111
|
my %printFmt; # the contents of the print format file
|
|
111
112
|
my %setTags; # hash of list references for tags to set from files
|
|
@@ -370,12 +371,12 @@ if (grep /^-common_args$/i, @ARGV) {
|
|
|
370
371
|
Command: for (;;) {
|
|
371
372
|
|
|
372
373
|
if (@echo3) {
|
|
373
|
-
my $str = join
|
|
374
|
+
my $str = join("\n", @echo3) . "\n";
|
|
374
375
|
$str =~ s/\$\{status\}/$rtnVal/ig;
|
|
375
376
|
print STDOUT $str;
|
|
376
377
|
}
|
|
377
378
|
if (@echo4) {
|
|
378
|
-
my $str = join
|
|
379
|
+
my $str = join("\n", @echo4) . "\n";
|
|
379
380
|
$str =~ s/\$\{status\}/$rtnVal/ig;
|
|
380
381
|
print STDERR $str;
|
|
381
382
|
}
|
|
@@ -468,6 +469,7 @@ undef $fileHeader;
|
|
|
468
469
|
undef $filtered;
|
|
469
470
|
undef $fixLen;
|
|
470
471
|
undef $forcePrint;
|
|
472
|
+
undef $ignoreHidden;
|
|
471
473
|
undef $joinLists;
|
|
472
474
|
undef $langOpt;
|
|
473
475
|
undef $listItem;
|
|
@@ -859,7 +861,11 @@ for (;;) {
|
|
|
859
861
|
}
|
|
860
862
|
if (/^csvdelim$/i) {
|
|
861
863
|
$csvDelim = shift;
|
|
862
|
-
defined $csvDelim or Error("Expecting argument for -csvDelim option\n"), $badCmd=1;
|
|
864
|
+
defined $csvDelim or Error("Expecting argument for -csvDelim option\n"), $badCmd=1, next;
|
|
865
|
+
$csvDelim =~ /"/ and Error("CSV delimiter can not contain a double quote\n"), $badCmd=1, next;
|
|
866
|
+
my %unescape = ( 't'=>"\t", 'n'=>"\n", 'r'=>"\r", '\\' => '\\' );
|
|
867
|
+
$csvDelim =~ s/\\(.)/$unescape{$1}||"\\$1"/sge;
|
|
868
|
+
$mt->Options(CSVDelim => $csvDelim);
|
|
863
869
|
next;
|
|
864
870
|
}
|
|
865
871
|
if (/^d$/ or $a eq 'dateformat') {
|
|
@@ -888,8 +894,8 @@ for (;;) {
|
|
|
888
894
|
$helped = 1;
|
|
889
895
|
next;
|
|
890
896
|
}
|
|
891
|
-
if (/^(ee|extractembedded)$/i) {
|
|
892
|
-
$mt->Options(ExtractEmbedded => 1);
|
|
897
|
+
if (/^(ee|extractembedded)(\d*)$/i) {
|
|
898
|
+
$mt->Options(ExtractEmbedded => $2 || 1);
|
|
893
899
|
$mt->Options(Duplicates => 1);
|
|
894
900
|
next;
|
|
895
901
|
}
|
|
@@ -982,6 +988,7 @@ for (;;) {
|
|
|
982
988
|
my $dir = shift;
|
|
983
989
|
defined $dir or Error("Expecting directory name for -i option\n"), $badCmd=1, next;
|
|
984
990
|
$ignore{$dir} = 1;
|
|
991
|
+
$dir eq 'HIDDEN' and $ignoreHidden = 1;
|
|
985
992
|
next;
|
|
986
993
|
}
|
|
987
994
|
if (/^if(\d*)$/i) {
|
|
@@ -1859,7 +1866,7 @@ if (defined $deleteOrig) {
|
|
|
1859
1866
|
printf($o "%5d image files %s\n", $countCopyWr, $overwriteOrig ? 'moved' : 'copied') if $countCopyWr;
|
|
1860
1867
|
printf($o "%5d files weren't updated due to errors\n", $countBadWr) if $countBadWr;
|
|
1861
1868
|
printf($o "%5d files weren't created due to errors\n", $countBadCr) if $countBadCr;
|
|
1862
|
-
printf($o "%5d image files read\n", $count) if $tot>1 or ($countDir and not $totWr);
|
|
1869
|
+
printf($o "%5d image files read\n", $count) if ($tot+$countFailed)>1 or ($countDir and not $totWr);
|
|
1863
1870
|
printf($o "%5d files could not be read\n", $countBad) if $countBad;
|
|
1864
1871
|
printf($o "%5d output files created\n", scalar(keys %created)) if $textOut;
|
|
1865
1872
|
printf($o "%5d output files appended\n", scalar(keys %appended)) if %appended;
|
|
@@ -2851,6 +2858,10 @@ sub SetImageInfo($$$)
|
|
|
2851
2858
|
# determine what our output file name should be
|
|
2852
2859
|
my $newFileName = $et->GetNewValues('FileName');
|
|
2853
2860
|
my $newDir = $et->GetNewValues('Directory');
|
|
2861
|
+
if (defined $newFileName and not length $newFileName) {
|
|
2862
|
+
Warn "Warning: New file name is empty - $ infile\n";
|
|
2863
|
+
undef $newFileName;
|
|
2864
|
+
}
|
|
2854
2865
|
if (defined $testName) {
|
|
2855
2866
|
my $err;
|
|
2856
2867
|
$err = "You shouldn't write FileName or Directory with TestFile" if defined $newFileName or defined $newDir;
|
|
@@ -2929,14 +2940,19 @@ sub SetImageInfo($$$)
|
|
|
2929
2940
|
}
|
|
2930
2941
|
# quickly rename file and/or set file date if this is all we are doing
|
|
2931
2942
|
if ($numSet == $numPseudo) {
|
|
2932
|
-
my $r1 =
|
|
2933
|
-
|
|
2934
|
-
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2943
|
+
my ($r0, $r1, $r2, $r3) = (0, 0, 0, 0);
|
|
2944
|
+
if (defined $outfile) {
|
|
2945
|
+
$r0 = $et->SetFileName($file, $outfile);
|
|
2946
|
+
$file = $$et{NewName} if $r0 > 0; # continue with new name if changed
|
|
2947
|
+
}
|
|
2948
|
+
unless ($r0 < 0) {
|
|
2949
|
+
$r1 = $et->SetFileModifyDate($file,undef,'FileCreateDate');
|
|
2950
|
+
$r2 = $et->SetFileModifyDate($file);
|
|
2951
|
+
$r3 = $et->SetSystemTags($file);
|
|
2952
|
+
}
|
|
2953
|
+
if ($r0 > 0 or $r1 > 0 or $r2 > 0 or $r3 > 0) {
|
|
2938
2954
|
++$countGoodWr;
|
|
2939
|
-
} elsif ($
|
|
2955
|
+
} elsif ($r0 < 0 or $r1 < 0 or $r2 < 0 or $r3 < 0) {
|
|
2940
2956
|
EFile($infile);
|
|
2941
2957
|
++$countBadWr;
|
|
2942
2958
|
return 0;
|
|
@@ -2945,8 +2961,7 @@ sub SetImageInfo($$$)
|
|
|
2945
2961
|
++$countSameWr;
|
|
2946
2962
|
}
|
|
2947
2963
|
if (defined $hardLink or defined $symLink or defined $testName) {
|
|
2948
|
-
|
|
2949
|
-
DoHardLink($et, $src, $hardLink, $symLink, $testName);
|
|
2964
|
+
DoHardLink($et, $file, $hardLink, $symLink, $testName);
|
|
2950
2965
|
}
|
|
2951
2966
|
return 1;
|
|
2952
2967
|
}
|
|
@@ -3682,6 +3697,7 @@ sub ScanDir($$;$)
|
|
|
3682
3697
|
next;
|
|
3683
3698
|
}
|
|
3684
3699
|
next if $endThisDir;
|
|
3700
|
+
next if $ignoreHidden and $file =~ /^\./; # ignore hidden files if specified
|
|
3685
3701
|
# apply rules from -ext options
|
|
3686
3702
|
my $accepted;
|
|
3687
3703
|
if ($filterFlag) {
|
|
@@ -4557,7 +4573,7 @@ L<Processing control|/Processing control>
|
|
|
4557
4573
|
|
|
4558
4574
|
-a (-duplicates) Allow duplicate tags to be extracted
|
|
4559
4575
|
-e (--composite) Do not generate composite tags
|
|
4560
|
-
-ee
|
|
4576
|
+
-ee[NUM] (-extractEmbedded) Extract information from embedded files
|
|
4561
4577
|
-ext[+] EXT (-extension) Process files with specified extension
|
|
4562
4578
|
-F[OFFSET] (-fixBase) Fix the base for maker notes offsets
|
|
4563
4579
|
-fast[NUM] Increase speed when extracting metadata
|
|
@@ -5095,8 +5111,10 @@ generate a fixed-column CSV file instead of using the B<-csv> option.
|
|
|
5095
5111
|
|
|
5096
5112
|
=item B<-csvDelim> I<STR>
|
|
5097
5113
|
|
|
5098
|
-
Set the delimiter for separating CSV entries for
|
|
5099
|
-
|
|
5114
|
+
Set the delimiter for separating CSV entries for CSV file input/output via
|
|
5115
|
+
the B<-csv> option. I<STR> may contain "\t", "\n", "\r" and "\\" to
|
|
5116
|
+
represent TAB, LF, CR and '\' respectively. A double quote is not allowed
|
|
5117
|
+
in the delimiter. Default is ','.
|
|
5100
5118
|
|
|
5101
5119
|
=item B<-d> I<FMT> (B<-dateFormat>)
|
|
5102
5120
|
|
|
@@ -5349,7 +5367,7 @@ with this command:
|
|
|
5349
5367
|
|
|
5350
5368
|
produces output like this:
|
|
5351
5369
|
|
|
5352
|
-
-- Generated by ExifTool 12.
|
|
5370
|
+
-- Generated by ExifTool 12.16 --
|
|
5353
5371
|
File: a.jpg - 2003:10:31 15:44:19
|
|
5354
5372
|
(f/5.6, 1/60s, ISO 100)
|
|
5355
5373
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -5688,7 +5706,7 @@ when copying.
|
|
|
5688
5706
|
|
|
5689
5707
|
Extract existing tags only -- don't generate composite tags.
|
|
5690
5708
|
|
|
5691
|
-
=item B<-ee> (B<-extractEmbedded>)
|
|
5709
|
+
=item B<-ee>[I<NUM>] (B<-extractEmbedded>)
|
|
5692
5710
|
|
|
5693
5711
|
Extract information from embedded documents in EPS files, embedded EPS
|
|
5694
5712
|
information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
|
|
@@ -5706,6 +5724,11 @@ document as if it were a separate input file. This allows, for example,
|
|
|
5706
5724
|
generation of GPS track logs from timed metadata in videos. See
|
|
5707
5725
|
L<https://exiftool.org/geotag.html#Inverse> for examples.
|
|
5708
5726
|
|
|
5727
|
+
Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
|
|
5728
|
+
until the first Supplemental Enhancement Information (SEI) message is
|
|
5729
|
+
decoded, or 3 to parse the entire H624 stream and decode all SEI
|
|
5730
|
+
information.
|
|
5731
|
+
|
|
5709
5732
|
=item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
|
|
5710
5733
|
|
|
5711
5734
|
Process only files with (B<-ext>) or without (B<--ext>) a specified
|
|
@@ -5794,7 +5817,9 @@ name, or a full path. If a full path is specified, it must match the
|
|
|
5794
5817
|
Directory tag exactly to be ignored. Use multiple B<-i> options to ignore
|
|
5795
5818
|
more than one directory name. A special I<DIR> value of C<SYMLINKS> (case
|
|
5796
5819
|
sensitive) may be specified to ignore symbolic links when the B<-r> option
|
|
5797
|
-
is used.
|
|
5820
|
+
is used. As well, a value of C<HIDDEN> (case sensitive) may be used to
|
|
5821
|
+
ignore files with names that start with a "." (ie. hidden files on Unix
|
|
5822
|
+
systems) when scanning a directory.
|
|
5798
5823
|
|
|
5799
5824
|
=item B<-if>[I<NUM>] I<EXPR>
|
|
5800
5825
|
|
|
@@ -6353,10 +6378,10 @@ name and directory.
|
|
|
6353
6378
|
|
|
6354
6379
|
=item B<-stay_open> I<FLAG>
|
|
6355
6380
|
|
|
6356
|
-
If I<FLAG> is C<1> or C<True
|
|
6357
|
-
I<ARGFILE> even after reaching the end of file. This
|
|
6358
|
-
applications to pre-load exiftool, thus avoiding the
|
|
6359
|
-
exiftool for each command. The procedure is as follows:
|
|
6381
|
+
If I<FLAG> is C<1> or C<True> (case insensitive), causes exiftool keep
|
|
6382
|
+
reading from the B<-@> I<ARGFILE> even after reaching the end of file. This
|
|
6383
|
+
feature allows calling applications to pre-load exiftool, thus avoiding the
|
|
6384
|
+
overhead of loading exiftool for each command. The procedure is as follows:
|
|
6360
6385
|
|
|
6361
6386
|
1) Execute C<exiftool -stay_open True -@ I<ARGFILE>>, where I<ARGFILE> is the
|
|
6362
6387
|
name of an existing (possibly empty) argument file or C<-> to pipe arguments
|
|
@@ -6379,8 +6404,9 @@ signals back to your application.)
|
|
|
6379
6404
|
|
|
6380
6405
|
4) Repeat steps 2 and 3 for each command.
|
|
6381
6406
|
|
|
6382
|
-
5) Write C<-stay_open\nFalse\n> to I<ARGFILE> when
|
|
6383
|
-
exiftool to process any remaining command-line
|
|
6407
|
+
5) Write C<-stay_open\nFalse\n> (or C<-stay_open\n0\n>) to I<ARGFILE> when
|
|
6408
|
+
done. This will cause exiftool to process any remaining command-line
|
|
6409
|
+
arguments then exit normally.
|
|
6384
6410
|
|
|
6385
6411
|
The input I<ARGFILE> may be changed at any time before step 5 above by
|
|
6386
6412
|
writing the following lines to the currently open I<ARGFILE>:
|
|
@@ -6408,10 +6434,11 @@ an interface to the API UserParam option (see the
|
|
|
6408
6434
|
L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
|
|
6409
6435
|
provides a method to access user-defined parameters in arguments to the
|
|
6410
6436
|
B<-if> and B<-p> options as if they were any other tag. Appending a hash
|
|
6411
|
-
tag (C<#>) to I<PARAM> also causes the
|
|
6412
|
-
tag
|
|
6413
|
-
value is set to 1 if I<=VAL> is
|
|
6414
|
-
|
|
6437
|
+
tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also causes the
|
|
6438
|
+
parameter to be extracted as a normal tag in the UserParam group. Similar
|
|
6439
|
+
to the B<-api> option, the parameter value is set to 1 if I<=VAL> is
|
|
6440
|
+
omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
|
|
6441
|
+
I<VAL> is omitted with C<^=>.
|
|
6415
6442
|
|
|
6416
6443
|
exiftool -p '$test from $filename' -userparam test=Hello FILE
|
|
6417
6444
|
|
|
@@ -6481,9 +6508,9 @@ For example, the following command may be used to remove duplicate Keywords:
|
|
|
6481
6508
|
The B<-sep> option is necessary to split the string back into individual
|
|
6482
6509
|
list items when writing to a list-type tag.
|
|
6483
6510
|
|
|
6484
|
-
An optional flag argument may be set to 1 to cause C<NoDups> to
|
|
6485
|
-
if no duplicates existed, thus preventing the file from being
|
|
6486
|
-
unnecessarily:
|
|
6511
|
+
An optional flag argument may be set to 1 to cause C<NoDups> to set C<$_> to
|
|
6512
|
+
undef if no duplicates existed, thus preventing the file from being
|
|
6513
|
+
rewritten unnecessarily:
|
|
6487
6514
|
|
|
6488
6515
|
exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg
|
|
6489
6516
|
|
|
@@ -7121,6 +7148,13 @@ flexibility of ExifTool.)
|
|
|
7121
7148
|
|
|
7122
7149
|
=back
|
|
7123
7150
|
|
|
7151
|
+
=head1 INTERRUPTING EXIFTOOL
|
|
7152
|
+
|
|
7153
|
+
Interrupting exiftool with a CTRL-C or SIGINT will not result in partially
|
|
7154
|
+
written files or temporary files remaining on the hard disk. The exiftool
|
|
7155
|
+
application traps SIGINT and defers it until the end of critical processes
|
|
7156
|
+
if necessary, then does a proper cleanup before exiting.
|
|
7157
|
+
|
|
7124
7158
|
=head1 EXIT STATUS
|
|
7125
7159
|
|
|
7126
7160
|
The exiftool application exits with a status of 0 on success, or 1 if an
|
|
@@ -7129,7 +7163,7 @@ the commands if B<-execute> was used).
|
|
|
7129
7163
|
|
|
7130
7164
|
=head1 AUTHOR
|
|
7131
7165
|
|
|
7132
|
-
Copyright 2003-
|
|
7166
|
+
Copyright 2003-2021, Phil Harvey
|
|
7133
7167
|
|
|
7134
7168
|
This is free software; you can redistribute it and/or modify it under the
|
|
7135
7169
|
same terms as Perl itself.
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
#
|
|
26
26
|
# May also be used for string i/o (just pass a scalar reference)
|
|
27
27
|
#
|
|
28
|
-
# Legal: Copyright (c) 2003-
|
|
28
|
+
# Legal: Copyright (c) 2003-2021 Phil Harvey (philharvey66 at gmail.com)
|
|
29
29
|
# This library is free software; you can redistribute it and/or
|
|
30
30
|
# modify it under the same terms as Perl itself.
|
|
31
31
|
#------------------------------------------------------------------------------
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
#
|
|
4
4
|
# Description: Buffer to support random access reading of sequential file
|
|
5
5
|
#
|
|
6
|
-
# Legal: Copyright (c) 2003-
|
|
6
|
+
# Legal: Copyright (c) 2003-2021 Phil Harvey (philharvey66 at gmail.com)
|
|
7
7
|
# This library is free software; you can redistribute it and/or
|
|
8
8
|
# modify it under the same terms as Perl itself.
|
|
9
9
|
#------------------------------------------------------------------------------
|
|
@@ -236,7 +236,7 @@ the end of file is not allowed.
|
|
|
236
236
|
|
|
237
237
|
=head1 AUTHOR
|
|
238
238
|
|
|
239
|
-
Copyright 2003-
|
|
239
|
+
Copyright 2003-2021 Phil Harvey (philharvey66 at gmail.com)
|
|
240
240
|
|
|
241
241
|
This library is free software; you can redistribute it and/or modify it
|
|
242
242
|
under the same terms as Perl itself.
|