exiftool_vendored 12.15.0 → 12.22.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 +96 -2
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/config_files/example.config +1 -8
- data/bin/exiftool +104 -59
- data/bin/fmt_files/gpx.fmt +1 -1
- data/bin/fmt_files/gpx_wpt.fmt +1 -1
- data/bin/fmt_files/kml.fmt +1 -1
- data/bin/fmt_files/kml_track.fmt +1 -1
- data/bin/lib/Image/ExifTool.pm +74 -24
- data/bin/lib/Image/ExifTool.pod +34 -24
- data/bin/lib/Image/ExifTool/Apple.pm +3 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +24 -13
- data/bin/lib/Image/ExifTool/Canon.pm +26 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +19 -1
- data/bin/lib/Image/ExifTool/DJI.pm +6 -6
- data/bin/lib/Image/ExifTool/DPX.pm +3 -3
- data/bin/lib/Image/ExifTool/Exif.pm +35 -16
- data/bin/lib/Image/ExifTool/FITS.pm +13 -2
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/GPS.pm +24 -13
- data/bin/lib/Image/ExifTool/H264.pm +20 -5
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
- data/bin/lib/Image/ExifTool/M2TS.pm +40 -4
- data/bin/lib/Image/ExifTool/MIE.pm +2 -2
- data/bin/lib/Image/ExifTool/Microsoft.pm +296 -82
- data/bin/lib/Image/ExifTool/Nikon.pm +5 -5
- data/bin/lib/Image/ExifTool/NikonSettings.pm +16 -16
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +58 -30
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +27 -8
- data/bin/lib/Image/ExifTool/README +5 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +2 -2
- data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
- data/bin/lib/Image/ExifTool/Sony.pm +63 -29
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4032 -3981
- data/bin/lib/Image/ExifTool/TagNames.pod +261 -104
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +7 -5
- data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -6
- data/bin/lib/Image/ExifTool/Writer.pl +49 -14
- data/bin/lib/Image/ExifTool/XMP.pm +31 -5
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +48 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2862287affdad95022ad8df06fd1b420c2861e28f5daefa50c627c42db2e396
|
4
|
+
data.tar.gz: 90b7804c201830e6cacc5b28b9ba29ef4a5fff7bb6a1cb26db1fce970495769e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85a74e99266a89cf019066af0227b8d6515b153d2d5612814afa1bac1faffa874e6defa7aa524577a4031154cc81f0b74277136476cf35c6bb2aa9cc35e1148f
|
7
|
+
data.tar.gz: 42911ad4e1f2c03ff6a95cc25f3fcb47f8fbda099d6cfb669e72fefa9c743b002865225d872d179654dc79f3958d6e94feb20d7bfb317e3006c7b8bdee195e98
|
data/bin/Changes
CHANGED
@@ -4,9 +4,103 @@ 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
|
+
Mar. 17, 2021 - Version 12.22
|
11
|
+
|
12
|
+
- Added a few new Sony LensTypes and a new SonyModelID (thanks Jos Roost and
|
13
|
+
LibRaw)
|
14
|
+
- Added Extra BaseName tag
|
15
|
+
- Added a new CanonModelID (thanks LibRaw)
|
16
|
+
- Decode timed GPS from unlisted programs in M2TS videos with the -ee3 option
|
17
|
+
- Decode more Sony rtmd tags
|
18
|
+
- Decode some tags for the Sony ILME-FX3 (thanks Jos Roost)
|
19
|
+
- Allow negative values to be written to XMP-aux:LensID
|
20
|
+
- Recognize HEVC video program in M2TS files
|
21
|
+
- Enhanced -b option so --b suppresses tags with binary data
|
22
|
+
- Improved flexibility when writing GPS coordinates:
|
23
|
+
- Now pulls latitude and longitude from a combined GPSCoordinates string
|
24
|
+
- Recognizes the full word "South" and "West" to write negative coordinates
|
25
|
+
- Improved warning when trying to write an integer QuickTime date/time tag and
|
26
|
+
Time::Local is not available
|
27
|
+
- Convert GPSSpeed from mph to km/h in timed GPS from Garmin MP4 videos
|
28
|
+
|
29
|
+
Feb. 24, 2021 - Version 12.21
|
30
|
+
|
31
|
+
- Added a few new iOS QuickTime tags
|
32
|
+
- Decode a couple more Sony rtmd tags
|
33
|
+
- Patch to avoid possible "Use of uninitialized value" warning when attempting
|
34
|
+
to write QuickTime date/time tags with an invalid value
|
35
|
+
- Fixed problem writing Microsoft Xtra tags
|
36
|
+
- Fixed Windows daylight savings time patch for file times that was broken in
|
37
|
+
12.19 (however directory times will not yet handle DST properly)
|
38
|
+
|
39
|
+
Feb. 23, 2021 - Version 12.20
|
40
|
+
|
41
|
+
- Added ability to write some Microsoft Xtra tags in MOV/MP4 videos
|
42
|
+
- Added two new Canon LensType values (thanks Norbert Wasser)
|
43
|
+
- Added a new Nikon LensID
|
44
|
+
- Fixed problem reading FITS comments that start before column 11
|
45
|
+
|
46
|
+
Feb. 18, 2021 - Version 12.19
|
47
|
+
|
48
|
+
- Added -list_dir option
|
49
|
+
- Added the "ls-l" Shortcut tag
|
50
|
+
- Extract Comment and History from FITS files
|
51
|
+
- Enhanced FilePermissions to include device type (similar to "ls -l")
|
52
|
+
- Changed the name of Apple ContentIdentifier tag to MediaGroupUUID
|
53
|
+
(thanks Neal Krawetz)
|
54
|
+
- Fixed a potential "substr outside of string" runtime error when reading
|
55
|
+
corrupted EXIF
|
56
|
+
- Fixed edge case where NikonScanIFD may not be copied properly when copying
|
57
|
+
MakerNotes to another file
|
58
|
+
- API Changes:
|
59
|
+
- Added ability to read/write System tags of directories
|
60
|
+
- Enhanced GetAllGroups() to support family 7 and take optional ExifTool
|
61
|
+
reference
|
62
|
+
- Changed QuickTimeHandler option default to 1
|
63
|
+
|
64
|
+
Feb. 9, 2021 - Version 12.18
|
65
|
+
|
66
|
+
- Added a new SonyModelID
|
67
|
+
- Decode a number of Sony tags for the ILCE-1 (thanks Jos Roost)
|
68
|
+
- Decode a couple of new Canon tags (thanks LibRaw)
|
69
|
+
- Patched to read differently formatted UserData:Keywords as written by iPhone
|
70
|
+
- Patched to tolerate out-of-order Nikon MakerNote IFD entries when obtaining
|
71
|
+
tags necessary for decryption
|
72
|
+
- Fixed a few possible Condition warnings for some NikonSettings tags
|
73
|
+
|
74
|
+
Feb. 3, 2021 - Version 12.17
|
75
|
+
|
76
|
+
- Added a new Canon FocusMode value
|
77
|
+
- Added a new FujiFilm FilmMode value
|
78
|
+
- Added a number of new XMP-crs tags (thanks Herb)
|
79
|
+
- Decode a new H264 MDPM tag
|
80
|
+
- Allow non-conforming lower-case XMP boolean "true" and "false" values to be
|
81
|
+
written, but only when print conversion is disabled
|
82
|
+
- Improved Validate option to warn about non-capitalized boolean XMP values
|
83
|
+
- Improved logic for setting GPSLatitude/LongitudeRef values when writing
|
84
|
+
- Changed -json and -php options so the -a option is implied even without the
|
85
|
+
-g option
|
86
|
+
- Avoid extracting audio/video data from AVI videos when -ee -u is used
|
87
|
+
- Patched decoding of Canon ContinuousShootingSpeed for newer firmware
|
88
|
+
versions of the EOS-1DXmkIII
|
89
|
+
- Re-worked LensID patch of version 12.00 (github issue #51)
|
90
|
+
- Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
|
91
|
+
- Fixed problem where group could not be specified for PNG-pHYs tags when
|
92
|
+
writing
|
93
|
+
|
94
|
+
Jan. 21, 2021 - Version 12.16 (production release)
|
95
|
+
|
96
|
+
- Extract another form of video subtitle text
|
97
|
+
- Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
|
98
|
+
stream in MP4 files
|
99
|
+
- Changed a Nikon FlashMode value
|
100
|
+
- Fixed problem that caused a failed DPX test on Strawberry Perl
|
101
|
+
- API Changes:
|
102
|
+
- Enhanced ExtractEmbedded option
|
103
|
+
|
10
104
|
Jan. 18, 2021 - Version 12.15 (production release)
|
11
105
|
|
12
106
|
- Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
|
@@ -212,7 +306,7 @@ July 27, 2020 - Version 12.02
|
|
212
306
|
- Improved decoding of some Canon EOS 1DXmkIII custom functions
|
213
307
|
- Allow integer QuickTime TrackNumber and DiskNumber values
|
214
308
|
- Relax validity check of QuickTime:ContentCreateDate when writing with -n
|
215
|
-
- Removed "Com" from the start of some unknown ItemList tag names
|
309
|
+
- Removed "Com" from the start of some unknown QuickTime ItemList tag names
|
216
310
|
- Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
|
217
311
|
- Changed QuickTime CleanAperture tags decode as signed rationals
|
218
312
|
|
data/bin/MANIFEST
CHANGED
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.22.tar.gz | tar -xf -
|
110
|
+
cd Image-ExifTool-12.22
|
111
111
|
./exiftool t/images/ExifTool.jpg
|
112
112
|
|
113
113
|
Note: These commands extract meta information from one of the test images.
|
@@ -165,14 +165,7 @@
|
|
165
165
|
# specified, then at least one of the Desire'd tags must exist. See
|
166
166
|
# the Composite table in Image::ExifTool::Exif for more examples,
|
167
167
|
# and lib/Image/ExifTool/README for all of the details.
|
168
|
-
|
169
|
-
Require => {
|
170
|
-
0 => 'FileName',
|
171
|
-
},
|
172
|
-
# remove the extension from FileName
|
173
|
-
ValueConv => '$val[0] =~ /(.*)\./ ? $1 : $val[0]',
|
174
|
-
},
|
175
|
-
# the next few examples demonstrate simplifications which may be
|
168
|
+
# The first few examples demonstrate simplifications which may be
|
176
169
|
# used if only one tag is Require'd or Desire'd:
|
177
170
|
# 1) the Require lookup may be replaced with a simple tag name
|
178
171
|
# 2) "$val" may be used to represent "$val[0]" in the expression
|
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.22';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -159,14 +159,17 @@ my $forcePrint; # string to use for missing tag values (undef to not print t
|
|
159
159
|
my $helped; # flag to avoid printing help if no tags specified
|
160
160
|
my $html; # flag for html-formatted output (2=html dump)
|
161
161
|
my $interrupted; # flag set if CTRL-C is pressed during a critical process
|
162
|
+
my $isBinary; # true if value is a SCALAR ref
|
162
163
|
my $isWriting; # flag set if we are writing tags
|
163
164
|
my $joinLists; # flag set to join list values into a single string
|
164
165
|
my $json; # flag for JSON/PHP output format (1=JSON, 2=PHP)
|
165
166
|
my $langOpt; # language option
|
167
|
+
my $listDir; # treat a directory as a regular file
|
166
168
|
my $listItem; # item number for extracting single item from a list
|
167
169
|
my $listSep; # list item separator (', ' by default)
|
168
170
|
my $mt; # main ExifTool object
|
169
171
|
my $multiFile; # non-zero if we are scanning multiple files
|
172
|
+
my $noBinary; # flag set to ignore binary tags
|
170
173
|
my $outFormat; # -1=Canon format, 0=same-line, 1=tag names, 2=values only
|
171
174
|
my $outOpt; # output file or directory name
|
172
175
|
my $overwriteOrig; # flag to overwrite original file (1=overwrite, 2=in place)
|
@@ -203,7 +206,6 @@ my $validFile; # flag indicating we processed a valid file
|
|
203
206
|
my $verbose; # verbose setting
|
204
207
|
my $vout; # verbose output file reference (\*STDOUT or \*STDERR)
|
205
208
|
my $windowTitle; # title for console window
|
206
|
-
my $isBinary; # true if value is a SCALAR ref
|
207
209
|
my $xml; # flag for XML-formatted output
|
208
210
|
|
209
211
|
# flag to keep the input -@ argfile open:
|
@@ -474,6 +476,7 @@ undef $joinLists;
|
|
474
476
|
undef $langOpt;
|
475
477
|
undef $listItem;
|
476
478
|
undef $multiFile;
|
479
|
+
undef $noBinary;
|
477
480
|
undef $outOpt;
|
478
481
|
undef $preserveTime;
|
479
482
|
undef $progress;
|
@@ -691,7 +694,7 @@ for (;;) {
|
|
691
694
|
} else { # 'g(\d*)'
|
692
695
|
# list all groups in specified family
|
693
696
|
my $family = $2 || 0;
|
694
|
-
PrintTagList("Groups in family $family", GetAllGroups($family));
|
697
|
+
PrintTagList("Groups in family $family", $mt->GetAllGroups($family));
|
695
698
|
}
|
696
699
|
next;
|
697
700
|
}
|
@@ -792,7 +795,11 @@ for (;;) {
|
|
792
795
|
next;
|
793
796
|
}
|
794
797
|
/^arg(s|format)$/i and $argFormat = 1, next;
|
795
|
-
/^b(inary)?$/i
|
798
|
+
if (/^(-?)b(inary)?$/i) {
|
799
|
+
($binaryOutput, $noBinary) = $1 ? (undef, 1) : (1, undef);
|
800
|
+
$mt->Options(Binary => $binaryOutput, NoPDFList => $binaryOutput);
|
801
|
+
next;
|
802
|
+
}
|
796
803
|
if (/^c(oordFormat)?$/i) {
|
797
804
|
my $fmt = shift;
|
798
805
|
$fmt or Error("Expecting coordinate format for -c option\n"), $badCmd=1, next;
|
@@ -876,6 +883,7 @@ for (;;) {
|
|
876
883
|
}
|
877
884
|
(/^D$/ or $a eq 'decimal') and $showTagID = 'D', next;
|
878
885
|
/^delete_original(!?)$/i and $deleteOrig = ($1 ? 2 : 1), next;
|
886
|
+
/^list_dir$/i and $listDir = 1, next;
|
879
887
|
(/^e$/ or $a eq '-composite') and $mt->Options(Composite => 0), next;
|
880
888
|
(/^-e$/ or $a eq 'composite') and $mt->Options(Composite => 1), next;
|
881
889
|
(/^E$/ or $a eq 'escapehtml') and require Image::ExifTool::HTML and $escapeHTML = 1, next;
|
@@ -894,8 +902,8 @@ for (;;) {
|
|
894
902
|
$helped = 1;
|
895
903
|
next;
|
896
904
|
}
|
897
|
-
if (/^(ee|extractembedded)$/i) {
|
898
|
-
$mt->Options(ExtractEmbedded => 1);
|
905
|
+
if (/^(ee|extractembedded)(\d*)$/i) {
|
906
|
+
$mt->Options(ExtractEmbedded => $2 || 1);
|
899
907
|
$mt->Options(Duplicates => 1);
|
900
908
|
next;
|
901
909
|
}
|
@@ -1264,7 +1272,7 @@ for (;;) {
|
|
1264
1272
|
if (/^php$/i) {
|
1265
1273
|
$json = 2;
|
1266
1274
|
$html = $xml = 0;
|
1267
|
-
$mt->Options(Duplicates=>1);
|
1275
|
+
$mt->Options(Duplicates => 1);
|
1268
1276
|
next;
|
1269
1277
|
}
|
1270
1278
|
if (/^z(ip)?$/i) {
|
@@ -1505,7 +1513,6 @@ if ($xml) {
|
|
1505
1513
|
require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64)
|
1506
1514
|
}
|
1507
1515
|
$mt->Options(List => 1) unless $joinLists;
|
1508
|
-
$mt->Options(Duplicates => 0) unless defined $showGroup;
|
1509
1516
|
$showTagID = 'D' if $tabFormat and not $showTagID;
|
1510
1517
|
} elsif ($structOpt) {
|
1511
1518
|
$mt->Options(List => 1);
|
@@ -2271,6 +2278,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2271
2278
|
next unless $$et{REQ_TAG_LOOKUP}{$lcTag};
|
2272
2279
|
}
|
2273
2280
|
$val = ConvertBinary($val); # convert SCALAR references
|
2281
|
+
next unless defined $val;
|
2274
2282
|
if ($structOpt) {
|
2275
2283
|
# serialize structure if necessary
|
2276
2284
|
$val = Image::ExifTool::XMP::SerializeStruct($val) unless $xml or $json;
|
@@ -2304,7 +2312,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2304
2312
|
$group = $et->GetGroup($tag, $showGroup);
|
2305
2313
|
# look ahead to see if this tag may suppress a priority tag in
|
2306
2314
|
# the same group, and if so suppress this tag instead
|
2307
|
-
next if $noDups and $tag =~ /^(.*?)
|
2315
|
+
next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and
|
2308
2316
|
$group eq $et->GetGroup($1, $showGroup);
|
2309
2317
|
$group = 'Unknown' if not $group and ($xml or $json or $csv);
|
2310
2318
|
if ($fp and not ($allGroup or $csv)) {
|
@@ -2327,6 +2335,9 @@ TAG: foreach $tag (@foundTags) {
|
|
2327
2335
|
}
|
2328
2336
|
undef $group; # undefine so we don't print it below
|
2329
2337
|
}
|
2338
|
+
} elsif ($noDups) {
|
2339
|
+
# don't allow duplicates, but avoid suppressing the priority tag
|
2340
|
+
next if $tag =~ /^(.*?) \(/ and defined $$info{$1};
|
2330
2341
|
}
|
2331
2342
|
|
2332
2343
|
++$lineCount; # we are printing something meaningful
|
@@ -2706,7 +2717,7 @@ sub SetImageInfo($$$)
|
|
2706
2717
|
return 0;
|
2707
2718
|
}
|
2708
2719
|
}
|
2709
|
-
if (not $isStdout and ($et->IsDirectory($outfile) or $outfile =~ /\/$/)) {
|
2720
|
+
if (not $isStdout and (($et->IsDirectory($outfile) and not $listDir) or $outfile =~ /\/$/)) {
|
2710
2721
|
$outfile .= '/' unless $outfile =~ /\/$/;
|
2711
2722
|
my $name = $file;
|
2712
2723
|
$name =~ s/^.*\///s; # remove directory name
|
@@ -2909,6 +2920,10 @@ sub SetImageInfo($$$)
|
|
2909
2920
|
unless (defined $tmpFile) {
|
2910
2921
|
# count the number of tags and pseudo-tags we are writing
|
2911
2922
|
my ($numSet, $numPseudo) = $et->CountNewValues();
|
2923
|
+
if ($numSet != $numPseudo and $et->IsDirectory($file)) {
|
2924
|
+
print $vout "Can't write real tags to a directory - $infile\n" if defined $verbose;
|
2925
|
+
$numSet = $numPseudo;
|
2926
|
+
}
|
2912
2927
|
if ($et->Exists($file)) {
|
2913
2928
|
unless ($numSet) {
|
2914
2929
|
# no need to write if no tags set
|
@@ -3393,20 +3408,25 @@ sub AddGroups($$$$)
|
|
3393
3408
|
#------------------------------------------------------------------------------
|
3394
3409
|
# Convert binary data (SCALAR references) for printing
|
3395
3410
|
# Inputs: 0) object reference
|
3396
|
-
# Returns: converted object
|
3411
|
+
# Returns: converted object, or undef if we don't want binary objects
|
3397
3412
|
sub ConvertBinary($)
|
3398
3413
|
{
|
3399
3414
|
my $obj = shift;
|
3400
3415
|
my ($key, $val);
|
3401
3416
|
if (ref $obj eq 'HASH') {
|
3402
3417
|
foreach $key (keys %$obj) {
|
3403
|
-
|
3418
|
+
next unless ref $$obj{$key};
|
3419
|
+
$$obj{$key} = ConvertBinary($$obj{$key});
|
3420
|
+
return undef unless defined $$obj{$key};
|
3404
3421
|
}
|
3405
3422
|
} elsif (ref $obj eq 'ARRAY') {
|
3406
3423
|
foreach $val (@$obj) {
|
3407
|
-
|
3424
|
+
next unless ref $val;
|
3425
|
+
$val = ConvertBinary($val);
|
3426
|
+
return undef unless defined $val;
|
3408
3427
|
}
|
3409
3428
|
} elsif (ref $obj eq 'SCALAR') {
|
3429
|
+
return undef if $noBinary;
|
3410
3430
|
# (binaryOutput flag is set to 0 for binary mode of XML/PHP/JSON output formats)
|
3411
3431
|
if (defined $binaryOutput) {
|
3412
3432
|
$obj = $$obj;
|
@@ -3583,7 +3603,7 @@ sub ProcessFiles($;$)
|
|
3583
3603
|
++$progressCount;
|
3584
3604
|
$progStr = " [$progressCount/$progressMax]" if $progress;
|
3585
3605
|
}
|
3586
|
-
if ($et->IsDirectory($file)) {
|
3606
|
+
if ($et->IsDirectory($file) and not $listDir) {
|
3587
3607
|
$multiFile = $validFile = 1;
|
3588
3608
|
ScanDir($et, $file, $list);
|
3589
3609
|
} elsif ($filterFlag and not AcceptFile($file)) {
|
@@ -4573,7 +4593,7 @@ L<Processing control|/Processing control>
|
|
4573
4593
|
|
4574
4594
|
-a (-duplicates) Allow duplicate tags to be extracted
|
4575
4595
|
-e (--composite) Do not generate composite tags
|
4576
|
-
-ee
|
4596
|
+
-ee[NUM] (-extractEmbedded) Extract information from embedded files
|
4577
4597
|
-ext[+] EXT (-extension) Process files with specified extension
|
4578
4598
|
-F[OFFSET] (-fixBase) Fix the base for maker notes offsets
|
4579
4599
|
-fast[NUM] Increase speed when extracting metadata
|
@@ -4622,6 +4642,7 @@ L<Advanced options|/Advanced options>
|
|
4622
4642
|
-echo[NUM] TEXT Echo text to stdout or stderr
|
4623
4643
|
-efile[NUM][!] ERRFILE Save names of files with errors
|
4624
4644
|
-execute[NUM] Execute multiple commands on one line
|
4645
|
+
-list_dir List directories, not their contents
|
4625
4646
|
-srcfile FMT Process a different source file
|
4626
4647
|
-stay_open FLAG Keep reading -@ argfile even after EOF
|
4627
4648
|
-userParam PARAM[[^]=[VAL]] Set user parameter (API UserParam opt)
|
@@ -4917,7 +4938,7 @@ and the value is written to all possible groups/tags. For example, the
|
|
4917
4938
|
string form must be used in the following command since the intent is to set
|
4918
4939
|
the value of all existing date/time tags from C<CreateDate>:
|
4919
4940
|
|
4920
|
-
exiftool
|
4941
|
+
exiftool '-time:all<$createdate' -wm w FILE
|
4921
4942
|
|
4922
4943
|
=item B<-x> I<TAG> (B<-exclude>)
|
4923
4944
|
|
@@ -4930,7 +4951,7 @@ documentation above for a complete description.
|
|
4930
4951
|
=head3 Input-output text formatting
|
4931
4952
|
|
4932
4953
|
Note that trailing spaces are removed from extracted values for most output
|
4933
|
-
text formats. The exceptions are
|
4954
|
+
text formats. The exceptions are B<-b>, B<-csv>, B<-j> and B<-X>.
|
4934
4955
|
|
4935
4956
|
=over 5
|
4936
4957
|
|
@@ -4943,7 +4964,7 @@ between images, but allows the metadata to be altered by editing the
|
|
4943
4964
|
intermediate file (C<out.args> in this example):
|
4944
4965
|
|
4945
4966
|
exiftool -args -G1 --filename --directory src.jpg > out.args
|
4946
|
-
exiftool -@ out.args -sep
|
4967
|
+
exiftool -@ out.args -sep ', ' dst.jpg
|
4947
4968
|
|
4948
4969
|
Note: Be careful when copying information with this technique since it is
|
4949
4970
|
easy to write tags which are normally considered "unsafe". For instance,
|
@@ -4956,17 +4977,21 @@ maintain separate list items when writing metadata back to image files, and
|
|
4956
4977
|
the B<-struct> option may be used when extracting to preserve structured XMP
|
4957
4978
|
information.
|
4958
4979
|
|
4959
|
-
=item B<-b> (B<-binary>)
|
4980
|
+
=item B<-b>, B<--b> (B<-binary>, B<--binary>)
|
4960
4981
|
|
4961
|
-
Output requested metadata in binary format without tag names or
|
4962
|
-
|
4963
|
-
other binary data, but it may also be useful for some text strings
|
4964
|
-
control characters (such as newlines) are not replaced by '.' as they
|
4965
|
-
the default output. By default, list items are separated by a
|
4966
|
-
extracted with the B<-b> option, but this may be changed (see
|
4967
|
-
option for details). May be combined with
|
4968
|
-
extract binary data in JSON, PHP or XML format, but note that
|
4969
|
-
must be specified explicitly to be extracted as binary in
|
4982
|
+
Output requested metadata in binary format without tag names or descriptions
|
4983
|
+
(B<-b> or B<-binary>). This option is mainly used for extracting embedded
|
4984
|
+
images or other binary data, but it may also be useful for some text strings
|
4985
|
+
since control characters (such as newlines) are not replaced by '.' as they
|
4986
|
+
are in the default output. By default, list items are separated by a
|
4987
|
+
newline when extracted with the B<-b> option, but this may be changed (see
|
4988
|
+
the B<-sep> option for details). May be combined with B<-j>, B<-php> or
|
4989
|
+
B<-X> to extract binary data in JSON, PHP or XML format, but note that
|
4990
|
+
"unsafe" tags must be specified explicitly to be extracted as binary in
|
4991
|
+
these formats.
|
4992
|
+
|
4993
|
+
With a leading double dash (B<--b> or B<--binary>), tags which contain
|
4994
|
+
binary data are suppressed in the output when reading.
|
4970
4995
|
|
4971
4996
|
=item B<-c> I<FMT> (B<-coordFormat>)
|
4972
4997
|
|
@@ -5207,18 +5232,18 @@ JSON arrays unless B<-sep> is used. By default XMP structures are flattened
|
|
5207
5232
|
into individual tags in the JSON output, but the original structure may be
|
5208
5233
|
preserved with the B<-struct> option (this also causes all list-type XMP
|
5209
5234
|
tags to be output as JSON arrays, otherwise single-item lists would be
|
5210
|
-
output as simple strings). The B<-a> option is implied
|
5211
|
-
|
5212
|
-
|
5213
|
-
|
5214
|
-
|
5215
|
-
|
5216
|
-
|
5217
|
-
|
5218
|
-
|
5219
|
-
|
5220
|
-
|
5221
|
-
|
5235
|
+
output as simple strings). The B<-a> option is implied when B<-json> is
|
5236
|
+
used, but entries with identical JSON names are suppressed in the output.
|
5237
|
+
(B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
|
5238
|
+
the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
|
5239
|
+
"id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
|
5240
|
+
numerical value is different from the converted "val". The B<-b> option may
|
5241
|
+
be added to output binary data, encoded in base64 if necessary (indicated by
|
5242
|
+
ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added
|
5243
|
+
to include tag table information (see B<-t> for details). The JSON output
|
5244
|
+
is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the
|
5245
|
+
UTF-8 validation is disabled if a character set other than UTF-8 is
|
5246
|
+
specified.
|
5222
5247
|
|
5223
5248
|
If I<JSONFILE> is specified, the file is imported and the tag definitions
|
5224
5249
|
from the file are used to set tag values on a per-file basis. The special
|
@@ -5367,7 +5392,7 @@ with this command:
|
|
5367
5392
|
|
5368
5393
|
produces output like this:
|
5369
5394
|
|
5370
|
-
-- Generated by ExifTool 12.
|
5395
|
+
-- Generated by ExifTool 12.22 --
|
5371
5396
|
File: a.jpg - 2003:10:31 15:44:19
|
5372
5397
|
(f/5.6, 1/60s, ISO 100)
|
5373
5398
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5527,18 +5552,18 @@ Notes:
|
|
5527
5552
|
argument like C<%d%f.txt> is written as C<%%d%%f.txt>.
|
5528
5553
|
|
5529
5554
|
2) If the argument for B<-w> does not contain a valid format code (eg. %f),
|
5530
|
-
then it is interpreted as a file extension
|
5531
|
-
|
5532
|
-
multiple source files is typically done by shell redirection, ie)
|
5555
|
+
then it is interpreted as a file extension, but there are three different
|
5556
|
+
ways to create a single output file from multiple source files:
|
5533
5557
|
|
5558
|
+
# 1. Shell redirection
|
5534
5559
|
exiftool FILE1 FILE2 ... > out.txt
|
5535
5560
|
|
5536
|
-
|
5537
|
-
be interpreted as a format string, and the same result may be obtained
|
5538
|
-
without the use of shell redirection:
|
5539
|
-
|
5561
|
+
# 2. With the -w option and a zero-width format code
|
5540
5562
|
exiftool -w+! %0fout.txt FILE1 FILE2 ...
|
5541
5563
|
|
5564
|
+
# 3. With the -W option (see the -W option below)
|
5565
|
+
exiftool -W+! out.txt FILE1 FILE2 ...
|
5566
|
+
|
5542
5567
|
Advanced features:
|
5543
5568
|
|
5544
5569
|
A substring of the original file name, directory or extension may be taken
|
@@ -5706,7 +5731,7 @@ when copying.
|
|
5706
5731
|
|
5707
5732
|
Extract existing tags only -- don't generate composite tags.
|
5708
5733
|
|
5709
|
-
=item B<-ee> (B<-extractEmbedded>)
|
5734
|
+
=item B<-ee>[I<NUM>] (B<-extractEmbedded>)
|
5710
5735
|
|
5711
5736
|
Extract information from embedded documents in EPS files, embedded EPS
|
5712
5737
|
information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
|
@@ -5724,6 +5749,12 @@ document as if it were a separate input file. This allows, for example,
|
|
5724
5749
|
generation of GPS track logs from timed metadata in videos. See
|
5725
5750
|
L<https://exiftool.org/geotag.html#Inverse> for examples.
|
5726
5751
|
|
5752
|
+
Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
|
5753
|
+
until the first Supplemental Enhancement Information (SEI) message is
|
5754
|
+
decoded, or 3 to parse the entire H624 stream and decode all SEI
|
5755
|
+
information. For M2TS videos, a setting of 3 causes the entire file to be
|
5756
|
+
parsed in search of unlisted programs which may contain timed GPS.
|
5757
|
+
|
5727
5758
|
=item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
|
5728
5759
|
|
5729
5760
|
Process only files with (B<-ext>) or without (B<--ext>) a specified
|
@@ -5811,10 +5842,10 @@ Ignore specified directory name. I<DIR> may be either an individual folder
|
|
5811
5842
|
name, or a full path. If a full path is specified, it must match the
|
5812
5843
|
Directory tag exactly to be ignored. Use multiple B<-i> options to ignore
|
5813
5844
|
more than one directory name. A special I<DIR> value of C<SYMLINKS> (case
|
5814
|
-
sensitive) may be specified to
|
5815
|
-
is used. As well, a value of C<HIDDEN>
|
5816
|
-
ignore files with names that start with a
|
5817
|
-
systems) when scanning a directory.
|
5845
|
+
sensitive) may be specified to avoid recursing into directories which are
|
5846
|
+
symbolic links when the B<-r> option is used. As well, a value of C<HIDDEN>
|
5847
|
+
(case sensitive) may be used to ignore files with names that start with a
|
5848
|
+
"." (ie. hidden files on Unix systems) when scanning a directory.
|
5818
5849
|
|
5819
5850
|
=item B<-if>[I<NUM>] I<EXPR>
|
5820
5851
|
|
@@ -6240,7 +6271,7 @@ As a convenience, C<-use MWG> is assumed if the C<MWG> group is specified
|
|
6240
6271
|
for any tag on the command line. See the L<MWG Tags
|
6241
6272
|
documentation|Image::ExifTool::TagNames/MWG Tags> for more details. Note
|
6242
6273
|
that this option is not reversible, and remains in effect until the
|
6243
|
-
application terminates, even across the
|
6274
|
+
application terminates, even across the B<-execute> option.
|
6244
6275
|
|
6245
6276
|
=back
|
6246
6277
|
|
@@ -6344,6 +6375,20 @@ line. I<NUM> is an optional number that is echoed in the "{ready}" message
|
|
6344
6375
|
when using the B<-stay_open> feature. If a I<NUM> is specified, the B<-q>
|
6345
6376
|
option no longer suppresses the output "{readyNUM}" message.
|
6346
6377
|
|
6378
|
+
=item B<-list_dir>
|
6379
|
+
|
6380
|
+
List directories themselves instead of their contents. This option
|
6381
|
+
effectively causes directories to be treated as normal files when reading
|
6382
|
+
and writing. For example, with this option the output of the C<ls -la>
|
6383
|
+
command on Mac/Linux may be approximated by this exiftool command:
|
6384
|
+
|
6385
|
+
exiftool -list_dir -T -ls-l -api systemtags -fast5 .* *
|
6386
|
+
|
6387
|
+
(The B<-T> option formats the output in tab-separated columns, B<-ls-l> is a
|
6388
|
+
L<shortcut tag|Image::ExifTool::Shortcuts>, the API SystemTags option is
|
6389
|
+
required to extract some necessary tags, and the B<-fast5> option is added
|
6390
|
+
for speed since only system tags are being extracted.)
|
6391
|
+
|
6347
6392
|
=item B<-srcfile> I<FMT>
|
6348
6393
|
|
6349
6394
|
Specify a different source file to be processed based on the name of the
|
@@ -6391,7 +6436,7 @@ buffered output.) ExifTool will then execute the command with the arguments
|
|
6391
6436
|
received up to this point, send a "{ready}" message to stdout when done
|
6392
6437
|
(unless the B<-q> or B<-T> option is used), and continue trying to read
|
6393
6438
|
arguments for the next command from I<ARGFILE>. To aid in command/response
|
6394
|
-
synchronization, any number appended to the
|
6439
|
+
synchronization, any number appended to the B<-execute> option is echoed in
|
6395
6440
|
the "{ready}" message. For example, C<-execute613> results in "{ready613}".
|
6396
6441
|
When this number is added, B<-q> no longer suppresses the "{ready}" message.
|
6397
6442
|
(Also, see the B<-echo3> and B<-echo4> options for additional ways to pass
|
@@ -6526,8 +6571,8 @@ complete list). Setting this triggers the use of Windows wide-character i/o
|
|
6526
6571
|
routines, thus providing support for most Unicode file names (see note 4).
|
6527
6572
|
But note that it is not trivial to pass properly encoded file names on the
|
6528
6573
|
Windows command line (see L<https://exiftool.org/faq.html#Q18> for details),
|
6529
|
-
so placing them in a UTF-8 encoded B<-@> argfile and using
|
6530
|
-
filename=utf8> is recommended if possible.
|
6574
|
+
so placing them in a UTF-8 encoded B<-@> argfile and using
|
6575
|
+
C<-charset filename=utf8> is recommended if possible.
|
6531
6576
|
|
6532
6577
|
A warning is issued if a specified filename contains special characters and
|
6533
6578
|
the filename character set was not provided. However, the warning may be
|
@@ -6601,7 +6646,7 @@ Print all meta information in an image, including duplicate and unknown
|
|
6601
6646
|
tags, sorted by group (for family 1). For performance reasons, this command
|
6602
6647
|
may not extract all available metadata. (Metadata in embedded documents,
|
6603
6648
|
metadata extracted by external utilities, and metadata requiring excessive
|
6604
|
-
processing time may not be extracted). Add C<-
|
6649
|
+
processing time may not be extracted). Add C<-ee3> and C<-api RequestAll=3>
|
6605
6650
|
to the command to extract absolutely everything available.
|
6606
6651
|
|
6607
6652
|
=item exiftool -common dir
|
@@ -6670,7 +6715,7 @@ L<Image::ExifTool::TagNames|Image::ExifTool::TagNames>).
|
|
6670
6715
|
Print one line of output containing the file name and DateTimeOriginal for
|
6671
6716
|
each image in directory C<dir>.
|
6672
6717
|
|
6673
|
-
=item exiftool -
|
6718
|
+
=item exiftool -ee3 -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts
|
6674
6719
|
|
6675
6720
|
Extract all GPS positions from an AVCHD video.
|
6676
6721
|
|