exiftool_vendored 13.31.0 → 13.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +38 -1
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +47 -46
- data/bin/exiftool +81 -56
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- data/bin/lib/Image/ExifTool/Canon.pm +10 -2
- data/bin/lib/Image/ExifTool/Exif.pm +5 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
- data/bin/lib/Image/ExifTool/FujiFilm.pm +10 -3
- data/bin/lib/Image/ExifTool/Geotag.pm +5 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +14 -2
- data/bin/lib/Image/ExifTool/LNK.pm +4 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +71 -37
- data/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
- data/bin/lib/Image/ExifTool/Olympus.pm +240 -35
- data/bin/lib/Image/ExifTool/Panasonic.pm +3 -3
- data/bin/lib/Image/ExifTool/Pentax.pm +271 -53
- data/bin/lib/Image/ExifTool/QuickTime.pm +11 -4
- data/bin/lib/Image/ExifTool/Sony.pm +5 -2
- data/bin/lib/Image/ExifTool/TNEF.pm +487 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4373 -4264
- data/bin/lib/Image/ExifTool/TagNames.pod +249 -17
- data/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
- data/bin/lib/Image/ExifTool/Writer.pl +15 -11
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +11 -4
- data/bin/lib/Image/ExifTool.pod +45 -44
- data/bin/perl-Image-ExifTool.spec +46 -45
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5188f2fb9bb03c179101219cd17d5129411b4f517c3e6acd10c915336d0fa89e
|
4
|
+
data.tar.gz: 953b6ce7f3f1a259cbc4f34e7b72a4851460d762297132f9498306644aede5e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bc2708043ba0de2e7f492c456f0257a342771e7d962a306620ded3ce97a30727087a0d5200ed615ac083b394f8dee318b4e7e68e472739028df1c98d91e17fa
|
7
|
+
data.tar.gz: b2ce97b5597a47050ed22df9baec8a3b760f3da83956fd7c842e0d4eddbcc6b44597b0c40f024bfca54421141f27c954aae6bee6f51dbdb3eba271fa84cfb69f
|
data/bin/Changes
CHANGED
@@ -7,6 +7,43 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 13.30. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
July 25, 2025 - Version 13.33
|
11
|
+
|
12
|
+
- Added read support for TNEF files (eg. "winmail.dat")
|
13
|
+
- Added a new Canon HighlightTonePriority value (github #339)
|
14
|
+
- Decode Canon FocusBracketing tag (github #340)
|
15
|
+
- Decode more tags for newer Nikon Z models (thanks Warren Hatch)
|
16
|
+
- Decode a few more Olympus tags (thanks Karsten Gieselmann)
|
17
|
+
- Decode a few more FujiFilm tags (github #343)
|
18
|
+
- Handle Olympus RawDev2IFD tag 0x8000 (named it RawDevSubIFD)
|
19
|
+
- Improved recognition of some Sony lenses (github #342)
|
20
|
+
- Enhanced the -p option to cycle through sub-subdocuments
|
21
|
+
- Improved extraction of GoPro timed GPS to use sub-subdocuments to separate
|
22
|
+
the individual fixes, allowing -p to extract all fixes at sub-second
|
23
|
+
resolution (althought for earlier models these don't all contain timestamps)
|
24
|
+
- Extract EXIF information from Sigma fp MOV videos
|
25
|
+
- Patched to avoid "multi-segment EXIF with external pointers" error when
|
26
|
+
writing Olympus OM-1 JPG files converted by some utilities
|
27
|
+
- Fixed decoding of Panasonic LongExposureNRUsed (thanks AndrewJ)
|
28
|
+
- Fixed long-standing bug when using special characters in the -d option
|
29
|
+
argument
|
30
|
+
|
31
|
+
July 2, 2025 - Version 13.32
|
32
|
+
|
33
|
+
- Added a new Olympus CameraType (thanks Herb and Albert Shan)
|
34
|
+
- Added a new Sony LensType (github #335)
|
35
|
+
- Added a new Nikon CropHiSpeed value (thanks Albert Shan)
|
36
|
+
- Added a warning if a tag value couldn't be packed for writing to a binary
|
37
|
+
data structure
|
38
|
+
- Decode more Ricoh/Pentax AF tags for some models (thanks Karsten Gieselmann)
|
39
|
+
- Decode Canon HDR-PQ tag (github #336)
|
40
|
+
- Extract a couple more EXIF tags
|
41
|
+
- Patched to allow a dot (.) in the name of a structure element when writing
|
42
|
+
- Fixed "uninitialized value" bug when using -w with the -stay_open feature
|
43
|
+
- Fixed bug in -file option when using tag names to specify the name of the
|
44
|
+
alternate file (the tags were taken only from the first input file unless a
|
45
|
+
file name formatting code was also specified)
|
46
|
+
|
10
47
|
June 19, 2025 - Version 13.31
|
11
48
|
|
12
49
|
- Added a new CanonModelID and RFLensType (thanks Norbert Wasser)
|
@@ -407,7 +444,7 @@ Nov. 12, 2024 - Version 13.03
|
|
407
444
|
Nov. 5, 2024 - Version 13.02
|
408
445
|
|
409
446
|
- Enhanced -j -l output to add optional "fmt" and "hex" fields
|
410
|
-
- Enhanced -geotag option to support
|
447
|
+
- Enhanced -geotag option to support Google Maps "Export Timeline data" JSON
|
411
448
|
format
|
412
449
|
- Changed ProductVersion of Windows launcher to match ExifTool version
|
413
450
|
- Patched to use empty group name instead of "Copy0" for family 4 group name
|
data/bin/MANIFEST
CHANGED
@@ -177,6 +177,7 @@ html/TagNames/SigmaRaw.html
|
|
177
177
|
html/TagNames/Sony.html
|
178
178
|
html/TagNames/SonyIDC.html
|
179
179
|
html/TagNames/Stim.html
|
180
|
+
html/TagNames/TNEF.html
|
180
181
|
html/TagNames/Text.html
|
181
182
|
html/TagNames/Theora.html
|
182
183
|
html/TagNames/Torrent.html
|
@@ -434,6 +435,7 @@ lib/Image/ExifTool/SigmaRaw.pm
|
|
434
435
|
lib/Image/ExifTool/Sony.pm
|
435
436
|
lib/Image/ExifTool/SonyIDC.pm
|
436
437
|
lib/Image/ExifTool/Stim.pm
|
438
|
+
lib/Image/ExifTool/TNEF.pm
|
437
439
|
lib/Image/ExifTool/TagInfoXML.pm
|
438
440
|
lib/Image/ExifTool/TagLookup.pm
|
439
441
|
lib/Image/ExifTool/TagNames.pod
|
@@ -887,6 +889,8 @@ t/Sony.t
|
|
887
889
|
t/Sony_2.out
|
888
890
|
t/Sony_3.out
|
889
891
|
t/Sony_5.out
|
892
|
+
t/TNEF.t
|
893
|
+
t/TNEF_2.out
|
890
894
|
t/TestLib.pm
|
891
895
|
t/Text.t
|
892
896
|
t/Text_2.out
|
@@ -1179,6 +1183,7 @@ t/images/Sigma.x3f
|
|
1179
1183
|
t/images/SigmaDP2.x3f
|
1180
1184
|
t/images/Sony.jpg
|
1181
1185
|
t/images/Sony.pmp
|
1186
|
+
t/images/TNEF.tnef
|
1182
1187
|
t/images/Text.csv
|
1183
1188
|
t/images/Text1.txt
|
1184
1189
|
t/images/Text2.txt
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -14,50 +14,51 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
14
14
|
|
15
15
|
File Types
|
16
16
|
------------+-------------+-------------+-------------+------------
|
17
|
-
360 r/w |
|
18
|
-
3FR r |
|
19
|
-
3G2 r/w |
|
20
|
-
3GP r/w |
|
21
|
-
7Z r |
|
22
|
-
A r |
|
23
|
-
AA r |
|
24
|
-
AAC r |
|
25
|
-
AAE r |
|
26
|
-
AAX r/w |
|
27
|
-
ACR r |
|
28
|
-
AFM r |
|
29
|
-
AI r/w |
|
30
|
-
AIFF r |
|
31
|
-
APE r |
|
32
|
-
ARQ r/w |
|
33
|
-
ARW r/w |
|
34
|
-
ASF r |
|
35
|
-
AVI r |
|
36
|
-
AVIF r/w |
|
37
|
-
AZW r |
|
38
|
-
BMP r |
|
39
|
-
BPG r |
|
40
|
-
BTF r |
|
41
|
-
C2PA r |
|
42
|
-
CHM r |
|
43
|
-
COS r |
|
44
|
-
CR2 r/w |
|
45
|
-
CR3 r/w |
|
46
|
-
CRM r/w |
|
47
|
-
CRW r/w |
|
48
|
-
CS1 r/w |
|
49
|
-
CSV r |
|
50
|
-
CUR r |
|
51
|
-
CZI r |
|
52
|
-
DCM r |
|
53
|
-
DCP r/w |
|
54
|
-
DCR r |
|
55
|
-
DFONT r |
|
56
|
-
DIVX r |
|
57
|
-
DJVU r |
|
58
|
-
DLL r |
|
59
|
-
DNG r/w |
|
60
|
-
DOC r |
|
17
|
+
360 r/w | DPX r | JNG r/w | ODP r | RSRC r
|
18
|
+
3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
|
19
|
+
3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
|
20
|
+
3GP r/w | DV r | JSON r | OFR r | RWL r/w
|
21
|
+
7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
|
22
|
+
A r | DVR-MS r | K25 r | OGV r | RM r
|
23
|
+
AA r | DYLIB r | KDC r | ONP r | SEQ r
|
24
|
+
AAC r | EIP r | KEY r | OPUS r | SKETCH r
|
25
|
+
AAE r | EPS r/w | LA r | ORF r/w | SO r
|
26
|
+
AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
|
27
|
+
ACR r | ERF r/w | LIF r | OTF r | SRF r
|
28
|
+
AFM r | EXE r | LNK r | PAC r | SRW r/w
|
29
|
+
AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
|
30
|
+
AIFF r | EXR r | M2TS r | PBM r/w | SWF r
|
31
|
+
APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
|
32
|
+
ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
|
33
|
+
ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
|
34
|
+
ASF r | FITS r | MEF r/w | PCX r | TORRENT r
|
35
|
+
AVI r | FLA r | MIE r/w/c | PDB r | TTC r
|
36
|
+
AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
|
37
|
+
AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
|
38
|
+
BMP r | FLV r | MKS r | PFA r | VCF r
|
39
|
+
BPG r | FPF r | MKV r | PFB r | VNT r
|
40
|
+
BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
|
41
|
+
C2PA r | GIF r/w | MOBI r | PGF r | VSD r
|
42
|
+
CHM r | GLV r/w | MODD r | PGM r/w | WAV r
|
43
|
+
COS r | GPR r/w | MOI r | PLIST r | WDP r/w
|
44
|
+
CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
|
45
|
+
CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
|
46
|
+
CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
|
47
|
+
CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
|
48
|
+
CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
|
49
|
+
CSV r | HTML r | MPG r | PPTX r | WTV r
|
50
|
+
CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
|
51
|
+
CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
|
52
|
+
DCM r | ICS r | MRC r | PSD r/w | XCF r
|
53
|
+
DCP r/w | IDML r | MRW r/w | PSP r | XISF r
|
54
|
+
DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
|
55
|
+
DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
|
56
|
+
DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
|
57
|
+
DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
|
58
|
+
DLL r | INX r | NRW r/w | RAM r |
|
59
|
+
DNG r/w | ISO r | NUMBERS r | RAR r |
|
60
|
+
DOC r | ITC r | NXD r | RAW r/w |
|
61
|
+
DOCX r | J2C r | O r | RIFF r |
|
61
62
|
|
62
63
|
Meta Information
|
63
64
|
----------------------+----------------------+---------------------
|
@@ -109,8 +110,8 @@ your home directory, then you would type the following commands in a
|
|
109
110
|
terminal window to extract and run ExifTool:
|
110
111
|
|
111
112
|
cd ~/Desktop
|
112
|
-
gzip -dc Image-ExifTool-13.
|
113
|
-
cd Image-ExifTool-13.
|
113
|
+
gzip -dc Image-ExifTool-13.33.tar.gz | tar -xf -
|
114
|
+
cd Image-ExifTool-13.33
|
114
115
|
./exiftool t/images/ExifTool.jpg
|
115
116
|
|
116
117
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '13.
|
14
|
+
my $version = '13.33';
|
15
15
|
|
16
16
|
$^W = 1; # enable global warnings
|
17
17
|
|
@@ -101,9 +101,9 @@ my @csvFiles; # list of files when reading with CSV option (in ExifTool Ch
|
|
101
101
|
my @csvTags; # order of tags for first file with CSV option (lower case)
|
102
102
|
my @delFiles; # list of files to delete
|
103
103
|
my @dynamicFiles; # list of -tagsFromFile files with dynamic names and -TAG<=FMT pairs
|
104
|
+
my (@echo3, @echo4);# stdout and stderr echo after processing is complete
|
104
105
|
my @efile; # files for writing list of error/fail/same file names
|
105
106
|
my @exclude; # list of excluded tags
|
106
|
-
my (@echo3, @echo4);# stdout and stderr echo after processing is complete
|
107
107
|
my @files; # list of files and directories to scan
|
108
108
|
my @moreArgs; # more arguments to process after -stay_open -@
|
109
109
|
my @newValues; # list of new tag values to set
|
@@ -118,7 +118,6 @@ my %csvTags; # lookup for all found tags with CSV option (lower case keys
|
|
118
118
|
my %database; # lookup for database information based on file name (in ExifTool Charset)
|
119
119
|
my %filterExt; # lookup for filtered extensions
|
120
120
|
my %ignore; # directory names to ignore
|
121
|
-
my $ignoreHidden; # flag to ignore hidden files
|
122
121
|
my %outComma; # flag that output text file needs a comma
|
123
122
|
my %outTrailer; # trailer for output text file
|
124
123
|
my %preserveTime; # preserved timestamps for files
|
@@ -130,6 +129,7 @@ my %usedFileName; # lookup for file names we already used in TestName feature
|
|
130
129
|
my %utf8FileName; # lookup for file names that are UTF-8 encoded
|
131
130
|
my %warnedOnce; # lookup for once-only warnings
|
132
131
|
my %wext; # -W extensions to write
|
132
|
+
my %wroteHEAD; # list of output txt files to which we wrote HEAD
|
133
133
|
my $allGroup; # show group name for all tags
|
134
134
|
my $altEnc; # alternate character encoding if not UTF-8
|
135
135
|
my $argFormat; # use exiftool argument-format output
|
@@ -175,6 +175,7 @@ my $forcePrint; # string to use for missing tag values (undef to not print t
|
|
175
175
|
my $geoOnly; # flag to extract Geolocation tags only
|
176
176
|
my $helped; # flag to avoid printing help if no tags specified
|
177
177
|
my $html; # flag for html-formatted output (2=html dump)
|
178
|
+
my $ignoreHidden; # flag to ignore hidden files
|
178
179
|
my $interrupted; # flag set if CTRL-C is pressed during a critical process
|
179
180
|
my $isBinary; # true if value is a SCALAR ref
|
180
181
|
my $isWriting; # flag set if we are writing tags
|
@@ -227,7 +228,6 @@ my $validFile; # flag indicating we processed a valid file
|
|
227
228
|
my $verbose; # verbose setting
|
228
229
|
my $vout; # verbose output file reference (\*STDOUT or \*STDERR by default)
|
229
230
|
my $windowTitle; # title for console window
|
230
|
-
my %wroteHEAD; # list of output txt files to which we wrote HEAD
|
231
231
|
my $xml; # flag for XML-formatted output
|
232
232
|
|
233
233
|
# flag to keep the input -@ argfile open:
|
@@ -451,8 +451,10 @@ undef @efile;
|
|
451
451
|
undef @exclude;
|
452
452
|
undef @files;
|
453
453
|
undef @newValues;
|
454
|
+
undef @requestTags;
|
454
455
|
undef @srcFmt;
|
455
456
|
undef @tags;
|
457
|
+
undef %altFile;
|
456
458
|
undef %appended;
|
457
459
|
undef %countLink;
|
458
460
|
undef %created;
|
@@ -472,6 +474,7 @@ undef %usedFileName;
|
|
472
474
|
undef %utf8FileName;
|
473
475
|
undef %warnedOnce;
|
474
476
|
undef %wext;
|
477
|
+
undef %wroteHEAD;
|
475
478
|
undef $allGroup;
|
476
479
|
undef $altEnc;
|
477
480
|
undef $argFormat;
|
@@ -488,8 +491,8 @@ undef $doSetFileName;
|
|
488
491
|
undef $doUnzip;
|
489
492
|
undef $end;
|
490
493
|
undef $endDir;
|
491
|
-
undef $escapeHTML;
|
492
494
|
undef $escapeC;
|
495
|
+
undef $escapeHTML;
|
493
496
|
undef $evalWarning;
|
494
497
|
undef $executeID;
|
495
498
|
undef $failCondition;
|
@@ -500,18 +503,22 @@ undef $fixLen;
|
|
500
503
|
undef $forcePrint;
|
501
504
|
undef $geoOnly;
|
502
505
|
undef $ignoreHidden;
|
506
|
+
undef $isBinary;
|
503
507
|
undef $joinLists;
|
504
508
|
undef $langOpt;
|
509
|
+
undef $listDir;
|
505
510
|
undef $listItem;
|
506
511
|
undef $multiFile;
|
507
512
|
undef $noBinary;
|
508
513
|
undef $outOpt;
|
514
|
+
undef $plot;
|
509
515
|
undef $preserveTime;
|
510
516
|
undef $progress;
|
511
517
|
undef $progressCount;
|
512
518
|
undef $progressIncr;
|
513
519
|
undef $progressMax;
|
514
520
|
undef $progressNext;
|
521
|
+
undef $rafStdin;
|
515
522
|
undef $recurse;
|
516
523
|
undef $scanWritable;
|
517
524
|
undef $sectHeader;
|
@@ -521,6 +528,7 @@ undef $showTagID;
|
|
521
528
|
undef $structOpt;
|
522
529
|
undef $tagOut;
|
523
530
|
undef $textOut;
|
531
|
+
undef $textOut2;
|
524
532
|
undef $textOverwrite;
|
525
533
|
undef $tmpFile;
|
526
534
|
undef $tmpText;
|
@@ -2529,7 +2537,7 @@ T2: foreach $t2 (@tags2) {
|
|
2529
2537
|
# print the results for this file
|
2530
2538
|
if (%printFmt) {
|
2531
2539
|
# output using print format file (-p) option
|
2532
|
-
my ($type,
|
2540
|
+
my ($type, @doc, $grp, $lastDoc, $cache);
|
2533
2541
|
$fileTrailer = '';
|
2534
2542
|
# repeat for each embedded document if necessary (only if -ee used)
|
2535
2543
|
if ($et->Options('ExtractEmbedded')) {
|
@@ -2538,7 +2546,8 @@ T2: foreach $t2 (@tags2) {
|
|
2538
2546
|
} else {
|
2539
2547
|
$lastDoc = 0;
|
2540
2548
|
}
|
2541
|
-
for ($doc=0; $doc<=$lastDoc;
|
2549
|
+
for ($doc[0]=0; $doc[0]<=$lastDoc; ) {
|
2550
|
+
my $doc = join '-', @doc;
|
2542
2551
|
my ($skipBody, $opt);
|
2543
2552
|
foreach $type (qw(HEAD SECT IF BODY ENDS TAIL)) {
|
2544
2553
|
my $prf = $printFmt{$type} or next;
|
@@ -2548,7 +2557,7 @@ T2: foreach $t2 (@tags2) {
|
|
2548
2557
|
}
|
2549
2558
|
next if $type eq 'BODY' and $skipBody;
|
2550
2559
|
# silence "IF" warnings and warnings for subdocuments > 1
|
2551
|
-
if ($type eq 'IF' or ($doc > 1 and not $$et{OPTIONS}{IgnoreMinorErrors})) {
|
2560
|
+
if ($type eq 'IF' or (($doc[0] > 1 or @doc > 1) and not $$et{OPTIONS}{IgnoreMinorErrors})) {
|
2552
2561
|
$opt = 'Silent';
|
2553
2562
|
} else {
|
2554
2563
|
$opt = 'Warn';
|
@@ -2587,6 +2596,14 @@ T2: foreach $t2 (@tags2) {
|
|
2587
2596
|
print $fp @lines;
|
2588
2597
|
}
|
2589
2598
|
}
|
2599
|
+
# find next available doc-subdoc
|
2600
|
+
push @doc, 1;
|
2601
|
+
while (@doc > 1) {
|
2602
|
+
my $nextDoc = join '-', @doc;
|
2603
|
+
last if $$et{HAS_DOC}{$nextDoc};
|
2604
|
+
pop @doc;
|
2605
|
+
++$doc[-1];
|
2606
|
+
}
|
2590
2607
|
}
|
2591
2608
|
delete $printFmt{HEAD} unless defined $outfile; # print header only once per output file
|
2592
2609
|
my $errs = $et->GetInfo('Warning', 'Error');
|
@@ -4518,6 +4535,10 @@ sub SuggestedExtension($$$)
|
|
4518
4535
|
} elsif ($$valPt =~ /^.{4}ftyp(3gp|mp4|f4v|qt )/s) {
|
4519
4536
|
my %movType = ( 'qt ' => 'mov' );
|
4520
4537
|
$ext = $movType{$1} || $1;
|
4538
|
+
} elsif ($$valPt =~ /^<(!DOCTYPE )?html/i) {
|
4539
|
+
$ext = 'html';
|
4540
|
+
} elsif ($$valPt =~ /^[\n\r]*\{[\n\r]*\\rtf/) {
|
4541
|
+
$ext = 'rtf';
|
4521
4542
|
} elsif ($$valPt !~ /^.{0,4096}\0/s) {
|
4522
4543
|
$ext = 'txt';
|
4523
4544
|
} elsif ($$valPt =~ /^BM.{15}\0/s) {
|
@@ -5054,50 +5075,51 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
5054
5075
|
|
5055
5076
|
File Types
|
5056
5077
|
------------+-------------+-------------+-------------+------------
|
5057
|
-
360 r/w |
|
5058
|
-
3FR r |
|
5059
|
-
3G2 r/w |
|
5060
|
-
3GP r/w |
|
5061
|
-
7Z r |
|
5062
|
-
A r |
|
5063
|
-
AA r |
|
5064
|
-
AAC r |
|
5065
|
-
AAE r |
|
5066
|
-
AAX r/w |
|
5067
|
-
ACR r |
|
5068
|
-
AFM r |
|
5069
|
-
AI r/w |
|
5070
|
-
AIFF r |
|
5071
|
-
APE r |
|
5072
|
-
ARQ r/w |
|
5073
|
-
ARW r/w |
|
5074
|
-
ASF r |
|
5075
|
-
AVI r |
|
5076
|
-
AVIF r/w |
|
5077
|
-
AZW r |
|
5078
|
-
BMP r |
|
5079
|
-
BPG r |
|
5080
|
-
BTF r |
|
5081
|
-
C2PA r |
|
5082
|
-
CHM r |
|
5083
|
-
COS r |
|
5084
|
-
CR2 r/w |
|
5085
|
-
CR3 r/w |
|
5086
|
-
CRM r/w |
|
5087
|
-
CRW r/w |
|
5088
|
-
CS1 r/w |
|
5089
|
-
CSV r |
|
5090
|
-
CUR r |
|
5091
|
-
CZI r |
|
5092
|
-
DCM r |
|
5093
|
-
DCP r/w |
|
5094
|
-
DCR r |
|
5095
|
-
DFONT r |
|
5096
|
-
DIVX r |
|
5097
|
-
DJVU r |
|
5098
|
-
DLL r |
|
5099
|
-
DNG r/w |
|
5100
|
-
DOC r |
|
5078
|
+
360 r/w | DPX r | JNG r/w | ODP r | RSRC r
|
5079
|
+
3FR r | DR4 r/w/c | JP2 r/w | ODS r | RTF r
|
5080
|
+
3G2 r/w | DSS r | JPEG r/w | ODT r | RW2 r/w
|
5081
|
+
3GP r/w | DV r | JSON r | OFR r | RWL r/w
|
5082
|
+
7Z r | DVB r/w | JXL r/w | OGG r | RWZ r
|
5083
|
+
A r | DVR-MS r | K25 r | OGV r | RM r
|
5084
|
+
AA r | DYLIB r | KDC r | ONP r | SEQ r
|
5085
|
+
AAC r | EIP r | KEY r | OPUS r | SKETCH r
|
5086
|
+
AAE r | EPS r/w | LA r | ORF r/w | SO r
|
5087
|
+
AAX r/w | EPUB r | LFP r | ORI r/w | SR2 r/w
|
5088
|
+
ACR r | ERF r/w | LIF r | OTF r | SRF r
|
5089
|
+
AFM r | EXE r | LNK r | PAC r | SRW r/w
|
5090
|
+
AI r/w | EXIF r/w/c | LRV r/w | PAGES r | SVG r
|
5091
|
+
AIFF r | EXR r | M2TS r | PBM r/w | SWF r
|
5092
|
+
APE r | EXV r/w/c | M4A/V r/w | PCAP r | THM r/w
|
5093
|
+
ARQ r/w | F4A/V r/w | MACOS r | PCAPNG r | TIFF r/w
|
5094
|
+
ARW r/w | FFF r/w | MAX r | PCD r | TNEF r
|
5095
|
+
ASF r | FITS r | MEF r/w | PCX r | TORRENT r
|
5096
|
+
AVI r | FLA r | MIE r/w/c | PDB r | TTC r
|
5097
|
+
AVIF r/w | FLAC r | MIFF r | PDF r/w | TTF r
|
5098
|
+
AZW r | FLIF r/w | MKA r | PEF r/w | TXT r
|
5099
|
+
BMP r | FLV r | MKS r | PFA r | VCF r
|
5100
|
+
BPG r | FPF r | MKV r | PFB r | VNT r
|
5101
|
+
BTF r | FPX r | MNG r/w | PFM r | VRD r/w/c
|
5102
|
+
C2PA r | GIF r/w | MOBI r | PGF r | VSD r
|
5103
|
+
CHM r | GLV r/w | MODD r | PGM r/w | WAV r
|
5104
|
+
COS r | GPR r/w | MOI r | PLIST r | WDP r/w
|
5105
|
+
CR2 r/w | GZ r | MOS r/w | PICT r | WEBP r/w
|
5106
|
+
CR3 r/w | HDP r/w | MOV r/w | PMP r | WEBM r
|
5107
|
+
CRM r/w | HDR r | MP3 r | PNG r/w | WMA r
|
5108
|
+
CRW r/w | HEIC r/w | MP4 r/w | PPM r/w | WMV r
|
5109
|
+
CS1 r/w | HEIF r/w | MPC r | PPT r | WPG r
|
5110
|
+
CSV r | HTML r | MPG r | PPTX r | WTV r
|
5111
|
+
CUR r | ICC r/w/c | MPO r/w | PS r/w | WV r
|
5112
|
+
CZI r | ICO r | MQV r/w | PSB r/w | X3F r/w
|
5113
|
+
DCM r | ICS r | MRC r | PSD r/w | XCF r
|
5114
|
+
DCP r/w | IDML r | MRW r/w | PSP r | XISF r
|
5115
|
+
DCR r | IIQ r/w | MXF r | QTIF r/w | XLS r
|
5116
|
+
DFONT r | IND r/w | NEF r/w | R3D r | XLSX r
|
5117
|
+
DIVX r | INSP r/w | NKA r | RA r | XMP r/w/c
|
5118
|
+
DJVU r | INSV r | NKSC r/w | RAF r/w | ZIP r
|
5119
|
+
DLL r | INX r | NRW r/w | RAM r |
|
5120
|
+
DNG r/w | ISO r | NUMBERS r | RAR r |
|
5121
|
+
DOC r | ITC r | NXD r | RAW r/w |
|
5122
|
+
DOCX r | J2C r | O r | RIFF r |
|
5101
5123
|
|
5102
5124
|
Meta Information
|
5103
5125
|
----------------------+----------------------+---------------------
|
@@ -5979,7 +6001,7 @@ translation, follow these steps (you must have Perl installed for this):
|
|
5979
6001
|
6. Edit the generated language module lib/Image/ExifTool/Lang/ru.pm, and
|
5980
6002
|
search and replace all 'MISSING' strings in the file with your translations.
|
5981
6003
|
|
5982
|
-
7. Email the module ('ru.pm' in this example) to
|
6004
|
+
7. Email the module ('ru.pm' in this example) to exiftool.team@gmail.com
|
5983
6005
|
|
5984
6006
|
8. Thank you!!
|
5985
6007
|
|
@@ -6054,7 +6076,7 @@ with this command:
|
|
6054
6076
|
|
6055
6077
|
produces output like this:
|
6056
6078
|
|
6057
|
-
-- Generated by ExifTool 13.
|
6079
|
+
-- Generated by ExifTool 13.33 --
|
6058
6080
|
File: a.jpg - 2003:10:31 15:44:19
|
6059
6081
|
(f/5.6, 1/60s, ISO 100)
|
6060
6082
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6631,6 +6653,9 @@ condition (ie. "$OK").
|
|
6631
6653
|
7) The API RequestTags option is automatically set for all tags used in the
|
6632
6654
|
B<-if> condition.
|
6633
6655
|
|
6656
|
+
8) The condition fails if a Perl error occurs. This could happen for
|
6657
|
+
instance if an undefined value (eg. a missing tag) is used improperly.
|
6658
|
+
|
6634
6659
|
=item B<-m> (B<-ignoreMinorErrors>)
|
6635
6660
|
|
6636
6661
|
Ignore minor errors and warnings. This enables writing to files with minor
|
@@ -7298,6 +7323,8 @@ used in file names.)
|
|
7298
7323
|
|
7299
7324
|
=head4 Helper functions
|
7300
7325
|
|
7326
|
+
Note that function names are case sensitive.
|
7327
|
+
|
7301
7328
|
C<DateFmt>
|
7302
7329
|
|
7303
7330
|
Simplifies reformatting of individual date/time values. This function acts
|
@@ -7335,8 +7362,6 @@ rewritten unnecessarily:
|
|
7335
7362
|
|
7336
7363
|
exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg
|
7337
7364
|
|
7338
|
-
Note that function names are case sensitive.
|
7339
|
-
|
7340
7365
|
ExifTool 12.64 adds an API NoDups option which makes the NoDups helper
|
7341
7366
|
function largely redundant, with all the functionality except the ability to
|
7342
7367
|
avoid rewriting the file if there are no duplicates, but with the advantage
|
@@ -271,11 +271,11 @@ tags remain.
|
|
271
271
|
|
272
272
|
The table below lists all EXIF tags. Also listed are TIFF, DNG, HDP and
|
273
273
|
other tags which are not part of the EXIF specification, but may co-exist
|
274
|
-
with EXIF tags in some images. Tags which are part of the EXIF
|
274
|
+
with EXIF tags in some images. Tags which are part of the EXIF 3.0
|
275
275
|
specification have an underlined B<Tag Name> in the HTML version of this
|
276
276
|
documentation. See
|
277
|
-
L<https://
|
278
|
-
for the official EXIF
|
277
|
+
L<https://www.cipa.jp/std/documents/download_e.html?CIPA_DC-008-2024-E>
|
278
|
+
for the official EXIF 3.0 specification.
|
279
279
|
},
|
280
280
|
GPS => q{
|
281
281
|
These GPS tags are part of the EXIF standard, and are stored in a separate
|
@@ -2338,7 +2338,8 @@ sub WriteTagNames($$)
|
|
2338
2338
|
my ($hid, $showGrp);
|
2339
2339
|
# widths of the different columns in the POD documentation
|
2340
2340
|
my ($wID,$wTag,$wReq,$wGrp) = (8,36,24,10);
|
2341
|
-
my ($composite, $derived, $notes, $longTags, $
|
2341
|
+
my ($composite, $derived, $notes, $longTags, $prefix);
|
2342
|
+
my $wasLong = 0;
|
2342
2343
|
if ($short eq 'Shortcuts') {
|
2343
2344
|
$derived = '<th>Refers To</th>';
|
2344
2345
|
$composite = 2;
|
@@ -2396,7 +2397,7 @@ sub WriteTagNames($$)
|
|
2396
2397
|
$wID -= $longTag - $wTag;
|
2397
2398
|
$wTag = $longTag;
|
2398
2399
|
}
|
2399
|
-
|
2400
|
+
++$wasLong if $wID <= $self->{LONG_ID}->{$tableName};
|
2400
2401
|
}
|
2401
2402
|
} elsif ($composite) {
|
2402
2403
|
$wTag += $wID - $wReq;
|
@@ -2471,6 +2472,7 @@ sub WriteTagNames($$)
|
|
2471
2472
|
if ($over <= $wTag - length($$tagNames[0])) {
|
2472
2473
|
$wTag2 -= $over;
|
2473
2474
|
$w += $over;
|
2475
|
+
--$wasLong;
|
2474
2476
|
} else {
|
2475
2477
|
# put tag name on next line if ID is too long
|
2476
2478
|
$idStr = " $tagIDstr\n " . (' ' x $w);
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.94';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -2621,6 +2621,10 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2621
2621
|
# 47 - related to aspect ratio: 100=4:3,70=1:1/16:9,90=3:2,60=4:5 (PH G12)
|
2622
2622
|
# (roughly image area in percent - 4:3=100%,1:1/16:9=75%,3:2=89%,4:5=60%)
|
2623
2623
|
# 48 - 3 for CR2/CR3, 4 or 7 for JPG, -1 for edited JPG (see forum16127)
|
2624
|
+
50 => { #github340
|
2625
|
+
Name => 'FocusBracketing',
|
2626
|
+
PrintConv => { 0 => 'Disable', 1 => 'Enable' },
|
2627
|
+
},
|
2624
2628
|
51 => { #forum16036 (EOS R models)
|
2625
2629
|
Name => 'Clarity',
|
2626
2630
|
PrintConv => {
|
@@ -2628,6 +2632,10 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2628
2632
|
0x7fff => 'n/a',
|
2629
2633
|
},
|
2630
2634
|
},
|
2635
|
+
52 => { #github336
|
2636
|
+
Name => 'HDR-PQ',
|
2637
|
+
PrintConv => { %offOn, -1 => 'n/a' },
|
2638
|
+
},
|
2631
2639
|
);
|
2632
2640
|
|
2633
2641
|
# focal length information (MakerNotes tag 0x02)
|
@@ -8931,7 +8939,7 @@ my %ciMaxFocal = (
|
|
8931
8939
|
},
|
8932
8940
|
3 => {
|
8933
8941
|
Name => 'HighlightTonePriority',
|
8934
|
-
PrintConv =>
|
8942
|
+
PrintConv => { %offOn, 2 => 'Enhanced' }, #github339 (Enhanced)
|
8935
8943
|
},
|
8936
8944
|
4 => {
|
8937
8945
|
Name => 'LongExposureNoiseReduction',
|