exiftool_vendored 12.11.0 → 12.16.0
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 +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.
|