exiftool_vendored 12.13.0 → 12.17.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +61 -4
- data/bin/MANIFEST +3 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +63 -43
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool.pm +36 -3
- data/bin/lib/Image/ExifTool.pod +9 -7
- 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 +9 -7
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +20 -2
- 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 +45 -16
- 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 +3 -2
- 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 +6 -6
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +21 -6
- 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 +1 -1
- 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 +312 -34
- 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 +1 -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 +12 -6
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
- data/bin/lib/Image/ExifTool/README +5 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +85 -7
- 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 +4 -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 +3985 -3811
- data/bin/lib/Image/ExifTool/TagNames.pod +422 -21
- 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 +10 -7
- data/bin/lib/Image/ExifTool/Writer.pl +17 -7
- data/bin/lib/Image/ExifTool/XMP.pm +44 -9
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -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 +36 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d80826479c3ca8c2e3cfaf71aac23fb1d19de4d2b204fb5cce97d17315744c4c
|
4
|
+
data.tar.gz: b42b14d289558856c2cef660d6ff16592c814fcf3ec8f106e5edb4b62dd26e5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 928b5a6323959d076b93102f6e7d980b2ef6936a90b77542fbbbb73e9ab767c5767c9a63d1073e8374aec816979d76f5c9e45342a50408426d43c1ee60a03b99
|
7
|
+
data.tar.gz: b86d1b66ca9d01bb8d4261f25cf4daaed9698a407332211559cdb253fd997ea4eaaac9535f874ee55bb1131e7729f145e3aca26d5d0d85512d957bd018c6efc7
|
data/bin/Changes
CHANGED
@@ -4,16 +4,73 @@ 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.
|
7
|
+
Note: The most recent production release is Version 12.16. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Feb. 3, 2021 - Version 12.17
|
11
|
+
|
12
|
+
- Added a new Canon FocusMode value
|
13
|
+
- Added a new FujiFilm FilmMode value
|
14
|
+
- Added a number of new XMP-crs tags (thanks Herb)
|
15
|
+
- Decode a new H264 MDPM tag
|
16
|
+
- Allow non-conforming lower-case XMP boolean "true" and "false" values to be
|
17
|
+
written, but only when print conversion is disabled
|
18
|
+
- Improved Validate option to warn about non-capitalized boolean XMP values
|
19
|
+
- Improved logic for setting GPSLatitude/LongitudeRef values when writing
|
20
|
+
- Changed -json and -php options so the -a option is implied even without the
|
21
|
+
-g option
|
22
|
+
- Avoid extracting audio/video data from AVI videos when -ee -u is used
|
23
|
+
- Patched decoding of Canon ContinuousShootingSpeed for newer firmware
|
24
|
+
versions of the EOS-1DXmkIII
|
25
|
+
- Re-worked LensID patch of version 12.00 (github issue #51)
|
26
|
+
- Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
|
27
|
+
- Fixed problem where group could not be specified for PNG-pHYs tags when
|
28
|
+
writing
|
29
|
+
|
30
|
+
Jan. 21, 2021 - Version 12.16 (production release)
|
31
|
+
|
32
|
+
- Extract another form of video subtitle text
|
33
|
+
- Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
|
34
|
+
stream in MP4 files
|
35
|
+
- Changed a Nikon FlashMode value
|
36
|
+
- Fixed problem that caused a failed DPX test on Strawberry Perl
|
37
|
+
- API Changes:
|
38
|
+
- Enhanced ExtractEmbedded option
|
39
|
+
|
40
|
+
Jan. 18, 2021 - Version 12.15 (production release)
|
41
|
+
|
42
|
+
- Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
|
43
|
+
- Added a new Nikon FlashMode value (thanks Mike)
|
44
|
+
- Decode NikonSettings (thanks Warren Hatch)
|
45
|
+
- Decode thermal information from DJI RJPEG images
|
46
|
+
- Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10
|
47
|
+
- Fixed out-of-memory problem when writing some very large PNG files under
|
48
|
+
Windows
|
49
|
+
|
50
|
+
Jan. 6, 2021 - Version 12.14
|
51
|
+
|
52
|
+
- Added support for 2 more types of timed GPS in video files (that makes 49
|
53
|
+
different formats now supported)
|
54
|
+
- Added validity check for PDF trailer dictionary Size
|
55
|
+
- Added a new Pentax LensType
|
56
|
+
- Extract metadata from Jpeg2000 Association box
|
57
|
+
- Changed -g:XX:YY and -G:XX:YY options to show empty strings for non-existent
|
58
|
+
groups
|
59
|
+
- Patched to issue warning and avoid writing date/time values with a zero
|
60
|
+
month or day number
|
61
|
+
- Patched to avoid runtime warnings if trying to set FileName to an empty
|
62
|
+
string
|
63
|
+
- Fixed issue that could cause GPS test number 12 to fail on some systems
|
64
|
+
- Fixed problem extracting XML as a block from Jpeg2000 images, and extract
|
65
|
+
XML tags in the XML group instead of XMP
|
66
|
+
|
10
67
|
Dec. 24, 2020 - Version 12.13
|
11
68
|
|
12
|
-
- Add time zone automatically to most string-based QuickTime date/time tags
|
13
|
-
when writing unless the PrintConv option is disabled
|
14
69
|
- Added -i HIDDEN option to ignore files with names that start with "."
|
15
70
|
- Added a few new Nikon ShutterMode values (thanks Jan Skoda)
|
16
71
|
- Added ability to write Google GCamera MicroVideo XMP tags
|
72
|
+
- Add time zone automatically to most string-based QuickTime date/time tags
|
73
|
+
when writing unless the PrintConv option is disabled
|
17
74
|
- Decode a new Sony tag (thanks LibRaw)
|
18
75
|
- Changed behaviour when writing only pseudo tags to return an error and avoid
|
19
76
|
writing any other tags if writing FileName fails
|
@@ -185,7 +242,7 @@ July 27, 2020 - Version 12.02
|
|
185
242
|
- Improved decoding of some Canon EOS 1DXmkIII custom functions
|
186
243
|
- Allow integer QuickTime TrackNumber and DiskNumber values
|
187
244
|
- Relax validity check of QuickTime:ContentCreateDate when writing with -n
|
188
|
-
- Removed "Com" from the start of some unknown ItemList tag names
|
245
|
+
- Removed "Com" from the start of some unknown QuickTime ItemList tag names
|
189
246
|
- Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
|
190
247
|
- Changed QuickTime CleanAperture tags decode as signed rationals
|
191
248
|
|
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
|
@@ -603,6 +605,7 @@ t/Jpeg2000.t
|
|
603
605
|
t/Jpeg2000_2.out
|
604
606
|
t/Jpeg2000_3.out
|
605
607
|
t/Jpeg2000_4.out
|
608
|
+
t/Jpeg2000_5.out
|
606
609
|
t/Kodak.t
|
607
610
|
t/Kodak_2.out
|
608
611
|
t/Kodak_3.out
|
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.17.tar.gz | tar -xf -
|
110
|
+
cd Image-ExifTool-12.17
|
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.17';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -371,12 +371,12 @@ if (grep /^-common_args$/i, @ARGV) {
|
|
371
371
|
Command: for (;;) {
|
372
372
|
|
373
373
|
if (@echo3) {
|
374
|
-
my $str = join
|
374
|
+
my $str = join("\n", @echo3) . "\n";
|
375
375
|
$str =~ s/\$\{status\}/$rtnVal/ig;
|
376
376
|
print STDOUT $str;
|
377
377
|
}
|
378
378
|
if (@echo4) {
|
379
|
-
my $str = join
|
379
|
+
my $str = join("\n", @echo4) . "\n";
|
380
380
|
$str =~ s/\$\{status\}/$rtnVal/ig;
|
381
381
|
print STDERR $str;
|
382
382
|
}
|
@@ -894,8 +894,8 @@ for (;;) {
|
|
894
894
|
$helped = 1;
|
895
895
|
next;
|
896
896
|
}
|
897
|
-
if (/^(ee|extractembedded)$/i) {
|
898
|
-
$mt->Options(ExtractEmbedded => 1);
|
897
|
+
if (/^(ee|extractembedded)(\d*)$/i) {
|
898
|
+
$mt->Options(ExtractEmbedded => $2 || 1);
|
899
899
|
$mt->Options(Duplicates => 1);
|
900
900
|
next;
|
901
901
|
}
|
@@ -1264,7 +1264,7 @@ for (;;) {
|
|
1264
1264
|
if (/^php$/i) {
|
1265
1265
|
$json = 2;
|
1266
1266
|
$html = $xml = 0;
|
1267
|
-
$mt->Options(Duplicates=>1);
|
1267
|
+
$mt->Options(Duplicates => 1);
|
1268
1268
|
next;
|
1269
1269
|
}
|
1270
1270
|
if (/^z(ip)?$/i) {
|
@@ -1505,7 +1505,6 @@ if ($xml) {
|
|
1505
1505
|
require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64)
|
1506
1506
|
}
|
1507
1507
|
$mt->Options(List => 1) unless $joinLists;
|
1508
|
-
$mt->Options(Duplicates => 0) unless defined $showGroup;
|
1509
1508
|
$showTagID = 'D' if $tabFormat and not $showTagID;
|
1510
1509
|
} elsif ($structOpt) {
|
1511
1510
|
$mt->Options(List => 1);
|
@@ -2304,7 +2303,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2304
2303
|
$group = $et->GetGroup($tag, $showGroup);
|
2305
2304
|
# look ahead to see if this tag may suppress a priority tag in
|
2306
2305
|
# the same group, and if so suppress this tag instead
|
2307
|
-
next if $noDups and $tag =~ /^(.*?)
|
2306
|
+
next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and
|
2308
2307
|
$group eq $et->GetGroup($1, $showGroup);
|
2309
2308
|
$group = 'Unknown' if not $group and ($xml or $json or $csv);
|
2310
2309
|
if ($fp and not ($allGroup or $csv)) {
|
@@ -2327,6 +2326,9 @@ TAG: foreach $tag (@foundTags) {
|
|
2327
2326
|
}
|
2328
2327
|
undef $group; # undefine so we don't print it below
|
2329
2328
|
}
|
2329
|
+
} elsif ($noDups) {
|
2330
|
+
# don't allow duplicates, but avoid suppressing the priority tag
|
2331
|
+
next if $tag =~ /^(.*?) \(/ and defined $$info{$1};
|
2330
2332
|
}
|
2331
2333
|
|
2332
2334
|
++$lineCount; # we are printing something meaningful
|
@@ -2858,6 +2860,10 @@ sub SetImageInfo($$$)
|
|
2858
2860
|
# determine what our output file name should be
|
2859
2861
|
my $newFileName = $et->GetNewValues('FileName');
|
2860
2862
|
my $newDir = $et->GetNewValues('Directory');
|
2863
|
+
if (defined $newFileName and not length $newFileName) {
|
2864
|
+
Warn "Warning: New file name is empty - $ infile\n";
|
2865
|
+
undef $newFileName;
|
2866
|
+
}
|
2861
2867
|
if (defined $testName) {
|
2862
2868
|
my $err;
|
2863
2869
|
$err = "You shouldn't write FileName or Directory with TestFile" if defined $newFileName or defined $newDir;
|
@@ -4569,7 +4575,7 @@ L<Processing control|/Processing control>
|
|
4569
4575
|
|
4570
4576
|
-a (-duplicates) Allow duplicate tags to be extracted
|
4571
4577
|
-e (--composite) Do not generate composite tags
|
4572
|
-
-ee
|
4578
|
+
-ee[NUM] (-extractEmbedded) Extract information from embedded files
|
4573
4579
|
-ext[+] EXT (-extension) Process files with specified extension
|
4574
4580
|
-F[OFFSET] (-fixBase) Fix the base for maker notes offsets
|
4575
4581
|
-fast[NUM] Increase speed when extracting metadata
|
@@ -4913,7 +4919,7 @@ and the value is written to all possible groups/tags. For example, the
|
|
4913
4919
|
string form must be used in the following command since the intent is to set
|
4914
4920
|
the value of all existing date/time tags from C<CreateDate>:
|
4915
4921
|
|
4916
|
-
exiftool
|
4922
|
+
exiftool '-time:all<$createdate' -wm w FILE
|
4917
4923
|
|
4918
4924
|
=item B<-x> I<TAG> (B<-exclude>)
|
4919
4925
|
|
@@ -4939,7 +4945,7 @@ between images, but allows the metadata to be altered by editing the
|
|
4939
4945
|
intermediate file (C<out.args> in this example):
|
4940
4946
|
|
4941
4947
|
exiftool -args -G1 --filename --directory src.jpg > out.args
|
4942
|
-
exiftool -@ out.args -sep
|
4948
|
+
exiftool -@ out.args -sep ', ' dst.jpg
|
4943
4949
|
|
4944
4950
|
Note: Be careful when copying information with this technique since it is
|
4945
4951
|
easy to write tags which are normally considered "unsafe". For instance,
|
@@ -5203,18 +5209,18 @@ JSON arrays unless B<-sep> is used. By default XMP structures are flattened
|
|
5203
5209
|
into individual tags in the JSON output, but the original structure may be
|
5204
5210
|
preserved with the B<-struct> option (this also causes all list-type XMP
|
5205
5211
|
tags to be output as JSON arrays, otherwise single-item lists would be
|
5206
|
-
output as simple strings). The B<-a> option is implied
|
5207
|
-
|
5208
|
-
|
5209
|
-
|
5210
|
-
|
5211
|
-
|
5212
|
-
|
5213
|
-
|
5214
|
-
|
5215
|
-
|
5216
|
-
|
5217
|
-
|
5212
|
+
output as simple strings). The B<-a> option is implied when B<-json> is
|
5213
|
+
used, but entries with identical JSON names are suppressed in the output.
|
5214
|
+
(B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
|
5215
|
+
the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
|
5216
|
+
"id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
|
5217
|
+
numerical value is different from the converted "val". The B<-b> option may
|
5218
|
+
be added to output binary data, encoded in base64 if necessary (indicated by
|
5219
|
+
ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added
|
5220
|
+
to include tag table information (see B<-t> for details). The JSON output
|
5221
|
+
is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the
|
5222
|
+
UTF-8 validation is disabled if a character set other than UTF-8 is
|
5223
|
+
specified.
|
5218
5224
|
|
5219
5225
|
If I<JSONFILE> is specified, the file is imported and the tag definitions
|
5220
5226
|
from the file are used to set tag values on a per-file basis. The special
|
@@ -5363,7 +5369,7 @@ with this command:
|
|
5363
5369
|
|
5364
5370
|
produces output like this:
|
5365
5371
|
|
5366
|
-
-- Generated by ExifTool 12.
|
5372
|
+
-- Generated by ExifTool 12.17 --
|
5367
5373
|
File: a.jpg - 2003:10:31 15:44:19
|
5368
5374
|
(f/5.6, 1/60s, ISO 100)
|
5369
5375
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5523,18 +5529,18 @@ Notes:
|
|
5523
5529
|
argument like C<%d%f.txt> is written as C<%%d%%f.txt>.
|
5524
5530
|
|
5525
5531
|
2) If the argument for B<-w> does not contain a valid format code (eg. %f),
|
5526
|
-
then it is interpreted as a file extension
|
5527
|
-
|
5528
|
-
multiple source files is typically done by shell redirection, ie)
|
5532
|
+
then it is interpreted as a file extension, but there are three different
|
5533
|
+
ways to create a single output file from multiple source files:
|
5529
5534
|
|
5535
|
+
# 1. Shell redirection
|
5530
5536
|
exiftool FILE1 FILE2 ... > out.txt
|
5531
5537
|
|
5532
|
-
|
5533
|
-
be interpreted as a format string, and the same result may be obtained
|
5534
|
-
without the use of shell redirection:
|
5535
|
-
|
5538
|
+
# 2. With the -w option and a zero-width format code
|
5536
5539
|
exiftool -w+! %0fout.txt FILE1 FILE2 ...
|
5537
5540
|
|
5541
|
+
# 3. With the -W option (see the -W option below)
|
5542
|
+
exiftool -W+! out.txt FILE1 FILE2 ...
|
5543
|
+
|
5538
5544
|
Advanced features:
|
5539
5545
|
|
5540
5546
|
A substring of the original file name, directory or extension may be taken
|
@@ -5702,7 +5708,7 @@ when copying.
|
|
5702
5708
|
|
5703
5709
|
Extract existing tags only -- don't generate composite tags.
|
5704
5710
|
|
5705
|
-
=item B<-ee> (B<-extractEmbedded>)
|
5711
|
+
=item B<-ee>[I<NUM>] (B<-extractEmbedded>)
|
5706
5712
|
|
5707
5713
|
Extract information from embedded documents in EPS files, embedded EPS
|
5708
5714
|
information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
|
@@ -5720,6 +5726,11 @@ document as if it were a separate input file. This allows, for example,
|
|
5720
5726
|
generation of GPS track logs from timed metadata in videos. See
|
5721
5727
|
L<https://exiftool.org/geotag.html#Inverse> for examples.
|
5722
5728
|
|
5729
|
+
Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
|
5730
|
+
until the first Supplemental Enhancement Information (SEI) message is
|
5731
|
+
decoded, or 3 to parse the entire H624 stream and decode all SEI
|
5732
|
+
information.
|
5733
|
+
|
5723
5734
|
=item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
|
5724
5735
|
|
5725
5736
|
Process only files with (B<-ext>) or without (B<--ext>) a specified
|
@@ -6369,10 +6380,10 @@ name and directory.
|
|
6369
6380
|
|
6370
6381
|
=item B<-stay_open> I<FLAG>
|
6371
6382
|
|
6372
|
-
If I<FLAG> is C<1> or C<True
|
6373
|
-
I<ARGFILE> even after reaching the end of file. This
|
6374
|
-
applications to pre-load exiftool, thus avoiding the
|
6375
|
-
exiftool for each command. The procedure is as follows:
|
6383
|
+
If I<FLAG> is C<1> or C<True> (case insensitive), causes exiftool keep
|
6384
|
+
reading from the B<-@> I<ARGFILE> even after reaching the end of file. This
|
6385
|
+
feature allows calling applications to pre-load exiftool, thus avoiding the
|
6386
|
+
overhead of loading exiftool for each command. The procedure is as follows:
|
6376
6387
|
|
6377
6388
|
1) Execute C<exiftool -stay_open True -@ I<ARGFILE>>, where I<ARGFILE> is the
|
6378
6389
|
name of an existing (possibly empty) argument file or C<-> to pipe arguments
|
@@ -6395,8 +6406,9 @@ signals back to your application.)
|
|
6395
6406
|
|
6396
6407
|
4) Repeat steps 2 and 3 for each command.
|
6397
6408
|
|
6398
|
-
5) Write C<-stay_open\nFalse\n> to I<ARGFILE> when
|
6399
|
-
exiftool to process any remaining command-line
|
6409
|
+
5) Write C<-stay_open\nFalse\n> (or C<-stay_open\n0\n>) to I<ARGFILE> when
|
6410
|
+
done. This will cause exiftool to process any remaining command-line
|
6411
|
+
arguments then exit normally.
|
6400
6412
|
|
6401
6413
|
The input I<ARGFILE> may be changed at any time before step 5 above by
|
6402
6414
|
writing the following lines to the currently open I<ARGFILE>:
|
@@ -6424,10 +6436,11 @@ an interface to the API UserParam option (see the
|
|
6424
6436
|
L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
|
6425
6437
|
provides a method to access user-defined parameters in arguments to the
|
6426
6438
|
B<-if> and B<-p> options as if they were any other tag. Appending a hash
|
6427
|
-
tag (C<#>) to I<PARAM> also causes the
|
6428
|
-
tag
|
6429
|
-
value is set to 1 if I<=VAL> is
|
6430
|
-
|
6439
|
+
tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also causes the
|
6440
|
+
parameter to be extracted as a normal tag in the UserParam group. Similar
|
6441
|
+
to the B<-api> option, the parameter value is set to 1 if I<=VAL> is
|
6442
|
+
omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
|
6443
|
+
I<VAL> is omitted with C<^=>.
|
6431
6444
|
|
6432
6445
|
exiftool -p '$test from $filename' -userparam test=Hello FILE
|
6433
6446
|
|
@@ -7137,6 +7150,13 @@ flexibility of ExifTool.)
|
|
7137
7150
|
|
7138
7151
|
=back
|
7139
7152
|
|
7153
|
+
=head1 INTERRUPTING EXIFTOOL
|
7154
|
+
|
7155
|
+
Interrupting exiftool with a CTRL-C or SIGINT will not result in partially
|
7156
|
+
written files or temporary files remaining on the hard disk. The exiftool
|
7157
|
+
application traps SIGINT and defers it until the end of critical processes
|
7158
|
+
if necessary, then does a proper cleanup before exiting.
|
7159
|
+
|
7140
7160
|
=head1 EXIT STATUS
|
7141
7161
|
|
7142
7162
|
The exiftool application exits with a status of 0 on success, or 1 if an
|
@@ -7145,7 +7165,7 @@ the commands if B<-execute> was used).
|
|
7145
7165
|
|
7146
7166
|
=head1 AUTHOR
|
7147
7167
|
|
7148
|
-
Copyright 2003-
|
7168
|
+
Copyright 2003-2021, Phil Harvey
|
7149
7169
|
|
7150
7170
|
This is free software; you can redistribute it and/or modify it under the
|
7151
7171
|
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.
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
# Revisions: Nov. 12/2003 - P. Harvey Created
|
9
9
|
# (See html/history.html for revision history)
|
10
10
|
#
|
11
|
-
# Legal: Copyright (c) 2003-
|
11
|
+
# Legal: Copyright (c) 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
12
12
|
# This library is free software; you can redistribute it and/or
|
13
13
|
# modify it under the same terms as Perl itself.
|
14
14
|
#------------------------------------------------------------------------------
|
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
28
28
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
|
30
30
|
|
31
|
-
$VERSION = '12.
|
31
|
+
$VERSION = '12.17';
|
32
32
|
$RELEASE = '';
|
33
33
|
@ISA = qw(Exporter);
|
34
34
|
%EXPORT_TAGS = (
|
@@ -3395,7 +3395,11 @@ sub GetGroup($$;$)
|
|
3395
3395
|
my @grps;
|
3396
3396
|
# create list of group names (without identical adjacent groups if simplifying)
|
3397
3397
|
foreach (@families) {
|
3398
|
-
my $grp = $groups[$_]
|
3398
|
+
my $grp = $groups[$_];
|
3399
|
+
unless ($grp) {
|
3400
|
+
next if $simplify;
|
3401
|
+
$grp = '';
|
3402
|
+
}
|
3399
3403
|
push @grps, $grp unless $simplify and @grps and $grp eq $grps[-1];
|
3400
3404
|
}
|
3401
3405
|
# remove leading "Main:" if simplifying
|
@@ -6691,6 +6695,22 @@ sub ProcessJPEG($$)
|
|
6691
6695
|
# extract the Stim information (it is in standard TIFF format)
|
6692
6696
|
my $tagTablePtr = GetTagTable('Image::ExifTool::Stim::Main');
|
6693
6697
|
$self->ProcessTIFF(\%dirInfo, $tagTablePtr);
|
6698
|
+
} elsif ($$self{Make} eq 'DJI') {
|
6699
|
+
$dumpType = 'DJI ThermalData';
|
6700
|
+
# add this data to the combined data if it exists
|
6701
|
+
my $dataPt = $segDataPt;
|
6702
|
+
if (defined $combinedSegData) {
|
6703
|
+
$combinedSegData .= $$segDataPt;
|
6704
|
+
$dataPt = \$combinedSegData;
|
6705
|
+
}
|
6706
|
+
if ($nextMarker == $marker) {
|
6707
|
+
$combinedSegData = $$segDataPt unless defined $combinedSegData;
|
6708
|
+
} else {
|
6709
|
+
# process DJI FLIR thermal data
|
6710
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
6711
|
+
$self->HandleTag($tagTablePtr, 'APP3', $$dataPt);
|
6712
|
+
undef $combinedSegData;
|
6713
|
+
}
|
6694
6714
|
} elsif ($$segDataPt =~ /^\xff\xd8\xff\xdb/) {
|
6695
6715
|
$dumpType = 'PreviewImage'; # (Samsung, HP, BenQ)
|
6696
6716
|
$preview = $$segDataPt;
|
@@ -6725,6 +6745,11 @@ sub ProcessJPEG($$)
|
|
6725
6745
|
# set flag if this is the last FPXR segment
|
6726
6746
|
$dirInfo{LastFPXR} = not ($nextMarker==$marker and $$nextSegDataPt=~/^FPXR\0/),
|
6727
6747
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
6748
|
+
} elsif ($$self{Make} eq 'DJI' and $$segDataPt =~ /^\xaa\x55\x12\x06/) {
|
6749
|
+
$dumpType = 'DJI ThermalParams';
|
6750
|
+
DirStart(\%dirInfo, 0, 0);
|
6751
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::DJI::ThermalParams');
|
6752
|
+
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
6728
6753
|
} elsif ($preview) {
|
6729
6754
|
# continued Samsung S1060 preview from APP3
|
6730
6755
|
$dumpType = 'PreviewImage';
|
@@ -6747,6 +6772,10 @@ sub ProcessJPEG($$)
|
|
6747
6772
|
} elsif ($$segDataPt =~ /^ssuniqueid\0/) {
|
6748
6773
|
my $tagTablePtr = GetTagTable('Image::ExifTool::Samsung::APP5');
|
6749
6774
|
$self->HandleTag($tagTablePtr, 'ssuniqueid', substr($$segDataPt, 11));
|
6775
|
+
} elsif ($$self{Make} eq 'DJI') {
|
6776
|
+
$dumpType = 'DJI ThermalCal';
|
6777
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
6778
|
+
$self->HandleTag($tagTablePtr, 'APP5', $$segDataPt);
|
6750
6779
|
} elsif ($preview) {
|
6751
6780
|
$dumpType = 'PreviewImage';
|
6752
6781
|
$preview .= $$segDataPt;
|
@@ -6782,6 +6811,10 @@ sub ProcessJPEG($$)
|
|
6782
6811
|
my $tagTablePtr = GetTagTable('Image::ExifTool::GoPro::GPMF');
|
6783
6812
|
DirStart(\%dirInfo, 6);
|
6784
6813
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
6814
|
+
} elsif ($$segDataPt =~ /^DTAT\0\0.\{/s) {
|
6815
|
+
$dumpType = 'DJI_DTAT';
|
6816
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
6817
|
+
$self->HandleTag($tagTablePtr, 'APP6', $$segDataPt);
|
6785
6818
|
}
|
6786
6819
|
} elsif ($marker == 0xe7) { # APP7 (Pentax, Huawei, Qualcomm)
|
6787
6820
|
if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
|